因此,我的电脑中有多个驱动器,但由于文件系统层次结构标准,在这些驱动器上存储程序和类似内容是非常不切实际的。我个人也不喜欢拥有多个驱动器,而更喜欢拥有一个大驱动器,但由于重复使用零件并且几乎总是损坏,结果就是这样。
在 Windows 中,您可以跨多个驱动器创建跨分区。你无法从它启动,但 Windows 没有像 Linux 那样的文件系统层次结构标准,所以这不是什么大问题。在linux中,你可以设置一个lvm,但是,就像windows一样,不建议从它启动,但是由于文件系统层次结构标准,我不能简单地将我的程序存储在具有单独启动分区的lvm上。
作为一种解决方案,我认为我可以创建一个从中启动的分区,该分区仅包含指向存储实际数据的 lvm 的符号链接。我只是不知道这是否可能。我想这取决于引导加载程序(grub)是否可以识别并遵循符号链接,对吗?
如果这实际上不可能,我可以为启动期间不需要的文件夹创建符号链接,但我不知道是哪些文件夹。
答案1
为了启动 Linux 系统,您需要能够访问的唯一文件是内核和 initramfs(如果您使用其中一个;大多数发行版都会这样做)。在当前的 PC 上有两种主要方法可以实现此目的:它们可以存储在 EFI 系统分区 (ESP) 上,或者存储在专用于/boot
.后者是大多数发行版支持的配置。
其他所有内容都可以存在于一个或多个逻辑卷中,可以按照您想要的方式在任意数量的磁盘上构建(在内核子系统的限制内md
,但它们足够高,不必担心)。通常,您会拥有一本关于 的卷/
和一本关于 的卷/home
,也许还有其他卷(/usr/var
,...),但您不必这样做。
答案2
Unix 标准用法是有一个(小)引导驱动器(带有/bin
、/lib
、/etc
、/tmp
、也许/sbin
还有很少的其他),并在适当的点上安装例如一个带有 的驱动器/usr
,另一个带有/home
, ... 的驱动器。今天的 TiB 驱动器使这个(大部分)变得毫无意义......您的发行版的安装可能会设置一个(小)分区用于启动和“磁盘的其余部分”,您仍然可以设置和挂载其他磁盘驱动器(甚至网络文件系统)在此之下并将其全部视为一个(大部分)无缝单元。
设置此选项(或使用 LVM 创建跨多个磁盘的逻辑卷等)可能意味着从头开始安装。
答案3
是的,grub 可以按照符号链接进行引导,即加载内核和初始 ramdisk。
我知道这一点,因为在每次重大系统更改之前,我不仅会进行备份,还会将其恢复到另一个内部或外部硬盘,作为系统的后备世代。为了避免必须更新每个 grub.cfg,我在名为 的文件中只包含一组通用 grub 菜单项/etc/grub.d/30_otherbootables
。该文件引用每个磁盘根目录中的符号链接,并且引导有效:
linux /vmlinuz ...
initrd /initrd.img ...
并在第二个菜单项中
linux /vmlinuz.old ...
initrd /initrd.img.old ...
我的系统(Ubuntu)本身在每次更新或升级时都会创建这些符号链接,但我当然可以自己做同样的事情。它们链接到当前和以前的更新bootvmlinuz-version
以及boot/initrd.img-version
选择安装的更新。
当然,很明显,链接是相对的,并且引用同一磁盘上的文件。