2.3. 构建

在本节中,我们将构建实际的引导盘和根磁盘软盘。 以bash#开头的行表示 shell 命令,以grub>开头的行表示在 grub shell 中键入的命令。

2.3.1. 准备引导盘介质

插入一张标记为“boot disk”的空白软盘。

Note

如果“空白”软盘出厂时已预格式化为另一个非 Linux 操作系统,则可能需要擦除它。 这可以使用命令 dd if=/dev/zero of=/dev/fd0 bs=1k count=1440 完成

bash# mke2fs -m0 /dev/fd0
bash# mount /dev/fd0 /mnt

2.3.2. 构建 GRUB 引导加载程序

ftp://alpha.gnu.org/gnu/grub/ 获取 GRUB 源代码,并将其解压到/usr/src目录中。

通过使用以下命令,为 i386 处理器配置和构建 GRUB 源代码

bash# cd /usr/src/grub-0.95
bash# export CC="gcc -mcpu=i386"
bash# ./configure --host=i386-pc-linux-gnu --without-curses
bash# make

2.3.3. 将引导加载程序文件复制到软盘

通常,在编译源代码之后,人们会使用命令 make install 将完成的文件复制到文件系统中它们正确的目的地。 但是,使用 make install 在像我们正在使用的软盘这样的小型介质上效果不佳。 问题在于,除了完成工作的实际二进制文件之外,软件包中还有许多文件。 例如,通常会有提供文档的 man 或 info 页面。 这些额外的文件会占用比我们可以在软盘上节省的更多空间。 我们可以通过手动复制必要的文件而不是使用 make install 来解决此限制。

为了使 GRUB 能够启动,我们需要将 stage1 和 stage2 引导加载程序文件复制到引导软盘上的/boot/grub目录。

bash# mkdir -p /mnt/boot/grub
bash# cp /usr/src/grub-0.95/stage1/stage1 /mnt/boot/grub
bash# cp /usr/src/grub-0.95/stage2/stage2 /mnt/boot/grub

2.3.4. 完成引导加载程序安装

一旦引导加载程序的文件被复制到引导盘,我们就可以进入 grub shell 以完成安装。

bash# /usr/src/grub-0.95/grub/grub
grub> root (fd0)
grub> setup (fd0)
grub> quit

2.3.5. 构建 Linux 内核

内核构建步骤已使用 Linux 内核版本 2.4.26 进行测试,并且应适用于任何 2.4.x 或 2.6.x 内核。 最新版本的内核源代码可以从 https://linuxkernel.org.cn/ 或其镜像站点之一下载。

Note

以下说明非常简短,适用于以前有构建自定义内核经验的人。 可以在 Kwan Lowe 的 内核重建指南 中找到关于内核构建过程的更详细的解释。

bash# cd /usr/src/linux
bash# make menuconfig

请务必配置对以下内容的支持

bash# make dep
bash# make clean
bash# make bzImage

2.3.6. 将内核复制到软盘

bash# cp /usr/src/linux/arch/i386/boot/bzImage /mnt/boot/vmlinuz

2.3.7. 卸载引导盘

bash# cd /
bash# umount /mnt

2.3.8. 准备根磁盘介质

插入一张标记为“root disk”的空白软盘。

bash# mke2fs -m0 /dev/fd0
bash# mount /dev/fd0 /mnt

2.3.9. 构建 BASH

ftp://ftp.gnu.org/gnu/bash/ 获取 bash-3.0 源代码包,并将其解压到/usr/src目录中。

使用以下命令为 i386 CPU 构建 BASH

bash# cd /usr/src/bash-3.0
bash# export CC="gcc -mcpu=i386"
bash# ./configure --enable-static-link \
  --enable-minimal-config --host=i386-pc-linux-gnu
bash# make
bash# strip bash

2.3.10. 将 BASH 复制到根磁盘

bash# mkdir /mnt/bin
bash# cp bash /mnt/bin/bash
bash# ln -s bash /mnt/bin/sh

2.3.11. 创建 BASH 需要的设备文件

bash# mkdir /mnt/dev
bash# mknod /mnt/dev/console c 5 1

2.3.12. 卸载根磁盘

bash# cd /
bash# umount /mnt