一、制作工具
①jffs2
#cd /work/GUI/xwindow/X/deps
#tar xzf zlib-1.2.3.tar.gz
#cd zlib-1.2.3
#./configure --shared --prefix=/usr
#make
#make install
然后编译mkfs.jffs2
#cd /work/tools
#tar xjf mtd-utils-05.07.23.tar.bz2
#cd mtd-utils-05.07.23/util
#make
#make install
制作/烧写jffs2映像文件
#cd /work/nfs_root
#mkfs.jffs2 -n -s 2048 -e 128k -d first_fs -o first_fs.jffs2
-s 一页的大小
-e 一块的大小
-d 源目录
-o 输出
②yaffs2
#cd work/system
yaffs_source_util_large_smmall_page_nand.tar.bz2
#tar xjf yaffs_source_util_large_small_page_nand.tar.bz2
#cd Developement_util_ok
#cd yaffs2
#cd utils
#make
#cp mkyaffs2image /usr/local/bin
#chmod +x /usr/local/bin/mkyaffs2image
二、构建根文件系统
1./dev/console /dev/null
2.配置文件/etc/inittab
3.配置文件里面指定的应用程序
4.库文件
5.init本身,即busybox
以上就是最小根文件系统所需要的项
编译busybox
先阅读install文件可知道如何编译它
make menuconfig
make
make install(这里安装要注意)
安装到我们指定的某个文件里面
使用make CONFIG_PREFIX=/path/from/root install
编译需要在makefile里面加上cross_compiler里面加上arm-linux-,或者在busybox里面执行make menuconfig也可
一、创建console
现在上面编译后busybox目录是work/tmp/first_fs
在此目录下:ls /dev/console /dev/null -l
crw------- 1 root root 5, 1 2015-01-05 20:57 /dev/console
crw-rw-rw- 1 root root 1, 3 2015-01-05 20:30 /dev/null
那么根据它来创建console null等设备
#mkdir dev
#cd dev
#mknod console c 5 1
#mknod null c 1 3
#ls -l
显示:
crw-r--r-- 1 root root 5, 1 2015-05-06 20:39 console
crw-r--r-- 1 root root 1, 3 2015-05-06 20:40 null
表示创建成功
二、配置项
#cd work/tmp/first_fs
#mkdir etc
#vim etc/inittab
输入:
console::askfirst:-/bin/sh
三、安装c库
#cd /usr/local/arm/4.3.2
#find -name lib
显示以下库:
./lib
./arm-none-linux-gnueabi/lib
./arm-none-linux-gnueabi/libc/lib
./arm-none-linux-gnueabi/libc/thumb2/lib
./arm-none-linux-gnueabi/libc/thumb2/usr/lib
./arm-none-linux-gnueabi/libc/armv4t/lib
./arm-none-linux-gnueabi/libc/armv4t/usr/lib
./arm-none-linux-gnueabi/libc/usr/lib
我们需要:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
#cd /work/tmp/first_fs/
#mkdir lib
#mkdir usr/lib -p
#cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/tmp/first_fs/lib -d
#cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* /work/tmp/first_fs/usr/lib -d
最小根文件系统已经完成。
制作文件系统:
#mkfs.jffs2 -n -s 2048 -e 128KiB -d first_fs -o first_fs.jffs2
#mkyaffs2image first_fs first_fs.yaffs2
烧写jffs2:
fs:
nfs 30000000 192.168.1.17:/work/nfs_root/first_fs.jffs2
nand erase.part root
nand write.jffs2 30000000 260000 $filesize
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
kernel:
nfs 30000000 192.168.1.17:/work/nfs_root/uImage_new
nand erase.part kernel
nand write.jffs2 30000000 kernel
烧写yaffs2:
fs:
nfs 30000000 192.168.1.17:/work/nfs_root/first_fs.yaffs2 //这里不能使用nfs挂载,只能直接烧写
nand erase.part root //原因是:内核还不支持dm9000c
nand write.yaffs 30000000 260000 $filesize
kernel:
nfs 30000000 192.168.1.17:/work/nfs_root/uImage_new
bootm 30000000
三、使用mdev
可以查看mdev.txt
[1] mount -t sysfs sysfs /sys
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
[4] mount -t tmpfs mdev /dev
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
这6步就可以了。
所以:
[1] mount -t sysfs sysfs /sys
[4] mount -t tmpfs mdev /dev
#cd ../first_fs_mdev
#mkdir sys
应该怎么做?
#vim etc/fstab
#device mount-point type options dump fsck
proc /proc proc defaults 0 0
sysfs /sys sysfs default 0 0
tmpfs /dev tmpfs default 0 0
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
怎么做呢?
#vim etc/init.d/rcS
mount -a
mkdir /dev/pts/
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s