[Share Experiences] 动手制作自己的第二系统
Tofloor
poster avatar
广雅居士
deepin
2023-02-18 19:54
Author

以前写了第一期,虽然没有人看,但实施决定把制作方法发布出来,也许真有朋友愿意动手呢。

所谓第二系统,就是把另外一个linux的根文件系统放到一个filesystem.squashfs文件内,用深度系统的内核文件启动。启动后作为一个只读live系统使用,每次重启有回到了原始状态,做到了“无痕”使用。

需要的工具:virtualbox虚拟机,veket_22.iso镜像,debian镜像。其中debian是我们要制作的live系统,你如果喜欢别的系统也可以。我选择的是debian-live-11.6.0-amd64-gnome+nonfree.iso镜像。


在vb中建立一个虚拟机,常规操作,唯一的要求是硬盘选择手动分区分成两个分区,sda1大一些,用来安装系统,sda2小一些,用来放临时文件。

截图_20230218095946.png

选择手动分区

截图_20230218100103.png

这是较大的sda1分区,挂载为根目录,记得选择boot标记。

截图_20230218100113.png

这是较小的sda2分区,格式化不要挂载。

截图_20230218100119.png

这是最终方案,可以安装了。下面的步骤都是常规操作,按照自己的喜好来就可以。


安装完后启动进入系统,安装自己的爱好配置更新系统,安装删除软件。注意我们做的一切配置最后都要被写入一个只读系统,所以要尽可能把系统配置成理想的状态。比如软件和系统的配置,是否留下一些账号密码,垃圾文件是否清理干净。尤其有些软件第一次启动会有欢迎或配置信息,建议把这些软件都启动一遍,避免以后每次使用都要麻烦。

在虚拟机安装系统是,在主机deepin建立一个test目录并共享。共享最好可以匿名访问,这样速度比较快。

截图_20230218101836.png

好了,debian也配置成你想要的样子了,虚拟机再次挂载工具系统veket_22.iso镜像并正常关机重启。注意要用debian自己的重启功能,避免强制重启。

截图_20230218102118.png

进入系统后,选择桌面上的“文件系统”,选择较大的哪个分区,我的是53GB卷,然后点击向上按钮,就能看见一个以uuid号命名的文件夹,右键选择“制作sfs”就会生成一个sfs文件,为了好操作可以改名为debian.sfs并放到较小的分区,我的是13GB卷-----注意一定要放到较小分区去里,要不重启系统veket会丢失一切。
截图_20230218102802.png

制作完成后可以卸载veket重启进入debian系统,如果提示是否保存个人文件选择不保存。

在debian系统里,从13GB卷把debian.sfs复制粘贴到test目录。


现在可以退出虚拟机了,进入deepin的test工作目录,打开命令终端,执行以下命令:

ls 看下debian.sfs文件是否存在,确保目录正确。

mkdir a debian 建立两个新的目录

sudo mount debian.sfs a 挂载debian.sfs到目录a

ls a 查看目录a内容,发现是@和@hone两个文件夹,这是debian的文件结构,@是根文件系统,@home是家目录。

sudo cp -a a/@/* debian

sudo cp -a a/@home/* debian/home 把系统文件复制到debian目录,debian目录下就有完整的根文件系统了。


下面开始改造debian的根文件系统。

sudo rm -rf debian/boot/* 因为我们是用深度的内核启动debian系统,所以boot目录下的文件用不到。

sudo rm debian/vmlinuz*

sudo rm debian/initrd* debian根目录下那个几个内核文件也用不到。

sudo rm -rf debian/usr/lib/modules/*

sudo cp -a /usr/lib/moduels/* debian/usr/lib/moduels 因为我们用deepin内核启动debian,所以内核模块也要替换,我的是5.15.77版内核。

sudo cp -a /usr/lib/firmware/* debian/usr/lib/firmware 非必要步骤,因为debian缺乏开源固件,对有些硬件支持不好,借用deepin的固件。

还有一个关键的步骤,修改debian/etc/fstab文件。因为系统启动后会根据这个文件去挂载分区,而分区早就被我们改变了。把所有的内容删除,替换为:

UNCONFIGURED FSTAB FOR BASE SYSTEM

奇怪,一带前面的“#空格”字体就改变,大家手动加上吧。

截图_20230218114156.png

sudo mkdir /live 在deepin根目录建立一个live目录。

sudo mksquashfs debian /live/filesystem.squashfs 把我们改造好的debian根目录制作成filesystem.squashfs文件,注意一定要放到/live目录下,如果没有mksquashfs就自己安装下sudo apt install squashfs-tools。


下面开始制作引导。我是直接从/boot/grub/grub.cfg中复制,再粘贴到/etc/grub.d/40_custom中的。需要改变的是内核引导参数:

root=UUID=a400be4b-16d4-405b-8db3-a2ef81ec67b5

修改为

boot=live 上面的参数告诉内核去那里找根分区,修改后参数告诉内核以live模式启动。

为了区分,menuentry后面的启动名称改成自己喜欢的。

sudo update-grub 更新引导菜单。


重启系统,就可以选择进入live系统了。

Reply Favorite View the author
All Replies
2 / 2
To page
浪云
deepin
2023-04-12 00:54
#21

想修改/etc/grub.d/40_custom,增加一项菜单选项,启动其他分区的live-cd-ISO文件,该怎么写呢?

Reply View the author
2 / 2
To page