rootfs文件系统制作笔记
环境:XC2440 linux2.32.2 红帽5
根文件系统有一系列的目录组成,其中包括应用程序、C库、及相关的配置文件。
制作根文件系统的步骤如下,下面步骤均在虚拟机终端上操作。
一、创建文件系统总目录rootfs
【mkdir rootfs】
二、创建文件系统目录
【cd rootfs】进入rootfs目录,创建下面目录
/bin --放置命令
/dev --放置设备文件
/etc --放配置文件
/lib --放库文件
/lib/modules
/proc --proc文件系统是内核与用户的接口,将内核的一些信息反映到 此目录下
/sbin --放置命令
/sys --sys文件系统,主要是设备、驱动、总线信息的显示
/usr --用户相关
/usr/bin
/usr/lib
/usr/sbin
/mnt --用于挂载
/tmp --存放临时文件
/var --系统日志
当然根据需要也可参考linux系统目录加入/root、/home等目录
三、创建设备节点/dev
Linux下,设备均已设备文件的形式供用户使用,用户操作具体设备时只需操作相应设备文件。
【cd dev/】设备文件(节点)都在dev/目录下
【mknod -m 666 console c 5 1】
【mknod -m 666 null c 1 3】
四、安装/制作/etc
/etc目录下的系统配置文件比较多,这里不展开讲解(水平有限)。但由于/etc并不需要经常改动,每次制作文件系统时,可以将上次做好的/etc目录文件copy过来就行。附件提供GQ2440的etc压缩包,将其解压到rootfs/目录即可。
【tar etc.tar.gz -C /xxx/rootfs】
五、编译及安装内核模块
这步并不是必须的,新的文件系统没必要加载内核模块,若内核没有完全配置好,则会加入很多无关紧要的模块,使根文件系统不够简洁。但如果内核基本配置好,编译出来的模块以后项目基本都会用到的,则可以选择这步。建议暂时不执行这步,模块以后可以手动加载。
进入linux内核目录(linux2.6.32.2)编译内核模块
【make mudules ARCH=arm CROSS_COMPILE=arm-linux-】
安装内核模块,这里的安装只是将模块从内核拷贝到根文件系统目录。
【make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs】
六、配置busybox
大家都在linux系统或arm嵌入式系统都使用过诸如cd ls mkdir等一系列命令进行相关操作。这些命令也是语言写出来的,但我们这些入门级的人是写出来的,我只要会用。而busybox就是这些命令的集合。
解压出busybox源码,进入源码目录进行配置(busybox提供了很多命令工具,但嵌入式开发板并不需要全部命令,所以要进行配置/裁剪)
【make menuconfig】
1.进入busybox setting-->
Build options-->
选中“build busybox as a static binary”,静态链接
Cross compiler prefix(arm-linux-)
2.进入installation options-->
选中“don’t use/usr”选项,否则busybox被安装到宿主机系统的/usr目录下,破坏宿主机系统。
3.进入busybox setting-->
busybox installation prefix(/xxx/rootfs),该选项表明编译后的busybox的安装位置。
上面3项是最基本的配置,当然可以根据实际情况把不需要的一些命令去掉
如editors-->下提供了很多的编辑工具,可以只保留用户习惯使用的。
这样做可以使根文件系统变得更小。
4.以上配置完成后即可编译,安装busybox
【make ARCH=arm CROSS_COMPILE=arm-linux-】
【make install】
安装完成后在rootfs/bin/下会出现很多的命令函数,busybox就是这些命令的入口
图1
当然busybox有没有安装好的一个重要标志是rootfs/sbin下有没有init文件
图二
经过这6个步骤,已经很粗糙的将根文件系统制作完成了。
七、制作好rootfs如何使用呢
1. 使用NFS根文件系统
图3
先看一下u-boot参数设置,
ipaddr:目标板的IP地址
serverip:linux虚拟机系统IP地址
bootargs:参数比较多,nfsroot=......./home/lc/rootfilessys/rootfs_xc2440_qt就是根文件系统的rootfs的路径,
(因为后来加入了Qt库所以改名rootfs_xc2440_qt)。
除此之外,内核至少串口、以太网驱动要移植成功,内核中文件系统配置要选为NFS根文件系统。
2.arm本地文件系统,只要将rootfs通过mkyaffs2image成yaffs2文件系统即可。
【mkyaffs2image rootfs rootfs.bin】rootfs.bin就是yaffs2文件系统
附件:etc.rarmkyaffs2image.rar