使用Busybox构造cramfs根文件系统

 
使用Busybox构造cramfs根文件系统
 

11.1、下载Busybox,如果系统中没有mkcramfs工具则还要下载mkcramfs压缩工具。本文件系统使用Busybox-1.10.1cramfs-1.1。压缩文件Busybox-1.10.1.tar.bz2cramfs-1.1.tar.gz

22.解压文件:

tar jxvf Busybox-1.10.1.tar.bz2

tar zxvf cramfs-1.1.tar.gz

2、进入解包之后生成cramfs-1.1目录,执行编译命令:

make

编译完成之后,会生成mkcramfscramfsck两个工具,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。如果该目录下已有这两个可执行程序,则无需编译,直接使用。

3.修改Makefile文件

ARM板为例,打开Makefile文件,找到ARCH?=CROSS_COMPILE?=两项,修改为

ARCH ?= arm

CROSS_COMPILE ?=arm-linux- //arm-linux-为交叉编译器在环境变量中的目录前缀,视自己交叉编译环境而定

4.进入解压后的Busybox-1.10.1目录,运行make menuconfigmake gconfig进行配置

在进行配置时有几项需要注意:

ØBuild Options>

Build BusyBox as a static binary (no shared libs)

Force NOMMU build

Build shared libbusybox

Build with Large File Support (for accessing file>2GB)

如果选择 Build BusyBox as a static binary (no shared libs)方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

静态编译如:

arm-linux-gcc–static hello.c –o hello

 如果选择Build shared libbusybox方式进行编译时,要将交叉编译的动态库或符号链接复制到对应的目录中,否则程序不能运行。同时在配置时应去掉Build shared libbusybox目录下的两项:如下 

Build shared libbusybox>

 Producebinary for each applet,linked against libbusybox

Produceadditional busybox binary linked against libbusybox

同时去掉

Build with Large File Support (for accessing file>2GB)

否则编译会报错。

Ø一定要勾选上如下配置:

Init Utilities>

(*) init

(*) Supporting reading an inittab file//支技init进程读取/etc/inittab配置文件。

(*) Supporting running commands with controlling-tty//使busybox在真实的串口设备中运行命令行,不使用可能会报类似与:shcan’t access ttyjob control turned off的错误。

其它基本可按默认配置。

5.执行

make

编译完成后执行

make install

 则在Busybox-1.10.1目录下有_install这个目录,这正是我们想要的。

66. _install目录下已经有三个包含应用程序的目录:binsbinusr和脚本linuxrc,注意此linuxrc不要随便换掉,就用此linuxrc

在此_install目录下创建其它几个需要的目录,如下

mkdir etc dev proc tmp lib var sys

7.转到dev目录下创建设备节点

mknod ram0 b 1 0

mknod-m 660 console c 51

mknod-m 660 null c 1 3

mknod-m 660 zero c 1 3

mknod-m 666 ttySAC0 c 204 64

8.编写脚本,这一点很重要,没写好或脚本有错误,文件系统都起不来。

转到etc目录,编写inittab脚本,内容如下:

# Startup the system

null::sysinit: /bin/mount –o remount,rw/

null::sysinit: /bin/mount –t procproc /proc

null::sysinit: /bin/mount –a

console::sysinit: /etc/init.d/rcS

ttySAC0::respawn: /bin/sh

9.编写挂载表fstab

proc/proc proc defaults 0 0

sysfs/sys sysfs defaults 0 0

none/dev/pts devpts mod=0622 0 0

tmpfs/dev/shm tmpfs defaults 0 0

10.etc下创建目录init.d

cd init.d

创建脚本rcS

内容如下:

# /bin/sh

保存,并修改rcS的权限,否则会出现Cannot run ‘/etc/init.d/rcS’:Permission denied的错误:

chmod775 rcS

1111.生成文件系统映像。

11、./mkcramfs _install rootfs.cramfs

至此,文件系统制作完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值