busybox1.9.2製作yaffs文件系統

-----------------創建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/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=/usr/local/arm/4.3.1/bin/arm-linux-gcc (arm3.4.1的路徑)

//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.開發板中的文件系統可以執行文件的串口收發

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章