Ramdisk文件系统的制作-V0.2

| 2014年4月6日

作者:许振文

Ramdisk文件系统:

可以利用工具软件BusyBox制作Ramdisk文件系统.busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了
一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.完整的BusyBox源代码可以从
http://www.busybox.net下载,压缩包大小为1.3 MB左右。下面是如何使用编译BusyBox的过程。

busybox配置编译:

下载busybox到本地文件夹并解压

#tar jxvf busybox-1.10.1.tar.bz2 

# cd busybox-1.10.1/

修改 Makefile

ARCH                =arm

CROSS_COMPILE     =arm-linux-
 

$make menuconfig

Busybox Settings >

General Configuration >

[*] Support for devfs

Build Options >

[*] Build BusyBox as a static binary (no shared libs)

/* 将busybox编译为静态连接,少了启动时找动态库的麻烦 */

Installation Options

Don't use /usr

Init Utilities >

[*] init

[*] Support reading an inittab file

/* 支持init读取/etc/inittab配置文件,一定要选上 */

其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.由于库的问题可能有些命令编译不过去,
现在的办法只是在配置的时候不选这些命令就可以了,具体需要编译时看,在我编译的时候出现了taskset和insmod_main编译错误
的问题。我分别取消了tasket命令和对2.22.4模块insmod支持就可以了

建立根文件系统结构:

建立根文件系统结构

#mkdir rootfs

#cd rootfs

#mkdir bin dev etc lib proc sbin tmp usr var

#chmod 777 tmp

#mkdir usr/bin usr/lib usr/sbin

#mkdir var/lib var/lock var/log var/run var/tmp

#chmod 1777 var/tmp

准备所需的设备文件,可以直接拷贝宿主机上的,或者自建几个就是。

#cd rootfs/dev

#mknod -m 660 console c 5 1

创建linuxrc文件 内容如下:

$ vim rootfs/linuxrc

#!/bin/sh

echo "Hello linux--helight"

exec /sbin/init

然后修改权限:chmod 775 linuxrc

当然,lib里面还要拷入一些库文件,为了方便,我将交叉编译的库全放进去。

#cp -rfd /usr/local/arm/3.4.1/arm-linux/lib/* ./lib  (注意-d,保持库文件的链接关系)

#mkdir initrd

制作文件系统:

#dd if=/dev/zero ōf=initrd.img bs=1k count=8192

#/sbin/mke2fs -F -v -m0 initrd.img

#mount -o loop initrd.img initrd

#cp -avd rootfs/* initrd

#umount

#gzip -9 initrd.img 
看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务