看你想将rh_linux.img做成什么样子。如果是文件系统的话,那么你需要这么作:
dd if=/dev/zero of=rh_linux.img count=CONTS
参数count表示需要创建的文件大小(以块为单位,每块大小为512字节,如果rh_linux.img大小为1M,则CONTS=2000).
创建完成rh_linux.img以后,需要使用文件系统工具(mkfs.ext2、mkfs.ext3、mkfs.jffs2等)格式化它(例如: mkfs.ext3 rh_linux.img);接下来使用:mount -o loop MDIR rh_linux.img将镜象文件挂载到目录MDIR下,将boot.bin拷贝进去就可以了。
一.为什么要做这样一个Linux
我一直想做一个属于自己的小型的linux,但从网上搜索所得结果都是打造放在软盘中的linux,而且都是用lilo启动。很不幸,本人的笔记本没有软驱,所以这些也不适合自己。干脆自己做一个可从光盘启动并运行的linux。
二.Linux启动简介
系统加电后进入bios,随后读取硬盘的主引导记录(MBR),然后调用另一个引导程序(grub或lilo)来加载内核和镜像文件。加载内核后系统会把文件系统存放到ram中,然后系统运行。在这里我们使用grub来加载内核和镜像文件。
三.编译内核
我使用的linux 2.6 内核,详细编译内核方法可以从以下文章中得到,这里不再赘述。
http://hi.baidu.com/lianxi1999/blog/item/95c782111f75a212b8127b03.html
四.编译busybox
busybox是一个集成了一百多个最常用linux命令和工具的软件,我的理解就是用来生成linux下的常用命令的小程序。把编译后的busybox程序放到我们的要做的系统中后,我们就能用一些linux下的常用命令了。
编译busybox与编译其他linux下的程序一样,首先下载busybox,我用的是1.0版。
#tar xvfz busybox-1.00.tar.gz // 解开busybox
#cd busybox-1.00
#make menuconfig //配置busybox
下面是需要编译进busybox的功能选项,其他的可以根据需要自己
General Configuration应该选的选项
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.
Installation Options
Don t use /usr
这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.
其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.
配置好后退出并保存.
#make //编译busybox
#make install //安装busybox
编译好后在busybox目录下生成子目录_install,里面的内容:
bin
linuxrc -> bin/busybox
sbin