根文件系統制作與NFS掛載
一:busybox:
1、完整的操作系統=bootloader(u-boot)+kernel(zImage)+根文件系統。
2、根文件系統的核心就是 各種以及系統運行配置參數(類似於linux的cd、ls、mkdir......)。
3、根文件系統的核心文件:bin,sbin,usr,etc,lib
4、制作嵌入式根文件系統,可以利用busybox開源的工具軟件,它集合了所有的命令
二:根文件系統制作
1:開發板跟的軟件包理匹配的busybox工具,解壓到linux中。
2:進行菜單配置:make menuconfig---------------進入解壓後的目錄
a)、編譯器前綴
b)、配置共享庫(這裏就是要掛載NFS的文件夾)---我的目錄/work/busybox-1.17.2/rootfs/
c)、配置安裝路徑(可以不修改,為了你對自己文件有清晰的分類管理,建議修改)
d)、配置模塊,取消掉
然後
3、編譯安裝文件系統:make -j8;make install -j8 ------------------進入解壓後的目錄
1、安裝後查看生成的文件:ls /work/busybox-1.17.2/rootfs -l
2、查看生成的busybox是否是arm架構的程序:
file /work/busybox-1.17.2/rootfs//bin/busybox
3、復制命令的動態庫 -------- 進入共享的文件夾
先查看生成的busybox程序依賴哪些動態庫
arm-linux-readelf -d bin/busybox | grep .so
查看編譯器的安裝路徑 which arm-linux-gcc
復制編譯器的lib文件到共享目錄下 cp /opt/FriendlyARM/toolschain/4.5.1/arm-nonc-linux-gnueabi/lib/ .
4、創建其他目錄 mkdir dev home proc tmp var etc/init.d mnt opt sys -p
5、創建控制臺文件 mknod dev/console 5 1
註:該文件世設備文件,只能用mknod創建,不能用vim,gedit,touch。c表示字符設備,5表示主設備號,1表示此設備號
6、根據需要在etc目錄下創建fstab文件
以上文件是設置linux掛載上文件系統 後 還需要掛載 的 其他文件系統
7、在etc目錄下創建inittab文件
因為在linux的examples文件夾裏面已經提供了一個模板,我們只需把它拷貝過來修改就能用了 cp /work/busybox-1.17.2/examples/inittab etc/
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
8、在etc/init.d/裏面創建rcS文件
gedit etc/init.d/rcS &
內容:#!/bin/sh
mkdir /dev/shm -p
mkdir /dev/pts -p
#掛載 fstab 文件中指定的所有文件系統
mount -a
#以下是熱拔插支持
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
hostname 你的名字(非中文)
9、在etc目錄下創建profile文件
內容:
10、添加用戶信息,因為x86裏面已經有了,所以我們可直接從裏面復制出來使用
cp /etc/passwd etc/
11、總結linux啟動過程,以及嵌入式系統啟動過程
在bootloader中 制定 各種要求 傳遞 給 linux內核的 參數,在開機後先mount上制定文件系統,(該文件系統主要負責啟動運行的配置文件)
1)、busybox init啟動後,初始化控臺
2)、掃描etc/init.d文件
3)、執行系統初始化命令,還有執行rcS文件(這裏面會包含制定掛載的文件系統)
4)、執行所有wait動作的命令
5)、執行所有once動作的命令
6)、執行所有終止時必須重新啟動的 inittab 命令(動作類型: respawn)
7)、執行所有終止時必須重新啟動但啟動前必須詢問用戶的 inittab 命令(動作類型: askfirst)
8)、啟動shell程序
9)、執行profile文件
到此根文件系統制作完成!
三:NFS 文件系統掛載
1、開啟nfs服務:service nfs restart--本次有效
chkconfig iptables on
2、關閉window防火墻,linux防火墻
3、設置ip
4、開啟開發板設置環境變量:
格式:root=/dev/nfs nfsroot=虛擬機 IP:虛擬機的 NFS 根文件系統路徑 ip=開發板 IP:虛擬機 IP:網關:子網掩碼::eth0:off init=/linuxrc console=ttySAC0 lcd=S70
setenv bootargs root=/dev/nfs nfsroot=192.168.111.251:/root/work/rootfs/ ip=192.168.111.252:192.168.111.251:192.168.111.1:255.255.255.0:edu118:eth0:off init=/linuxrc console=ttySAC0 lcd=w101(必須是同一行)
5、掛載完成
6、測試:開發板連接電腦進入共享文件下進行測試
根文件系統制作與NFS掛載