1. 程式人生 > >一步步完善rootfs:1.移植busybox生成最小的rootfs

一步步完善rootfs:1.移植busybox生成最小的rootfs

移植busybox生成最小的rootfs


一、下載

https://busybox.net/downloads/
我下載的版本為1.29.2。


二、配置

在busybox的根目錄下修改Makefile檔案,將ARCH修改為arm,CROSS_COMPILE修改為/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-(對應我的交叉編譯工具鏈所在位置)。
這裡寫圖片描述
執行make menuconfig命令進行配置,1.29.2為目前最新版本,(NEW)代表預設值,並不需要再去更改;老版本busybox的引數需要自己更改。

Settings  ---> 
	[*] Build static binary (no shared libs) 	
	[*] Command line editing
		[*]   vi-style line editing commands
		
Linux Module Utilities  --->
	[ ] Simplified modutils
	[*]depmod (NEW)
	[*]insmod (NEW)
	[*]lsmod (NEW)
	[*]modprobe (NEW)
	[*]rmmod (NEW)
	
Linux System Utilities  --->
	[*] mdev (16 kb) (NEW)
	[*]   Support /etc/mdev.conf (NEW)
	[*]     Support subdirs/symlinks (NEW)
	[*]       Support regular expressions substitutions when renaming device (NEW)
	[*]     Support command execution at device addition/removal (NEW)
	[*]   Support loading of firmware (NEW)

三、編譯安裝

這時make進行編譯連結,我這裡提示了幾個錯誤,主要資訊是下圖中圈起來的內容,提示沒有定義’setns’和’syncfs’。解決辦法有兩個,一種是更換編譯工具;另外一種是menuconfig遮蔽掉相關配置,不進行編譯連結。
這裡寫圖片描述
第二種方法相對簡單一點,menuconfig中遮蔽相關配置的步驟是:

Coreutils  --->
	[ ] sync (769 bytes)
Linux System Utilities  ---> 
	[ ] nsenter (8.6 kb)

這樣make後就不會報錯了,接下來進行安裝。make install這種方式是原始碼安裝,需要指定安裝路徑,不指定的話會有一個預設路徑,如果預設路徑在ubuntu根目錄下,這時候安裝會把ubuntu的系統檔案覆蓋,那就完啦!不過預設路徑並不在ubuntu根目錄,檢視並修改安裝路徑的的方法是進入menuconfig,找到Settings

—> (/root/rootfs_zht/rootfs) Destination path for 'make install',當前顯示的路徑為預設路徑,修改為自己的就行了。

make install安裝完成後即可看到指定目錄下面生成了幾個資料夾,即最小的根檔案系統。

①linuxrc是一個可執行的應用程式。屬於應用層,和核心原始碼沒關係;在開發板核心系統下可執行;linuxrc只能靜態編譯,屬於核心態過渡到使用者態的第一個程式;②linuxrc負責執行時引出使用者介面;③負責系統啟動後的配置;④linuxrc在嵌入式系統中一般是busybox。


四、掛載執行

採用了nfs方式掛載rootfs,可以看到成功掛載並且成功執行。

在這裡插入圖片描述


參考資料: 朱老師嵌入式linux