企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 8.4\. 使 LFS 系统能够启动 你的全新 LFS 系统差不多要完成了。 最后要做的事是确保系统可以正常启动。下面的指令仅适用于 IA-32 架构的计算机,就是主流的 PC 机。 关于其它架构计算机 "boot loading(引导装载)"的信息可以在相应的资源里找到。 引导装载是一个很复杂的问题,因此接下来会有一些警告的话。所以需要熟悉当前的引导装置和硬盘上其他操作系统需要能被启动。确定紧急启动盘已经准备了,假如电脑变成不能用了(不能启动)能够 "援救"。 先前,我们为这个步骤编译和安装了 GRUB 引导装载程序做了准备。这个程序包括了在硬盘的指定位置上写的一些特殊 GRUB 文件,我们强烈推荐你创建一张 GRUB 引导软盘作为备份,插入一张空白软盘并输入下面的命令: ``` dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1 dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1 ``` 取出软盘并在安全的地方存放,现在,运行 `grub` shell: ``` grub ``` GRUB 使用它自己的驱动器和分区命名结构,形式是 _(hdn,m)_,这里的 _n_ 是硬盘驱动号, _m_ 是分区号, 两个都是从零开始。例如,分区 `hda1` 是GRUB的 _(hd0,0)_ , `hdb3`是 _(hd1,2)_. 与 Linux 不同的是, GRUB 不把光驱作为硬盘驱动器。 例如,假如 `hdb` 是光盘驱动器,第二个硬盘驱动器是 `hdc`,第二个硬盘驱动器仍然是 _(hd1)_。 用上面的信息为 root 分区(或boot 分区,假如是单独使用了分区的情况下)。 下面的例子里假定 root 分区(或单独的 boot分区)是 `hda4`. 告诉 GRUB 在哪里搜索它的 `stage{1,2}` 文件。用 Tab 键能在各处让 GRUB 显示可选择项: ``` root (hd0,3) ``` ### 警告 下一个命令会覆盖当前的引导装载程序,如果不需要的话就不要运行这个命令,例如,使用第三方启动管理器来管理主引导记录 (MBR)。当然,现在的情况是安装 GRUB 到 LFS 分区的“boot sector”更有意义。在这个例子里,下一个命令将变成 **`setup (hd0,3)`** 。 告诉 GRUB 安装它自己到 `hda`的MBR: ``` setup (hd0) ``` 如果一切顺利,GRUB 会报告在 `/boot/grub`找到它的文件。现在可以退出 `grub` shell: ``` quit ``` 创建一个 "显示菜单"文件定义 GRUB 的启动菜单: ``` cat > /boot/grub/menu.lst << "EOF" # Begin /boot/grub/menu.lst # By default boot the first menu entry. default 0 # Allow 30 seconds before booting the default. timeout 30 # Use prettier colors. color green/black light-green/black # The first entry is for LFS. title LFS 6.2 root (hd0,3) kernel /boot/lfskernel-2.6.16.27 root=/dev/hda4 EOF ``` 如果需要可以为宿主系统增加一项,看起来如下: ``` cat >> /boot/grub/menu.lst << "EOF" title Red Hat root (hd0,2) kernel /boot/kernel-2.6.5 root=/dev/hda3 initrd /boot/initrd-2.6.5 EOF ``` 如果是 Windows 的双启动系统,下面的项能够启动它: ``` cat >> /boot/grub/menu.lst << "EOF" title Windows rootnoverify (hd0,0) chainloader +1 EOF ``` 如果用 `info grub` 不能获取足够的信息,更多 GRUB 资料可以在它的网站找到 [_http://www.gnu.org/software/grub/_](http://www.gnu.org/software/grub/). FHS 规定 GRUB 的 `menu.lst` 文件必须链接到 `/etc/grub/menu.lst`。为了符合这个规定,可以用下面的命令: ``` mkdir -v /etc/grub && ln -sv /boot/grub/menu.lst /etc/grub ```