51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

自定义Linux ISO live 启动(PE)镜像总结

这里母盘制作使用Linux Mint {#%E8%BF%99%E9%87%8C%E6%AF%8D%E7%9B%98%E5%88%B6%E4%BD%9C%E4%BD%BF%E7%94%A8linux-mint}

制作母盘需要安装的扩展脚本https://cloud.189.cn/t/quqQBfzEnmYf (访问码:0pyi)

cn.i8520.toolbox.deb cn.i8520.conky.deb根具你的需求安装这个

这是第一个帖子,制作 filesystem.squashfs 文件系统的教程 :

最简单制作LIVE CD的办法- Community - Deepin Technology

核心命令 {#%E6%A0%B8%E5%BF%83%E5%91%BD%E4%BB%A4}

#挂载母盘的路径
ABC="/media/i8520/3c4ce3cc-b53e-48b9-bc37-e8c23fb295c6"
#标准压缩模式启动速度快
sudo mksquashfs ${ABC} filesystem.squashfs
#最大压缩模式,启动速度慢
sudo mksquashfs ${ABC} filesystem.squashfs -comp xz

这是使用GURB2引导Linux iso镜像的(Linux iso本身不需要可引导) :

grub引导LinuxMint iso镜像- Community - Deepin Technology

修改UUID的帖子:修改Linux 分区 UUID- Community - Deepin Technology

这里使用服务的方式启动挂载脚本 {#%E8%BF%99%E9%87%8C%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1%E7%9A%84%E6%96%B9%E5%BC%8F%E5%90%AF%E5%8A%A8%E6%8C%82%E8%BD%BD%E8%84%9A%E6%9C%AC}

User=i8520 i8520是用户名 是在制作filesystem.squashfs时候的用户名

OK-MONUT.service

[Unit]
Description=OK-MONUT

\[Service\]
Type=simple
User=i8520
ExecStart=/opt/i8520/OK-MONUT
KillMode=process
ExecStop=

`[Install]
WantedBy=multi-user.target`

创建服务: {#%E5%88%9B%E5%BB%BA%E6%9C%8D%E5%8A%A1%EF%BC%9A}

sudo ln -s /opt/i8520/OK-MONUT.service /etc/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable OK-MONUT.service

挂载脚本OK-MONUT

#!/bin/bash
#-----------------------------
# 在mint无法使用开机脚步也就是当前脚本启动docker,其他系统未知
# 为了容易获取UUID建议在分配分区时,候使用 GParted 设置卷标 分区选择exit4
# 卷标不能是中文否则会乱码
#-----------------------------
# 自动响应sudo密码
# key 的直是密码
#-----------------------------
#最外面的一个函数
i8520_link_dir(){
#在制作filesystem.squashfs设在的密码
key='lcs520..!'
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
do
    echo "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
do
    echo "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(){
sudo rm -rf /home/*
#挂载用户目录,可以理解为桌面,这样可以在桌面保存东西
echo "UUID=7eb8c958-65af-4cc2-8946-261d7096bb0a /home             ext4 defaults 0  2" | sudo tee -a /etc/fstab > /dev/null 2>&1
#挂载docker目录
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
#挂载SMB共享目录
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
#重启桌面管理器
sudo service lightdm restart
sleep 1
}
MYTumount

}


#-----------------------------


避免重复挂载
======



#-----------------------------
ReadFstabUuid="c4f7099f-b57f-4baf-9d7d-2417f933fe1a"
CatFsta=`cat /etc/fstab|grep "${ReadFstabUuid}"|wc -l`
Quantity='1'
if \[\[ ! X${Quantity} = X${CatFsta} \]\];then


echo "不存在"
i8520_link_dir
else
echo "存在"
fi

`exit 0`

grub.cfg {#grub.cfg}

set timeout=0
set default=0
set fallback=1
set color_normal=white/black
set menu_color_normal=white/black
set color_highlight=black/light-gray
export color_normal menu_color_normal color_highlight;
#----------------------
#加载文件系统支持
insmod part_gpt
insmod part_msdos
insmod fat
insmod ntfs
insmod ext2
insmod exfat
insmod btrfs
insmod gfxterm
insmod png
insmod all_video
insmod iso9660
insmod udf
#------------------------
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
  fi
}
#设置显示模式
insmod font
if loadfont ${prefix}/Fonts/unicode.pf2; then
	set gfxmode=auto
    set gfxpayload=keep
	export gfxmode
    load_video
	insmod all_video
	insmod video_bochs
	insmod video_cirrus
	insmod font
	insmod gfxterm
	insmod gfxmenu
	insmod gettext
	insmod jpeg
	insmod png
	if terminal_output gfxterm; then

    	set locale_dir=/boot/grub/Locale/
    	set lang=zh_CN
    	export lang
    fi




fi
#------------------------
#设置背景图片 boot/gurb/image
terminal_output  gfxterm
background_image $prefix/image/TETER.png
#------------------------
#启动镜像
menuentry "Mint 21.2 镜像系统" -class gnu-linux -class gnu -class os {
echo ""
echo "正在启动 Mint 21.2 镜像系统......"
set gfxpayload=keep
insmod xzio
set isofile=/pe/LinuxMint21.2/VM17-Mint-21.3-DOCKER-SMB.iso
#/boot/grub/MYi8520 创建的空文件
search --file --no-floppy --set=root /boot/grub/MYi8520
loopback loop $isofile


username=mint 用户名,如果使用制作 filesystem.squashfs一样的用户名就免密码
======================================================



quiet splash --
===============


`linux (loop)/casper/vmlinuz boot=casper hostname=DOCKER iso-scan/filename=$isofile
locales=zh_CN.UTF-8
initrd (loop)/casper/initrd.lz
}`

包含Windows启动项 {#%E5%8C%85%E5%90%ABwindows%E5%90%AF%E5%8A%A8%E9%A1%B9}

set timeout=30
set default=0
set fallback=1
set color_normal=white/black
set menu_color_normal=white/black
set color_highlight=white/black
export color_normal menu_color_normal color_highlight;
#----------------------
#加载文件系统支持
insmod part_gpt
insmod part_msdos
insmod fat
insmod ntfs
insmod ext2
insmod exfat
insmod btrfs
insmod gfxterm
insmod png
insmod all_video
insmod iso9660
insmod udf
#------------------------
if [ "$grub_platform" = "pc" ]; then
    insmod all_video
    insmod vbe
    insmod vga

elif \[ "$grub_platform" = "efi" \]; then
insmod efi_gop
insmod efi_uga


fi
#设置显示模式
insmod font
if loadfont ${prefix}/Fonts/unicode.pf2; then
set gfxmode=auto
set gfxpayload=keep
export gfxmode
insmod all_video
insmod video_bochs
insmod video_cirrus
insmod font
insmod gfxterm
insmod gfxmenu
insmod gettext
insmod jpeg
insmod png
if terminal_output gfxterm; then


    	set locale_dir=/boot/grub/Locale/
    	set lang=zh_CN
    	export lang
    fi




fi
#------------------------
#设置背景图片 boot/gurb/image
terminal_output  gfxterm
background_image $prefix/image/TETER.png
#------------------------
#启动linux
menuentry "Mint 21.2 镜像系统" -class gnu-linux -class gnu -class os {
echo ""
echo "正在启动 Mint 21.2 镜像系统......"
set gfxpayload=keep
insmod xzio
set isofile=/pe/LinuxMint21.2/VM17-Mint-21.3-DOCKER-SMB.iso
search --file --no-floppy --set=root /boot/grub/MYi8520
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper hostname=DOCKER iso-scan/filename=$isofile
locales=zh_CN.UTF-8
initrd (loop)/casper/initrd.lz
}

`#启动Windows
if [ "$grub_platform" = "pc" ]; then
# BIOS 引导配置
menuentry "USM 系统总裁PE" --class=windows --class=os --hotkey=1 {
echo ""
echo "正在启动 USM 系统总裁PE....."
insmod ntldr
search --file --no-floppy --set=root /boot/grub/MYi8520
ntldr ($root)/boot/grub/BOOTMGR
}
elif [ "$grub_platform" = "efi" ]; then
# EFI 引导配置
menuentry "USM 系统总裁PE" --class=windows --class=os --hotkey=1 {
echo ""
echo "正在启动 USM 系统总裁PE....."
search --file --no-floppy --set=root /boot/grub/MYi8520
terminal_output console
chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efi
}
fi`

以上代码是在制作母盘时候的要主要的是 filesystem.squashfs打包完成后记得修改OK-MONUT文件的名字,以免对母盘系统需要修改时造成无法进入桌面

使用制作好的Linux ISO live 视频

【自定义Linux ISO live 启动(PE)镜像】


赞(0)
未经允许不得转载:工具盒子 » 自定义Linux ISO live 启动(PE)镜像总结