linux-2.6.32在mini2440開發板上移植(19)之yaffs2檔案系統移植

來源:互聯網
上載者:User

yaffs2檔案系統移植

編者:前面用的檔案系統都是友善內建的檔案系統,其GUI是基於QTOPIA,這個檔案系統的功能還是比較強大的。這裡我們可以自己移植一個根檔案系統,不過這隻是一個最基本的系統,這樣有助於理解嵌入式的開發。檔案系統的製作過程大體相似,只是使用的製作工具不一樣。在此處製作的檔案系統,主要參考了移植手冊和《ARM嵌入式系統移植實戰開發》一書。

 

下面介紹下手冊上的移植過程:原文連結如下

http://huang-tomey.blog.163.com/blog/static/1247505732009916437175/

使用busybox 製作基本根檔案系統的詳細步驟

1 下載busybox 原始碼
        從 http://www.busybox.net/downloads/ 下載busybox , 這裡下載的是busy busybox-1.13.3.tar.gz,這和當前mini2440 開發板使用的版本是一致的。

2 根檔案系統目錄說明
       嵌入式Linux 中都需要構建根檔案系統,構建根檔案系統的規則在FHS(FilesystemHierarchy Standard)文檔中,下面是根檔案系統頂層目錄。
     目錄                                   內容
  bin                  存放所有使用者都可以使用的、基本的命令。
  sbin                 存放的是基本的系統命令,它們用於啟動系統、修複系統等。
  usr                  裡面存放的是共用、唯讀程式和資料。
  proc                這是個空目錄,常作為proc 檔案系統的掛載點。
  dev                 該目錄存放裝置檔案和其它特殊檔案。
  etc                  存放系統設定檔,包括開機檔案。
  lib                   存放共用庫和可載入塊(即驅動程式),共用庫用於啟動系統、運行根檔案系統中的可執行程式。
  boot                引導載入程式使用的靜態檔案
  home              使用者主目錄,包括供服務帳號鎖使用的主目錄,如FTP
  mnt                 用於臨時掛接某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
  opt                  給主機額外安裝軟體所擺放的目錄。
 root                  root 使用者的主目錄
 tmp                  存放臨時檔案,通常是空目錄。
 var                   存放可變的資料。

3 建立根檔案系統目錄
      進入到/opt/studyarm 目錄,建立建立根檔案系統目錄的指令檔create_rootfs_bash,使用命令chmod +x create_rootfs_bash 改變檔案的可執行許可權,./create_rootfs_bash 運行指令碼,就完成了根檔案系統目錄的建立。
#!/bin/sh
echo "------Create rootfs directons start...--------"
mkdir rootfs
cd rootfs
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "-------make direction done---------"
        改變了tmp 目錄的使用權,讓它開啟sticky 位,為tmp 目錄的使用權開啟此位,可確保tmp 目錄底下建立的檔案,只有建立它的使用者有權刪除。儘管嵌入式系統多半是單使用者,不過有些嵌入式應用不一定用root 的許可權來執行,因此需要遵照根檔案系統許可權位的基本規定來設計。

4 建立動態連結程式庫
        動態連結程式庫直接用友善之臂的,先解壓友善之臂的根檔案包,拷貝lib 的內容到建立的根檔案目錄lib 內。
cd /mnt/hgfs/share
tar –zxvf root_qtopia.tgz –C /opt/studyarm
cp –rfd /opt/studyarm/root_qtopia/lib/* /opt/studyarm/rootfs/lib/*

5 交叉編譯Bosybox
         Bosybox 是一個遵循GPL v2 協議的開源項目,它在編寫過程總對檔案大小進行最佳化,並考慮了系統資源有限(比如記憶體等)的情況,使用Busybox 可以自動產生根檔案系統所需bin、sbin、usr 目錄和linuxrc 檔案。
5.1解壓busybox
cd /mnt/hgfs/share
tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm
5.2進入源碼,修改Makefile 檔案:
cd /opt/studyarm/busybox-1.13.3
修改:
CROSS_COMPILE ?=arm-linux- //第164 行
ARCH ?=arm //第189 行
5.3配置busybox
輸入make menuconfig 進行配置
(1)、Busybox Settings--->
General Configuration--->
[*] Show verbose applet usage messages
[*] Store applet usage messages in compressed form
[*] Support –install [-s] to install applet links at runtime
[*] Enable locale support(system needs locale for this to work)
[*] Support for –long-options
[*] Use the devpts filesystem for unix98 PTYs
[*] Support writing pidfiles
[*] Runtime SUID/SGID configuration via /etc/busybox.config
[*] Suppress warning message if /etc/busybox.conf is not readable
Build Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing files>2GB)
Installation Options->
[]Don’t use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*]Fancy shell prompts
(4) Copy buffer size ,in kilobytes
[*]Use ioctl names rather than hex values in error messages
[*]Support infiniband HW
(2)、Linux Module Utilities--->
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
[*] insmod
[*] rmmod
[*] lsmod
[*] modprobe
-----options common to multiple modutils
[ ] support version 2.2/2.4 Linux kernels
[*]Support tainted module checking with new kernels
[*]Support for module .aliases file
[*] support for modules.symbols file
(3)、在busybox 中配置對dev 下裝置類型的支援
dev 的建立有三種方法:
      手動建立:在製作根檔案系統的時候,就在dev 目錄下建立好要使用的裝置檔案,系統掛接根檔案系統後,可 以使用dev 目錄下的裝置檔案了。
     使用devfs 檔案系統:這種方法已經過時,具有不確定的裝置映射、沒有足夠的主/次裝置號、devfs 消耗大量的記憶體。
     udev:它是個使用者程式,能根據系統中硬體裝置的狀態動態更新裝置檔案,包括裝置檔案的建立、刪除等。它的操作相對複雜,但靈活性很高
mdev 是busybox 內建的一個簡化版的udev,適合於嵌入式的應用埸合。其具有使用簡單的特點。它的作用,就是在系統啟動和熱插拔或動態載入驅動程式時,自動產生驅動程式所需的節點檔案。在以busybox 為基礎構建嵌入式linux 的根檔案系統時,使用它是最優的選擇。
下面的選項將增加對mdev 的支援。
Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
4、編譯busybox
編譯busybox 到指定目錄:
cd /opt/studyarm/busybox-1.13.3
make CONFIG_PREFIX=/opt/studyarm/rootfs install
在rootfs 目錄下會組建目錄bin、sbin、usr 和檔案linuxrc 的內容。

6 建立etc 目錄下的設定檔
1、etc/mdev.conf 檔案,內容為空白。
2、拷貝主機etc 目錄下的passwd、group、shadow 檔案到rootfs/etc 目錄下。
3、etc/sysconfig 目錄下建立檔案HOSTNAME,內容為”H3-Studio”。
4、etc/inittab 檔案:
#etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
5、etc/init.d/rcS 檔案:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
echo "----------munt all----------------"
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo "***********************************************"
echo "****************Studying ARM*********************"
echo "Kernel version:linux-2.6.29.1"
echo "Student:Huang huahai"
echo "Date:2009.10.1"
echo "***********************************************"
/bin/hostname -F /etc/sysconfig/HOSTNAME
(或者直接 /bin/hostname H3-Studio )
使用以下命令改變rcS 的執行許可權:
Chmod +x rcS
6、etc/fstab 檔案:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
7、 etc/profile 檔案:
#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
7 製作根檔案系統映像檔案
使用以下命令安裝好yaffs 檔案系統製作工具:
cd /mnt/hgfs/share
tar –zxvf mkyaffs2image.tgz –C /
在/opt/studyarm 目錄下,使用命令mkyaffs2image rootfs rootfs.img 產生根檔案系統映像檔案。燒寫到開發板就可以運行了。

ps:上面的介紹完全是按照手冊進行的,我也是一步步的做下來的。中間出現了幾個問題:

        第一個,上述檔案系統燒入進去後,運行,老顯示,不能開啟tty2,tty3,tty4,我感覺很奇怪,因為我原來也移植過並沒有出問題。大概想了一下,這個問題肯定是在設定檔的問題,也就是在etc下,原來我實現了inittab這個檔案,這是init進程的設定檔。這裡沒實現也就是自己產生了預設的設定檔。是不是這個問題呢?我麼有去修改busybox中這個預設的設定檔,自己實現了一個,然後這個問題就解決了。

       第二個,在shell中,游標顯示的位置老是不對,這個很容易想到profile檔案問題,調整了下,也解決了。

        第三個,編譯的yaffs2檔案系統不能運行,這個可能是這個原因。友善之臂提供的mkyaffs2image工具在製作用於128Mflash的檔案檔案系統時,只能在fodera 9.0系統下使用,如果你使用的是別的系統,這個工具很可能不能正常的使用。這時只能找到源碼進行適當修改,重新編譯得到這個工具,就可以用了。

看我的這篇文章http://blog.csdn.net/ssdsafsdsd/article/details/8702269

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.