我可以使用 btrfs 在同一个分区上有两个发行版吗?

Bor*_*rph 8 boot grub2 dual-boot btrfs

我成功地使用了 btrfs 并且幸运地将主分区和系统分区分开。

使用 Ubuntu 13.10 并想测试 14.04,如何使用 btrfs 文件系统执行此操作?

系统有一个 EFI 分区,但没有额外的引导分区。/boot位于系统分区 ( /@/boot) 内。

Ada*_*ski 12

是的你可以。这就是我目前使用的。另一个很酷的事情是,你可以bedup分区您已经安装了很多类似的操作系统(如Ubuntu和Linux Mint的)后,以节省大量的硬盘空间。

诀窍是重命名默认子卷:@并将其重命名为@home发行版安装独有的名称,例如@-> @mintor@trusty@homeinto @homemintor @hometrusty

这可以在安装第一个系统之后、安装第二个系统之前的任何时候完成。最安全的方法是拍摄子卷的快照,例如:

  1. 将系统 btrfs 分区(假设为 /dev/sda3)的根子卷挂载到某处,例如到 /mnt: sudo mount btrfs /dev/sda3 /mnt
  2. 可选:列出已经存在的子卷 - 只需检查您在以下步骤中没有创建名称冲突: sudo btrfs subvolume list /mnt
  3. 克隆主@子卷: sudo btrfs subvolume snapshot /mnt/@ /mnt/@trusty
  4. 克隆房屋。我强烈不建议在不同系统之间共享整个家庭子卷。(对于共享文档,创建另一个子卷,或者更好的单独分区,将其与 ~/Documents、~/Desktop 等链接并共享):sudo btrfs subvolume snapshot /mnt/@home /mnt/@trustyhome
  5. 编辑/mnt/@trusty/etc/fstab新的根@trusty 以反映@home -> @trustyhome 子卷(和@ -> @trusty,但这一步不是绝对必要的,因为当系统读取@trusty/etc/fstab 时,它必须已经为 root 假定了正确的子卷)。
  6. 编辑/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=@并将其更改为rootflags=subvol=@into rootflags=subvol=@trusty,以便内核知道要引导什么。相当神奇的是,当您这样做时,此设置将被保留update-grub
  7. 重新启动并做sudo mount并验证正确的新的子体积来代替@@home< -这一步是非常重要的,否则你失去你的数据

一旦您重命名了子卷,并确保系统启动,并确保没有@@home安装下一个操作系统,只需/boot进行一个修改:使用单独的分区(800MB 应该足够了)。如果您的分区使用 GPT 而不是 MBR,这会有所帮助,幸运的是这已成为一种规范。(快速判断您是否使用 GPT 是查看您是否在主板 BIOS 设置中使用 UEFI 启动。UEFI 仅适用于以 GPT 格式设置的分区。

如果您不设置单独的/boot分区 - 系统将无法启动,但如果您遵循 @HullCityFan852 评论,则可以修复它:

如果您没有单独的 /boot 分区,则步骤 7 中的重启将失败,您将停留在 grub 救援提示中。在此提示下,键入set prefix=($root)/@mint/boot/grub(替换@mint为您的发行版子卷的路径),然后键入insmod normal并最终normal加载 Grub 菜单并启动您的发行版。启动后,键入sudo update-grub && sudo grub-install以使更改永久

在分区对话框中,使用自定义分区并将系统安装在与第一个操作系统相同的分区上。请确保您告诉安装程序不要格式化该分区!

安装后,您可以设置链加载 grub,因此您可以从一个安装中选择 grub 作为另一个条目,反之亦然(如何?请参阅链加载单独的 Ubuntu /boot 分区的推荐方法是什么)。

通过拥有单独的/boot分区,我不必担心在自动内核升级期间一个 Linux 为另一个 Linux 搞乱 grub。