该坚持的时候坚持,该妥协的时候妥协,该放弃的时候放弃
分类: 嵌入式
2016-10-27 23:26:56
1.1创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
1.2 创建设备文件
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
1.3 加入配置文件
#tar etc.tar.gz
#mv etc/*…/root/etc/ -rf
1.4添加内核模块
#cd…/linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs
1.5编译/安装busybox
1.配置busybox
#make menuconfig
Busybox Settingsàbuild Options->
选中 “Build busybox as a static binary”,静态链接
Cross Compiler prefix (arm-linux-)
Installation Options->
选中 “Don‘t use /usr”,选中该项可以避免busybox被安装到宿主系统的
/usr目录下,破坏宿主系统
Busybox Installation Prefix (/xxx/rootfs)
该选项表明编译后的busybox的安装位置
2.编译、安装busybox
make
make install
2.1文件系统类型
根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为 RAM 和 FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等。
2.2 使用Initramfs
1. #cd …/rootfs/#ln –s ./bin/busybox init2. 配置Linux内核,支持initramfs并将下面一行地址填写为制作的文件系统地址。3. 编译内核4. setenv bootargs noinitrd console=ttySAC0,115200
2.3 使用NFS
使用nfs,需要去掉initramfs选项。并且在文件系统中的nfs中选择root file system on NFS。
开发板中的修改:
setenv bootargs noinitrdconsole=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.3:/home/S5-driver/lesson9/rootfs,proto=tcp,nfsvers=3 ip=192.168.1.6:192.168.1.3:192.168.1.1:255.255.255.0::eth0:offnfsroot:是nfs服务器的地址,后面连的是目录地址ip:是开发板的地址:nfs服务器的地址:网关:掩码:开发板别名:写个eth0:关闭自动获取地址等
遇到的问题:
开发板tftp 下载后bootm启动提示:
Root-NFS: Server returned error -13 while mounting /home/doctmp/part4/rootfs
原来/etc/exports里面的括号写成中文了。