资源描述
【Step 1】根文件系统的制作
1. 下载源码
2. 解压源码
3. 配置源码
make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files >
2 GB)
(arm-hamber-linux-gnueabi-) Cross Compiler prefix
() Additional CFLAGS
4. 编译
make
5. 安装
busybox默认安装路径为源码目录下的_install
make install
6. 进入到_install目录下,添加其他需要目录
mkdir dev etc mnt proc var tmp sys root
7. 添加库
将工具链中的库拷贝到_install目录下
删除lib下的
所有目录
.o
.a .la
对动态库进行瘦身以减小文件系统的大小
arm-hamber-linux-gnueabi-strip lib/*
注意,lib目录下默认没有写权限
chmod –R u+w lib
8. 添加系统启动文件
在etc下添加文件inittab,文件内容如下
在etc下添加文件fstab,文件内容如下
这里挂在的文件系统有三个proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,需要添加tmpfs的支持
修改内核配置
注意,是linux内核
File systems --->
Pseudo filesystems --->
[*] Virtual memory file system support (former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新编译内核(如果这里已经选中,就不需要重新编译内核了)
在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为
为rcS添加可执行权限:
chmod +x init.d/rcS
在etc下添加profile文件,文件内容为
9. 设备文件创建
根文件系统中有一个设备节点是必须的,在dev下创建console节点
sudo mknod dev/console c 5 1
【Step 2】NFS测试
1. 备份rootfs
cp rootfs rootfs_bak -a
rm rootfs/* -a
2. 将我们的文件系统拷贝到tftpboot目录下
改名rootfs
3. 设置uboot环境变量
setenv bootcmd tftp 33000000 zImage\; go 33000000
setenv bootargs
root=nfs
nfsroot=192.168.0.100:/home/hamber/tftpboot/rootfs
init=/linuxrc
console=ttySAC0,115200
ip=192.168.0.110
saveenv
4. 重新启动开发板,查看是否能够正常挂载,功能是否正常
【Step 3】制作ramdisk文件系统
通过NFS测试以后,就可以制作ramdisk文件系统了,具体如下
1. 制作一个大小为8M的虚拟磁盘
在tftpboot目录下
dd if=/dev/zero of=initrd.img bs=1k count=8192
initrd.img为8M
2. 格式化这个虚拟磁盘为ext3(不支持ext4,只支持ext3、ext2)
mkfs.ext3 -F initrd.img
3. 在mount下面创建initrd目录作为挂载点
sudo mkdir /mnt/initrd
4. 将这个虚拟磁盘挂载到/mnt/initrd下
注意这里的initrd.img不要和Ubuntu根目录下的initrd.img弄混了,同时initrd.img不能存放在rootfs目录中
sudo mount -t ext3 -o loop initrd.img /mnt/initrd
5. 将我们的文件系统写入initrd.img中
将测试好的文件系统里的内容全部拷贝到/mnt/initrd目录下面
sudo cp tftpboot/rootfs/* /mnt/initrd -a
6. 卸载/mnt/initrd
sudo umount /mnt/initrd/
7. 压缩initrd.img为initrd.img.gz
gzip --best -c initrd.img > initrd.img.gz
8. 配置内核支持RAMDISK
制作完 initrd.img.gz后,需要配置内核支持RAMDISK作为启动文件系统
Device Drivers
SCSI device support --->
<*> SCSI disk support
Block devices --->
<*> RAM block device support
(1)Default number of RAM disks 本来是16
(8192) Default RAM disk size (kbytes) 本来是4096
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd)
support
重新编译内核
9. 在u-boot命令行重新设置启动参数
setenv bootcmd
tftp 33000000 zImage\;
tftp 30800000 initrd.img.gz\;
go 33000000
setenv bootargs
root=/dev/ram rw
init=/linuxrc
initrd=0x30800000,8M
console=ttySAC0,115200
saveenv
重新启动开发板查看能否正常启动
【Step 4】制作cramfs文件系统
1. cramfs文件系统镜像制作
由于系统提供制作cramfs文件系统的工具,则可以利用。具体操作如下
sudo mkfs.cramfs rootfs rootfs.cramfs
2. 拷贝到tftpboot目录下
cp rootfs.cramfs ../
3. 将rootfs.cramfs烧写到nand flash的第三个分区上
u-boot下执行如下命令
tftp 30008000 rootfs.cramfs
nand erase 500000 800000
nand write 30008000 500000 800000
4. 重新设置u-boot启动参数
setenv bootcmd tftp 33000000 zImage\; go 33000000
setenv bootargs
root=/dev/mtdblock2
init=/linuxrc
console=ttySAC0,115200
saveenv
5. 启动开发板,测试是否成功。
[root@farsight /root] # ls /
bin etc linuxrc sbin tmp var
dev lib mnt proc test usr
[root@farsight /root] # mkdir test
mkdir: Cannot create directory `test': Read-only file system
这是由cramfs文件系统决定的,cramfs格式的文件系统是只读文件系统。
【Step 5】制作jffs2文件系统
1. zlib的编译
解压zlib-1.2.5.tar.bz2并进入zlib-1.2.5配置编译安装
./configure
make
sudo make install
2. mtd工具编译
解压mtd-snapshot-20050519.tar.bz2 并进入mtd/util编译安装
make
sudo make install
这样我们的系统里就有了mkfs.jffs2这个工具了
3. jffs2文件系统镜像制作
tftpboot目录下
4. jffs2文件系统烧写
tftp 30008000 rootfs.jffs2
nand erase 500000 800000
nand write 30008000 500000 800000
5. 设置u-boot启动参数
setenv bootcmd tftp 33000000 zImage\; go 33000000
setenv bootargs
root=/dev/mtdblock2
init=/linuxrc
rootfstype=jffs2 rw
console=ttySAC0,115200
saveenv
重新启动开发板,查看是否成功
展开阅读全文