ubuntu linux开机启动自动加载ko驱动程序_Ubuntu和CentOS定制内核驱动模块
Ubuntu和CentOS定制内核驱动模块背景一些特殊设备的驱动程序或者内核模块,并没有被开机默认加载,比如reiserfs的内核模块reiserfs.ko。内核模块方式的驱动一般在init ramdisk中,在grub中用initrd参数指定:menuentry 'Debian GNU/Linux' { ... echo'Loading Linux 4.19.28 ...' linux/boot
Ubuntu和CentOS定制内核驱动模块
背景
一些特殊设备的驱动程序或者内核模块,并没有被开机默认加载,比如reiserfs的内核模块reiserfs.ko。
内核模块方式的驱动一般在init ramdisk中,在grub中用initrd参数指定:
menuentry 'Debian GNU/Linux' { ... echo'Loading Linux 4.19.28 ...' linux/boot/vmlinuz-4.19.28 root=UUID=... echo'Loading initial ramdisk ...' initrd/boot/initrd.img-4.19.28}
而Ubuntu/Debian采用initramfs-tools生成initrd, 而CentOS采用drucat。
Ubuntu & Debian
制作一个新的initrd.img
# mkinitramfs -o initrd.img
生成的initrd是一个cpio格式文件,但是不能用cpio解开
# file initrd.imginitrd.img: ASCII cpio archive (SVR4 with no CRC)
使用unmkinitramfs解开到initrd目录下
# unmkinitramfs initrd.img initrd
如果新增一个驱动到initramfs, 编辑/etc/initramfs-tools/modules,加入需要的module名。
# List of modules that you want to include in your initramfs.# They will be loaded at boot time in the order below.## Syntax: module_name [args ...]## You must run update-initramfs(8) to effect this change.## Examples:## raid1# sd_modreiserfs
然后执行update-initramfs -u或者mkinitramfs重新生成;
默认生成的initramfs会比较大,这是因为/etc/initramfs-tools/initramfs.conf配置中MODULES=most导致,可以改为MODULES=dep;
CentOS
CentOS在initrd中添加驱动:
dracut --add-drivers virtio_blk -f /boot/initramfs-3.10.5-1.el6.elrepo.x86_64.img 3.10.5-1.el6.elrepo.x86_64
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)