在本节中,我们将构建实际的引导盘和根磁盘软盘。 以bash#开头的行表示 shell 命令,以grub>开头的行表示在 grub shell 中键入的命令。
插入一张标记为“boot disk”的空白软盘。
![]() | 如果“空白”软盘出厂时已预格式化为另一个非 Linux 操作系统,则可能需要擦除它。 这可以使用命令 dd if=/dev/zero of=/dev/fd0 bs=1k count=1440 完成 |
bash# mke2fs -m0 /dev/fd0 bash# mount /dev/fd0 /mnt |
从 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 |
通常,在编译源代码之后,人们会使用命令 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 |
一旦引导加载程序的文件被复制到引导盘,我们就可以进入 grub shell 以完成安装。
bash# /usr/src/grub-0.95/grub/grub grub> root (fd0) grub> setup (fd0) grub> quit |
内核构建步骤已使用 Linux 内核版本 2.4.26 进行测试,并且应适用于任何 2.4.x 或 2.6.x 内核。 最新版本的内核源代码可以从 https://linuxkernel.org.cn/ 或其镜像站点之一下载。
![]() | 以下说明非常简短,适用于以前有构建自定义内核经验的人。 可以在 Kwan Lowe 的 内核重建指南 中找到关于内核构建过程的更详细的解释。 |
bash# cd /usr/src/linux bash# make menuconfig |
请务必配置对以下内容的支持
386 处理器
虚拟终端上的控制台(仅限 2.4.x 内核)
ELF 二进制文件
软盘
proc 文件系统
RAM 磁盘,默认大小为 4096K
第二扩展 (ext2) 文件系统
VGA 控制台
bash# make dep bash# make clean bash# make bzImage |
从 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 |