There are many posts over the last few years about how to speed up the boot time for the BBB. Many solutions are for older kernels and deb versions and do not apply to recent versions. Its a moving target, which is normal because technology progresses. By following the tips on this board, thanks to RobertCNelson, I brought down the boot time from well over a minute to 37 seconds including removing over a second from the kernel boot. I know we are booting up a complex operating system but we always need to push the limits to get our job done. When you think about it what the BBB can do stand alone with its PRUs, I/Os, ADCs etc. is remarkable. Just need it to boot up faster is some embedded applications.
For my embedded system the must haves are USB, network, UART and spi bus.
- Can some older kernels and/or older debian versions be modified to boot faster?
- Is there anything else for this debian and this kernel that can be removed that will reduce boot time?
- Can the boot process be rearranged to bring up the spi first (fconnects to a display), house keeping and other setup stuff with the ethernet networking last? Then maybe the 37 seconds might not seem too bad.
- Don’t need debug logging or any logging. Can all logging be removed? I removed what I could find, did I miss something?
From the kernel I removed
CPU/Task time and stats accounting —>
BSD Process Accounting
Export task/process statistics through netlink
Pressure stall information tracking
General setup
Configure standard kernel features (expert users)
Posix Clocks & timers
Enable support for printk
BUG() support
Enable ELF core dumps
Enable futex support
Enable eventpoll support
Enable signalfd() system call
Enable timerfd() system call
Enable eventfd() system call
Enable AIO support
Enable IO uring support
Enable madvise/fadvise syscalls
LSM Instrumentation with BPF
Enable bpf() system call
Enable userfaultfd() system call
Enable rseq() system call
Enable VM event counters for /proc/vmstat
Enable SLUB debugging support
Profiling support
Boot options
Kexec system call (EXPERIMENTAL)
Build kdump crash kernel
Networking support
Amature radio support
Wireless
support CRDA
cfg80211 wireless extensions compatibility
Minstrel
Startup finished in 12.151s (kernel) + 25.405s (userspace) = 37.556s
graphical.target reached after 25.093s in userspace
17.967s dev-mmcblk1p1.device
4.449s systemd-udev-trigger.service
3.344s systemd-resolved.service
2.569s bb-symlinks.service
2.072s systemd-timesyncd.service
2.050s bb-usb-gadgets.service
1.887s systemd-journald.service
1.748s systemd-logind.service
1.664s networking.service
1.443s user@1000.service
1.297s systemd-networkd.service
819ms systemd-journal-flush.service
732ms systemd-udevd.service
567ms ssh.service
562ms sys-kernel-config.mount
552ms sys-kernel-debug.mount
538ms systemd-tmpfiles-setup.service
536ms kmod-static-nodes.service
536ms sys-fs-fuse-connections.mount
528ms systemd-fsck-root.service
485ms systemd-remount-fs.service
443ms systemd-modules-load.service
408ms systemd-update-utmp.service
375ms systemd-tmpfiles-setup-dev.service
355ms systemd-sysusers.service
339ms systemd-sysctl.service
295ms systemd-user-sessions.service
280ms rsyslog.service
250ms systemd-random-seed.service
235ms systemd-update-utmp-runlevel.service
114ms ifupdown-pre.service
111ms user-runtime-dir@1000.service
Feel free to remove these two…
You could switch to the v5.10.x-bone or v5.15.x-bone branch, in it’s default state:
http://gfnd.rcn-ee.org:81/farm/uptime/192.168.2.31-bbb-5.15.148-bone42.txt
*************************************************
systemd-analyze
Startup finished in 9.667s (kernel) + 25.385s (userspace) = 35.052s
graphical.target reached after 24.997s in userspace
*************************************************
Regards,
I did not know what bb-symlinks did so I left it in. will remove it and see what a happens. I need usb though.
Can the boot process be rearranged to bring up the spi first (fconnects to a display), house keeping and other setup stuff with the ethernet networking last? Then maybe the 37 seconds might not seem too bad.
Make sure your spi/panel drivers are built-in…
Thank you, not sure how to get to v5.10.x-bone or v5.15.x-bone branch. Found https://openbeagle.org/beagleboard/BeagleBoard-DeviceTrees/-/tree/v5.15.x?ref_type=heads
Do I get the kernel:[5.15.148-bone42] and using ti-linux-kernel-dev and build.sh generate the .deb file and scp it to my BBB with BeagleBoard.org Debian Bullseye IoT Image 2023-02-05 (from the text file you pasted above then run dpkg -i ? Or clone the openbeagle.org site?
This is new to me but very interesting learning.
I don’t mean to be obtuse, please forgive me but the uptime file has the following:
model:[TI_AM335x_BeagleBone_Green]
dogtag:[BeagleBoard.org Debian Bullseye IoT Image 2023-02-05]
kernel:[5.15.148-bone42]
So I would, on my BBB, find and flash to eMMC Debian Bullseye IoT Image 2023-02-05, install it then install the linux kernel by
sudo apt update
sudo apt install bbb.io-kernel-5.15-bone (from v5.15.x LTS mainline branches:)
sudo reboot
sudo apt update ; sudo apt upgrade
Except
- I cannot find debian-11-x-bullseye-monthly-snapshot-2023- for 02-05 or
- the link to bbb.io-kernel-5.15-bone
No, on your existing install, just run:
sudo apt update
sudo apt-get install bbb.io-kernel-5.15-bone
sudo reboot
It’ll look like this:
debian@21-am335x-bbb:~$ sudo apt-get install bbb.io-kernel-5.15-bone
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libpruio-modules-5.15.148-bone42 linux-image-5.15.148-bone42
The following NEW packages will be installed:
bbb.io-kernel-5.15-bone libpruio-modules-5.15.148-bone42 linux-image-5.15.148-bone42
0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.
Need to get 34.5 MB of archives.
After this operation, 53.0 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Regards,
My best so far
Startup finished in 9.530s (kernel) + 24.001s (userspace) = 33.532s
graphical.target reached after 23.724s in userspace
Thanks greatly!
I was rebuilding the changes I had made to make sure I could repeat them. Flashed same image to eMMC, made my changes but when getting the kernel I got:
debian@BeagleBone:~$ sudo apt update
Get:1 Index of /debian-security bullseye-security InRelease [48.4 kB]
Get:2 Index of /debian bullseye InRelease [116 kB]
Get:3 Index of /debian bullseye-updates InRelease [44.1 kB]
Get:4 Index of /debian bullseye InRelease [3,077 B]
Reading package lists… Done
E: Release file for http://security.debian.org/debian-security/dists/bullseye-security/InRelease is not valid yet (invalid for another 291d 16h 12min 13s). Updates for this repository will not be applied.
Is this a certificate problem? Why is it not working now? As always thanks.
Did you disable systemd-timesyncd.service, apt repo’s need an accurate clock… Check your networking…
Regards,
Yes, yes I did. You learn something every day whether you want to or not.