比如 fedora37 安装后有 2 个 initramfs:
/boot/initramfs-6.0.7-301.fc37.x86_64.img
/boot/initramfs-0-rescue-14f9bf682cca4304af812f6a5b826d7d.img
我知道一个用于正常启动系统,另一个用于启动不起来的时候救援系统,但我不知道为什么要搞 2 个,搞 2 个有什么好处?
1
churchmice 2023-02-25 20:48:03 +08:00 via Android
我有点错乱,你都说了有一个是用来应付启动不了的情况,就像大楼里面有正常 1 情况用的电梯和楼梯,还有着火时用的消防通道,这道理很难理解吗
|
2
Noicdi 2023-02-25 20:54:04 +08:00 via iPhone
有可能搞两个的好处是当第一个启动不起来的时候用第二个救援系统?
|
3
slack 2023-02-25 20:56:12 +08:00
Fedora 这种激进更新的发行版有这种设置不奇怪,我用 Archlinux 也装了稳定版内核和 LTS 内核。
|
4
CrossEntropy 2023-02-25 20:57:37 +08:00
谜底就在谜面中
|
5
wniming OP @churchmice @Noicdi 我觉得没必要搞 2 个,让正常那个也有救援系统的功能不久行了?
我会问这个问题是因为我发现我把装在台式机的 Linux 系统拷贝到移动硬盘里然后用笔记本启动,用正常的 initramfs 启动不起来,用救援的就可以,然后我把救援的 initramfs 的 /lib/modules/6.0.7-301.fc37.x86_64/目录添加到正常的 initramfs 里就能正常启动了,我觉得救援的 initramfs 相比正常的 initramfs 的区别不过就是自带的程序多了一点,内核模块也多了一点,就这点区别实在是没必要搞 2 个 initramfs 。 |
6
RuralHunter 2023-02-25 21:06:51 +08:00
如果 initramfs 损坏了呢?
|
7
wniming OP 我就是想把台式机配置好的系统拷贝到笔记本上使用,懒得在笔记本上重装重新配置一遍系统,只需要拷贝过去改改 initramfs 和 grub 就能正常启动了
|
8
wniming OP @RuralHunter 怎么会损坏呢?一般发行版都是会指定 ro 内核参数去挂载 initramfs 的
|
9
heiher 2023-02-25 21:29:13 +08:00 via Android
@wniming #5 说的没错,原因应该是 SSD/NVME 等高速外存出来前,机械硬盘上启动时间有较为明显的差别吧。
|
10
Ayahuasec 2023-02-25 21:34:20 +08:00
我记得 Debian 在安装一些软件包的时候会重新生成 initrd ,把新增的部分可执行程序一起打包进去。
我猜测这种两套 initramfs 的设计应该类似,rescue 的那个是默认的 initramfs ,另一个是按照用户安装软件包的需求,增加了软件功能的 initramfs 。但是可能在生成的过程中造成了意料之外的问题,所以留一个 rescue 的版本给用户应急用。 |
11
stein42 2023-02-25 21:38:22 +08:00 3
第二个 initramfs 包含所有的内核模块。
第一个 initramfs 只包含必需的内核模块,占用内存更少,启动更快,但是改变或添加硬件后可能无法启动。 这时候可以用第二个启动,然后重新构建 initramfs 。 如果你只需要一个 initramfs 的话,可以修改配置,重新构建,再删除多余的 initramfs 。 arch linux 使用 mkinitcpio ,参考: https://wiki.archlinux.org/title/Mkinitcpio fedora 使用 dracut ,有些不同。 |
12
ziseyinzi 2023-02-25 21:47:25 +08:00
一个是根据当前硬件和配置生成的,另一个是大而全的。后者影响启动速度。
|
13
deorth 2023-02-25 23:16:46 +08:00 via Android
相当于 windows 的安全模式
|
14
Tink 2023-02-25 23:56:56 +08:00
第二个是救援啊,你看名字
|
16
ericgui 2023-02-26 13:43:38 +08:00
一个用于正常启动系统,另一个用于启动不起来的时候救援系统
|
17
suifengdaren 2023-02-26 16:16:05 +08:00 via Android
lsinitrd 看一下不就知道
|