Ser*_*nyy 22 boot-loader history
根据维基百科,GRUB 于 1995 年发布。那时 Linux 和 xBSD 已经存在了好几年。我知道早期的 Unix 版本在 70 年代和 80 年代与硬件相关联,但 Linux 和 xBSD 可以免费分发和安装。这就引出了一个问题,那时您将如何引导 Linux?发行版是否带有自己的引导加载程序实现?
Mr *_*unz 52
我在 90 年代使用的第一个 Linux 发行版 ( Slackware 3.0
IIRC) 使用LILO作为引导加载程序。许多发行版LILO
甚至在GRUB
成为“默认”引导加载程序时也使用了多年。
此外,在 Linux 的早期,从另一个操作系统(即 DOS 或 Windows)引导 Linux 而不是依赖引导加载程序/双引导是很常见的。例如有loadlin。
不要忘记Syslinux,它是一个更简单的引导加载程序,通常用于 USB 自引导安装/恢复发行版。或许多“Live”发行版使用的Isolinux(来自同一个项目)。
请记住,今天GRUB
可以用于加载许多操作系统,而LILO
受到更多限制,并且专门针对 Linux(即 LInux LOader),并支持双引导到 Windows。
GRUB
是因为它的许多配置选项,脚本功能等双/多引导是非常有用的......
如果你只是想你的机器上的一个单一的OS“任何”(即取其引导程序是你的Linux / BSD发行默认值)应足够。
Ste*_*itt 30
在 Grub 之前,LILO是在 PC 上引导 Linux 的事实上的标准,从很早的阶段开始(MCC,最早的 Linux 发行版之一,使用它)。同时使用了各种其他引导加载程序。Loadlin很常见;它从 DOS 引导 Linux,甚至在某些配置中用于在umsdos
DOS 文件系统中托管 Linux 环境……另一种常见配置根本不涉及引导加载程序:内核可以从软盘引导自身,并且大多数Linux 用户保留了一对众所周知的“引导和根”软盘,一个包含内核,另一个是用于救援目的的基本根文件系统。
也有多种使用其他操作系统的引导加载程序来引导 Linux 的方法;例如,OS/2 的启动管理器,或 Windows NT 的 NTLDR。
其他系统有自己的引导加载程序:
即使在今天,Grub 也不是您会看到的唯一引导加载程序。虽然直接从软盘启动内核不再有用(我还没有检查是否仍然可行,假设您可以构建一个小到可以放在软盘上的内核),但它可以直接从 EFI 启动(这实际上是它的自己的小型操作系统,旨在加载其他操作系统,就像 Grub 一样)。在许多较小的系统(嵌入式系统、单板计算机...)上,您会发现U-Boot。(还有一个用于 U-Boot 的 EFI 层。)
Jos*_*hua 12
直到 2.6 内核中期,如果将 x86 内核复制到软盘上(就像它是磁盘映像),则可以直接引导。
这实际上是引导 Linux 的原始方式。
如果您今天查看 x86 内核的标头,您会看到一条错误消息,指出从软盘启动不再有效。
我在 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 系统之外信息...