[ Content contribution] 自制LIVE ISO镜像系统内置分区挂载脚本
Tofloor
poster avatar
酷谷的谷子
deepin
2024-06-11 11:22
Author

自制LIVE ISO镜像系统内置分区挂载脚本

这个就是用来倒腾的,只在虚拟机中实验过,可以预先安装 VM虚拟 docker ,可以用来跑测试,跑服务等

预装:不建议安装ssh 只安装 VM虚拟 docker 就可以

注意事项:应为是内存系统,不要把大文件保存到桌面,可以使用SMB,参考附件中的OK-MONUT_bakc

制作镜像的教程这里就不在讲了 https://bbs.deepin.org/zh/post/240485 ,内核也可以替换ISO里面的需要改下名字和原来镜像里一样就可以

附件下载 附件.zip

假设这个分区挂载脚本叫做 OK-MONUT 需要配合桌面启动器文件使用,在附件有简单说

下面说一下这个挂载脚本的制作过程

为了容易获取UUID建议在分配分区时,候使用 GParted 设置卷标 分区选择exit4,卷标不能是中文否则会乱码

核心命令 blkid 这个需要管理员权限

sudo blkid

命令执行结构类似这样,一共有6段

第一段:硬盘设备 第二段:卷标 第三段:UUID 我们只需要用到这3段

/dev/sdc1: LABEL="docker" UUID="xxx" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="fecb337e-01"

获取硬盘设备 用于遍历卸载挂载分区的脚本

#一般机械
sudo blkid | grep "/dev/sd" | awk '{print $1}' | sed 's/://g'
#输出类似
/dev/sdc1
#一般是固态
sudo blkid | grep "/dev/nvme" | awk '{print $1}' | sed 's/://g'
/dev/nvme0n1p1

使用卷标过滤匹配UUID 来挂载分区,docker是卷标

sudo blkid | grep "docker" | awk '{print $3}'|grep -oP '(?<=")[^"]*'
#实例使用
sudo rm -rf /var/lib/docker/*
MYDocker=`sudo blkid | grep "docker" | awk '{print $3}'|grep -oP '(?<=")[^"]*'`
echo "UUID=${MYDocker} /var/lib/docker ext4 defaults 0  2"|sudo tee -a /etc/fstab > /dev/null 2>&1
sudo mount -a

最终脚本OK-MONUT

#!/bin/bash
#-----------------------------
# 在mint无法使用开机脚步也就是当前脚本启动docker,其他系统未知
# 为了容易获取UUID建议在分配分区时,候使用 GParted 设置卷标 分区选择exit4
# 卷标不能是中文否则会乱码
#-----------------------------
# 自动响应sudo密码
# key 的直是密码
#-----------------------------
key='C(zK_X9XIo0Qb5!qD0a4dS9pqnt(q84A'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian > /dev/null 2>&1
#预处理
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 chmod -R 755 ${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 chmod -R 755 ${MY_OK_MONUT}/nvme.log.sh
}
MYNVME
#-----------------------------
# 执行卸载硬盘
#-----------------------------
sudo ${MY_OK_MONUT}/SATA.log.sh
sudo ${MY_OK_MONUT}/nvme.log.sh
#-----------------------------
# 挂载分区
#-----------------------------
MYTumount(){
#docker是卷标GParted创建分区的时候设置的
MYDocker=`sudo blkid | grep "docker" | awk '{print $3}'|grep -oP '(?<=")[^"]*'`
echo "UUID=${MYDocker} /var/lib/docker ext4 defaults 0  2" | sudo tee -a /etc/fstab > /dev/null 2>&1

}
MYTumount
#激活挂载
sudo mount -a
 

Reply Favorite View the author
All Replies

No replies yet