linux 内核代码学习(九)--Linux内核启动和文件系统

一个比较顺手的学习平台可以达到事半功倍的效果,这里使用的平台环境主要是利用了主机和从机间的文件共享,以及从机自带的编译环境可以比较顺利的编译busybox1.0版本,方便进行内核和文件系统的测试了学习。
主机环境:vmware7.0+win10
从机环境:RedHat9.0 linux发行版  

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

我们首先要得到一张可以引导进入linux环境的软盘,这种软盘必须由两部分组成,即内核和根文件系统。我们首先制作一个内核。内核的编译要把内核部分放到一张1.44MB的软盘上去,通常要对内核进行压缩,压缩内核的最好方法是进行重新编译内核,将一些不必要的支持去掉,如对网络和其它周边设备的支持,重要的一点是记住内核必须支持RAMDISK及ext2,否则系统不能正常引导。

一:制作从软盘直接启动的liunx,软盘上包括内核及简单文件系统。

下载linux2.4.20内核源代码,源代码放置在win10主机上,通过vmware的文件共享功能在从机redhat9上进行编译,编译出合适大小的内核。同样先注释掉makefile中下面两行,然后在内核include目录里面根据cpu类型手动拷贝asm目录。

使用vmware工具创建一张虚拟启动软盘,根据内核readme文档说明“If you want   to make a boot disk (without root filesystem or LILO), insert a floppy   in your A: drive, and do a "make bzdisk". ”先创建一张不带文件系统的boot盘,再用vmware创建一个测试从机,插入boot盘,看看在没有根文件系统的时候内核的启动效果: 

 重新配置内核,对内核配置不熟悉可以参考发行版的内核配置,再次制作引导盘测试,可以看到内核能够正常启动,最后提示没有文件系统:

 制作根文件系统:

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

建立 BusyBox
Index of /downloads上下载busybox-1.00.tar.bz2,在/home目录下解压和安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值