Linux/xBSD 在 GRUB 之前是如何引导的?

Ser*_*nyy 22 boot-loader history

根据维基百科,GRUB 于 1995 年发布。那时 Linux 和 xBSD 已经存在了好几年。我知道早期的 Unix 版本在 70 年代和 80 年代与硬件相关联,但 Linux 和 xBSD 可以免费分发和安装。这就引出了一个问题,那时您将如何引导 Linux?发行版是否带有自己的引导加载程序实现?

Mr *_*unz 52

我在 90 年代使用的第一个 Linux 发行版 ( Slackware 3.0IIRC) 使用LILO作为引导加载程序。许多发行版LILO甚至在GRUB成为“默认”引导加载程序时也使用了多年。

此外,在 Linux 的早期,从另一个操作系统(即 DOS 或 Windows)引导 Linux 而不是依赖引导加载程序/双引导是很常见的。例如有loadlin

不要忘记Syslinux,它是一个更简单的引导加载程序,通常用于 USB 自引导安装/恢复发行版。或许多“Live”发行版使用的Isolinux(来自同一个项目)。

请记住,今天GRUB可以用于加载许多操作系统,而LILO受到更多限制,并且专门针对 Linux(即 LInux LOader),并支持双引导到 Windows。
GRUB是因为它的许多配置选项,脚本功能等双/多引导是非常有用的......
如果你只是想你的机器上的一个单一的OS“任何”(即取其引导程序是你的Linux / BSD发行默认值)应足够。

  • @MrShunz:那时还没有 UEFI。引导窗口只是添加一个条目,例如“other=/dev/hda1”和“table=/dev/hda”到“lilo.conf”,而 lilo 只会将控制权转移到 hda1 的引导扇区,知道分区表将在 hda。 (6认同)
  • 你曾经可以让 NTLDR 加载 LILO;见 http://jaeger.morpheus.net/linux/ntldr.php; 回到当天,我独立地发现了同样的情况。 (2认同)
  • LILO 方法的缺点是,如果要加载的文件的磁盘位置发生变化,它就会中断。这尤其意味着每次内核升级后,LILO 都需要重新写入引导位置(MBR 或分区引导扇区)。 (2认同)
  • @plugwash 嘿,可怕的“LI”屏幕...... (2认同)

Ste*_*itt 30

在 Grub 之前,LILO是在 PC 上引导 Linux 的事实上的标准,从很早的阶段开始(MCC,最早的 Linux 发行版之一,使用它)。同时使用了各种其他引导加载程序。Loadlin很常见;它从 DOS 引导 Linux,甚至在某些配置中用于在umsdosDOS 文件系统中托管 Linux 环境……另一种常见配置根本不涉及引导加载程序:内核可以从软盘引导自身,并且大多数Linux 用户保留了一对众所周知的“引导和根”软盘,一个包含内核,另一个是用于救援目的的基本根文件系统。

也有多种使用其他操作系统的引导加载程序来引导 Linux 的方法;例如,OS/2 的启动管理器,或 Windows NT 的 NTLDR。

其他系统有自己的引导加载程序:

  • SPARC 上的SILO(Sun 工作站和其他);
  • PA-RISC 上的PALO(HP 工作站);
  • PowerPC 上的 YaBoot 和 Quik;
  • Alpha 上的 aBoot 和 MILO...

即使在今天,Grub 也不是您会看到的唯一引导加载程序。虽然直接从软盘启动内核不再有用(我还没有检查是否仍然可行,假设您可以构建一个小到可以放在软盘上的内核),但它可以直接从 EFI 启动(这实际上是它的自己的小型操作系统,旨在加载其他操作系统,就像 Grub 一样)。在许多较小的系统(嵌入式系统、单板计算机...)上,您会发现U-Boot。(还有一个用于 U-Boot 的 EFI 层。)


Jos*_*hua 12

直到 2.6 内核中期,如果将 x86 内核复制到软盘上(就像它是磁盘映像),则可以直接引导。

这实际上是引导 Linux 的原始方式。

如果您今天查看 x86 内核的标头,您会看到一条错误消息,指出从软盘启动不再有效。

  • 另一方面,如果提供给 UEFI 固件,x86 内核现在可以直接启动。所以在内核前面仍然有一个存根引导加载程序,只是一种不同的类型...... (2认同)
  • @约书亚什么?它是 16 位模式下的“DEC BP”、“POP DX”(32 位模式下的 EBP/EDX)。但无论如何它都不应该被执行;EFI 二进制文件是 PE 文件(当然,如果将其写入引导扇区,则无关紧要...)。 (2认同)

iva*_*van 5

我在 90 年代后期开始使用 Linux,并且如前所述lilo是默认设置。如果您想使用 DOS 系统进行双引导,您可以进行裸引导而不将内容加载到 HIMEM 或加载 CD 驱动程序等,然后使用loadlin. 对于Win95双引导,你可以先用DOS引导驱动器,然后安装'95,'95的引导加载程序会让你仍然引导DOS内核,然后你可以使用loadlin.

对于 NT4 双引导,诀窍是将 LILO 写入/分区,然后使用dd( dd if=/dev/sda2 of=/path/to/file bs=512 count=1)去除前 512 个字节并将生成的文件放在ntldr可以看到它的地方,您可以从 WinNT 的引导加载程序中使用它。这样做的问题是当您升级内核时,您必须记住在重新启动之前重复所有步骤,否则您将无法重新进入 Linux 系统。同样的过程适用于 Win2k。

使用 LILO,每次更新内核时,您都必须记住更新 LILO。

随着loadlin随时更新的内核,你必须记得内核进行复制到DOS分区。

其他答案中暗示的另一种选择是使用将内核直接写入软盘,dd if=/path/to/vmlinuz of=/dev/fd0但必须在内核中正确设置根设备,无论是在编译时还是使用rdev实用程序。

当你GRUB出现时,非常高兴,因为你不再需要记住更新 LILO,或者更新 LILO 并重新剥离引导信息等。 不再因为忘记更新引导加载程序而被排除在 Linux 系统之外信息...