三、制作cramfs+yaffs文件系统
所需文件:busybox-1.13.3.tar.bz2cramfs-1.1.tar.gz解压在工作目录下,分别是:busybox-1.13.3cramfs
1.编译cramfs。$cd cramfs$make将编译生成的mkcramfs复制到工作目录下$cp mkcramfs ../
2.配置busybox修改Makefile:ARCH ?= arm #189行CROSS_COMPILE ?= arm-linux- #164行
$make menuconfig
Busybox Setting-----> build option--> [*] Build BusyBox as a static binary (no shared libs) [ ] Force NOMMU build [*] Build with Large File Support (for accessing files>2GB) () Cross Complier prefix Installation Options--> [*] Don't use /usr Applets links (as soft-links) ---> (./_install) BusyBox installation prefix Busybox Library Tuning--> [*] vi-style line editing commands [*] Fancy shell prompts
$make install编译成功会有如下信息:--------------------------------------------------You will probably need to make your busybox binarysetuid root to ensure all configured applets willwork properly.--------------------------------------------------
在_install目录下生成三个文件:bin linuxrc sbin
修改busybox的属性$cd _install$chmod 4755 bin/busybox将_install目录下的三个文件打包$tar cvf 1.tar ./*
3.建立文件系统$mkdir rootfs$cd rootfs$ mkdir dev etc home lib mnt proc usr sys tmp var
将1.tar文件复制到这里,解压$tar xvf 1.tar$rm 1.tar$lsbin dev etc home lib linuxrc mnt proc sbin sys tmp usr var
创建设备结点$cd dev$sudo mknod -m 600 console c 5 1$sudo mknod -m 666 null c 1 3
配置etc目录下的文件复制主机/etc目录下的passwd、group、shadow文件到rootfs/etc目录下,在etc目录下创建空
文件mdev.conf,添加如下文件:1.inittab$vim /etc/inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a –r
2.init.d/rcS$vim /etc/init.d/rcS#!/bin/shecho "-------------rcS-------------"PATH=/sbin:/bin:/usr/sbin:/usr/bin
echo "----------munt all-----------"mount -amkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -secho "******************************"echo "linux-2.6.29.1"echo "Bob"echo "2009.10.26"echo "******************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
根改rcS权限:$chmod +x rcS
3.sysconfig/HOSTNAME$mkdir etc/sysconfig$vim etc/sysconfig/HOSTNAMEBob #用户名
4.profile$vim /etc/profile#!/bin/shecho "--------------profile--------------"# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib
# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Set PS1#USER = "id -un"LOGNAME=$USERPS1='[/u@/h]#'PATH=$PATHHOSTNAME='/bin/hostname'export LOGNAME PS1 PATH
ifconfig eth0 210.38.235.4 netmask 255.255.255.0 broadcast 210.38.235.254echo "---------------Done!-----------------"
5.fstab$vim etc/fstabproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0sysfs /sys sysfs defaults 0 0tmpfs /dev tmpfs defaults 0 0
复制友善之臂的lib:$cd lib$sudo cp -rfd opt/FriendlyARM/mini2440/root_qtopia/lib/* ./
创建cramfs进入工作目录$./mkcrafs rootfs rootfs.Cramfs将生成的rootfs.cramfs下载到root分区
挂载yaffs文件系统首先要将yaffs分区格式化为yaffs文件系统下载mtd-utils-1.0.0.tar.gz,解压目录为mtd-utils-1.0.0$cd mtd-utils-1.0.0
1) 修改Makefile CROSS=arm-linux-gcc2) make
编译好后将生成的flash_eraseall工具拷贝根文件系统下的/bin下,然后格式化mtdblock4分区
为yaffs文件系统
#flash_eraseall /dev/mtd4#mount -t yaffs /dev/mtdblock4 /usr
在rcS文件里添加如下命令,使系统启动时自动挂载。#mount -t yaffs /dev/mtdblock4 /usr
解释一下什么是/dev/mtdx和/dev/mtdblockx (x是数字),/dev/mtdx 是字符设备 mtd设备的
主设备号为90,至于次设备号:单数为只读,双数为读写。《构建嵌入式LINUX系统》一书有介绍,可以参考一下。
支持串口传输文件-lrzsz下载lrzsz:http://download.chinaunix.net/download/0007000/6293.shtml
解压缩后进入目录,输入:$CC=arm-linux-gcc ./configure $make在src目录下得到两个可执行文件lsz、lrz,把它们下载到根文件系统的/bin目录下。
1、开发板-->PC机 在开发板上输入 lsz filename。 在PC的串口终端选择接收文件、Zmodem 与崩溃恢复协议。
2、PC机-->开发板 在开发板上输入 lrz。
在PC的串口终端选择发送文件、zmodem与崩溃恢复协议。