[systemd-devel] How to properly reboot the system from a service specified by `systemd.unit=` boot option?
Andrei Borzenkov
arvidjaar at gmail.com
Wed Jan 1 09:10:59 UTC 2025
01.01.2025 09:55, Qu Wenruo wrote:
> [BACKGROUND]
> I'm trying to implement a super simple kdump service(s) for Archlinux.
>
> The idea is super simple, just use the default linux kernel installed as
> kernel/initramfs for the kexec environment.
>
> So there is a kexec.service to setup the environment, with extra systemd
> options to disable th kexec.service itself, and start the kdump.service:
>
> ```
> [Unit]
> Description=Setup kexec environment
> After=local-fs.target
>
> [Service]
> Type=oneshot
> RemainAfterExit=true
> ExecStart=/usr/bin/kexec -p /boot/vmlinuz-linux
> --initrd=/boot/initramfs-linux.img --append="root=/dev/os/root rw
> console=ttyS0 nr_cpus=1 reset_devices systemd.mask=kexec.service
> systemd.unit=kdump.service"
> ExecStop=/usr/bin/kexec -p -u
>
> [Install]
> WantedBy=multi-user.target
> ```
>
> So that after a crash we can boot into the same kernel/initramfs combo
> and do whatever to collect the vmcore.
>
> The kdump.service will just call makedumpfile and exit (hopefully also
> reboot the system):
>
> ```
> [Unit]
> Description=Save the kernel crash dump after a crash
> After=multi-user.target
>
> [Service]
> Type=idle
> ExecStart=/bin/sh -c 'mkdir -p /var/crash/ && /usr/bin/makedumpfile -z
> -d 31 /proc/vmcore "/var/crash/crashdump-$$(date +%%F-%%T)"'
> ExecStartPost=reboot
> UMask=0077
> StandardInput=tty-force
> StandardOutput=inherit
> StandardError=inherit
> ```
>
> [PROBLEM]
> The vmcore collection happens well, but reboot failed:
>
> ```
> Failed to connect to system scope bus via local transport: No such file
> or directory
> ```
>
Could be https://github.com/systemd/systemd/pull/35773
> Then the system hang and I have to force reboot the VM instead.
>
> So any idea what's the proper way to reboot the system inside a service
> triggered by `systemd.unit=` boot option?
>
> Thanks,
> Qu
More information about the systemd-devel
mailing list