构建嵌入式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:///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
|