You are not logged in.
systemd-boot:
Startup finished in 16.046s (firmware) + 20.635s (loader) + 1.352s (kernel) + 1min 14.220s (userspace) = 1min 52.255s
refind:
Startup finished in 10.071s (firmware) + 2.990s (loader) + 1.329s (kernel) + 1min 7.880s (userspace) = 1min 22.272s
Over 17 seconds of difference in loader stage before systemd-boot menu appears on screen during bootup. Refind menu appears almost instantly.
Issue started to appear after systemd-update v252
Additional info:
nvme ssd, dual boot with windows
Offline
I have systemd-boot on several machines and the loader section of systemd-analyze does not take as long as your quoted time. On one dual boot laptop I have with both arch and Windows 10, for example:
$ systemd-analyze
Startup finished in 4.416s (firmware) + 4.423s (loader) + 2.699s (kernel) + 3.097s (initrd) + 6.136s (userspace) = 20.772s
graphical.target reached after 6.136s in userspace.
and on a desktop server with an nvme ssd drive:
$ systemd-analyze
Startup finished in 4.953s (firmware) + 1.768s (loader) + 1.907s (kernel) + 1.291s (initrd) + 11.279s (userspace) = 21.200s
The second is a server so will inevitably take longer overall as it has to start a number of services, but the second example is single boot to arch only. So it depends on the detail of how the system is set up, particularly the sd-bootor loader entries, and whether or not the efi is on the same partition as the loader entries and kernel, or whether or not a separate XBOOTLDR partiion contains /boot, for sd-boot,, and may also depend on other factors including how systemd-boot interacts with the uefi on a particular motherboard.
Does systemd-analyze critical-chain point to any additional info about which part of the boot is taking time?
Last edited by mcloaked (2022-11-23 12:11:24)
Mike C
Offline
[root:~] # systemd-analyze critical-chain
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
└─lightdm.service @2.291s +12ms
└─systemd-user-sessions.service @2.285s +3ms
└─nss-user-lookup.target @2.306s
[root:~] # cat /boot/loader/entries/*
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/archssd-root rw
[root:~] # mv temp/arch-snapshot.conf /boot/loader/entries/
[root:~] # cat /boot/loader/entries/*
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/archssd-root rw
title Arch Linux Snapshot
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/archssd-root rw systemd.unit=make-snapshots.target
[root:~] # cat /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/archssd-root rw
[root:~] # cat /boot/loader/entries/arch-snapshot.conf
title Arch Linux Snapshot
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/archssd-root rw systemd.unit=make-snapshots.target
[root:~] # ll /boot
drwxr-xr-x - root 23 lis 07:58 EFI
drwxr-xr-x - root 23 lis 14:27 loader
drwxr-xr-x - root 19 lis 12:20 memtest86+
.rwxr-xr-x 51k root 22 lis 07:05 amd-ucode.img
.rwxr-xr-x 46M root 22 lis 12:39 initramfs-linux-fallback.img
.rwxr-xr-x 20M root 22 lis 12:39 initramfs-linux.img
.rwxr-xr-x 99 root 19 lis 11:43 refind_linux.conf
.rwxr-xr-x 11M root 19 lis 11:44 vmlinuz-linux
EFI partition: BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition", shared with windows
Offline
In your bootloader entries I notice that you have the amd-ucode.img before the initramfs.img lines - I don't know if that matters but I always put the microcode image initrd line after the main initramfs line.
So in this laptop my arch kernel entry is:
$ cat /boot/loader/entries/linux-arch.conf
#
# linux-arch.conf
#
title Linux Arch
linux /vmlinuz-linux
initrd /initramfs-linux.img
initrd /intel-ucode.img
options root="UUID=xxxxx-xxxxxx-xxxxxx" radeon.runpm=0 rw audit=0
Since yours boots but just takes longer than expected this may not matter but worth checking.
Also running "systemd-analyze blame" may give additional info about any components that took extra time in the boot process.
Last edited by mcloaked (2022-11-23 16:37:59)
Mike C
Offline
In your bootloader entries I notice that you have the amd-ucode.img before the initramfs.img lines - I don't know if that matters but I always put the microcode image initrd line after the main initramfs line.
So in this laptop my arch kernel entry is:
$ cat /boot/loader/entries/linux-arch.conf # # linux-arch.conf # title Linux Arch linux /vmlinuz-linux initrd /initramfs-linux.img initrd /intel-ucode.img options root="UUID=xxxxx-xxxxxx-xxxxxx" radeon.runpm=0 rw audit=0
Since yours boots but just takes longer than expected this may not matter but worth checking.
Also running "systemd-analyze blame" may give additional info about any components that took extra time in the boot process.
Unless I'm mistaken, all that would do is skip the ucode image entirely. Not what you want.
Offline
Also running "systemd-analyze blame" may give additional info about any components that took extra time in the boot process.
Isn't it after the kernel loads?
[root:~] # systemd-analyze blame
1min 2.046s reflector.service
5.210s NetworkManager-wait-online.service
2.765s docker.service
1.832s systemd-modules-load.service
528ms dev-mapper-archssd\x2droot.device
269ms systemd-hwdb-update.service
171ms mnt-rpi4.mount
153ms user@1000.service
131ms boot.mount
124ms systemd-journal-flush.service
104ms lvm2-monitor.service
78ms systemd-fsck@dev-disk-by\x2duuid-abc9eab5\x2da602\x2d4d82\x2d85f8\x2d2a74ec2582ad.service
72ms systemd-udev-trigger.service
71ms dev-disk-by\x2duuid-4e44ad4a\x2d574b\x2d4e63\x2da00f\x2dc912995a9b34.swap
59ms ldconfig.service
48ms systemd-journald.service
39ms accounts-daemon.service
39ms libvirtd.service
37ms lm_sensors.service
33ms systemd-timesyncd.service
27ms systemd-fsck@dev-disk-by\x2duuid-502D\x2d0557.service
25ms systemd-tmpfiles-setup.service
25ms systemd-udevd.service
24ms systemd-sysusers.service
23ms systemd-logind.service
23ms systemd-boot-update.service
22ms systemd-tmpfiles-setup-dev.service
20ms bluetooth.service
20ms NetworkManager.service
16ms systemd-random-seed.service
11ms dbus.service
11ms dev-hugepages.mount
10ms dev-mqueue.mount
10ms sys-kernel-debug.mount
9ms polkit.service
9ms sys-kernel-tracing.mount
9ms systemd-machined.service
9ms kmod-static-nodes.service
8ms modprobe@fuse.service
8ms modprobe@configfs.service
7ms modprobe@drm.service
7ms systemd-journal-catalog-update.service
7ms lightdm.service
7ms systemd-remount-fs.service
7ms alsa-restore.service
4ms user-runtime-dir@1000.service
4ms systemd-update-utmp.service
3ms home.mount
3ms systemd-rfkill.service
3ms systemd-sysctl.service
2ms sys-kernel-config.mount
2ms docker.socket
2ms systemd-update-done.service
2ms systemd-user-sessions.service
2ms rtkit-daemon.service
1ms sys-fs-fuse-connections.mount
1ms tmp.mount
Offline
mcloaked wrote:In your bootloader entries I notice that you have the amd-ucode.img before the initramfs.img lines - I don't know if that matters but I always put the microcode image initrd line after the main initramfs line.
So in this laptop my arch kernel entry is:
$ cat /boot/loader/entries/linux-arch.conf # # linux-arch.conf # title Linux Arch linux /vmlinuz-linux initrd /initramfs-linux.img initrd /intel-ucode.img options root="UUID=xxxxx-xxxxxx-xxxxxx" radeon.runpm=0 rw audit=0
Since yours boots but just takes longer than expected this may not matter but worth checking.
Also running "systemd-analyze blame" may give additional info about any components that took extra time in the boot process.
Unless I'm mistaken, all that would do is skip the ucode image entirely. Not what you want.
Yes
initrd
is the initrd cpio image to use when executing the kernel. This key may appear more than once in which case all specified images are used, in the order they are listed.
Microcode updates must otherwise be enabled by adding /boot/amd-ucode.img or /boot/intel-ucode.img as the first initrd in the bootloader configuration file.
<49,17,III,I> Fama di loro il mondo esser non lassa;
<50,17,III,I> misericordia e giustizia li sdegna:
<51,17,III,I> non ragioniam di lor, ma guarda e passa.
Offline
I've checked systemd-boot build from source, version 251 and it appears instantly. I'm gonna bisect it and create issue at systemd github.
EDIT:
https://github.com/systemd/systemd/issues/25510
Last edited by Czarnodziej (2022-11-24 07:34:38)
Offline