以busybox製作Linux根文件系統,以及nfs設置和uboot設置--嵌入式開發平臺的搭建

主要分爲3個部分

rootfs相關文件創建及配置

虛擬機網絡地址及 nfs 服務配置

開發板網絡和環境變量配置


1.rootfs相關文件創建及配置

在安裝好相應的交叉工具鏈後,下載busybox源碼並解壓。

進入busybox的源碼目錄執行#make menuconfig

需要配置的總體選項如下:

 Symbol: BUILD_LIBBUSYBOX [=y]//編譯爲共享庫
CROSS_COMPILER_PREFIX [=arm-linux-] //選擇編譯器
PREFIX [=/root/work/4412/rootfs/root_nfs/] //注意這裏要修改爲自己製作的 rootfs 對應的目錄
Symbol: FEATURE_USERNAME_COMPLETION [=y]//配置用戶名補全
Symbol: FEATURE_TAB_COMPLETION [=y]//TAB 鍵命令不全功能
Symbol: FEATURE_EDITING_FANCY_PROMPT [=y]//配置命令提示符功能

設置完後,保存配置並退出。

在源碼目錄下編譯#make

編譯成功完後,再執行下面命令,把剛纔編譯後的文件安裝到之前配置的根文件系統路徑下面

# make install

驗證 busybox 的安裝
上面設置的根文件系統路徑爲/root/work/4412/ rootfs/root_nfs/,查看該路徑下面是否有對應的文件,如下
[root@localhost rootfs]#ls /root/work/4412/ rootfs/root_nfs/
bin liblinuxrc sbin usr
看到上面的信息,說明 busybox 安裝成功
 


創建 root fs 文件
首先需要進入到前面設置的 rootfs 文件目錄中
[root@localhost root_nfs]#cd /root/work/4412/ rootfs/root_nfs/
複製動態庫文件
由於配置 busybox 時候採用動態鏈接方式編譯,所以,要把它所依賴的動態庫文件從交叉編譯工具鏈源碼中
複製到安裝目錄下,並刪除靜態庫文件(不需要)
[root@localhost root_nfs]# cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ ./ -rap
[root@localhost root_nfs]# rm -f lib/*.a //刪除靜態庫文件
 

創建其他目錄文件
創建需要的目錄
[root@localhost root_nfs]#mkdir -p dev etc/init.d home proc sys root opt tmp var
創建控制檯設備文件
[root@localhost root_nfs]# mknod dev/console c 5 1
創建 etc 目錄下文件
[root@localhost root_nfs]# cp /etc/fstab etc/
創建 inittab 文件: 複製 busybox-1.17.2 中文件
[root@localhost root_nfs]#cp ../busybox-1.17.2/examples/inittab /root/work/4412/rootfs/root_nfs/etc/
修改 inittab 裏面的內容
[root@localhost root_nfs]# vim etc/ inittab
只需要保留以下 4 行:
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh //修改該行,在前面加 console
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
創建並開始編輯 etc/init.d/rcS 文件
[root@localhost root_nfs]# vim etc/init.d/rcS
rcS 文件添加以下內容:
#!/bin/sh
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/hostname Andy //控制檯顯示的主機名,可以改成自己想要的名字
給 rcS 增加執行權限
[root@localhost root_nfs]# chmod +x etc/init.d/rcS
說明: rcS 這個文件中的命令,在系統啓動後,掛接上文件系統後會全部執行。也就是說需要開機自動執行
的程序都可以寫在這裏
創建並開始編輯 etc/profile 文件
[root@localhost root_nfs]# vim etc/profile
增加內容如下:
USER="`id -un`" //注意 id -un 前面的符號“`”是倒鉤符號,在鍵盤上和~共用一個按鍵
LOGNAME=$USER
PS1='[\u@\h \W]# ' //此處爲普通的單引號,和上面的倒鉤符號是不一樣的
PATH=$PATH
HOSTNAME=`/bin/hostname` //注意/bin 前面的符號“`”是倒鉤符號,在鍵盤上和~共用一個按鍵
export USER LOGNAME PS1 PATH
說明: etc/profile/這個文件用來添加環境變量,以上的內容是實現控制檯終端命令提示符號模板功能。
\u 用戶名, \h 主機名, \W 當前路徑名
 

複製用戶名配置文件
用戶名配置需要使用 etc/group 和 etc/passwd 兩個文件, 可以直接從從虛擬機的 Linux 系統的/etc 目錄中復
制這兩個文件到自己開發板根文件系統 etc 目錄就行。
[root@localhost root_nfs]#cp /etc/group etc/passwd etc/


虛擬機網絡地址及 nfs 服務配置

設置虛擬機共享目錄
編輯/etc/exports
[root@localhost root_nfs]#vim /etc/exports
增加如下一行
/root/work/4412/rootfs/root_nfs/ *(rw,sync,no_root_squash)
注意:修改該文件後,需要要重啓 NFS 服務器才能生效,如果還有問題,就修改一下etc/目錄下的文件的執行權限

參數說明:
/root/work/4412/rootfs/root_nfs/爲要共享的 NFS 目錄,該目錄是上面創建的,注意需要按自己對應的目錄名
修改。
*:任何主機都可以連接訪問這個共享目錄,
也可以指定訪問的主機
/root/work/4412/rootfs/root_nfs/ 192.168.0.XXX(rw,sync,no_root_squash)
root/work/4412/rootfs/root_nfs/ 爲對外共享的目錄;
192.168.0.XXX 爲對外共享的主機;
(rw,sync,no_root_squash):訪問這個共享目錄的權限和屬性。
rw: 可讀寫的權限;
ro: 只讀的權限;
no_root_squash: 登入到 NFS 主機的用戶如果是 ROOT 用戶,他就擁有 ROOT 的權限
root_squash: 在登入 NFS 主機使用目錄的使用者如果是 root 時,那麼這個使用者的權限
sync: 資料同步寫入存儲器中
async:資料會先暫時存放在內存中,不會直接寫入硬盤


虛擬機的nfs設置:

1.查看nfs服務是否安裝
[root@localhost rootfs]# rpm -qa | grep nfs
2.啓動nfs

[root@localhost rootfs]# service nfs start

3.設置開機啓動 nfs 服務
[root@localhost rootfs]# chkconfig nfs on
4.查看 nfs 服務是否啓動

[root@localhost rootfs]# service --status-all | grep nfs

 NFS 服務的其他操作命令
service nfs restart 重啓 nfs 服務
service nfs stop
service nfs reload 當修改過/etc/exports 文件後不用重啓服務可執行該命令


設置虛擬機的 IP 地址及 DNS 地址:
1.確保 PC 主機和虛擬機的網絡爲橋接方式
2.設置虛擬機橋接到有線網卡

方式1:

設置 PC 主機端, 把無線網卡—》屬性裏面裏的 vmware bridge protocol 的√去掉

 方式2:

虛擬機工具欄處點擊 編輯->虛擬網絡編輯器->Vmnet0->橋接到有線網卡 (顯示爲有線網卡信息,默認橋接方式爲自動) 。如下選擇爲有線網卡


 關閉虛擬機和 PC 主機的防火牆

[root@localhost work]# setup
關閉 PC 主機的防火牆
設置虛擬機 IP 地址, DNS 服務器

選擇靜態 IP 地址方式, 輸入靜態 IP 地址和 DNS 服務器地址
 IP 地址和 DNS 服務器設置完成後,重啓一下網絡服務,使 IP 生效
[root@localhost work]#service network restart

如果執行上面命令出現錯誤提示,則再按下面步驟執行命令
[root@localhost work]#service NetworkManager stop
[root@localhost work]#service network restart
[root@localhost work]#service NetworkManager start
再點擊下面的有線網絡圖標,選擇網卡開始連接,此處爲網卡 0, System eth0

查看 IP 地址是否設置成功,輸入如下命令
[root@localhost work]# ifconfig
 

網絡設置總結:
虛擬機網絡爲橋接方式
虛擬機、開發板的 ip 地址在同一個網段, 網關和子網掩碼一定要相同
虛擬機的 DNS 服務器地址一定要設置
虛擬機和 pc 主機的防火牆需要關閉
測試虛擬機的 NFS 掛載功能
如果虛擬機的 IP 地址和 NFS 服務都配置 OK,則在虛擬機本機中測試 NFS 的掛載功能,如果本機測試都不成
功,則開發板的根文件系統掛載肯定不行。
測試方法,在虛擬機終端中輸入如下命令:
[root@localhost work]#mount -t nfs 192.168.1.100:/root/work/4412/rootfs/root_nfs /mnt/test
如果 mount 掛載成功,則如果沒有提示任何信息,並且可以發現/root/work/4412/rootfs/root_nf 目錄和
/mnt/test 目錄下面文件相同,並且是同步的。
如果 mount 掛載失敗,則會有對應的錯誤提示信息。並且可以在/var/log/messages 文件中查看對應的錯誤提
示信息,輸入命令: cat /var/log/messages | grep mount
要取消剛纔的掛載測試,可以使用命令: umount /mnt/test (注意: 取消掛載時,不能在/mnt/test 目錄裏面)
如果虛擬機的 nfs 掛載測試成功了, 說明虛擬機部分的 nfs 設置, IP 網絡等設置都 OK。接下來就可以設置開
發板的 ip 地址和環境變量了。
 


開發板網絡地址和環境變量配置
把燒錄好了 u-boot 和 zImage 的 SD 卡插入開發板,並選擇 SD 方式啓動系統, 接好串口線,開機啓動
按 enter 鍵進入 u-boot 命令行模式。
注: printenv 命令可查看 u-boot 當前環境變量值
1.設置 u-boot 環境變量

進入 u-boot 命令行模式,輸入如下命令:
TINY4412 # setenv ipaddr 192.168.1.101
TINY4412 # setenv gatewayip 192.168.1
TINY4412 # setenv netmask 255.255.255.0
TINY4412 # setenv serverip 192.168.1.20 //pc 主機的 ip 地址,這個可以不設置(注意這個不是虛擬機的 IP)
設置 bootargs 的值,注下面兩行是一條語句
TINY4412 # setenv bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.100:/root/work/4412/rootfs/root_nfs
ip=192.168.1.101:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S70
保存修改
TINY4412 # save
 


根文件系統掛載驗證
使用網線連接好開發板和 pc 主機,連上串口,選擇 SD 啓動方式
上面步驟都設置完成後,重啓開發板,就可以開始掛接 NFS 根文件系統了
等待系統啓動 u-boot 和 kernel 後, 如果 NFS 掛載根文件系統成功, 串口會有如下等提示信息:
[ 11.705000] ALSA device list:
[ 11.710000] No soundcards found.
[ 11.730000] VFS: Mounted root (nfs filesystem) on device 0:10.
[ 11.730000] Freeing init memory: 212K
Please press Enter to activate this console.
這個時候在串口中按 enter 鍵,可以進入 linux 系統的命令控制模式,說明根文件系統掛載成功。
輸入 ls 命令可以查看開發板文件系統中的文件, 那麼在串口中操作文件系統,實際上相當於直接在操作虛
擬機上/root/work/4412/rootfs/root_nfs 目錄下的文件
在虛擬機(服務端)的根文件系統目錄/root/work/4412/rootfs/root_nfs 下隨便創建一個文件,在開發板(客
戶端)的串口終端同樣可以看到,並都可以操作,可以發現它們是同步的。
通過掛載 nfs 根文件系統方式,爲後期的學習操作提供了很大的便利
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章