
云固件《突发奇想》专栏用来记录各种奇思妙想、脑洞大开或者天马行空类的想法,有可能实现也有可能就是黄粱美梦,总之就是头脑风暴。
前几天的文章《突发奇想:支持多个镜像文件》提到了多个镜像的问题,有爱好者询问能不能把Linux镜像制作过程简化一下,今天正好趁东边铁锅炖熟之前的空挡聊一下。
使用自制内核模块的Linux镜像制作时,核心是在initramfs里面激活云固件自研的mwvd模块。三种脚本都是通过init来启动脚本。
要简化制作过程,那么就是不制作initramfs。
但是,不制作initramfs,怎么才能让内核启动时插入云固件内核模块?
Linux内核默认是执行/sbin/init来初始化的,这个默认值可以在内核启动参数上修改,这是一个修改入口。
第二,initramfs是一个内存盘,可以合并多个initramfs格式镜像,这样就可以在不改变默认的文件基础上附加一个或者多个initramfs。这是第二个修改入口。
最后,内核入口参数需要修改,手动实现肯定会让制作好的镜像不能通用,也不能变成物理机和虚拟机共用同一个镜像。因此,只能在grub引导上动手,当使用云固件镜像在物理机上启动的情况下,自动加载附加的initramfs文件。
综上所述,需要增加一个附加initramfs文件,包含云固件自研内核模块和相关脚本,同时在grub上增加功能能实现附加initramfs功能。
大家觉得是否可行,欢迎大家讨论和留言,把想法用留言记录下来一起讨论。
注意:测试云固件的计算机要求2015年之后生产的x86_64位架构计算机,要求硬盘使用GPT分区表,其他注意事项,可以参照《快速安装指南》中的要求。