单眼皮的青蛙 | 构建嵌入式Linux系统-根文件系统的设置

来源:百度文库 编辑:神马文学网 时间:2024/03/29 14:51:43
构建嵌入式Linux系统-根文件系统的设置
作者 hahaxixi 14:02 |静态链接网址 |最新回复 (0) |引用 (0) |嵌入式系统
一. 文件系统
1. CRAMFS
2.4.26内核没有提供cramfs, 但是优龙公司光盘里提供了mkcramfs, 将它复制到${PREFIX}/sbin目录下, 然后运行:
$ mkcramfs rootfs/ images/cramfs.img
2. JFFS2
$ mkfs.jffs2 -r rootfs/ -o images/rootfs-jffs2.img
3. NFTL上的磁盘文件系统
4. RAM disk上的磁盘文件系统
$ cd ${PRJROOT}
$ mkdir tmp/initrd
建立空的文件系统映像:
$ dd if=/dev/zero of=images/initrd.img bs=1k count=8192
对文件系统初始化, 然后对它建立文件系统并且安装它:
$ su -m
password:
# /sbin/mke2fs -F -v -m0 images/initrd.img
# mount -o loop images/initrd.img tmp/initrd
# cp -av rootfs/* tmp/initrd
# umount tmp/initrd
# exit
最后压缩文件系统产生一个经压缩的RAM disk:
$ gzip -9 < images/initrd.img > images/initrd.bin
5. 安装TMPFS上的目录
在内核配置菜单的File systems子菜单中启用"Virtual memory file system support(former shm fs)"的支持.
在/tmp目录上安装4MB的TMPFS文件系统:
# mount -t tmpfs none /tmp -o size=4m
可以将其加入/etc/init.d/rcS文件.
二. 在线更新
1. rsync工具程序
下载rsync工具程序http://samba.org/ftp/rsync/,并解压后移往存放源代码的目录
$ cd ${PRJROOT}/sysapps/rsync-2.6.8
接着设定并编译此套件:
$ CC=arm-linux-gcc CPPFLAGS="-DHAVE_GETTIMEOFDAY_TZ=1" ./configure --host=$TARGET --prefix=${TARGET_PREFIX}
$ make
编译完成后,接着将rsync二进制文件安装到目标板的根文件系统并且对它进行strip的处理:
$ cp rsync ${PRJROOT}/rootfs/bin
$ arm-linux-strip ${PRJROOT}/rootfs/bin/rsync
fsync安装到目标板上后,可以在目标上使用如下的命令来更新它的根文件系统:
# rsync -e "ssh -l root" -r -l -p -t -D -v --progress 192.168.172.50:${PRJROOT}/rootfs/* /
这个命令会从ip将footfs目录的内容复制到目标板的根目录,主机必须执行sshd和rsync这两个监控程序.
命令选项如下:
-e 将用来连接远程服务器的应用程序的名称传给rsync.(此例中,使用ssh -l root以root身份连接服务器.)
-r 以递归的方式复制目录.
-l 保存符号链接.
-p 保存文件存取权限.
-t 保存时间戳.
-D 保存设备节点.
-v 提供详细的输出.
--progress 报告传输的过程.
-n 检查更新进行"排练"而不执行实际的更新动作.
三. 为目标板安装patch工具程序
下载gptch工具 ftp://ftp.gun.org/gnu/patch/ ,取出2.5.4源码并放到${PRJROOT}/sysapps目录下.
$ cd ${PRJROOT}/sysapps
$ mkdir build-patch
$ cd build-patch
$ CC=arm-linux-gcc ../patch-2.5.4/configure --host=$TARGET --prefix=${TARGET_PREFIX}
$ make LDFLAGS="-static"
$ make install
此处以静态链接patch的好处是,不会因为更新期间造成链接库丢失或不完整而导致patch在目标板上执行失败.
$ cp ${TARGET_PREFIX}/bin/patch ${PRJROOT}/rootfs/bin
$ cd ${PRJROOT}/rootfs/bin
$ arm-linux-strip patch