Linux跟文件系统的制作


1、文件系统制作的步骤

1)通过busybox工具生成/bin /sbin /linuxrc /usr/bin  /usr/sbin

2) 使用交叉编译工具链,构建/lib目录

3)创建其他空目录

4)配置etc目录,并初始化/dev 目录

5)利用工具制作跟文件系统映像文件

2、busybox文件系统制作

2.1busybox源码下载

使用的是韦东山老师所给资料busybox-1.7.0.tar.bz2版本,也可以从http://www.busybox.net/进行下载

看网站最新的有很多版本

 

 

 

 

 

 

 

 

2.2编译安装busybox

1)将busybox压缩包放在/work/tools 目录下,进入该目录执行以下命令进行解压缩

tar xjf busybox-1.7.0.tar.bz2

2)然后进入busybox-1.7.0目录,执行“make menuconfig”,对各个选项进行配置

3)然后修改busybox的makefile

 

然后执行“make”命令进行编译。

4)编译完成后,执行“make CONFIG_PREFIX=/work/nfs_root/second_fs/ install”,我自己的文件系统都是放在了/work/nfs_root/second_fs/这个路径里面。

此步一定要注意,不能直接执行“make install”,否则会破坏系统。

5)执行完成后,就可以看到/work/nfs_root/second_fs这个目录里面就有了bin sbin usr lib linuxrc这样的文件夹和文件。

3、创建其他空目录

/lib加载库文件的目录

/etc 初始化所需的配置文件的目录

/dev 初始化后存放设备文件的目录

/proc /mnt /tmp /sys /root 系统启动之后会用到的目录

4、使用glibc库构建跟文件系统

由于开发板上只需要加载器和动态库,所以将glibc库里的库文件拷贝到跟文件系统的/lib目录里面

cd /work/nfs_root/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

cp *.so* /work/nfs_root/second_fs/lib -d”  

/*扩展*/

 

 

 

 

这样库文件就算是加载进去了。

5、配置/etc目录,并初始化/dev目录

5.1配置/etc目录

在/etc目录需要3个文件:/etc/inittab   /etc/init.d/rcS   /etc/fstab

5.1.1Inittab主要用于设备初始化内容如下所示

 

5.1.2rcS文件是一个脚本文件,可以添加想自动执行的命令,具体内容如下图所示。在创建完文件之后,需要给文件添加可执行的属性“chmod +x etc/init.d/rcS

 

5.1.3fstab用来定义系统支持的文件类型,具体内容如下

 

5.2/dev目录初始化

5.2.1进入work/nfs_root/second_fs/dev目录,由于使用mdev构造/dev目录,但是mdev是通过init进程来启动的,所以在使用mdev构造/dev目录之前,init进程至少要用到设备文件/dev/consle /dev/null。通过如下命令创建这两个设备文件

sudo mknod console c 5 1

sudo mknod console c 1 3

当mdev启动后,会自动在/dev目录下创建各种设备文件。

6、yaffs2映像文件和jffs2映像文件的制作

6.1 yaffs2映像文件的制作

6.1.1使用工具

Yaffs源码中有个utils目录,进入到该目录下面

 将文件拷贝到/uer/local/bin目录下面

Sudo cp mkyaffs2image /usr/local/bin

Sudo chmod +x /usr/local/bin/myaffs2image

/*扩展*/

 

6.1.2制作映像文件

进入到以下目录“cd /work/nfs_root”(second_fs也在此根目录下面)

mkyaffs2image second_fs second_fs.yaffs2

生成后的文件就可以使用了,使用DWN软件通过USB device进行下载。

6.2jffs2映像文件制作

6.2.1先安装zlib,解压缩设备工具包,然后对工具包源码编译生成mkfs.jffs2这个工具(注意存放的目录是工具目录,上次自己将工具的lib文件放在了开发板根目录下面的lib目录里,并且进行了文件的覆盖,导致系统文件的崩溃,现在都没有能力进行解决)

 

6.2.2制作映像文件

我使用的制作指令如下,和书上的不一样

mkfs.jffs2 -n -s 2048 -e 128KiB -d second_fs -o second_fs.jffs2

 

 

6.3根据不同跟文件系统类型需要在uboot启动后,对bootargs选项进行设置。

原来bootargs原来的值为noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0

设置之后对bootargs进行设置noinitrd root=/dev/nfs nfsroot=192.168.100.3:/work/nfs_root/first_fs ip=192.168.100.17:192.168.100.3:192.168.100.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM