使用BusyBox制作ramdisk文件
一、软件准备
主机:ubuntu12.04.5
工具链:arm-linux-gnueabihf-6.2.1
内核:linux-4.9.28
Busybox:busybox-1.29.3
二、制作根文件系统
1、建立目录
# mkdir ramdiskfs
# cd ramdisk
# mkdir mnt tmp var usr sys proc etc lib dev bin sbin root home
# mkdir usr/bin usr/sbin usr/lib lib/modules
2、添加设备文件
# cd dev
# mknod -m 666 console c 5 1 (备注:创建控制台设备文件)
# mknod -m 666 null c 1 3 (备注:创建一个空的设备文件)
3、添加配置文件
复制busybox中的/examples/bootfloppy/etc的文件
三、编译Busybox
1、配置Busybox
进入busybox目录下
# cd busybox-1.29.3
# make menconfig
1)选择Settings -> build Options -> Build busybox as a static binary,即静态链接,免去拷贝大量的库文件。
2)指定交叉编译工具cross compile prefix: arm-linux-gnueabihf-
3)指定头文件位置Path to sysroot: /opt/sysroots/armv7ahf-neon-linux-gnueabi/,如果没在指定头文件,则会在编译时出现找不到头文件limit.h的错误。

4)指定Busybox安装位置Destination path for’make install’:/xxx/ramdiskfs/

2、编译并安装busybox
# make
# make install
四、使用genext2fs制作ramdisk根文件系统镜像
1、安装genext2fs
# apt-get install genext2fs
2、使用genext2fs将ramdisk根文件系统打包成ext2文件系统镜像
# genext2fs -b 4096 -d ramdsikfs ramdisk
-b是指制作的ramdisk大小为4096K字节
-d是指要制作成ramdisk的根文件系统目录
ramdisk是制作出来的ramdisk的名字。
3、将ramdisk以最优方式压缩为ramdisk.gz
# gzip -v9 -f ramdisk
4、为ramdisk添加头结构信息
先安装mkimage
# apt-get install u-boot-tools
然后运行以下命令
# mkimage -n 'uboot ext2 ramdisk rootfs' -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdiskfs.gz
-n image在头结构中的命名
-A 用于指定CPU类型,比如ARM
-O 用于指定操作系统,比如Linux
-T 用于指定image类型,比如Kernel
-C 指定压缩类型
-d 无头信息的image文件名
五、内核文件配置
进入内核文件目录,打开配置菜单:
# make menuconfig
修改以下几个配置项:
1、选择General setup–> Initial RAM filesystem and RAM disk (initramfs/initrd) support

2、选择Device Drivers–>Block devices–> RAM block device support
3、设定选项Default RAM disk size kbytes的值为4096,与制作的ramdisk是4096K大小相匹配,否则启动时会出现kernel panic,提示ramdisk格式不正确,挂载不上ramdisk。

4、选择File systems–>Second extended fs support,以提供内核对ext2文件系统的支持。

本文详细介绍如何使用BusyBox在Ubuntu环境下制作ramdisk文件系统,包括软件准备、根文件系统搭建、BusyBox编译安装、ramdisk镜像制作及内核配置等步骤。
1881

被折叠的 条评论
为什么被折叠?



