一步步完善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