[deepin exploration] 安装deepin到btrfs子卷的方法之一
Tofloor
poster avatar
广雅居士
deepin
2024-04-02 21:55
Author

我们都知道deepin不支持安装系统boot到btrfs分区,更不要提安装到子卷了,实际上我们有一个很简单的方法安装deepin到btrfs分区的子卷,可以说物理机直接安装,也可以安装到虚拟机在导出到物理机,今天就先简单说一下直接物理机btrfs子卷的方法。大家知道linux硬盘分区时sda1、NVMe0n1p2之类的,为了照顾不同的硬盘,也为了叙述方便,本帖一概按1#分区2#分区方式叙述。

在用启动优盘启动安装程序后,选择手动分区,把硬盘分为三个分区:1#分区为efi分区,这个没什么可说的,2#分区为btrfs分区,挂载为/分区,3#分区为ext3、ext4分区,挂载为boot目录。为什么要把boot分到3#分区呢?当然是我有强迫症了,诸位看官看到最后就明白了。

现在正常安装系统,完成后进入系统,在根目录下执行命令:sudo btrfs subvolume snapshot / @deepin

现在在你的系统根目录下既有个@deepin子卷,里面有个半成品的系统了,为什么说是半成品呢?因为它几个缺点,不能直接使用。

  1. 子卷系统的boot目录没有引导内核文件,这个好解决,直接把根系统的boot目录复制过去就可以了,我一般是用 sudo cp -a /boot/* /@deepin/boot完成,注意很可能把efi目录内容也复制过去了,而我们的efi目是要挂载efi分区的,强迫症就把里面的内容删除下,懒人不删除也没事儿。
  2. fstab文件是错误的要更改,因为fstab还是根系统的文件挂载,要手动改一下,最关键是subvol=@deepin参数,告诉系统把@deepin子卷挂载为根目录,如果有子卷ID的参数,建议删除或者 sudo btrfs subvolume show 查询下ID参数。注意删除/boot挂载boot分区那行,因为我们已经复制boot分区内容到子卷boot目录了。UUID=b28288ee-cb94-4c59-933f-05ab523f7f97 / btrfs defaults,subvol=@deepin 0 0
  3. 子卷的grub.cfg文件引导参数不对,这个不建议手动修改,先修改根目录grub.cfg引导命令,临时引导下子卷系统,加上 rootflags=subvol=@deepin参数告诉内核去那里挂载根目录就可以了。
    		linux	/boot/vmlinuz-6.1.0-18-amd64 root=UUID=b28288ee-cb94-4c59-933f-05ab523f7f97 ro rootflags=subvol=@deepin  quiet
    		echo	'Loading initial ramdisk ...'
    		initrd	/boot/initrd.img-6.1.0-18-amd64
    

现在引导进子卷系统,执行命令 sudo update-grub更新下子卷的grub.cfg文件基本成形了。


还没完,现在还有修改一个efi分区下的小grub.cfg文件,就在这里:
图片.png

在efi分区的boot目和deepin等目录下可以找到它,打开内容如下,注意第二行,高息grub2那里可以找到grub.cfg文件,要修改成子卷里的grub.cfg路径。

search.fs_uuid b28288ee-cb94-4c59-933f-05ab523f7f97 root 
set prefix=($root)'/@deepin/boot/grub'
configfile $prefix/grub.cfg

现在到了杀驴时刻了,你可以删除根目录下的所有常规文件,注意别铲除@deepin子卷,然后在删除3#分区,并入2#分区。


为什么要把boot分区放到3#分区,你理解了吗?

Reply Favorite View the author
All Replies
2 / 2
To page
毛毛虫
deepin
2024-06-17 08:52
#21
f@deepin

os安装到btrfs备忘录.wps.zip

那我也分享一下自己乱总结的安装要点proud

你写的更符合实战且简单一点,例如不要手动改boot/grub是正确的,还是应该改配置文件再生成,这是标准操作,直接改都是野路子不正常

Reply View the author
2 / 2
To page