网上有很多类似的文章,但往往不完整或是不准确,这篇是我见过很好的一篇。(猪猪)


把Linux放进软盘里

  我们首先要得到一张能够引导进入linux环境的软盘,这种软盘必须由两部分组成,即内核和根文档系统。我们首先制作一个内核。
内核的编译要把内核部分放到一张1.44MB的软盘上去,通常要对内核进行压缩,压缩内核的最好方法是进行重新编译内核,将一些不必要的支持去掉,如对网络和其他周边设备的支持,重要的一点是记住内核必须支持RAMDISK及ext2,否则系统不能正常引导。编译之前请确认您是以root的身份在进行操作,否则会返回Permission Denied的提示。

首先要到合适的编译路径,一般路径都在/usr/src/Linux,RH9的路径是在/usr/src/Linux-2.4,只有在这个路径您的命令才会生效。否则会显示

make: *** No rule to make target 'config' , stop的错误提示.

  假如您以前编译过内核,那应当先执行#make mrproper 这个命令,他能够删除以前的建构的痕迹。假如您没有编译过,能够不执行他。

  接下来执行#make menuconfig 开始配置内核,把您认为无需的东西都不要编译到内核,比如业余电台,csi,I20,IrDA,isdn,bluetooth.最后保存为.config后退出。

再接下来就依次执行以下命令:

#make dep (配置依赖关系)
#make clean (准备要建构的源码树)
#make bzImage (建构内核 )
#make modules ( 配置模块)
#make modules_install (使用配置的模块)
#make install (把新的内核和相关文档复制到正确的目录)

  执行到这里,在/boot下会看到名字为vmlinuz-2.4.22custom的文档。这就是我们编译得到的内核。假如他的size大于1.44M,那就得重新编译,再去掉一些无需的东西,直到内核小于1.44M,为了便于记忆,我们不妨将他重新命名为newkernel,接下来我们紧接着制作根文档系统。

根文档系统的制作

  制作根文档系统前,我们先要解决一个问题:因为一个根文档系统要实现基本的功能,必须包括一些常用工具:如:sh,ls,cd,cat…… 但是常用工具会占用很多空间,要是用原来系统中的这些命令,就是全部用静态编译,不是用动态连接库,大概也要有2MB~3MB,放不进软盘。因此我们我们的解决的方案是使用BusyBox工具。BusyBox 他包含了七十多种 Linux 上标准的工具程式,只需要的磁盘空间仅仅几百 k 。在嵌入式 系统上常用到他 (例如 Linux Router Project 和 Debian boot floppy就使用到他)

建立 BusyBox

首先我们从官方网站上下载BusyBox的最新版本:busybox-1.00-rc3.tar.gz并且解开

#tar zxvf busybox-1.00-rc3.tar.gz

为了压缩空间,我们采用静态编译,修改 Makefile 中的 DOSTATIC 参数为true

DOSTATIC=true

然后修改 BusyBox 中的 init.c,设定系统要执行的第一个程式为: /etc/rc.d/rc.sysinit

#define INIT_SRCIPT \"/etc/rc.d/rc.sysinit\"

开始编译BusyBox

#make
#make install

到这一步我们就得到了可执行命令busybox

解决了这个问题后,我们能够开始制作根文档系统

制作根文档系统

首先为根文档系统建一个目录叫做 floppy-Linux,然后进入 floppy-Linux 目录内

# mkdir floppy-Linux
# cd floppy-Linux

然后为 root filesystem 建立一些标准的目录

# mkdir dev etc etc/rc.d bin proc mnt tmp var
# chmod 755 dev etc etc/rc.d bin mnt tmp var
# chmod 555 proc
# ln -s sbin bin

然后进入 /dev 目录下建立根文档系统必须的一些设备文档。

建立一般终端机设备

# mknod tty c 5 0
# mkdir console c 5 1
# chmod 666 tty console

建立 VGA Display 虚拟终端机设备

# mknod tty0 c 4 0
# chmod 666 tty0

建立 RAM disk 设备

# mknod ram0 b 1 0
# chmod 600 ram0

建立 floppy 设备

# mknod fd0 b 2
# chmod 600 fd0

建立 null 设备

# mknod null c 1 3
# chmod 666 null

到这里我们就有了一个初步的小型根文档系统,但是还需要配置一些有关的 shell script来完善他。

编辑有关的 shell script

首先进入到 /floppy-Linux/etc/ 这个目录下编辑 inittab,rc.d/rc.sysinit,fstab这三个文档 ,内容分别如下:

inittab
::sysinit:/etc/rc.d/rc.sysinit
::askfirst:/bin/sh
rc.sysinit
#!/bin/sh
mount –a
fstab
proc /proc proc defaults 0 0

然后修改inittab,rc.sysinit,fstab这三个文档的权限

# chmod 644 inittab
# chmod 755 rc.sysinit
# chmod 644 fstab

配置完shell script后,我们注意到这些shell script会使用一些 /bin目录下的命令,但是我们的/bin目录下是空的。现在我们就使用BusyBox来制作这些常用命令。

使用BusyBox制作常用命令

将busybox 复制到软盘的/bin目录下,并且改名为init

# cp busybox /floppy-Linux/bin/init

然后创建常用命令的link,具体的工作原理请参阅busybox的官方说明。

# ln -s init ls
# ln -s init cp
# ln -s init mount
# ln -s init umount
# ln -s init more
# ln -s init ps
# ln -s init sh

现在我们就有了所需的常用命令。

  到这里我们的根文档系统就制作完成了,但是和内核相同,要把根文档系统部分放到一张1.44MB的软盘上去,也要进行压缩,下面我们就着手压缩他。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!