最小根檔案系統製作

2021-05-28 02:02:00 字數 3642 閱讀 3732

一、移植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掛載到你的開發板做其它實驗。

如果你覺得有點小,那麼你可以在這個基礎上擴充套件。

最小根檔案系統製作

一 移植busybox 所謂製作根檔案系統,就是建立各種目錄,並且在裡面建立各種檔案。對於建立乙個最下根檔案系統,只需要在 dev目錄下建立必要的裝置節點 在 etc目錄下建立一些配置檔案就可以了,如果busybox使用動態鏈結庫,那還要在 lib目錄下包含庫檔案。busybox支援uclibc庫和...

Linux根檔案系統製作

本文介紹如何構linux根檔案系統,適用於arm32開發板。1 建立根目錄rootfs,這個目錄就是要移植到mini2440開發板的目錄 mkdir rootfs 2 進入rootfs並建立目錄bin dev etc usr lib sbin proc usr bin usr sbin usr li...

根檔案系統製作(二)

在前面已經把根檔案系統所需要的檔案 目錄全部都製作好了,接下來討論如何把它移植到嵌入式系統開發板上。下面仍以碩數公司的s3c2416核心板為例來進行討論,通過使用製作好的mtd.utils工具來對根檔案系統進行移植。首先參考前面的方法,使用sd卡把開發板啟動起來,啟動完成後執行 cd opt mtd...