busybox1.9.2制作yaffs文件系统

本文是在我的同学soso做的基础上加上一些简单的修改和截图,在这里感谢作者的分享。

----------------- 创建 rootfs 文件夹 -------------------
mkdir /home/my_rootfs
cd /home/my_rootfs
mkdir bin dev etc home lib mnt proc sbin sys tmp root usr var mnt/etc usr/bin usr/lib usr/sbin
touch linuxrc
使用 mknod 来自己建所需要的 device, 举例:
# mknod -m 600 dev/console c 5 1
# mknod -m 666 dev/null c 1 3

BusyBox-1.9.2 版本

------------------
修改编译配置选项 --------------------
开始移植

 

1.       下载 busybox1.9.2 ,并解压缩。

下载 busybox 源代码: http://busybox.net/downloads/busybox-1.9.2.tar.bz2

交叉编译工具: arm-linux-gcc- 3.4.1

解压源码: tar -jxvf busybox-1.9.2.tar.bz2

 

2.       修改 Makefile 中的 174 行的 arch 和编译工具链头。

ARCH                 ?= arm

CROSS_COMPILE       ?= /usr/local/arm/3.4.1/bin/arm-linux-

 

3.       make menuconfig. 修改编译配置选项。


Busybox Setting----->

       build option-->

    [ ] Build BusyBox as a static binary (no shared libs)                     

    [*] Build shared libbusybox                                               

    [*]   Produce a binary for each applet, linked against libbusybox         

    [*]   Produce additional busybox binary linked against libbusybox          

    [ ] Build with Large File Support (for accessing files > 2 GB)  

      

installation option-->

    [*] Don't use /usr                                                     

        Applets links (as soft-links) --->                                   

     (./_install) BusyBox installation prefix 

 

Busybox Library Tuning ---> 

                              

MD5: Trade Bytes for Speed                                      

[*] Faster /proc scanning code (+100 bytes)                            

[*] Support for /etc/networks                                    

 

[*] Support for /etc/networks

[*]   Additional editing keys

[*]   vi-style line editing commands

[*]   History saving

[*]   Tab completion

[*]   Username completion

[*]   Fancy shell prompts

 

Linux Module Utilities --->

[*] Support version 2.6.x Linux kernels

 

    [*] insmod  

    [*] Enable load map (-m) option  

    [*]  Symbols in load map 

    [*] rmmod  

    [*] lsmod 

    [*] lsmod pretty output for 2.6.x Linux kernels  

    [*] modprobe 

    [ ]  Multiple options parsing

    [ ]  Fancy alias parsing

    ---   Options common to multiple modutils

    [ ] Support tainted module checking with new kernels

    [ ] Support version 2.2.x to 2.4.x Linux kernels

 

    [*] Support version 2.6.x Linux kernels

 

shell - >

   [*]  alias support

其他的用默认值

----------------------- 编译 busybox-----------------------

make
make install
busybox/_install 目录下会生成我们需要的文件。
修改 _install/bin/busybox 的属性。为 4755
chmod 4755 ./_install/bin/busybox
必须要修改属性,否则在 busybox 中很多命令会受限
将编译好的 busybox 拷贝到 my_roofs 下面。   

_install cp -Rfv * /my_roofs
 
-----------------------/lib
文件 --------------------------------
/lib
的库其实就是进行 busybox 编译的库,即交叉编译器的库,我们这里使用的是 3.4.1 ( 位置 /usr/local/arm/3.4.1)
# cd  /usr/local/arm/3.4.1/arm-linux/lib
# for file in libc libcrypt libdl libm libpthread libresolv libutil
> do
> cp $file-*.so  /home/my_rootfs/lib (
复制到你做的文件系统的 /lib 目录下 )
> cp -d $file.so.[*0-9]  /home/my_rootfs/lib (
同上 )
> done
# cp -d ld*.so*  /home/
my_rootfs /lib   ( 同上 )

-----------------
系统配置文件的建立 ---------------------
--========/etc
目录 ============
(1)profile
文件
#Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
#Set user path
        PATH="/bin:/sbin:/usr/bin:/usr/sbin:"$PATH
alias ll='ls -l'
        #Set PS1
   USER="`id -un`"
   LOGNAME=$USER
   PS1='[/u@/h /W]/$ '
PATH=$PATH
        export USER LOGNAME PS1 PATH
  
(2)fstab
文件
proc  /proc proc  defaults  0 0
none  /tmp  ramfs defaults  0 0
mdev  /dev  ramfs defaults  0 0
sysfs /sys  sysfs defaults  0 0

(3)inittab 文件
::sysinit:-/etc/init.d/rcS
::respawn:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

(4) 创建 /etc/init.d 文件夹和 rcS ,在 rcS 中添加
#! /bin/sh
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

echo "^     Welcome to YAFFS root filesystem!   ^"

echo "^                    soso                  ^"

echo "^^^^^^^^^^^^^^^^09-3-18^^^^^^^^^^^^^^^^^^^^"
/bin/hostname -F /etc/host
# mount all filesystem defined in "fstab"

ln -s /dev/vc/0 /dev/tty1

echo "# mount all..........."
/bin/mount -a

echo "# Starting mdev........."
#/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.55
/sbin/route add default gw 192.168.0.1


(5)
创建 host 文件
soso

(6) 创建 mdev.conf 文件 (空文件)

(7) 复制主机 /etc/ 下面的文件 passwd, group, shadow 文件到 /etc
# cp /etc/group .
# cp /etc/passwd .
# cp /etc/shadow .

修改 passwd 中用户使用的 shell 名称。 FC6 上默认的为 bash, vivi 只支持 ash
root:x:0:0:root:/root:/bin/bash ----> root:x:0:0:root:/root:/bin/ash

(8) 修改各文件和文件夹的权限
# chmod 755 /home/my_rootfs/etc/init.d/rcS
# chmod 755 /home/my_rootfs/etc/host

-------------yaffs 文件系统映像的制作 ---------
使用 mkyaffsimg 程序可以把一个目录做成一个 yaffs 映像文件,然后使用 usb 下载到板子上。进入文件系统目录层,使用以下命令。
#./mkyaffsimg my_roofs filesystem.yaffs  
(改名 filesystem.yaffs
这样就会在该目录下生成 roofs.img 映像文件,下载到开发板运行即可。


--------------cramfs 文件系统映像的制作 (cramfs 压缩率比较高 )------------
FTP 中下载 cramfs-1.1.tar.gz ,解压到自己设定的目录下 , 如:
tar xzvf cramfs-1.1.tar.gz –C /home/
进入生成有 mkcramfs 文件的目录下(一定要进入此目录,否则会提示找不到该命令)
输入命令: #./mkcramfs / rootfs rootfs.cramfs
在当前目录下即生成 rootfs.cramfs 映像文件。到此 Linux 操作系统移植完毕。

下载源码

修改 makefile

make posix

 

(9) 添加 busybox 中的命令 rz,sz

1. 解压 rzsz-3.48.tar.gz

2.cd   /home/src

3.vim Makefile CC=arm-linux-gcc

4.POSIX 中加入 -DREGISTERED 

posix:

$(CC) $(CFLAGS) $(RFLAGS) $(OFLAG) -DPOSIX -DREGISTERED -DMD=2 rz.c -o rz 5.

 

5. make POSIX

6. make 生成的 rz,sz 复制到 /home/my_rootfs/bin

       cp rz /home/my_rootfs/bin

       cp sz /home/my_rootfs/bin

7. 重新 使用 mkyaffsimg 程序制作 filesystem.yaffs 注意先删除原有的 filesystem.yaffs

8. 烧进开发板中

9. 开发板中的文件系统可以执行文件的串口收发

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值