本文件系统制作参考http://blog.csdn.net/lizuobin2/article/details/52673494中的“制作文件系统”部分。
注:本文涉及的源码包网上一大堆,此文不再给出下载链接。
1、解压下载好的busybox
tar jxvf busybox-1.22.1.tar.bz2
2、配置
cdbusybox-1.22.1/
make menuconfig
Busybox Settings ->
general configuration ->
[*] don't use /usr //选中它 否则会破坏虚拟机
build options->
cross comliler prefix = arm-linux- //选择交叉编译工具
3、编译 & 安装
make
make install
cd _install
ls //查看是否安装成功
编译安装完毕之后,我们的文件系统就生成在_install 目录下了
4、创建 /etc/inittab
mkdir etc
vi etc/inittab
加入以下内容:
# /etc/inittab
# 启动脚本/etc/init.d/rcS
::sysinit:/etc/init.d/rcS
# 启动 shell
::askfirst:-/bin/sh
# 重启、关机前 卸载文件系统
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
5、创建 /etc/init.d/rcS
mkdir etc/init.d
vi etc/init.d/rcS
加入以下内容:
# 这是一个脚本文件,用/bin/sh解析
#!/bin/sh
# 挂载文件系统
mount -a
# 使用内存文件系统
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
# 设置IP
/sbin/ifconfig eth0 192.168.0.100 #IP根据自己的需要更改
# 挂载 /etc/fstab 中的文件系统
mount -a
exec /etc/rc.local
6、创建 rc.local
vi etc/rc.local
加入以下内容:
#!/bin/sh
. /etc/profile //注意.后边有个空格!
7、创建 /etc/fstab
vi etc/fstab
加入以下内容:
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
8、构建 /dev 目录
mkdir dev
sudo mknoddev/console c 5 1
sudo mknoddev/null c 1 3
9、创建其它目录
mkdir proc mnt tmp sys root usr
10、拷贝lib
(注:不同的编译器,lib库的位置不一样,请在自己的编译器目录下找,一般位于xxx/arm-none-linux-gnueabi/lib下。此处我的编译器是freescale imx6solo提供的,在multi-libs下)
mkdir lib
cp xxx/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/armv7-a/arm/hard/a9/lib/*.so* lib -d
mkdir usr/lib
cp xxx/fsl-linaro-toolchain/arm-fsl-linux-gnueabi/multi-libs/armv7-a/arm/hard/a9/usr/lib*.so* usr/lib -d