每次通过GRUB启动Linux的时候,都会有两个选项,一个是initramfs-linux.img
,另一个是initramfs-linux-fallback.img
。我一直不知道fallback有什么特殊功能,直到我看到了ArchWiki上的mkinitcpio条目。
每次升级内核,mkinitcpio都会默认创建两个内存盘镜像:默认镜像/boot/initramfs-linux.img和fallback镜像/boot/initramfs-linux-fallback.img。fallback镜像和默认镜像只有一个区别,就是创建时跳过了autodetect钩子扩展,因而它包含更多的内核模块。autodetect扩展会探测硬件信息,针对硬件向镜像添加需要的模块,因此缩小了镜像。
原来只是比普通的initramfs包含了更多的驱动,难怪我更换设备之后只能通过fallback启动。
# david @ David-PC in ~ [2:49:51]
$ ls -alh /boot
总用量 49M
drwxr-xr-x 1 root root 164 5月 29 10:55 .
drwxr-xr-x 1 root root 122 5月 29 09:43 ..
drwxr-xr-x 3 root root 16K 1月 1 1970 efi
drwxr-xr-x 1 root root 98 5月 29 23:39 grub
-rw-r--r-- 1 root root 30M 5月 29 10:53 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 9.2M 5月 29 10:52 initramfs-linux.img
-rw-r--r-- 1 root root 3.0M 5月 22 03:13 intel-ucode.img
-rw-r--r-- 1 root root 6.5M 5月 29 09:45 vmlinuz-linux
体积也有明显区别。