
注意:本教程为初稿,对应的initramfs脚本和内核模块还在优化和调整中,教程也会更新。
initramfs-tools脚本是Debian Linux系列的initrd脚本类型。
基于Debian的发行版,以及基于Ubuntu的发行版,数量众多,而且Ubuntu也是基于Debian的,因此,使用initramfs-tools脚本的发行版应该是三种脚本中最多的。
国产操作系统清一色都是使用本脚本体系的,可以用本教程方法制作。
本教程使用Debian 13.3作为例子来演示操作过程。内核版本为6.12。
下载Debian 13.3的安装ISO,选择DVD版本,包含全部内容,添加到Hyper-V虚拟机里面,使用二代虚拟机、关闭安全启动、关闭检查点执行正常安装。
安装过程中,分区结构选择只分ESP和根分区两个分区,不需要swap分区,根分区文件系统使用ext4,切勿使用lvm等等高级磁盘模式。
使用VHDx镜像后,本身就可以通过操作镜像直接调整分区,没必要使用lvm。
云固件相关程序和代码,可以通过在hyperv附加磁盘获取。演示镜像已经提前拷贝到/root目录下。
云固件自举程序包括编译内核模块、编译用户空间程序、添加支持initramfs-tools的shell脚本三个部分,需要准备编译环境。
Debian系统使用ISO安装后,默认使用cdrom作为安装包来源,需要修改apt的sources来支持直接联网安装软件包。
使用root登录,打开终端
cd /etc/apt/vi sources.list使用#注释掉第一行的deb cdrom
复制默认的debian.org仓库, 将内容修改为:
deb http://mirrors.lzu.edu.cn/debian/ trixie main non-free-firmware保存修改内容并退出vi。
apt update输入apt update命令同步仓库。
apt install build-essential bison flex vim输入上述命令安装编译环境和VIM编辑器
apt install linux-headers-`uname -r`输入上述代码安装Linux内核头文件,其中uname -r命令指定匹配当前内核对应的头文件。
编辑器也可以根据自己的熟悉程度选择其他,当然默认的vi也够用了。
进入/root/下MWVD-6.12文件夹,里面保存了对应6.12内核的分发版本。
make & make install输入make & make install 命令执行编译和安装。 没有错误的话,mwvd.ko(mwvd.ko.zst)将会被安装到/lib/modules/uname -r/updates/下。
编译过程中,由于发行版并不会提供对内核签名的私钥证书,所以会提示签名失败,这个不影响使用。如果需要加固安全,那么可以使用自签名证书添加到系统中,并手动对内核模块进行签名。
安装成功后,可以执行depmod更新内核模块依赖,使用modprobe mwvd测试内核模块是否可以被加载成功。
make & make install进入/root/MwSetup文件夹,执行make和make install命令
编译操作内核模块的用户空间程序,成功后会被安装到/usr/sbin/下。
进入/root/MwBoot/distros/initramfs-tools文件夹,这里保存了编辑好的initramfs-tools脚本。
复制 hooks/mwvd 到 /etc/initramfs-tools/hooks/下;
复制 scripts/local-top/mwvd 到 /etc/initramfs-tools/script/local-top/下;
复制 scripts/local-bottom/mwvd 到 /etc/initramfs-tools/script/local-bottom/下;
cp hooks/mwvd /etc/initramfs-tools/hooks/.cp scripts/local-top/mwvd /etc/initramfs-tools/scripts/local-top/.cp scripts/local-bottom/mwvd /etc/initramfs-tools/scripts/local-bottom/.复制 modules 到 /etc/initramfs-tools/ 下;这个文件定义了启动时要加载的内核模块。
cp modules /etc/initramfs-tools/.修改/lib/udev/rules.d/60-block.rules, 修改第12行,添加“mwvd*|”到loop*|之后。
修改/lib/udev/rules.d/60-persistent-storage.rules, 修改第10行,添加“mwvd*|”到loop*|之后。
上述2行修改,完善initramfs-tools脚本后会被取消。
上述准备步骤完成后,就可以重新生成initramfs启动镜像了。
update-initramfs -u执行上述命令,就会重新生成启动镜像。至此,添加云固件镜像自举启动就全部完成了。
关闭虚拟机,复制到需要测试的物理机上就可以测试是否可以通过物理机直接启动。 推荐hyperv结合硬盘透传功能,直接原地测试云固件镜像,不需要复杂的再复制步骤。

自制镜像的模板在教程资源的“05-自制镜像”文件夹内提供,需要尝试自制的爱好者可以测试,解压后得到vhdx镜像不能直接通过云固件启动,可以在hyperv或者qemu中打开,参考上面的操作步骤完成云固件自举启动的设置。
推荐使用前面四个网盘,天翼云盘和UC云盘没有VIP账号,部分文件不完整,后续会补充完整。
务必使用微信扫码。
补充115云盘(微信扫码有错误)地址:
https://115cdn.com/s/swf785q3hp2?password=we39&
注意:测试云固件的计算机要求2015年之后生产的x86_64位架构计算机,要求硬盘使用GPT分区表,其他注意事项,可以参照《快速安装指南》中的要求。