使用Busybox制作根文件系统

时间:2022-01-27 09:00:21

步骤

1.编译/安装BUSYBOX(BUSYBOX-1.17.2-20101120.TGZ)
2. 添加动态库与加载器
3.构建ETC目录

 3.1创建etc/inittab文件 
 3.2创建etc/fstab文件 
 3.3创建etc/init.d/rcS文件

4.构建DEV目录
5.构建其他目录
6.制作YAFFS文件系统映像文件

1.编译/安装BUSYBOX(BUSYBOX-1.17.2-20101120.TGZ)

具体步骤:
创建制作根文件系统的路径(假定为/root/myroot/rootfs)

#> mkdir /root /myroot #> mkdir /root /myroot/rootfs 

将busybox压缩包解压到/root /myroot目录下

#>tar –zxvf busybox-1.17.2-20101120.tgz -C /root/myroot/ 

进入解压后软件所在目录

#> cd busybox-1.17.2 

修改Makefile文件

#> vim Makefile 

修改前:

164 CROSS_COMPILE ?= 190 ARCH ?= $(SUBARCH) 

修改后:

164 CROSS_COMPILE ?= arm-linux- 190 ARCH ?= arm 

添加临时环境变量

#>export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH 

配置Busybox

#> make menuconfig ;进入busybox配置窗口 
在Busybox Settings ---------> Installation Options ---------> (./_install)BusyBox installation prefix 输入/root/myroot/rootfs

其他默认原设置,保存退出。

编译busybox

#> make 

安装busybox

#> make install 

安装结束后,在目录/root/myroot/rootfs/下将生成4个文件:bin、 sbin、 usr 、linuxrc。

2. 添加动态库与加载器

具体步骤:
动态库与加载器的位置是:/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/

创建库目录

#> mkdir  –p /root/myroot/rootfs/lib 

进入lib目录

#> cd /root/myroot/rootfs/lib/ 

添加库函数

#>  cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/*.so* ./ 
#>  cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/*.a* ./ 

结果在/root/myroot/roofs/lib目录中如下:

ld-2.11.so libcrypt-2.11.so libgomp.a libm.so.6 libnss_files-2.11.so libnss_nis.so.2 librt.so.1 libstdc++.a libthread_db.so.1 ld-linux.so.3 libcrypt.so.1 libgomp.so libnsl-2.11.so libnss_files.so.2 libpcprofile.so libSegFault.so libstdc++.so libutil-2.11.so libanl-2.11.so libc.so.6 libgomp.so.1 libnsl.so.1 libnss_hesiod-2.11.so libpthread-2.11.so libssp.a libstdc++.so.6 libutil.so.1 libanl.so.1 libdl-2.11.so libgomp.so.1.0.0 libnss_compat-2.11.so libnss_hesiod.so.2 libpthread.so.0 libssp_nonshared.a libstdc++.so.6.0.14 libBrokenLocale-2.11.so libdl.so.2 libiberty.a libnss_compat.so.2 libnss_nis-2.11.so libresolv-2.11.so libssp.so libstdc++.so.6.0.14-gdb.py libBrokenLocale.so.1 libgcc_s.so libm-2.11.so libnss_dns-2.11.so libnss_nisplus-2.11.so libresolv.so.2 libssp.so.0 libsupc++.a libc-2.11.so libgcc_s.so.1 libmemusage.so libnss_dns.so.2 libnss_nisplus.so.2 librt-2.11.so libssp.so.0.0.0 libthread_db-1.0.so 

3. 构建etc目录,

具体步骤:

3.1创建etc/inittab文件

进入根文件系统目录(/root/myroot/rootfs)

#> cd /root/myroot/rootfs/ 

创建etc目录

#> mkdir etc 

进入etc目录

#> cd /root/myroot/rootfs/etc 

创建inittab文件

#> vi inittab 

内容如下:

#/etc/inittab

::sysinit:/etc/init.d/rcS ::askfirst:-/bin/sh ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r 
3.2创建etc/fstab文件

进入根文件系统etc目录(/root/myroot/rootfs/etc)

#> cd /root/myroot/rootfs/etc/ 

创建fstab文件

#> vi fstab 

内容如下:

#device mount-point type options dum fsck order proc /proc proc  defaults 0 0 tmpfs /tmp tmpfs  defaults 0 0 sysfs /sys sysfs  defaults 0 0 
3.3 创建etc/init.d/rcS文件

创建/root/myroot/rootfs/etc/init.d目录

#> mkdir  -p /root/myroot/rootfs/etc/init.d 

进入/root/myroot/rootfs/etc/init.d目录

#> cd /root/myroot/rootfs/etc/init.d 

创建etc/init.d/rcS文件

#> vi rcS 

内容如下:

#!/bin/sh mount -a echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s 

修改文件属性,使之能执行

#> chmod +x  /root/myroot/rootfs/etc/init.d/rcS 

4.构建dev目录

具体步骤:
创建/root/myroot/rootfs/dev目录

#> mkdir  /root/myroot/rootfs/dev 

进入/root/myroot/rootfs/dev目录

#> cd /root/myroot/rootfs/dev 

静态创建设备文件

#> mknod  console  c  5 1 #> mknod null c 1 3 

5.构建其他目录 具体步骤:
进入/root/myroot/rootfs/

#> cd /root/myroot/rootfs/ 

创建其他目录

#> mkdir proc mnt tmp sys root 

结果在目录/root/myroot/roofs/下有如下图文件:

bin  dev  etc  lib linuxrc mnt proc root sbin sys tmp usr 

6.制作yaffs文件系统映像文件

具体步骤:
解压缩制作yaffs2镜像文件工具

#>  tar  -zxvf   mktools-20120518.tar.gz -C / 

进入/root/myroot/

#> cd /root/myroot/ 

复制制作yaffs文件工具

#> cp  /usr/sbin/mkyaffs2image-128M ./ 

制作yaffs2映像文件

#> ./mkyaffs2image-128M rootfs root.image 

最后在目录/root/myroot/下,生成yaffs2映像文件——root.image