linux+软盘启动程序,软盘上的Linux系统方案

本文将介绍一种两张软盘上的Linux系统,它可以当作系统应急修复盘、路由器或防火墙等许多地方,通过对它的研究,也可以加深对嵌入式系统的理解。

一.前言

嵌入式Linux是由一个几百KB的Linux内核和一个根据需要制定的文件系统所构成了, 由于Linux是开放源代码的操作系统,所以在嵌入式领域有着非常广阔的前景,并已经广泛应用在许多手机、PDA、MP3播放器等许多电子产品中。本文将介绍一种两张软盘上的Linux系统,它可以当作系统应急修复盘、路由器或防火墙等许多地方,通过对它的研究,也可以加深对嵌入式系统的理解。

二.Linux启动过程

所有的PC机在加电之后,BIOS会寻找到启动盘第一个扇区,并将其复制到RAM中来执行它,对于两种不同的启动方式,这个扇区通常含有两种不同的代码:引导程序(比如Lilo或Grub等)的代码,引导程序会帮助定位内核的位置。内核的代码,这通常是从软盘启动时使用的引导的方式。对于前者,通常需要内核支持initrd。如果是后者,使用的Boot Loader就是arch/i386/boot/bootsect.S。当内核被编译的时候,这段执行代码就被链接到内核image的最开始的地方。这样很容易就能只要把内核复制到起始位置为第一个扇区的软盘上就能得到可自启动的软盘。内核会初始化设备驱动和内部的数据结构,之后它会到一个特定的位置――Ramdisk Word来获得根文件系统的位置。内核必须知道去那里寻找这个根文件系统,否则它将停机。

在使用软盘启动的方式时,内核可以把一个压缩的文件系统释放到RAM中,称之为Ramdisk,这是一个内存区域,但内核会把它当作磁盘一样使用。

本文中介绍的例子使用Grub做为引导程序,并使用initrd来辅助Linux的启动。两张软盘分别命名为bootldr盘和rootfs盘,在bootldr盘中内容为grub、内核、initrd,rootfs盘中是压缩过的根文件系统。系统启动时bootldr盘的Grub定位并执行内核,然后内核解开initrd,并执行linuxrc文件,这个文件负责提示用户更换rootfs盘并将其中内容解压至内存中,然后执行刚刚解压的init继续启动过程。

为了方便理解这个例子,先介绍目录结构如下:

/home/papaya

├─bootldr/

│ ├─grub/

│ ├─kernel/

│ │ ├─images/

│ │ └─linux-2.4.21/

│ └─initrd/

│   ├─mkinitrd.sh

│   ├─local/

│   └─ramdisk/

├─rootfs/

│ ├─mkrootfs.sh

│ ├─ramdisk/

│ └─local/

└─lib/

三.定制Grub引导程序

插入一张软盘,然后将其格式化,然后加载到/mnt/floppy

#mke2fs /dev/fd0

#mount -t ext2 /dev/fd0 /mnt/floppy -o loop

在其中创建/boot/grub目录

#mkdir -p /mnt/floppy/boot/grub

将系统中/boot/grub下的device.map, stage1, stage2 复制到/mnt/floppy/boot/grub中,然后在/mnt/floppy/boot/grub目录下创建grub.conf文件:

default=0

timeout=10

title Floppy Linux

kernel (fd0)/bzImage root=/dev/ram0

initrd (fd0)/initrd.gz

然后创建一个链接

#ln -s grub.conf menu.lst

执行

/sbin/grub --batch --device-map=/dev/null

root (fd0)

setup (fd0)

quit

EOF

这样grub就被安装到bootldr盘上了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值