linux 根檔案系統製作

來源:互聯網
上載者:User

昨天花了我幾個小時的時間,最後終於把那個根檔案系統製作好了~

(一):首先linux根檔案系統的製作需要的開發環境。

1:移植Linux核心版本:  linux-3.0.1  (只要能用就行)

2:交叉編譯工具:arm-linux-gcc 4.3.2(任選)

3:檔案系統製作工具:Busybox-1.13.3(任選)

4:etc.tar.gz

(二):交叉編譯環境的搭建(這一步我在我的部落格其他文章裡面有 詳細的搭建過程,很簡單滴~)

(三):建立根檔案系統的目錄

1:在主目錄下面建立一個檔案夾rootfs

[root@localhost fs]# ls
[root@localhost fs]# mkdir rootfs
[root@localhost fs]# cd rootfs/
[root@localhost rootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var
[root@localhost rootfs]#
mkdir usr/bin usr/lib usr/sbin lib/modules

說明:

  根檔案系統是Linux啟動的時候使用的第一個檔案系統,沒有他系統將無法正常的啟動

       然而在這個根檔案系統中又包含了一系列的目錄,接下來對這些目錄做一個簡單的介紹。其實這個大家都很懂的

bin
 存放所有使用者都可以使用的、基本的命令。
 
sbin

 存放的是基本的系統命令,它們用於啟動系統、修複系統等。

sys

一些匯流排啊裝置啊驅動啊。等等都在這裡。好像都是動態產生的吧

 
usr
 裡面存放的是共用、唯讀程式和資料。
 
proc
 這是個空目錄,常作為proc檔案系統的掛載點。
 
dev
 該目錄存放裝置檔案和其它特殊檔案。
 
etc
 存放系統設定檔,包括開機檔案。
 
lib

 存放共用庫和可載入塊(即驅動程式),共用庫用於啟動系統、運行根檔案系統中的可執行程式。

mnt
 用於臨時掛接某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
boot
 引導載入程式使用的靜態檔案
 
home
 使用者主目錄,包括供服務帳號鎖使用的主目錄,如FTP
 
opt
 給主機額外安裝軟體所擺放的目錄。
 
root
 root使用者的主目錄
 
tmp
 存放臨時檔案,通常是空目錄。
 
var

 存放可變的資料。

2:建立裝置檔案

[root@localhost rootfs]#cd dev/

[root@localhost dev]#
mknod -m 666 console c 5 1
[root@localhost dev]#
mknod -m 666 null c 1 3

說明:mknod  -m 666 console c 5 1

console 為裝置檔案名稱,自己可以隨便取,c代表是字元型裝置(可選b,塊裝置)

5是主裝置號   /dev/devices裡面記錄現有的裝置

1是次裝置號當你要給兩個同樣的裝置上一個驅動的時候就要分了,從0開始,1就是第二個了 ,對於字元裝置,次裝置號就表示同類型裝置的不同裝置。666代表訪問的許可權


3:配置/etc/

這裡有兩種方法

1:可以把系統上面的/etc/下面一些比較重要的檔案拷貝過來

2:也可以直接在網上下載一個etc.tar.gz

  #tar   -zxvf   etc.tar.gz 

將解壓出來的檔案etc下面的東西全部拷貝到上面建立的根目錄下面/rootfs/etc/下面

etc/inittab
etc/profile
etc/fstab
etc/init.d/
etc/init.d/rcS


4:編譯核心模組

首先進入核心目錄下面(核心目錄和根檔案系統目錄不是在同一個目錄下面的)

# cd  linux-3.0.1

#make  modules  ARCH=arm  CROSS_COMPILE=arm-linux-

說明:在這一步出現一些問題,發現怎麼編譯也不行,後來由下載了一個核心,編譯通過

5:安裝核心模組

#make  modules_install  ARCH=arm  INSTALL_MOD_PATH=/home/xiongyao/rootfs

說明:將核心裡面編譯好的模組放在根檔案系統目錄下面(其實就是把模組拷貝到目錄下面的過程)

6:配置busybox

說明:關於busybox:(百度百科)

busybox是一個整合了一百多個最長用linux命令和工具的軟體。BusyBox 包含了一些簡單的工具,例如ls、cat
和echo等等,還包含了一些更大、更複雜的工具,例如grep、find、mount
以及telnet。有些人將 BusyBox 稱為 Linux 工具裡的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它整合壓縮了
Linux 的許多工具和命令,也包含了 Android 系統的內建的shell。

# tar -xvzf busybox-1.13.3.tar.gz

# cd  busybox-1.13.3

#make menuconfig

說明:這一步是要配置busybox的圖形介面,使之生效,運行這個命令可能會出錯,原因是因為你沒有

安裝那個映像介面的依賴庫,在終端裡面輸入apt-get install libncurses5-dev  就ok了~

Busybox Settings-----> build Options----->

選中Build BusyBox as a static binary(no shared libs)

 Busybox Settings-----> InstallationOptions ------------>     

選中 “don't use /usr”    選中此項可以避免busybox被安裝到宿主系統的/usr目錄下,破壞宿主系統

Busybox Installation Prefix(/home/fs/myrootfs)   這裡要輸入busybox安裝的絕對路徑

7:編譯安裝busybox

#make  ARCH=arm  CROSS_COMPILE=arm-linux-

#make  install

到現在為止,根檔案系統就完全做好了,你可以把這個根檔案系統製作成ramdisk系統

8:、將根檔案系統製作 成ramdisk

#genext2fs -b 8192 -d /home/fs/myrootfs/  ramdisk

說明:這一步出現問題,後來發現是這個分配的空間太小,於是將8192改為120400

#genext2fs   -b   /home/xiongyao/rootfs/  ramdisk  

#gzip  -9  -f  ramdisk

這樣就可以將ramdisk.gz下載到開發板上面去了


在製作的過程中可能會遇到各種各樣的問題,遇到問題沒事,我一般直接上百度,裡面有各種解決方案,只要用心去理解,相信肯定能製作成功!

相關文章

聯繫我們

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