三、制作cramfs+yaffs文件系统
所需文件:
busybox-1.13.3.tar.bz2
cramfs-1.1.tar.gz
解压在工作目录下,分别是:
busybox-1.13.3
cramfs
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 binary
setuid root to ensure all configured applets will
work 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
$ls
bin 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/sh
echo "-------------rcS-------------"
PATH=/sbin:/bin:/usr/sbin:/usr/bin
echo "----------munt all-----------"
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "******************************"
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/HOSTNAME
Bob #用户名
4.profile
$vim /etc/profile
#!/bin/sh
echo "--------------profile--------------"
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Set PS1
#USER = "id -un"
LOGNAME=$USER
PS1='[/u@/h]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export LOGNAME PS1 PATH
ifconfig eth0 210.38.235.4 netmask 255.255.255.0 broadcast 210.38.235.254
echo "---------------Done!-----------------"
5.fstab
$vim etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /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-gcc
2) 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与崩溃恢复协议。