添加initramfs脚本,让云固件能启动linux
先安装qemu-utils
sudo -i apt update apt install qemu-utils
转到/etc/initramfs-tools目录
cd /etc/initramfs-tools
将mwtools工具挂载到任何一个方便的位置,我这里是挂载到了我的主目录下面,mwtools目录自己mkdir
mount /dev/sdb1 /home/kob/mwtools
将几个文件拷贝过来
cp /home/kob/mwtools/mwtools/distros/initramfs-tools/initramfs.conf . cp /home/kob/mwtools/mwtools/distros/initramfs-tools/modules . chmod +x modules cd hooks cp /home/kob/mwtools/mwtools/distros/initramfs-tools/hooks/mwnbd . chmod +x mwnbd cd .. cd scripts/local-top cp /home/kob/mwtools/mwtools/distros/initramfs-tools/scripts/local-top/mwnbd . chmod +x mwnbd cd .. cd local-bottom cp /home/kob/mwtools/mwtools/distros/initramfs-tools/scripts/local-bottom/mwnbd . chmod +x mwnbd
debian要在modules文件最后一排加上efivarfs
最后再更新一下
cd /boot mkinitramfs -o /boot/initrd.img-6.11.09.19-generic
debian的话运行下面的命令:
sudo update-initramfs -u -k all
可以做一个脚本自动运行.sh
#!/bin/bash
# 检查是否具有root权限
if [ "$EUID" -ne 0 ]; then
echo "请使用sudo或root权限运行此脚本"
exit 1
fi
apt install qemu-utils -y
cp initramfs.conf /etc/initramfs-tools/
cp modules /etc/initramfs-tools/
cp update-initramfs.conf /etc/initramfs-tools/
cp ./hooks/mwnbd /etc/initramfs-tools/hooks/
cp ./scripts/local-top/mwnbd /etc/initramfs-tools/scripts/local-top/
cp ./scripts/local-bottom/mwnbd /etc/initramfs-tools/scripts/local-bottom/
chmod +x /etc/initramfs-tools/modules
chmod +x /etc/initramfs-tools/hooks/mwnbd
chmod +x /etc/initramfs-tools/scripts/local-bottom/mwnbd
chmod +x /etc/initramfs-tools/scripts/local-top/mwnbd
# 检测系统发行版
if [ -f /etc/os-release ]; then
. /etc/os-release
case "$ID" in
debian)
echo "检测到Debian系统"
# 安全追加模块到文件
grep -qxF 'efivarfs' /etc/initramfs-tools/modules || echo 'efivarfs' >> /etc/initramfs-tools/modules
# 更新initramfs
;;
ubuntu)
echo "检测到Ubuntu系统"
;;
*)
echo "错误:不支持的Linux发行版 - $ID"
exit 1
;;
esac
else
echo "错误:无法检测系统信息"
exit 1
fi
# 生成指定initramfs镜像
update-initramfs -u -k all
echo "操作已完成"