最小根檔案系統製作

來源:互聯網
上載者:User

 

 一、移植Busybox
    所謂製作根檔案系統,就是建立各種目錄,並且在裡面建立各種檔案。對於建立一個最下根檔案系統,只需要在/dev目錄下建立必要的裝置節點、在/etc目錄下建立一些設定檔就可以了,如果Busybox使用動態連結程式庫,那還要在/lib目錄下包含庫檔案。Busybox支援uClibc庫和glibc庫,對Linux2.2.x之後的內涵支援良好。Busybox的源碼可以從http://www.busybox.net/downloads/下載,我下載的是busybox-1.7.5.tar.bz2.
(1)解壓busybox
$tar -jxvf busybox-1.7.5.tar.bz2
(2)配置busybox

$make menuconfig
   Busybox Settings  --->
     Build Options  --->
       [ ] Build BusyBox as a static binary (no shared libs) (是否編譯成靜態庫,在這裡我沒選,使用動態庫)
     Busybox Library Tuning  ---> 
       [*]   Tab completion         (tab縮排功能)                                            
       [*]     Username completion                                    
       [*]   Fancy shell prompts  (這兩項在建立/etc/profile檔案時要用,這樣可以命令列有提示符顯示)  

其它配置自己可以參考著修改,我就沒動了。退出記得儲存!
(3)編譯和安裝Busybox
3.1編譯之前首先修改Makefiel,使用交叉編譯器
$vim Makefile
175 ARCH        ?= arm
176 CROSS_COMPILE   ?= arm-linux-gnu-
然後執行"make"命令編譯busybox
如果出現什麼錯誤,你盡可上網搜尋,一般都可以解決。我這裡沒什麼問題。
3.2安裝"make CONFIG_PREFIX=/home/minifs stall"
CONFIG_PREFIX=/home/minifs為指定安裝目錄(前提你首先得在home目錄建立minifs目錄,只要mkdir /home/minifs)
如果你沒有指定只執行:make install 那麼在預設的busybox-1.7.5目下會產生_stall目錄,
$ls /home/minifs
bin  linuxrc  sbin  usr
如果是make instll 那麼busybox-1.7.5/_stall目錄下會有一樣的結果。
二、使用glibc庫
        在你安裝交叉工具鏈時,已經產生了glibc庫,可以直接使用它來構建根檔案系統。
在上面我用的是編譯動態庫,所以要拷貝一些應用程式使用的庫,否則你交叉編譯應用程式要加上-static表示靜態連結
這樣產生的檔案非常大。
首先進入我/home/minifs
$cd /home/minifs
$mkdir lib
$cp /crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/arm-linux-gnu/lib/*so* ./lib -a 
注意:記得加-a否則非常大,-a可以把軟串連形式儲存,不用直接拷貝
順便可以給庫瘦身,這樣可以減小庫的大小
$arm-linux-gnu-strip lib/* sbin/* bin/*
$du -h lib   (可以看出減小了很多,不信你不用瘦身試試)
3.3M lib

這樣庫就加好了!
三、構建etc目錄
        etc目錄下的內容取決於要啟動並執行程式,init進程根據/etc/inittab檔案來建立其它進程,比如呼叫指令碼檔案配置IP地址、
掛接其它檔案系統,最後啟動shell等。
在這裡我們只要在etc目錄下建立3個檔案:etc/inittab、etc/init.d/rcS、etc/fstab、etc/profile

$mkdir etc

$vim etc/inittab
(1)建立etc/inittab檔案
內容如下:

::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:umount -a -r

$cd etc

$mkdir init.d

$vim init.d/rcS

(2)建立etc/init.d/rcS檔案
內容如下:

mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

給rcS加上可執行許可權

$sudo chmod +x rcS

$cd ../

$vim fstab
(3)建立etc/fstab檔案
內容如下:

#device       mount-point    type   options    dump  fsck  order
proc          /proc          proc    defaults    0    0
sysfs           /sys           sysfs   defaults    0   0
tmpfs          /temp         tmpfs    defaults     0   0
tmpfs           /dev          tmpfs   defaults    0    0

$vim profile
(4)建立etc/profile檔案 (前面配置busybox提到,用於命令列提示符號)
內容如下:

#!/bin/sh
export HOSTNAME=caoyi
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

四、建立其它目錄
建立一些常用的目錄,只要執行命令:
$cd /home/minifs
$mkdir dev home temp proc sys
五、還要建立兩個基本的裝置檔案
$cd /home/minifs/dev
$mknod console c 5 1
$mknod null c 1 3
    至此一個最小根檔案系統已經製作成功,裡面含有命令列提示符、mdev功能!那麼你可以通過NFS掛載到你的開發板做其它實驗。
如果你覺得有點小,那麼你可以在這個基礎上擴充。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.