Step By Step制作软盘上的Linux

本文详细介绍如何在软盘上安装Linux系统,包括格式化软盘、配置GRUB、编译BusyBox及内核等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

由于论坛的关系, 附录4和附录6太长被删了, 但是在附件中都有这几个文件, 可以下载附件参看
解压命令: tar -xjvf mk_flp_linux.tar.bzip2

Step By Step制作软盘上的Linux(V0.03)
By    : Wu Yin
Email  : lazy_fox#msn.com
Date   : 2006.01.16
Link   : http://blog.youkuaiyun.com/wooin/archive/2006/01/16/580922.aspx

写在前面:
    本文的目的是为了不管一切理论和不择一切手段在软盘上做一个Linux系统起来先,
不管"为什么", 只告诉你"怎么做", 制作成功后你自己去研究"为什么", 这样你的兴趣就会
大很多了^_^, 免得整半天整不出来, 又半途而废了(我经常这样: ( .......).
    这个东西是我用了大概一周的业余时间琢磨出来的(半途而废了好几次), 期间参考了
岳光的<如何制作软盘Linux>, 该文章在我的blog上也可以找到:
    http://blog.youkuaiyun.com/wooin/articles/580666.aspx
    在此谢谢岳光(好美的名字^_^), 转载时请注意他人的版权信息
    本文其实不长, 长的是后面的附录, 附录都是本文需要用到的文件, 将其分别复制粘
贴成几个文件就行了, 在下面的文章中有介绍.
    最后, 本人也是Linux初学者, 文章中的不足之处还请大家不吝赐教, 多提意见, 谢谢!
    版权信息:该文章版权由Wu Yin所有. 可在非商业目的下任意传播和复制. 对于商业
目的下对本文的任何行为需经作者同意. 联系方式:lazy_fox#msn.com

01. 我用到的软件:
    操作系统      : Redhat Linux 9 (2.4.20-8 )
    软盘上的内核  : linux-2.4.20.tar.bz2
                  这个内核是用来编译后放到软盘上的内核
    buzybox       : busybox-1.01.tar.gz
                  提供一些常用的shell命令
02. 将一张空白软盘插入到软驱中, 将其格式化为ext2的空盘. 并创建boot boot/grub目录:
    $ umount /mnt/floppy
    $ mke2fs /dev/fd0
    $ mount /dev/fd0 /mnt/floppy/
    $ cd /mnt/floppy/
    $ mkdir boot boot/grub
03. 拷贝/boot/grub/stage1和stage2到软盘的boot/grub下:
    $ cp /boot/grub/stage1 /mnt/floppy/boot/grub
    $ cp /boot/grub/stage2 /mnt/floppy/boot/grub
04. 在软盘上配置grub:
    $ grub
    $ root (fd0)
    $ setup (fd0)
    $ quit
    至此grub安装成功!
05. 建立一个工作目录mk_flp_linux
    在该目录下建立三个文件: inittab , rc.S 和 grub.conf
    文件内容见本文后面的附录
    修改两个文件的属性
    $ chmod 777 inittab rc.S
06. 配置busybox
    将busybox-1.01.tar.gz拷贝到我们的工作目录mk_flp_linux下, 解压, 改名, 配置, 编译
    $ tar -xzvf busybox-1.01.tar.gz    #解压
    $ mv busybox-1.01 busybox        #改名
    $ cd busybox
    $ make menuconfig                #配置
    $ make                        #编译
    这里要注意的是, 在配置busybox的时候要考虑软盘的大小, 编译出来的文件要尽量小,
    要给内核文件留空间, 并且要编译成静态的. 配置完后会生成一个".config"文件,
    我的".config"文件见附录4
07. 编写mk_flp_linux脚本, 并修改文件属性, 文件内容见附录5
    $ chmod 777 mk_flp_linux
    现在可以执行mk_flp_linux脚本了
    $ ./mk_flp_linux
    注意: 该脚本有一处需要按照你的系统进行必要的修改, 在mknod时设备号都是安装我
    的机器上进行设置的, 你需要按照你自己机器上的内容进行相应修改
08. 最后进行内核配置, 这是我认为最麻烦的地方, 想让编译出来的内核尽量小, 但又要是
    个功能齐全可以启动的内核.
    解压tarball:
    $ tar -xjvf linux-2.4.20.tar.bz2
    配置内核:
    $ make menuconfig
    编译内核:
    $ make bzImage
    编译出来的内核文件是: linux/arch/i386/boot/bzImage
    我的Linux-2.4.20的.config文件见附录6, 将其复制到内核文件夹的根文件夹下, 覆盖原文件
    Processor type需要按照自己电脑的CPU进行设置
*09. 复制bzImage文件到软盘上
*10. 用软盘重启, 进入你的软盘linux系统吧.....!
*11. 总结目录情况
*12. 比较粗糙, 还可以优化

=========================================================================
附录1: inittab文件内容
=========================================================================
::sysinit:/etc/rc.S
::askfirst:/bin/sh

=========================================================================
附录2: rc.S文件内容
=========================================================================
#!/bin/sh
mount -t proc /proc /proc

=========================================================================
附录3: grub.conf文件内容
=========================================================================
default=0
timeout=10
title Linux On Floppy
    root (fd0)
    kernel /bzImage
    initrd /image.gz

=========================================================================
附录5: mk_flp_linux脚本文件
=========================================================================
#!/bin/sh
##############################################
#下面的操作需要在软驱中有一张已经配置好grub的软盘
##############################################
mount /dev/fd0 /mnt/floppy/

#取得该shell脚本所在路径, 注意是^dirname $0^ 不是 'dirname $0'
WORK_PATH=`dirname $0`
cp $WORK_PATH/grub.conf /mnt/floppy/boot/grub

#清除上次制作时可能残留的痕迹, 如果是第一次制作, 则不会有
rm -rvf /tmp/floppy
rm -rvf /tmp/image
rm -rvf /tmp/image.gz
mkdir /tmp/floppy

#要想下面的脚本正常运行, 首先要配置好busybox, 请按照下面的方法配置
#下载busybox-1.01.tar.gz, 你也可以下载其他版本的, 这里我用的是1.01版
#将其解压到本脚本所在的目录, 并将文件夹名去掉版本号, 改为busybox
#进入busybox目录, 运行make menuconfig, make 配置
#编译好后才能继续下面的操作
cd $WORK_PATH/busybox
make PREFIX=/tmp/floppy install

cd /tmp/floppy
mkdir proc mnt etc dev
#该脚本目录下有两个已经写好的文件inittab, rc.S
cp $WORK_PATH/inittab /tmp/floppy/etc
cp $WORK_PATH/rc.S /tmp/floppy/etc

cd /tmp/floppy/dev
mknod hdc b 22 0
mknod hdc1 b 22 1
mknod hdc2 b 22 2
mknod hdc3 b 22 3
mknod hdc4 b 22 4
mknod hdc5 b 22 5
mknod hdc6 b 22 6

mknod console c 5 1
mknod tty c 5 0
mknod tty0 c 4 0
mknod tty1 c 4 1
mknod tty2 c 4 2
mknod tty3 c 4 3
mknod tty4 c 4 4
mknod tty5 c 4 5
mknod tty6 c 4 6
mknod tty7 c 4 7
mknod tty8 c 4 8
mknod tty9 c 4 9
mknod kmem c 1 2
mknod mem c 1 1
mknod null c 1 3
mknod ram b 1 1
mknod fd0 b 2 0
mknod loop0 b 7 0

#下面的代码会用到/mnt/cdrom目录, 请确保该目录没有挂载光驱, 可以被挂载
cd /tmp
dd if=/dev/zero of=image bs=1k count=2048
losetup /dev/loop0 image
mke2fs -m 0 /dev/loop0
mount -t ext2 /dev/loop0 /mnt/cdrom
cp -R floppy/* /mnt/cdrom
umount /mnt/cdrom
losetup -d /dev/loop0
sync
dd if=image|gzip -9>image.gz
cp image.gz /mnt/floppy/
#以后可以这样查看image.gz中的内容(注意:gzip命令会删除原image.gz文件, 请先做好备份):
#gzip -d image.gz
#mount -o loop image /mnt
#然后查看/mnt目录

umount /mnt/floppy/

[ 本帖最后由 wooin 于 2006-1-17 13:04 编辑 ]

回答一:

谢谢楼主,正需要这方面的资料。

回答二:

附录5 和 mk_flp_linux脚本文件的这一句可能有点问题
WORK_PATH=`dirname $0`

意思是想取得该脚本的工作路径, 但是工作起来有点不对,
你们可以自己改一下先, 或者有高人指导一下应该怎么写

两个.config文件仅供参考, 直接替代执行不知道会有什么问题发生

年后会再进行修改维护, 升版的

回答三:

其实关键在第 8 步里,别的都几乎一样,无论是做成软盘的还是光盘的或者是硬盘的

回答四:



QUOTE:原帖由 platinum 于 2006-1-17 13:25 发表
其实关键在第 8 步里,别的都几乎一样,无论是做成软盘的还是光盘的或者是硬盘的



是啊,非常非常同意。。。我也是编译了好几次,才可以用的,所以把内核的.config文件放在附件中

但我弄的还是不够太精简,希望有高人指导,这段时间比较忙,准备以年后有时间再好好研究一下这个方面

回答五:

对了还有,不同的内核,不同的硬件,不同的需求,要有不同的 .config
假如要做一个通用性好、功能强大的内核,一张软盘是绝对装不下的 ^_^

回答六:

呵呵, 当然了, 这个.config文件不能通用的, 尽供参考

回答七:

收藏一下,以后照着做

回答八:

谢谢!

回答九:

谢谢楼主分享及platinum补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值