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

​核心命令 {#%E2%80%8B%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

这里使用服务的方式启动挂载脚本

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 {#%E6%8C%82%E8%BD%BD%E8%84%9A%E6%9C%ACok-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 &quot;${ReadFstabUuid}&quot;|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%E7%9B%AE}

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文件的名字,以免对母盘系统需要修改时造成无法进入桌面

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