SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Reducing the boot time of Linux devices
Chris Simmonds
foss-north 2019
Reducing the boot time of Linux devices 1 Copyright © 2011-2019, 2net Ltd
License
These slides are available under a Creative Commons Attribution-ShareAlike 4.0 license. You can read the full
text of the license here
http://creativecommons.org/licenses/by-sa/4.0/legalcode
You are free to
• copy, distribute, display, and perform the work
• make derivative works
• make commercial use of the work
Under the following conditions
• Attribution: you must give the original author credit
• Share Alike: if you alter, transform, or build upon this work, you may distribute the resulting work only
under a license identical to this one (i.e. include this page exactly as it is)
• For any reuse or distribution, you must make clear to others the license terms of this work
Reducing the boot time of Linux devices 2 Copyright © 2011-2019, 2net Ltd
About Chris Simmonds
• Consultant and trainer
• Author of Mastering Embedded Linux Programming
• Working with embedded Linux since 1999
• Android since 2009
• Speaker at many conferences and workshops
"Looking after the Inner Penguin" blog at http://2net.co.uk/
@2net_software
https://uk.linkedin.com/in/chrisdsimmonds/
Reducing the boot time of Linux devices 3 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
• It is always possible to reduce boot time
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
• It is always possible to reduce boot time
• This is software: there is always more you can do
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
• It is always possible to reduce boot time
• This is software: there is always more you can do
• So, the real issues are:
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
• It is always possible to reduce boot time
• This is software: there is always more you can do
• So, the real issues are:
• How much effort do you want to put in?
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Overview
• Shorter boot time is always desirable
• It is always possible to reduce boot time
• This is software: there is always more you can do
• So, the real issues are:
• How much effort do you want to put in?
• How big a mess will you leave when you are done?
Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
Where it all goes wrong
• The more effort you put in to reducing boot time, the higher the future
maintenance burden
Before
Reducing the boot time of Linux devices 5 Copyright © 2011-2019, 2net Ltd
Where it all goes wrong
• The more effort you put in to reducing boot time, the higher the future
maintenance burden
Before After
Reducing the boot time of Linux devices 5 Copyright © 2011-2019, 2net Ltd
Getting it right
• This is a pragmatic guide to reducing boot time
• Using the three guiding principles
• Measure
• Evaluate
• Modify
• With inspiration from Andrew Murray’s presentation "12 Lessons learnt
in boot time reduction"
Reducing the boot time of Linux devices 6 Copyright © 2011-2019, 2net Ltd
Example system
• BeagleBone Black (single core Cortex A-8,
1GHz)
• Built using Yocto Project Pyro
• Qt app (qt4e-demo-image)
• systemd init
Reducing the boot time of Linux devices 7 Copyright © 2011-2019, 2net Ltd
Measuring boot time
Commonly used tools:
• Grabserial: adds timstamps to all serial console output
• Bootchart: graphs running time of user-space processes
• Bootgraph: graphs running time of kernel functions
You can also change outputs (GPIOs) at certain points in the code and use
an oscilloscope to monitor them. This is the only way you can measure
the time from power-on
Reducing the boot time of Linux devices 8 Copyright © 2011-2019, 2net Ltd
Grabserial
• Get it from https://elinux.org/Grabserial (written by Tim Bird)
• You will need to install python-serial as well
sudo apt install python-serial
Then:
grabserial -d /dev/ttyUSB0 -t -m "U-Boot SPL" -e 30 -o boot.log
-d = serial device
-t = print timestamps
-m = match string before starting to log
-e = number of seconds to capture for
(useful when redirecting to a file: makes sure file is closed cleanly
and all output is recorded)
-o [filename] = output to file
Reducing the boot time of Linux devices 9 Copyright © 2011-2019, 2net Ltd
Grabserial output
[0.000000 0.000000]
[0.000398 0.000398] U-Boot SPL 2017.01 (Oct 17 2017 - 11:10:21)
[0.095607 0.095607] Trying to boot from MMC1MMC partition switch failed
[0.188577 0.092970] *** Warning - MMC partition switch failed, using default
[0.190962 0.002385]
[0.203591 0.012629] reading u-boot.img
[0.204300 0.000709] reading u-boot.img
[0.259620 0.055320]
[0.259727 0.000107]
[0.259781 0.000054] U-Boot 2017.01 (Oct 17 2017 - 11:10:21 +0100)
[0.261334 0.001553]
[0.261384 0.000050] CPU : AM335X-GP rev 2.0
[...]
11.756176 0.080002] Started qtdemo.
Reducing the boot time of Linux devices 10 Copyright © 2011-2019, 2net Ltd
Baseline measurement
3.52 4.53 3.70
11.76
U-Boot Kernel User space
From power-on to starting qtdemo app, in seconds
Reducing the boot time of Linux devices 11 Copyright © 2011-2019, 2net Ltd
Reducing user-space boot time
• User-space is often simplest to change, so we start here
• Typical modifications
• Easy: running order in init
• Quite easy: build optimizations, e.g. compile flags
• Difficult: library optimizations to reduce load time
Reducing the boot time of Linux devices 12 Copyright © 2011-2019, 2net Ltd
Measuring init boot time using Bootchart
• Two parts
• bootchartd captures process stats, starting with init
• part of Busybox, and also a package in Yocto Project/OpenEmbedded
• bootchart analyses offline, and creates a graph
• http://www.bootchart.org
• Launch it in place of init; it will fork and then exec /sbin/init
init=/sbin/bootchartd
• Logs are put in /var/log/bootchart.tgz
• Example on next slide: you are not expected to be able to read it!
Reducing the boot time of Linux devices 13 Copyright © 2011-2019, 2net Ltd
Bootchart
Reducing the boot time of Linux devices 14 Copyright © 2011-2019, 2net Ltd
Optimizing user space
• Careful analysis of bootchart shows that qtdemo is not started until 3.5
seconds after init begins
• Since this is the most important thing to run, we need to move it up the
batting order
• Some options:
• If using System V init, use a lower number for the "S" script, e.g. "S01"
• If using systemd, change the dependencies of the unit (example at end
of slides)
• Or, run qtdemo ahead of init (*)
(*) be aware that the rootfs will most likely be ro, that other fs will not be
mounted, and that the network will not be started
Reducing the boot time of Linux devices 15 Copyright © 2011-2019, 2net Ltd
Running the app as init
• This Script runs qtdemo in the background and then execs the normal
init so that it is still PID 1:
/usr/bin/run-qtdemo.sh
#!/bin/sh
/usr/bin/qtdemoE -qws &
sleep 1
exec /sbin/init
• Change kernel command line:
init=/usr/bin/run-qtdemo.sh
Reducing the boot time of Linux devices 16 Copyright © 2011-2019, 2net Ltd
First pass
3.52 4.53 0.12
8.17
U-Boot Kernel User space
Launching qtdemo ahead of init saves 3.5 s
Reducing the boot time of Linux devices 17 Copyright © 2011-2019, 2net Ltd
Reducing kernel boot time
• Typical modifications
• Easy: reduce console messages by adding quiet to cmdline
• Moderate: slim down kernel by removing drivers, filesystems,
subsysems
• Moderate: slim down device tree by removing hardware interfaces that
are not used
• Tricky: set about optimizing device probe functions
Reducing the boot time of Linux devices 18 Copyright © 2011-2019, 2net Ltd
Measuring kernel boot time: Bootgraph
• Bootgraph analyses kernel functions during boot
• Configure kernel with CONFIG_PRINTK_TIME and CONFIG_KALLSYMS
• Add initcall_debug to kernel cmdline
• Then boot, and get the kernel log
dmesg > boot.log
• Back on the host, create the graph using
linux/scripts/bootgraph.pl boot.log > boot.svg
Reducing the boot time of Linux devices 19 Copyright © 2011-2019, 2net Ltd
Bootgraph
calibrate_xor_blocks
__omap_hwmod_setup_all
init_ladder
init_menu
customize_machine
param_sysfs_init
pm_sysrq_init
raid6_select_algo
edma_init
tracer_init_tracefs
event_trace_init
chr_dev_init
slab_sysfs_init
serial_omap_init
brd_init
mtdoops_init
cpsw_driver_init
am335x_child_init
omap_hsmmc_driver_init
inet6_init
init_machine_late
init_btrfs_fs
clk_debug_init
deferred_probe_initcall
0.17
0.35
0.52
0.7
0.88
1.05
1.23
1.41
1.58
1.76
1.94
2.11
2.29
2.47
2.64
raid6_select_algo
• Note: almost 2 seconds in raid6_select_algo
• RAID6 is selected by CONFIG_BTRFS_FS, which we are not using. So, rip it
out!
Reducing the boot time of Linux devices 20 Copyright © 2011-2019, 2net Ltd
Second pass
3.52 1.52 0.12
5.16
U-Boot Kernel User space
• Remove BTRFS: saves 1860 ms
• Add "quiet" to cmdline: saves 700 ms
• Cut out unused drivers (e.g. WiFi), reducing zImage from 5.6 MiB to
3.2 MiB: saves 450 ms
• Total saving: 3.01 s
Reducing the boot time of Linux devices 21 Copyright © 2011-2019, 2net Ltd
Reducing bootloader boot time
• Typical modifications
• Easy: remove the boot delay
• Easy(ish): simplify boot scripts
• Medium: compile out functions you don’t need
• Harder: use falcon mode
Reducing the boot time of Linux devices 22 Copyright © 2011-2019, 2net Ltd
Remove boot delay
• U-Boot usually configured with a delay, during which you can press
space bar to stop booting
Press SPACE to abort autoboot in 2 seconds
• Set the display to zero
setenv bootdelay 0
• You can still hit space bar to halt boot if you are quick enough
OK, this is a bit trivial, but it still needs to be done
Reducing the boot time of Linux devices 23 Copyright © 2011-2019, 2net Ltd
Simplify boot scripts 1/3
• Bootscript for BeagleBone is c. 100 lines
• Testing all possible sources of boot images takes time
• Loading image from filesystems takes time
• Reduce the script to the cases you support
• Loading from raw MMC sectors is fastest
Reducing the boot time of Linux devices 24 Copyright © 2011-2019, 2net Ltd
Simplify boot scripts 2/3
Reduce this (lines 22 to 122 ommitted)...
arch=arm
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
baudrate=115200
board=am335x
board_name=A335BNLT
board_rev=0A5C
board_serial=2413BBBK1972
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype
if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_fdt=try
boot_fit=0
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp
bootcmd=if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdt
${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch
n tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${ker
tenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_legacy_mmc0=setenv mmcdev 0; setenv bootpart 0:2 ; run mmcboot
bootcmd_legacy_mmc1=setenv mmcdev 1; setenv bootpart 1:2 ; run mmcboot
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
[...]
Reducing the boot time of Linux devices 25 Copyright © 2011-2019, 2net Ltd
Simplify boot scripts 3/3
To this...
setenv bootargs console=ttyO0 root=/dev/mmcblk0p2 quiet
fatload mmc 0:1 82000000 zImage
fatload mmc 0:1 83000000 am335x-boneblack.dtb
bootz 82000000 - 83000000
Reducing the boot time of Linux devices 26 Copyright © 2011-2019, 2net Ltd
Third pass
0.97 1.52 0.12
2.83
U-Boot Kernel User space
• Remove boot delay: saves 2000 ms
• Simplify boot script: saves: 230 ms
• Total saving: 2.32 s
Reducing the boot time of Linux devices 27 Copyright © 2011-2019, 2net Ltd
Keep it up!
• Add boot time calculation as a metric in your CI
• Make boot time a criterion when adding new features
Reducing the boot time of Linux devices 28 Copyright © 2011-2019, 2net Ltd
Conclusion
• Boot time reduction need not require massive changes to the platform
code
• Bake the changes you do make into the build system
• Look to the future
Reducing the boot time of Linux devices 29 Copyright © 2011-2019, 2net Ltd
This and other topics associated with using embedded Linux are covered in
my training courses
Full details are available on the 2net web site
http://www.2net.co.uk/training.html
Contact mailto:training@2net.co.uk if you have a question or you would
like to book a course
Reducing the boot time of Linux devices 30 Copyright © 2011-2019, 2net Ltd
Systemd unit
• Unit for a "normal" systemd service that is started by multi-user target
/lib/systemd/system/qtdemo.service
[Unit]
Description=qtdemo
[Service]
ExecStart=/usr/bin/qtdemoE -qws
[Install]
WantedBy=multi-user.target
Reducing the boot time of Linux devices 31 Copyright © 2011-2019, 2net Ltd
Systemd unit
• sysinit target is started really early
• Also, we disable default dependencies
[Unit]
Description=qtdemo
DefaultDependencies=no
[Service]
ExecStart=/usr/bin/qtdemoE -qws
[Install]
WantedBy=sysinit.target
See man entry for systemd.special(7) for more information about targets
Reducing the boot time of Linux devices 32 Copyright © 2011-2019, 2net Ltd
Falcon mode
• Most SoCs have three stages of bootloader
• 1: on-chip ROMcode, which loads SPL into static RAM
• 2: SPL, which has to be small enough to fit in SRAM. Main job is to set
up DRAM and load bootloader into it
• 3: bootloader, which loads the kernel (4th stage)
• U-Boot Falcon mode jams the SPL and bootloader into the SRAM
• No user interaction: uses pre-built environment block
Reducing the boot time of Linux devices 33 Copyright © 2011-2019, 2net Ltd
U-Boot Falcon mode
• See doc/README.falcon in U-Boot source code
• Steps
• Configure U-Boot
• Copy to SD card
• Boot into U-Boot and prepare environment
• Save environment in MMC
Reducing the boot time of Linux devices 34 Copyright © 2011-2019, 2net Ltd
MMC layout
0x00000000
0x00010000
0x00040000
0x00060000
0x000e0000
0x00120000
0x01000000
MBR
Device tree +
arguments
SPL
U-Boot
U-Boot env
Kernel
•
• Layout of the first 16MiB (128K sectors)
on BeagleBone without Falcon mode
• Other SoCs are similar
Reducing the boot time of Linux devices 35 Copyright © 2011-2019, 2net Ltd
Configure U-Boot
• Tell U-Boot where to put things
• Add to include/configs/am335x_evm.h:
#define CONFIG_SYS_MMC_ENV_DEV 0
#define CONFIG_ENV_OFFSET 0xe0000
• Build U-Boot in the normal way
$ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
$ make am335x_boneblack_defconfig
$ make
Reducing the boot time of Linux devices 36 Copyright © 2011-2019, 2net Ltd
Copy images to micro SD card
• Using the layout from the diagram shown earlier
• Note: requires a uImage, not zImage
$ sudo dd if=am335x-boneblack.dtb of=/dev/mmcblk0 bs=1 seek=65536
$ sudo dd if=MLO of=/dev/mmcblk0 bs=1 seek=262144
$ sudo dd if=u-boot.img of=/dev/mmcblk0 bs=1 seek=393216
$ sudo dd if=uImage of=/dev/mmcblk0 bs=1 seek=1179648
Reducing the boot time of Linux devices 37 Copyright © 2011-2019, 2net Ltd
Prepare Falcon boot 1/2
=> mmc read 82000000 900 2000
=> mmc read 83000000 80 180
=> spl export fdt 82000000 - 83000000
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-4.10.17-yocto-standard
Created: 2017-10-21 13:12:02 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3365704 Bytes = 3.2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Kernel Image ... OK
Loading Device Tree to 8fff4000, end 8ffffc86 ... OK
Loading Device Tree to 8ffe5000, end 8fff3c86 ... OK
Argument image is now in RAM: 0x8ffe5000
Reducing the boot time of Linux devices 38 Copyright © 2011-2019, 2net Ltd
Prepare Falcon boot 2/2
• Write the modified FDT and parameter block back to MMC:
=> mmc write 0x8ffe5000 80 180
• Enable falcon mode:
=> setenv boot_os 1
• Now re boot and it should jump straight from SPL to kernel:
U-Boot SPL 2017.05-rc3-dirty (Oct 21 2017 - 11:27:01)
Trying to boot from MMC1
Booting Linux on physical CPU 0x0
Linux version 4.10.17-yocto-standard (oe-user@oe-host)
Reducing the boot time of Linux devices 39 Copyright © 2011-2019, 2net Ltd

Mais conteúdo relacionado

Mais procurados

Xen in Safety-Critical Systems - Critical Summit 2022
Xen in Safety-Critical Systems - Critical Summit 2022Xen in Safety-Critical Systems - Critical Summit 2022
Xen in Safety-Critical Systems - Critical Summit 2022Stefano Stabellini
 
Read-only rootfs: theory and practice
Read-only rootfs: theory and practiceRead-only rootfs: theory and practice
Read-only rootfs: theory and practiceChris Simmonds
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
Embedded Linux Quick Start Guide v1.5
Embedded Linux Quick Start Guide v1.5Embedded Linux Quick Start Guide v1.5
Embedded Linux Quick Start Guide v1.5Chris Simmonds
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time OptimizationKan-Ru Chen
 
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64 BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64 Linaro
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)RuggedBoardGroup
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingScyllaDB
 
Grub2 Booting Process
Grub2 Booting ProcessGrub2 Booting Process
Grub2 Booting ProcessMike Wang
 
Fosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationFosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationThe Linux Foundation
 
HKG18-402 - Build secure key management services in OP-TEE
HKG18-402 - Build secure key management services in OP-TEEHKG18-402 - Build secure key management services in OP-TEE
HKG18-402 - Build secure key management services in OP-TEELinaro
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Linaro
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
 
Tuning Android for low RAM
Tuning Android for low RAMTuning Android for low RAM
Tuning Android for low RAMChris Simmonds
 

Mais procurados (20)

Xen in Safety-Critical Systems - Critical Summit 2022
Xen in Safety-Critical Systems - Critical Summit 2022Xen in Safety-Critical Systems - Critical Summit 2022
Xen in Safety-Critical Systems - Critical Summit 2022
 
Read-only rootfs: theory and practice
Read-only rootfs: theory and practiceRead-only rootfs: theory and practice
Read-only rootfs: theory and practice
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
Embedded Linux Quick Start Guide v1.5
Embedded Linux Quick Start Guide v1.5Embedded Linux Quick Start Guide v1.5
Embedded Linux Quick Start Guide v1.5
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
Linux device drivers
Linux device driversLinux device drivers
Linux device drivers
 
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64 BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64
BUD17-209: Reliability, Availability, and Serviceability (RAS) on ARM64
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
Grub2 Booting Process
Grub2 Booting ProcessGrub2 Booting Process
Grub2 Booting Process
 
Fosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using VirtualizationFosdem 18: Securing embedded Systems using Virtualization
Fosdem 18: Securing embedded Systems using Virtualization
 
HKG18-402 - Build secure key management services in OP-TEE
HKG18-402 - Build secure key management services in OP-TEEHKG18-402 - Build secure key management services in OP-TEE
HKG18-402 - Build secure key management services in OP-TEE
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
Tuning Android for low RAM
Tuning Android for low RAMTuning Android for low RAM
Tuning Android for low RAM
 

Semelhante a Reducing the boot time of Linux devices

Renesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal BootRenesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal Bootandrewmurraympc
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesChris Simmonds
 
TI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootTI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootandrewmurraympc
 
Quick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOQuick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOChris Simmonds
 
10 ways hardware engineers can make software integration easier
10 ways hardware engineers can make software integration easier10 ways hardware engineers can make software integration easier
10 ways hardware engineers can make software integration easierChris Simmonds
 
12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reductionandrewmurraympc
 
A framework for optimization of the boot time on embedded linux environment w...
A framework for optimization of the boot time on embedded linux environment w...A framework for optimization of the boot time on embedded linux environment w...
A framework for optimization of the boot time on embedded linux environment w...BouchraBourass
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Timesandrewmurraympc
 
Cloud-Aided Yocto Build Speedup
Cloud-Aided Yocto Build SpeedupCloud-Aided Yocto Build Speedup
Cloud-Aided Yocto Build SpeedupToradex
 
Improving User Experience with Ubiquitous QuickBoot
 Improving User Experience with Ubiquitous QuickBoot Improving User Experience with Ubiquitous QuickBoot
Improving User Experience with Ubiquitous QuickBootICS
 
Todo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBXTodo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBXPaloSanto Solutions
 
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...Benedek Menesi
 
093049ov10.pptx
093049ov10.pptx093049ov10.pptx
093049ov10.pptxNguyenNM
 
The origin: Init (compact version)
The origin: Init (compact version)The origin: Init (compact version)
The origin: Init (compact version)Tzung-Bi Shih
 
ICONUK 2018 - IBM Notes V10 Performance Boost
ICONUK 2018 - IBM Notes V10 Performance BoostICONUK 2018 - IBM Notes V10 Performance Boost
ICONUK 2018 - IBM Notes V10 Performance BoostChristoph Adler
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016Chris Simmonds
 
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceCrafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceSourabh Singh Tomar
 

Semelhante a Reducing the boot time of Linux devices (20)

Renesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal BootRenesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal Boot
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
TI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootTI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBoot
 
Quick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIOQuick and Easy Device Drivers for Embedded Linux Using UIO
Quick and Easy Device Drivers for Embedded Linux Using UIO
 
10 ways hardware engineers can make software integration easier
10 ways hardware engineers can make software integration easier10 ways hardware engineers can make software integration easier
10 ways hardware engineers can make software integration easier
 
12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction
 
A framework for optimization of the boot time on embedded linux environment w...
A framework for optimization of the boot time on embedded linux environment w...A framework for optimization of the boot time on embedded linux environment w...
A framework for optimization of the boot time on embedded linux environment w...
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Times
 
Cloud-Aided Yocto Build Speedup
Cloud-Aided Yocto Build SpeedupCloud-Aided Yocto Build Speedup
Cloud-Aided Yocto Build Speedup
 
Improving User Experience with Ubiquitous QuickBoot
 Improving User Experience with Ubiquitous QuickBoot Improving User Experience with Ubiquitous QuickBoot
Improving User Experience with Ubiquitous QuickBoot
 
Todo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBXTodo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBX
 
Introduction to chrome os
Introduction to chrome osIntroduction to chrome os
Introduction to chrome os
 
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
 
093049ov10.pptx
093049ov10.pptx093049ov10.pptx
093049ov10.pptx
 
The origin: Init (compact version)
The origin: Init (compact version)The origin: Init (compact version)
The origin: Init (compact version)
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
ICONUK 2018 - IBM Notes V10 Performance Boost
ICONUK 2018 - IBM Notes V10 Performance BoostICONUK 2018 - IBM Notes V10 Performance Boost
ICONUK 2018 - IBM Notes V10 Performance Boost
 
Your notes DNA
Your notes DNAYour notes DNA
Your notes DNA
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016
 
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/SourceCrafting GNU/Linux distributions for Embedded target from Scratch/Source
Crafting GNU/Linux distributions for Embedded target from Scratch/Source
 

Mais de Chris Simmonds

Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDBChris Simmonds
 
Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Chris Simmonds
 
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry PiRunning Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry PiChris Simmonds
 
Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Chris Simmonds
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?Chris Simmonds
 
Embedded Android: Android beyond the smartphone
Embedded Android: Android beyond the smartphoneEmbedded Android: Android beyond the smartphone
Embedded Android: Android beyond the smartphoneChris Simmonds
 
Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Chris Simmonds
 
Software update for IoT: the current state of play
Software update for IoT: the current state of playSoftware update for IoT: the current state of play
Software update for IoT: the current state of playChris Simmonds
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphoneChris Simmonds
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)Chris Simmonds
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depthChris Simmonds
 
A timeline for embedded Linux
A timeline for embedded LinuxA timeline for embedded Linux
A timeline for embedded LinuxChris Simmonds
 

Mais de Chris Simmonds (12)

Debugging embedded devices using GDB
Debugging embedded devices using GDBDebugging embedded devices using GDB
Debugging embedded devices using GDB
 
Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?Debian or Yocto Project? Which is the best for your Embedded Linux project?
Debian or Yocto Project? Which is the best for your Embedded Linux project?
 
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry PiRunning Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
 
Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019Android rpi-csimmonds-fosdem-2019
Android rpi-csimmonds-fosdem-2019
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?
 
Embedded Android: Android beyond the smartphone
Embedded Android: Android beyond the smartphoneEmbedded Android: Android beyond the smartphone
Embedded Android: Android beyond the smartphone
 
Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017Software update for IoT Embedded World 2017
Software update for IoT Embedded World 2017
 
Software update for IoT: the current state of play
Software update for IoT: the current state of playSoftware update for IoT: the current state of play
Software update for IoT: the current state of play
 
Android beyond the smartphone
Android beyond the smartphoneAndroid beyond the smartphone
Android beyond the smartphone
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
A timeline for embedded Linux
A timeline for embedded LinuxA timeline for embedded Linux
A timeline for embedded Linux
 

Último

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 

Último (20)

SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 

Reducing the boot time of Linux devices

  • 1. Reducing the boot time of Linux devices Chris Simmonds foss-north 2019 Reducing the boot time of Linux devices 1 Copyright © 2011-2019, 2net Ltd
  • 2. License These slides are available under a Creative Commons Attribution-ShareAlike 4.0 license. You can read the full text of the license here http://creativecommons.org/licenses/by-sa/4.0/legalcode You are free to • copy, distribute, display, and perform the work • make derivative works • make commercial use of the work Under the following conditions • Attribution: you must give the original author credit • Share Alike: if you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one (i.e. include this page exactly as it is) • For any reuse or distribution, you must make clear to others the license terms of this work Reducing the boot time of Linux devices 2 Copyright © 2011-2019, 2net Ltd
  • 3. About Chris Simmonds • Consultant and trainer • Author of Mastering Embedded Linux Programming • Working with embedded Linux since 1999 • Android since 2009 • Speaker at many conferences and workshops "Looking after the Inner Penguin" blog at http://2net.co.uk/ @2net_software https://uk.linkedin.com/in/chrisdsimmonds/ Reducing the boot time of Linux devices 3 Copyright © 2011-2019, 2net Ltd
  • 4. Overview • Shorter boot time is always desirable Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 5. Overview • Shorter boot time is always desirable • It is always possible to reduce boot time Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 6. Overview • Shorter boot time is always desirable • It is always possible to reduce boot time • This is software: there is always more you can do Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 7. Overview • Shorter boot time is always desirable • It is always possible to reduce boot time • This is software: there is always more you can do • So, the real issues are: Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 8. Overview • Shorter boot time is always desirable • It is always possible to reduce boot time • This is software: there is always more you can do • So, the real issues are: • How much effort do you want to put in? Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 9. Overview • Shorter boot time is always desirable • It is always possible to reduce boot time • This is software: there is always more you can do • So, the real issues are: • How much effort do you want to put in? • How big a mess will you leave when you are done? Reducing the boot time of Linux devices 4 Copyright © 2011-2019, 2net Ltd
  • 10. Where it all goes wrong • The more effort you put in to reducing boot time, the higher the future maintenance burden Before Reducing the boot time of Linux devices 5 Copyright © 2011-2019, 2net Ltd
  • 11. Where it all goes wrong • The more effort you put in to reducing boot time, the higher the future maintenance burden Before After Reducing the boot time of Linux devices 5 Copyright © 2011-2019, 2net Ltd
  • 12. Getting it right • This is a pragmatic guide to reducing boot time • Using the three guiding principles • Measure • Evaluate • Modify • With inspiration from Andrew Murray’s presentation "12 Lessons learnt in boot time reduction" Reducing the boot time of Linux devices 6 Copyright © 2011-2019, 2net Ltd
  • 13. Example system • BeagleBone Black (single core Cortex A-8, 1GHz) • Built using Yocto Project Pyro • Qt app (qt4e-demo-image) • systemd init Reducing the boot time of Linux devices 7 Copyright © 2011-2019, 2net Ltd
  • 14. Measuring boot time Commonly used tools: • Grabserial: adds timstamps to all serial console output • Bootchart: graphs running time of user-space processes • Bootgraph: graphs running time of kernel functions You can also change outputs (GPIOs) at certain points in the code and use an oscilloscope to monitor them. This is the only way you can measure the time from power-on Reducing the boot time of Linux devices 8 Copyright © 2011-2019, 2net Ltd
  • 15. Grabserial • Get it from https://elinux.org/Grabserial (written by Tim Bird) • You will need to install python-serial as well sudo apt install python-serial Then: grabserial -d /dev/ttyUSB0 -t -m "U-Boot SPL" -e 30 -o boot.log -d = serial device -t = print timestamps -m = match string before starting to log -e = number of seconds to capture for (useful when redirecting to a file: makes sure file is closed cleanly and all output is recorded) -o [filename] = output to file Reducing the boot time of Linux devices 9 Copyright © 2011-2019, 2net Ltd
  • 16. Grabserial output [0.000000 0.000000] [0.000398 0.000398] U-Boot SPL 2017.01 (Oct 17 2017 - 11:10:21) [0.095607 0.095607] Trying to boot from MMC1MMC partition switch failed [0.188577 0.092970] *** Warning - MMC partition switch failed, using default [0.190962 0.002385] [0.203591 0.012629] reading u-boot.img [0.204300 0.000709] reading u-boot.img [0.259620 0.055320] [0.259727 0.000107] [0.259781 0.000054] U-Boot 2017.01 (Oct 17 2017 - 11:10:21 +0100) [0.261334 0.001553] [0.261384 0.000050] CPU : AM335X-GP rev 2.0 [...] 11.756176 0.080002] Started qtdemo. Reducing the boot time of Linux devices 10 Copyright © 2011-2019, 2net Ltd
  • 17. Baseline measurement 3.52 4.53 3.70 11.76 U-Boot Kernel User space From power-on to starting qtdemo app, in seconds Reducing the boot time of Linux devices 11 Copyright © 2011-2019, 2net Ltd
  • 18. Reducing user-space boot time • User-space is often simplest to change, so we start here • Typical modifications • Easy: running order in init • Quite easy: build optimizations, e.g. compile flags • Difficult: library optimizations to reduce load time Reducing the boot time of Linux devices 12 Copyright © 2011-2019, 2net Ltd
  • 19. Measuring init boot time using Bootchart • Two parts • bootchartd captures process stats, starting with init • part of Busybox, and also a package in Yocto Project/OpenEmbedded • bootchart analyses offline, and creates a graph • http://www.bootchart.org • Launch it in place of init; it will fork and then exec /sbin/init init=/sbin/bootchartd • Logs are put in /var/log/bootchart.tgz • Example on next slide: you are not expected to be able to read it! Reducing the boot time of Linux devices 13 Copyright © 2011-2019, 2net Ltd
  • 20. Bootchart Reducing the boot time of Linux devices 14 Copyright © 2011-2019, 2net Ltd
  • 21. Optimizing user space • Careful analysis of bootchart shows that qtdemo is not started until 3.5 seconds after init begins • Since this is the most important thing to run, we need to move it up the batting order • Some options: • If using System V init, use a lower number for the "S" script, e.g. "S01" • If using systemd, change the dependencies of the unit (example at end of slides) • Or, run qtdemo ahead of init (*) (*) be aware that the rootfs will most likely be ro, that other fs will not be mounted, and that the network will not be started Reducing the boot time of Linux devices 15 Copyright © 2011-2019, 2net Ltd
  • 22. Running the app as init • This Script runs qtdemo in the background and then execs the normal init so that it is still PID 1: /usr/bin/run-qtdemo.sh #!/bin/sh /usr/bin/qtdemoE -qws & sleep 1 exec /sbin/init • Change kernel command line: init=/usr/bin/run-qtdemo.sh Reducing the boot time of Linux devices 16 Copyright © 2011-2019, 2net Ltd
  • 23. First pass 3.52 4.53 0.12 8.17 U-Boot Kernel User space Launching qtdemo ahead of init saves 3.5 s Reducing the boot time of Linux devices 17 Copyright © 2011-2019, 2net Ltd
  • 24. Reducing kernel boot time • Typical modifications • Easy: reduce console messages by adding quiet to cmdline • Moderate: slim down kernel by removing drivers, filesystems, subsysems • Moderate: slim down device tree by removing hardware interfaces that are not used • Tricky: set about optimizing device probe functions Reducing the boot time of Linux devices 18 Copyright © 2011-2019, 2net Ltd
  • 25. Measuring kernel boot time: Bootgraph • Bootgraph analyses kernel functions during boot • Configure kernel with CONFIG_PRINTK_TIME and CONFIG_KALLSYMS • Add initcall_debug to kernel cmdline • Then boot, and get the kernel log dmesg > boot.log • Back on the host, create the graph using linux/scripts/bootgraph.pl boot.log > boot.svg Reducing the boot time of Linux devices 19 Copyright © 2011-2019, 2net Ltd
  • 27. Second pass 3.52 1.52 0.12 5.16 U-Boot Kernel User space • Remove BTRFS: saves 1860 ms • Add "quiet" to cmdline: saves 700 ms • Cut out unused drivers (e.g. WiFi), reducing zImage from 5.6 MiB to 3.2 MiB: saves 450 ms • Total saving: 3.01 s Reducing the boot time of Linux devices 21 Copyright © 2011-2019, 2net Ltd
  • 28. Reducing bootloader boot time • Typical modifications • Easy: remove the boot delay • Easy(ish): simplify boot scripts • Medium: compile out functions you don’t need • Harder: use falcon mode Reducing the boot time of Linux devices 22 Copyright © 2011-2019, 2net Ltd
  • 29. Remove boot delay • U-Boot usually configured with a delay, during which you can press space bar to stop booting Press SPACE to abort autoboot in 2 seconds • Set the display to zero setenv bootdelay 0 • You can still hit space bar to halt boot if you are quick enough OK, this is a bit trivial, but it still needs to be done Reducing the boot time of Linux devices 23 Copyright © 2011-2019, 2net Ltd
  • 30. Simplify boot scripts 1/3 • Bootscript for BeagleBone is c. 100 lines • Testing all possible sources of boot images takes time • Loading image from filesystems takes time • Reduce the script to the cases you support • Loading from raw MMC sectors is fastest Reducing the boot time of Linux devices 24 Copyright © 2011-2019, 2net Ltd
  • 31. Simplify boot scripts 2/3 Reduce this (lines 22 to 122 ommitted)... arch=arm args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} baudrate=115200 board=am335x board_name=A335BNLT board_rev=0A5C board_serial=2413BBBK1972 boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf boot_fdt=try boot_fit=0 boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_targets=mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp bootcmd=if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdt ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch n tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${ker tenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci; bootcmd_legacy_mmc0=setenv mmcdev 0; setenv bootpart 0:2 ; run mmcboot bootcmd_legacy_mmc1=setenv mmcdev 1; setenv bootpart 1:2 ; run mmcboot bootcmd_mmc0=setenv devnum 0; run mmc_boot bootcmd_mmc1=setenv devnum 1; run mmc_boot [...] Reducing the boot time of Linux devices 25 Copyright © 2011-2019, 2net Ltd
  • 32. Simplify boot scripts 3/3 To this... setenv bootargs console=ttyO0 root=/dev/mmcblk0p2 quiet fatload mmc 0:1 82000000 zImage fatload mmc 0:1 83000000 am335x-boneblack.dtb bootz 82000000 - 83000000 Reducing the boot time of Linux devices 26 Copyright © 2011-2019, 2net Ltd
  • 33. Third pass 0.97 1.52 0.12 2.83 U-Boot Kernel User space • Remove boot delay: saves 2000 ms • Simplify boot script: saves: 230 ms • Total saving: 2.32 s Reducing the boot time of Linux devices 27 Copyright © 2011-2019, 2net Ltd
  • 34. Keep it up! • Add boot time calculation as a metric in your CI • Make boot time a criterion when adding new features Reducing the boot time of Linux devices 28 Copyright © 2011-2019, 2net Ltd
  • 35. Conclusion • Boot time reduction need not require massive changes to the platform code • Bake the changes you do make into the build system • Look to the future Reducing the boot time of Linux devices 29 Copyright © 2011-2019, 2net Ltd
  • 36. This and other topics associated with using embedded Linux are covered in my training courses Full details are available on the 2net web site http://www.2net.co.uk/training.html Contact mailto:training@2net.co.uk if you have a question or you would like to book a course Reducing the boot time of Linux devices 30 Copyright © 2011-2019, 2net Ltd
  • 37. Systemd unit • Unit for a "normal" systemd service that is started by multi-user target /lib/systemd/system/qtdemo.service [Unit] Description=qtdemo [Service] ExecStart=/usr/bin/qtdemoE -qws [Install] WantedBy=multi-user.target Reducing the boot time of Linux devices 31 Copyright © 2011-2019, 2net Ltd
  • 38. Systemd unit • sysinit target is started really early • Also, we disable default dependencies [Unit] Description=qtdemo DefaultDependencies=no [Service] ExecStart=/usr/bin/qtdemoE -qws [Install] WantedBy=sysinit.target See man entry for systemd.special(7) for more information about targets Reducing the boot time of Linux devices 32 Copyright © 2011-2019, 2net Ltd
  • 39. Falcon mode • Most SoCs have three stages of bootloader • 1: on-chip ROMcode, which loads SPL into static RAM • 2: SPL, which has to be small enough to fit in SRAM. Main job is to set up DRAM and load bootloader into it • 3: bootloader, which loads the kernel (4th stage) • U-Boot Falcon mode jams the SPL and bootloader into the SRAM • No user interaction: uses pre-built environment block Reducing the boot time of Linux devices 33 Copyright © 2011-2019, 2net Ltd
  • 40. U-Boot Falcon mode • See doc/README.falcon in U-Boot source code • Steps • Configure U-Boot • Copy to SD card • Boot into U-Boot and prepare environment • Save environment in MMC Reducing the boot time of Linux devices 34 Copyright © 2011-2019, 2net Ltd
  • 41. MMC layout 0x00000000 0x00010000 0x00040000 0x00060000 0x000e0000 0x00120000 0x01000000 MBR Device tree + arguments SPL U-Boot U-Boot env Kernel • • Layout of the first 16MiB (128K sectors) on BeagleBone without Falcon mode • Other SoCs are similar Reducing the boot time of Linux devices 35 Copyright © 2011-2019, 2net Ltd
  • 42. Configure U-Boot • Tell U-Boot where to put things • Add to include/configs/am335x_evm.h: #define CONFIG_SYS_MMC_ENV_DEV 0 #define CONFIG_ENV_OFFSET 0xe0000 • Build U-Boot in the normal way $ export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- $ make am335x_boneblack_defconfig $ make Reducing the boot time of Linux devices 36 Copyright © 2011-2019, 2net Ltd
  • 43. Copy images to micro SD card • Using the layout from the diagram shown earlier • Note: requires a uImage, not zImage $ sudo dd if=am335x-boneblack.dtb of=/dev/mmcblk0 bs=1 seek=65536 $ sudo dd if=MLO of=/dev/mmcblk0 bs=1 seek=262144 $ sudo dd if=u-boot.img of=/dev/mmcblk0 bs=1 seek=393216 $ sudo dd if=uImage of=/dev/mmcblk0 bs=1 seek=1179648 Reducing the boot time of Linux devices 37 Copyright © 2011-2019, 2net Ltd
  • 44. Prepare Falcon boot 1/2 => mmc read 82000000 900 2000 => mmc read 83000000 80 180 => spl export fdt 82000000 - 83000000 ## Booting kernel from Legacy Image at 82000000 ... Image Name: Linux-4.10.17-yocto-standard Created: 2017-10-21 13:12:02 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3365704 Bytes = 3.2 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 83000000 Booting using the fdt blob at 0x83000000 Loading Kernel Image ... OK Loading Device Tree to 8fff4000, end 8ffffc86 ... OK Loading Device Tree to 8ffe5000, end 8fff3c86 ... OK Argument image is now in RAM: 0x8ffe5000 Reducing the boot time of Linux devices 38 Copyright © 2011-2019, 2net Ltd
  • 45. Prepare Falcon boot 2/2 • Write the modified FDT and parameter block back to MMC: => mmc write 0x8ffe5000 80 180 • Enable falcon mode: => setenv boot_os 1 • Now re boot and it should jump straight from SPL to kernel: U-Boot SPL 2017.05-rc3-dirty (Oct 21 2017 - 11:27:01) Trying to boot from MMC1 Booting Linux on physical CPU 0x0 Linux version 4.10.17-yocto-standard (oe-user@oe-host) Reducing the boot time of Linux devices 39 Copyright © 2011-2019, 2net Ltd