使用母盘镜像制作两个虚拟,来制作一个包含基本需求的filesystem.squashfs文件,具体看下面的链接
使用的安装镜像 是Linux Mint
制作好的成品 https://cloud.189.cn/t/U32Mvi7FnyA3 (访问码:2nbo)
最简单制作LIVE CD的办法- Community - Deepin Technology
自制LIVE ISO镜像系统内置分区挂载脚本- Community - Deepin Technology
引导文件:https://cloud.189.cn/t/y6FZ7jmqEFnu (访问码:peo2)
建议 :不要在Linux母盘安装太多的东西,毕竟启动引导分区fat32最大只支持4G文件实际4.3G的样子
建议只安装基本的比如 DOCKER VM SSH
下面是制作 filesystem.squashfs 的命令,如果制作的镜像不能保存到fat32分区使用最大压缩
#挂载母盘的路径
ABC="/media/i8520/3c4ce3cc-b53e-48b9-bc37-e8c23fb295c6"
#标准压缩模式启动速度快
sudo mksquashfs ${ABC} filesystem.squashfs
#最大压缩模式,启动速度慢
sudo mksquashfs ${ABC} filesystem.squashfs -comp xz
使用 DiskGenius 制作fat32分区 然后使用BOOTICEx64制作启动 见图 01.png 和02.png
把BOOT文件夹和GRLDR放到 fat32分区 根目录
引导配置文件配置文件说明
\BOOT\GRUB 里面的 initrd.lz 和 vmlinuz 自己重制作好的,
filesystem.squashfs 文件提取改名成那样 见图Linux.png
menu.lst 文件是启动菜单文件把你里面的
VM17-Mint-21.3-DOCKER-SMB 替换成你制作好的iso镜像的名字
把你制作到的镜像放到\BOOT\GRUB里面
由于是镜像系统,属于内存系统,docker 就需要启动后挂载这个分区
请结合desktop文件到/home/用户名/.config/autostart使用
比如我的挂载脚本
#!/bin/bash
sleep 2
#-----------------------------
# 在mint无法使用开机脚本也就是当前脚本启动docker,其他系统未知
#-----------------------------
# 自动响应sudo密码
# key 的直是密码
#-----------------------------
key='3PudTWAfagCJdSmU8F'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian > /dev/null 2>&1
#预处理
USRE_NAME=`/opt/i8520/MY-USER-PWD`
sudo /opt/i8520/CCCX /media/$USRE_NAME
sudo /opt/i8520/CCCX 750 /media/$USRE_NAME
MY_OK_MONUT="/tmp/MY_OK_MONUT"
sudo rm -rf ${MY_OK_MONUT}
mkdir -p ${MY_OK_MONUT}
#docker的一些配置文件,执行sudo systemctl restart docker会重新生成
sudo rm -rf /var/lib/docker/*#-----------------------------
# 导出硬盘设备名字
# SATA nvme
#-----------------------------
sudo blkid | grep "/dev/sd" | awk '{print $1}' | sed 's/://g' > ${MY_OK_MONUT}/SATA.log
sudo blkid | grep "/dev/nvme" | awk '{print $1}' | sed 's/://g' > ${MY_OK_MONUT}/nvme.log
#-----------------------------
# 遍历卸载 机械硬盘的脚本
#-----------------------------
MYSATA(){
filename="${MY_OK_MONUT}/SATA.log"
while IFS= read -r line
doecho "umount $line" >> ${MY_OK_MONUT}/SATA.log.x
done < "$filename"
sed '1i\#!/bin/bash' ${MY_OK_MONUT}/SATA.log.x > ${MY_OK_MONUT}/SATA.log.sh
sudo /opt/i8520/CCCX 750 ${MY_OK_MONUT}/SATA.log.sh
}
MYSATA
#-----------------------------
# 遍历卸载 nvme硬盘的脚本
#-----------------------------
MYNVME(){
filename="${MY_OK_MONUT}/nvme.log"
while IFS= read -r line
doecho "umount $line" >> ${MY_OK_MONUT}/nvme.log.x
done < "$filename"
sed '1i\#!/bin/bash' ${MY_OK_MONUT}/nvme.log.x > ${MY_OK_MONUT}/nvme.log.sh
sudo /opt/i8520/CCCX 750 ${MY_OK_MONUT}/nvme.log.sh
}
MYNVME
#-----------------------------
# 执行卸载硬盘
#-----------------------------
sudo ${MY_OK_MONUT}/SATA.log.sh
sudo ${MY_OK_MONUT}/nvme.log.sh
#-----------------------------
# 挂载分区
#-----------------------------
MYTumount(){
#挂载分区,具体自己魔改一下就可以
echo "UUID=c4f7099f-b57f-4baf-9d7d-2417f933fe1a /var/lib/docker ext4 defaults 0 2" | sudo tee -a /etc/fstab > /dev/null 2>&1
echo "UUID=aeb78a7a-31d3-413f-9388-127ea0d72cfe /opt/data/shell ext4 defaults 0 2" | sudo tee -a /etc/fstab > /dev/null 2>&1
echo "UUID=24ea6448-1b9a-46ef-a2b7-7f24e440036c /opt/data/Weather ext4 defaults 0 2" | sudo tee -a /etc/fstab > /dev/null 2>&1
echo "UUID=8848285b-e13e-49c2-85c3-25978ac518f9 /opt/data/SmbFile ext4 defaults 0 2" | sudo tee -a /etc/fstab > /dev/null 2>&1
echo "UUID=883dd58e-61cf-4184-9c63-5059af2b156f none swap sw 0 0" | sudo tee -a /etc/fstab > /dev/null 2>&1
#激活挂载
sudo mount -a
sleep 1
}
MYTumount
#------------------------
sudo /opt/i8520/CCCX /opt/data/SmbFile
sudo /opt/i8520/CCCX 777 /opt/data/SmbFile
sudo /opt/i8520/CCCX 755 /opt/data/Weather
sudo /opt/i8520/CCCX /opt/data/shell
sudo /opt/i8520/CCCX 750 /opt/data/shell
rm -rf /home/${USRE_NAME}/.cache/vmware/drag_and_drop
ln -s /opt/data/SmbFile $HOME/桌面/SMB共享目录
ln -s /opt/data/SmbFile /home/${USRE_NAME}/.cache/vmware/drag_and_drop
ln -s /opt/data/shell $HOME/桌面
cp -r /opt/data/shell/desktop/*.desktop $HOME/桌面#----
#外置脚本,挂载 /opt/data/Weather ,开机后把RUN脚本放到里面,脚本首行代码需要延迟8秒
#卡BUG,不然后面的脚本可能执行不了
#docker无法在脚本内启动,原因不知道,所以需要进去系统手动重启
bash /opt/data/Weather/RUN
#web
/opt/i8520/PythonWww start &
exit 0