linux生成initramfs,在Arch Linux中禁止生成/boot/initramfs-linux-fallback.img以节省/boot分区空间...

在Arch Linux中linux软件包安装或更新时会生成两个initramfs:initramfs-linux.img和initramfs-linux-fallback.img,后者顾名思义,就是个后备的,而其文件大小也远大于前者,足足有28MB。

对于将EFI分区直接挂在到/boot的分区方案而言(用于让UEFI直接加载内核而不用通过Bootloader),预装的Windows所自带的EFI分区只有100MB左右,这个巨大的initramfs-linux-fallback.img几乎要将它彻底占满。EFI分区可用空间过少会导致Windows10在进行大版本更新时出现“无法更新EFI系统分区”这样的错误,从而造成更新失败。

究竟是什么导致了initramfs-linux-fallback.img如此巨大?我们可以看一看/etc/mkinitcpio.d/linux.preset文件的内容,这个文件是linux软件包对mkinitcpio提供的预设文件,控制了那两个initramfs的生成:

# mkinitcpio preset file for the 'linux' package

ALL_config="/etc/mkinitcpio.conf"

ALL_kver="/boot/vmlinuz-linux"

PRESETS=('default' 'fallback')

#default_config="/etc/mkinitcpio.conf"

default_image="/boot/initramfs-linux.img"

#default_options=""

#fallback_config="/etc/mkinitcpio.conf"

fallback_image="/boot/initramfs-linux-fallback.img"

fallback_options="-S autodetect"

从最后一行可以看出,这initramfs-linux-fallback.img与initramfs-linux.img区别就是其禁用了autodetect钩子,而autodetect钩子的功能为“通过生成模块白名单缩减 initramfs 的大小,白名单中仅包含 sysfs 中扫描到的模块。”,也就是说,initramfs-linux-fallback.img的不同,便是其一股脑的将许多用不到的东西,也添加进了initramfs。

也就是说,对于一般的桌面系统,这个initramfs-linux-fallback.img实际上就是个鸡肋,如果你的系统一直能正常启动,那你根本不需要它,可以删掉。但手动删除了initramfs-linux-fallback.img后,在每次内核更新时它都又会自动生成,要想一劳永逸,我们还需要修改刚才的/etc/mkinitcpio.d/linux.preset文件,删掉fallback的配置:(记着备份原版)

# mkinitcpio preset file for the 'linux' package

ALL_config="/etc/mkinitcpio.conf"

ALL_kver="/boot/vmlinuz-linux"

PRESETS=('default')

#default_config="/etc/mkinitcpio.conf"

default_image="/boot/initramfs-linux.img"

#default_options=""

这样,EFI分区就可以剩下一小半的空间,足够WIndows10正常更新。

+3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值