一、移植busybox
所謂製作根檔案系統,就是建立各種目錄,並且在裡面建立各種檔案。對於建立乙個最下根檔案系統,只需要在/dev目錄下建立必要的裝置節點、在/etc目錄下建立一些配置檔案就可以了,如果busybox使用動態鏈結庫,那還要在/lib目錄下包含庫檔案。busybox支援uclibc庫和glibc庫,對linux2.2.x之後的內涵支援良好。busybox的原始碼可以從
(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掛載到你的開發板做其它實驗。
如果你覺得有點小,那麼你可以在這個基礎上擴充套件。
最小根檔案系統製作
一 移植busybox make menuconfig busybox settings build options build busybox as a static binary no shared libs 是否編譯成靜態庫,在這裡我沒選,使用動態庫 busybox library tunin...
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...