在发行版之间共享/启动分区


4

我几个月前在我的机器上运行了默认的CEntOS 6.5安装,并且已经添加了我不想删除的程序和文件。我想双启动Ubuntu 14.x,我想知道如何处理/ boot分区。硬盘驱动器目前是这样分区的:

sda:256 GB SSD

  • sda1:/ boot 500 MB
  • sda2:/ LVM物理卷~237 GB
    • /根
    • /家
    • 交换

我的问题是:在发行版之间共享/ boot分区是否可以?或者我是否需要为Ubuntu提供单独的/ boot分区?如果是这样,是否有必要将/ boot分区放在驱动器的开头?

Answers:


1

你可以,但这不是一个好主意。

在GRUB中,您要做的是指定不同的内核和 initrd 系统上安装的每个分发的文件。

但是,一个发行版的引导配置可能与其他发行版的配置冲突,具体取决于每个发行版如何设置其引导配置并在其中命名其文件 /boot。这可能会导致混乱的配置,并可能使一个或多个发行版无法启动。在更新内核或更改任何发行版中的引导设置时,应特别小心。但是,如果没有冲突,您应该能够毫无问题地启动两个操作系统。


一个发行版的启动配置可能与其他发行版的配置冲突... 不仅可以升级( apt-get dist-upgrade apt-get autoremove )并删除一个发行版可以认为不再需要的文件。
Hastur

我提到:“在更新内核或更改任何发行版中的引导设置时应特别小心。”
bwDraco

我更倾向于强调即使是简单 apt-get autoremove 可能是破坏性的。有可能错过上面那个命令(没有明确与内核相关),你可以删除当前发行版不再需要的包,包括内核可能需要在另一个...我相信在不同的时候听它多次比以后更好的方式;-)将其视为对你的陈述的支持 “你可以,但这不是一个好主意。”
Hastur

1

我意识到这对派对来说有点晚了,但我只是接下来要保留三个并发安装和一个 /boot 划分:

  • 拱形linux
  • ubuntu 14.04
  • ubuntu 16.04

我已经使用arch多年了,但是对ubuntu很不熟悉,并且不确定如何阻止它安装bootloader所以我就让它。对于拱门,我一直在使用 syslinux不是 grub 所以我对它更加熟悉。虽然这是 有些 在我的实验的早期,这是我的程序:

  • 识别可能存在冲突的文件。在注意到ubuntu与arch的命名约定之后,这一点下降到14.04和16.04 vmlinuzininrd.img,它们的名称相同(如果它们在不同时间更新,可能除了版本号之外)。据我所知,它们是兼容的,但我选择不对待它们。
  • 建立 syslinux 像往常一样,为每个发行版创建条目(如下所示)
  • 在更新任何可能存在冲突的发行版时,实施命名策略以避免问题
  • 有一个备份计划

如果ubuntu更新内核,我会得到两个关键文件:

  • /boot/initrd.img-x.x.x-xx-generic
  • /boot/vmlinuz-x.x.x-xx-generic

对于上述每一个,我只是追加 _distro 到最后,以及替换一个静态命名的变体,以防止改变我的 syslinux.cfg 每次更新(更多如下所示)。该过程看起来像这样,使用14.04 / Trusty作为示例,仅显示感兴趣的文件。

$ cd /boot
$ sudo mv ./initrd.img-4.4.0-62-generic ./initrd.img-4.4.0-62-generic_trusty
$ sudo cp ./initrd.img-4.4.0-62-generic_trusty ./initrd-trusty.img
$ sudo mv ./vmlinuz-4.4.0-62-generic ./vmlinuz-4.4.0-62-generic_trusty
$ sudo cp ./vmlinuz-4.4.0-62-generic_trusty vmlinuz-trusty

由于arch的命名约定从不冲突,这意味着我最终得到2个备份/准确命名 initrdvmlinuz 文件以及两个我可以用来防止改变我的文件 syslinux.cfg 每时每刻。关键文件是这样的(添加了注释):

$ ls /boot/

initramfs-linux.img                 ## arch main initramfs
initramfs-linux-fallback.img        ## arch fallback initramfs
initrd.img-4.4.0-62-generic_trusty  ## named recent 14.04 initrd
initrd.img-4.4.0-62-generic_xenial  ## same for xenial (16.04)
initrd-trusty.img                   ## statically named initrd
initrd-xenial.img
vmlinuz-4.4.0-62-generic_trusty     ## named vmlinuz
vmlinuz-4.4.0-62-generic_xenial
vmlinuz-linux                       ## arch's vmlinuz
vmlinuz-trusty                      ## statically named vmlinuz
vmlinuz-xenial

对于启动,这是我的 syslinux 项:

LABEL arch
  MENU LABEL arch
  LINUX ../vmlinuz-linux
  APPEND luks-options-here rootflags=compress=lzo,discard,ssd,subvol=arch rw
  INITRD ../intel-ucode.img,../initramfs-linux.img

LABEL xenial
  MENU LABEL xenial
  LINUX ../vmlinuz-xenial
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=xenial quiet splash $vt_handoff
  INITRD ../initrd-xenial.img

LABEL trusty
  MENU LABEL trusty
  LINUX ../vmlinuz-trusty
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=trusty quiet $vt_handoff
  INITRD ../initrd-trusty.img

到目前为止我离开了 grub 在ubuntus上,它在每次更新时都会抱怨,但没有任何错误。我的备份计划是复制 mbr.bin/boot/ (通常它居住在 /usr/lib/syslinux... 在拱上)所以,如果 grub 我决定至少覆盖我的引导加载程序 ddsyslinux bootloader回来了。我95%+确信我的arch安装永远不会被塞住(至少要开机),所以如果我复制/命名错误,我几乎总能启动并修复ubuntus。可能我会保留每个版本的前版本 initrd/vmlinuz 周围,​​以便我可以改变在启动时加载哪一个,以防出现问题 initramfs 处理。

希望相对清楚的是发生了什么。我可以使用链接,某种更新后的脚本等来自动化,但还没有到达那里。

接受的答案显示事情可能出错,但是因为我搜索其他人这样做的例子,并且只找到这样的答案(基本上,“可能,但不要”)我想我会添加一个有形的例子怎么一个 可以 设置这样的东西。

就个人而言,我对此感到非常兴奋。我有一个启动分区,正如你可能已经注意到的那样,在一个启动分区上有三个并排的发行版 btrfs 划分。不需要预先分配大小,不用担心不喜欢一个设置并将其吹走(留下一个未使用的分区浮动)并且当我已经不需要一堆逻辑卷来启动linux分区 一个引导程序!

希望这有助于某人。


0

您可以在不同的分区上拥有其他系统目录。

尽我所能回答你的问题。您可以共享/启动,但不建议这样做。就个人而言,我认为最终不值得头疼。


1
欢迎来到超级用户!我会尝试更明确地回答这个问题,并提供一些关于你答案的文件。
Alex McKenzie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.