我想防止一些司机在mkinitramfs期间被放入ramdisk。在fedora或arch中,有一些配置文件,我可以将类似于omit_drivers+=driver-a driver-b的内容放在其中,以避免某些模块。然后,我不需要在内核/驱动程序更新之后重新构建ramdisk。
我怎样才能在ubuntu实现这一点呢?我只找到通过initramfs.conf或/etc/initramfs-tools/模块添加额外模块的选项。但是我怎样才能把一些模块列入黑名单呢?
为了避免混淆:我不想黑名单的驱动程序,我实际上需要加载驱动程序后启动。我只是不想把模块放进ramdisk。
发布于 2022-09-30 21:58:45
在initramfs-tools中,似乎没有此dracut选项的等效设置。一种方法可以是使用自定义hook脚本删除内核模块。
下面是一个非常简单的示例,其中我从initramfs中删除了e1000.ko和e1000e.ko内核模块。
root@ubuntu:~# lsinitramfs /boot/initrd.img-$(uname -r) | grep e1000
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000e
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.kohook脚本来删除模块并重新构建initramfs。install -m 0755 /dev/null /etc/initramfs-tools/hooks/omit
cat <<'EOF' > /etc/initramfs-tools/hooks/omit
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
# Begin real processing below this line
OMIT_DRIVERS="e1000.ko e1000e.ko"
for i in ${OMIT_DRIVERS}; do
find ${DESTDIR} -name ${i} -delete
done
EOF
update-initramfs -c -k $(uname -r)root@ubuntu:~# lsinitramfs /boot/initrd.img-$(uname -r) | grep e1000
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000
usr/lib/modules/5.15.0-48-generic/kernel/drivers/net/ethernet/intel/e1000ehook脚本可能要灵活得多。我的示例的内容主要是基于man -7 initramfs-工具中的示例。
MODULES选项在initramfs.conf中也可能很有用。
https://askubuntu.com/questions/1419837
复制相似问题