Xubuntu 22.04
$ ps 1
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /sbin/init splash
なんだけど実行ファイルは
$ sudo ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Dec 4 20:37 /proc/1/exe -> /usr/lib/systemd/systemd
$ file /usr/lib/systemd/systemd
/usr/lib/systemd/systemd: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=ec2291ddd0322d1789b39086efab388020063b53, for GNU/Linux 3.2.0, stripped
だしコマンドラインは
$ sudo cat /proc/1/cmdline; echo
/sbin/initsplash
だしw
$ cpio -i --no-absolute-filenames < /boot/initrd.img
するとマイクロコードしか出てこないんだな…
現代のLinuxはchrootなんてしてなかったんや…
$ sudo cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.15.0-89-generic root=UUID=9e07538a-e856-4c4d-b3b0-6db4b1a54229 ro quiet splash vt.handoff=7
$ sudo blkid | grep 9e07538a-e856-4c4d-b3b0-6db4b1a54229
/dev/nvme0n1p2: UUID="9e07538a-e856-4c4d-b3b0-6db4b1a54229" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="baea846f-0011-4fbf-8540-bbde810df564"
$ df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/nvme0n1p2 238762652 83977792 142583544 38% /
Linuxカーネルの起動オプションを知りたいんですけど
$ man kernel
No manual entry for kernel
$ man vmlinuz
No manual entry for vmlinuz
ですよねーw
や、むずかしくなかった。カーネルは/sbin/initを起動するんだけどそれが/lib/systemd/systemdなんだ。
$ ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Sep 19 06:57 /sbin/init -> /lib/systemd/systemd
/usrはどこに消えた…
まさかのハードリンク…じゃなくて
$ stat {,/usr}/lib/systemd/systemd | grep Inode
Device: 10302h/66306d Inode: 5569717 Links: 1
Device: 10302h/66306d Inode: 5569717 Links: 1
親のディレクトリがシンボリックリンクでしたねw
$ ls -l /lib
lrwxrwxrwx 1 root root 7 May 16 2021 /lib -> usr/lib
@zundan /usr merge は 2015 年ぐらいから種々の distro で進められているヤツですね。Debian はまだ実施延期していると思いますが Fedora や Ubuntu はもうとっくにやってしまっているかと https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
@orumin 聞きかじったことはあったかと思いますが初めて実感しました…。
@zundan Arch Linux では 2013 年にはもう実施されていました。ちなみに Arch は 2012 年には BSD init から systemd に移行してしまっていたと思うので全体的に先取りすぎる動きはしていますが