我可以使用btrfs在同一分区上有两个发行版吗?
我成功地使用了btrfs并幸运地分离了家庭和系统分区。
使用Ubuntu 13.10并想要测试14.04,如何使用btrfs文件系统执行此操作?
系统具有EFI分区,但没有额外的启动分区。 /boot
在系统分区内( /@/boot
)。
是的你可以。 这就是我现在使用的。 另一个很酷的事情是,在安装了许多类似的操作系统(如Ubuntu和Linux Mint)之后,你可以使用分区来节省大量的硬盘空间。
诀窍是将默认子卷: @
和@home
重命名为分发安装的唯一内容,例如@
– > @mint
或@trusty
和@home
到@homemint
或@hometrusty
。
这可以在第一系统安装之后的任何时刻,在第二系统的安装之前完成。 最安全的错误方法是制作子卷的快照,例如:
- 在某个地方挂载系统btrfs分区的根子卷(假设是/ dev / sda3),例如到/ mnt:
sudo mount btrfs /dev/sda3 /mnt
- 可选:列出已存在的子卷 – 只需检查您是否在以下步骤中创建名称冲突:
sudo btrfs subvolume list /mnt
- 克隆主要的@ subvolume:
sudo btrfs subvolume snapshot /mnt/@ /mnt/@trusty
- 克隆回家。 我强烈建议不要在不同系统之间共享整个家庭子卷。 (对于共享文档创建另一个子卷,或者甚至更好的单独分区,将它与〜/ Documents,〜/ Desktop等链接并共享):
sudo btrfs subvolume snapshot /mnt/@home /mnt/@trustyhome
- 在新根@trusty上编辑
/mnt/@trusty/etc/fstab
trusty/mnt/@trusty/etc/fstab
以反映@home – > @trustyhome子卷(和@ – > @trusty的变化,但该步骤不是绝对必要的,因为到了系统的时候读取@ trusty / etc / fstab它必须已经为root假定了正确的子卷。 - 编辑
/boot/grub/grub.cfg
:修改调用当前内核的所有行(它们如下所示:linux /vmlinuz-3.16.0-50-generic.efi.signed root=UUID=9e571eab-4c88-4913-baa3-8d41d94f73d5 ro recovery nomodeset rootflags=subvol=@
)并将linux /vmlinuz-3.16.0-50-generic.efi.signed root=UUID=9e571eab-4c88-4913-baa3-8d41d94f73d5 ro recovery nomodeset rootflags=subvol=@
更改为rootflags=subvol=@
rootflags=subvol=@trusty
,以便内核知道要引导的内容。 相反,奇迹般地,当您执行update-grub
时,将保留此设置。 - 重新启动并执行
sudo mount
并validation是否使用了正确的新子卷而不是@
和@home
< - 这一步非常重要,否则您将丢失数据
一旦你重命名子卷,并确保系统启动,并确保没有@
和@home
– 安装下一个操作系统。 在分区对话框中,使用自定义分区并将系统安装在与第一个操作系统相同的分区上。 请确保,您告诉安装程序不要格式化该分区!
安装后设置链式加载grub,所以你可以从一个安装中选择grub作为另一个的条目,反之亦然(如何?看看链式加载单独的Ubuntu /启动分区的推荐方法是什么 )。
通过拥有一个单独的/boot
分区,我不必担心在自动内核升级期间其他Linux的一个Linux混乱grub。