我有一个问题,所有主要用于运行它们的 linux 发行版引导文件、grub 文件和内核文件,只有发行版的 iso 映像不同吗?
我的系统上安装了 Fedora,可以通过更改 grub 条目将其替换为 manjaro 吗?它有多安全?
答案1
当然,不同的发行版有几乎所有内容的不同包。然而,三个组件通常彼此很好地隔离:引导加载程序、内核、用户空间程序。
Bootloader需要能够启动各种内核,否则它的可用性将受到很大限制。
内核并不真正依赖于用户空间,因为它为用户空间提供了运行的基本环境。
用户空间对内核有一定的依赖,但通常不依赖于基本任务。对于某些方面(甚至相当重要),它可能需要各种内核功能,但通常可以“大约在同一时间”使用另一个发行版的内核(几个月的差异应该不重要,除非用户空间正在使用某些前沿功能)。如果您只想对新发行版进行分段引导:
- 运行 dist-A
- 安装 dist-B-without-kernel (例如在
chroot
) - 使用内核 A 启动 B
- 安装内核-B
- 启动 dist-B-with-kernel-B
它应该工作得很好(来源:“去过也做过”)。根据您的特定用例(用户空间所需的内核功能),您甚至可以愉快地运行“外国”内核而不会出现问题。
答案2
不太激烈的做法是在单独的分区或单独的磁盘上安装新发行版,并使用原始 grub 让您选择启动哪个发行版(双启动)。这将允许您从旧系统中迁移您想要保留的任何内容。
答案3
答案4
专注于所提出的问题,而不是继续探讨其含义。
首先,声明两件应该显而易见的事情:具有不同架构等的计算机不会使用相同的文件,并且来自不同制造商等的计算机可能会使用相同的文件,如果它们只是表面上的不同(AMD 视频的不同变体)卡或类似的)。
对于任何给定的体系结构,都有一个占主导地位的引导加载程序,其某些部分可能位于引导扇区中,而其他部分可能位于文件中。因此,对于 x86,有 GRUB(但也有 LILO 等作为替代方案),SPARC 使用 SILO(以 GRUB 作为替代方案),ARM 偶尔使用 Das U-Boot 等。引导加载程序加载内核二进制文件,还可以选择加载 initrd 文件,在某些情况下,这可以通过 LAN 完成。
只有一个 Linux 内核,由 Linus Torvalds 所有,并使用他发布的源文件构建,可能带有发行版特定的(“树外”)补丁。
内核二进制文件显然会根据体系结构以及在某种程度上连接到 CPU 的硬件而有所不同。它还会根据是否需要预定义 /dev 目录中的条目或使用 Udev 等即时创建它们而有所不同。
内核可能会也可能不会构建为需要 initrd 文件,该文件基本上是一个压缩文件系统,包含启动后立即需要的程序和配置文件。 PC 通常会使用 initrd 文件,而 Kobo 阅读器或 Raspberry Pi 之类的东西则不会;我在这里要指出的是,这使得 Kobo 所有者社区相当容易地修补额外的功能,因为他们不需要工具来重建 initrd。
如果使用 initrd,内核最终会被告知使用其他设备作为其文件系统的根。该设备的内容将根据发行版的不同而有所不同,这可能不仅会影响存在的程序和配置文件,还会影响程序的构建方式(核心库的静态与动态链接等)。
当系统配置改变或更新时,根文件系统中的程序和配置信息可以用来重建initrd。作为一个具体示例,这种情况在基于 Debian 的 distreaux 上经常发生,因为在内核从 initrd 切换到主文件系统之前会引用各种配置文件。
因此,OP 问题的答案是响亮的“也许”。