移植Linux2.6.29内核及根文件系统到UP(3)

三、制作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:见

 

解压缩后进入目录,输入:
$CC=arm-linux-gcc ./configure
$make
在src目录下得到两个可执行文件lsz、lrz,把它们下载到根文件系统的/bin目录下。

1、开发板-->PC机
     在开发板上输入 lsz filename。
     在PC的串口终端选择接收文件、Zmodem 与崩溃恢复协议。

2、PC机-->开发板
     在开发板上输入 lrz。

     在PC的串口终端选择发送文件、zmodem与崩溃恢复协议。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjzdw.html