[ Content contribution] 【完结】定制Linux live ISO镜像,挂载可读写用户目录,以及其目录
Tofloor
poster avatar
酷谷的谷子
deepin
2024-06-17 21:03
Author

这个教程,陆陆续续搞了2年,现在终于可以,类似刷固件的方式使用了Linux 系统了

这个是弄好的虚拟机vm17.5 https://cloud.189.cn/t/MFnIbaAVjaEn (访问码:0jfq)

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

https://bbs.deepin.org/zh/post/240485

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

https://bbs.deepin.org/zh/post/273875

修改UUID的帖子:https://bbs.deepin.org/zh/post/259734

利用 $HOME/.config/autostart 执行desktop文件启动挂载脚本,在加上这个目录在没有进入桌面期其实就启动了。利用这个就可以挂载可读写的用户目录

但是挂载用户目录的的脚本不能存在于 filesystem.squashfs 中

一个简单的启动--挂载--流程

123.png

我这边实验的使用是会自动识别虚拟内存分区,如果不能识别在制作filesystem.squashfs阶段先处理好


下面贴一下我的挂载脚本

#!/bin/bash
#-----------------------------
# 在mint无法使用开机脚步也就是当前脚本启动docker,其他系统未知
# 为了容易获取UUID建议在分配分区时,候使用 GParted 分区选择exit4
#-----------------------------
# 自动响应sudo密码
# key 的直是密码
#-----------------------------
sleep 2
#最外面的一个函数
i8520_link_dir(){
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
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(){
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
#----------------------------
# 启动挂载可读写用户目录的脚本
#----------------------------
bash /opt/data/Weather/RUN
}
#-----------------------------
# 为了在重启桌面管理器后不重复行当前脚本
# 因为重启桌面管理器以后会重新执行
# $HOME/.config/autostart 下的所有desktop
#-----------------------------
#使用UUID来简单排除重复执行挂载代码
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

可以镜像LIVE系统后使用 gparted 划分一个分区 然后在我点电影点一下这个分区就会自带挂载

filesystem.squashfs 文件在 /cdrom/casper ,下面解压出、home目录

#!/bin/bash
#需要倒入用户目录的路径
extracted_files="/media/i8520/7eb8c958-65af-4cc2-8946-261d7096bb0a"
example_files="/cdrom/casper/filesystem.squashfs"
sudo unsquashfs -d ${extracted_files} -f ${example_files} home
#倒入后使用把 home/用户名 mv 用户名 /media/i8520/7eb8c958-65af-4cc2-8946-261d7096bb0a
#在删掉home文件夹

挂载 用户目录的脚本其实简单暴力 /opt/data/Weather/RUN

#!/bin/bash
key='3PudTWAfagCJdSmU8F'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian > /dev/null 2>&1
#-----------------------------
# 挂载分区 hoem/i8520
#-----------------------------
MYTumount(){
sudo rm -rf /home/*
#用户目录的UUID
echo "UUID=7eb8c958-65af-4cc2-8946-261d7096bb0a /home ext4 defaults 0  2"   | sudo tee -a /etc/fstab > /dev/null 2>&1
#激活挂载
sudo mount -a
#重启桌面管理器
sudo service lightdm restart
sleep 1
}
#-----------------------------
# 为了在重启桌面管理器是不重复执行当期脚步
# $HOME/.config/autostart
#-----------------------------
ReadFstabUuid="UUID=7eb8c958-65af-4cc2-8946-261d7096bb0a"
CatFsta=`cat /etc/fstab|grep "${ReadFstabUuid}"|wc -l`
Quantity='1'
if [[ ! X${Quantity} = X${CatFsta} ]];then

   echo "挂在用户目录"
   MYTumount
 else
   echo "OK"
fi

exit 0

这样配置好以后,下次进入系统就可以通过可读写的用户目录 $HOME/.config/autostart 来启动docker

下面是启动docker的脚本

#!/bin/bash
key='3PudTWAfagCJdSmU8F'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian > /dev/null 2>&1
sudo  /usr/bin/dockerd

最后调试好把所有脚本 shc 加密掉,应为脚本里有开机密码。

Reply Favorite View the author
All Replies
笑笑天
deepin
2024-06-17 21:46
#1

不明觉厉applaud

Reply View the author
babyfengfjx
Super Moderator
CQA
2024-06-18 10:47
#2

牛而逼之!

Reply View the author
nero28
deepin
2024-06-18 11:25
#3

看不懂兮

Reply View the author
酷谷的谷子
deepin
2024-06-18 12:25
#4
nero28

看不懂兮

基本是就是倒腾脚本的,最主要是是制作filesystem.squashfs

Reply View the author
浪云
deepin
2024-06-20 11:20
#5

我想要一个类似PE的VDI,越小越好

除了基础系统外只要有wps和支持flash的奇安信浏览器就可以,

不知道有没有定制的?

我自己搞了一个mint,18G,太大了

Reply View the author