




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2015/08/11目錄目錄1Linux 根文件系統制作和NFS 掛載21.0內容提要2buxybox 制作根文件系統2buxybox 源碼獲得21.2.1buxybox 配置21.2.3 編譯 busybox,安裝文件系統51.2.3.1 編譯,安uxybox5命令的動態庫51.2.3.21.2.3.3 創建其他文件夾:6創建控制臺設備文件:6創建 etc 目錄下文件6busybox init 進程和/etc/inittab 關系8NFS 文件系統掛接10虛擬機的 Linux 系統安裝NFS 服務10配置 Linux 系統 NFS 服務10配置 Linux 系統 IP 地址11配置 Wind
2、own 系統 IP 地址17配置開發板 IP 地址和環境變量21掛接NFS 文件系統221 / 242015/08/11Linux 根文件系統制作和 NFS 掛載1.0 內容提要busybox 介紹buxybox 制作根文件系統1.2.buxybox 源碼獲得buxybox 配置編譯 busybox,安裝文件系統 busybox init 進程和/etc/inittab 關系1)2)3)4)1.3 NFS 文件系統掛接3.1.2 buxybox 制作根文件系統buxybox 源碼獲得:版本是: BusyBox 1.23.21.2.1目前23 March 2015 - BusyBox 1.23.
3、2 (stable)BusyBox 1.23.2直接地址buxybox 配置:1.2.11. 準備Disk-ALinuxbusybox-1.17.2-20101120.tgzbusybox 到 Linux 系統中解壓2.rootlocalhost 4412# pwd/media/sdb1/4412 rootlocalhost 4412# ls busybox-1.17.2-20101120.tgzrootlocalhost 4412# tar -xf busybox-1.17.2-20101120.tgzrootlocalhost 4412# ls busybox-1.17.23. 配置 bu
4、syboxrootlocalhost 4412# cd busybox-1.17.2rootlocalhost busybox-1.17.2# makeconfig2 / 242015/08/11配置編譯為共享庫:CONFIG_BUILD_LIBBUSYBOX:Build a shared library libbusybox.so.N.N.N which contains all busybox code.This feature allows every applet to be built as a tinyseparate executable. Enabling it for one
5、 big busybox binaryapproach serves no pure and increases code size.You should almost certainly say no to this.Symbol: BUILD_LIBBUSYBOX =yPrompt: Build shared libbusyboxDefined at Config.in:452Depends on: !FEATURE_PREFER_APPLETS & !PIE & !S Location:- Busybox Settings- Build OptionsIC小知識:Windows 下的庫類
6、型:.dll動態庫.lib靜態庫Linux 下的庫類型:.so.X動態.a靜態庫編譯成動態編譯成靜態庫X 是一個整數,也可以直接 .so方式占用空間小,方便,更新。不能獨立運行,要依賴其他庫。方式占用空間大,但是可以獨立運行,不依賴其他庫。配置交叉編譯器:refix PILER_PREFIX:Cross Compil3 / 242015/08/11If you want to build BusyBox wiwill need to set this to th i386-uclibc-.cross compiler, then youlrefix, for exle,NotemaktPILE
7、 environment variable orLE=. will override thiection.Native builds leave this empty.Symbol:PILER_PREFIX =arm-linux-Prompt: Cross CompilrefixDefined at Config.in:542Location:- Busybox Settings- Build Options配置根文件系統安裝位置:BusyBox installation prefix CONFIG_PREFIX:Define your directory to install BusyBox
8、 filebdirs in.Symbol: PREFIX =/tiny4412/rootfs/Prompt: BusyBox installation prefix Defined at Config.in:709 Location:- Busybox Settings- Installation Options配置命令提示符功能:prompts Fancy sCONFIG_FEATURE_EDITING_FANCY_PROMPT:Setting this option allows for prompts to use things like w and$ and esccodes.Symb
9、ol: FEATURE_EDITING_FANCY_PROMPT =yPrompt: Fancy spromptsDefinedibbb/Config.in:100Depends on: FEATURE_EDITINGLocation:- Busybox Settings4 / 242015/08/11- Busybox Library Tuning-d line editing (FEATURE_EDITING =y)4. 保存配置:按 Esc 鍵盤返回并且退出。出現以下界面時候回車保存配置。1.2.3 編譯 busybox,安裝文件系統1.2.3.1 編譯,安uxyboxrootlocal
10、host busybox-1.17.2# make -j16;make install -j16/tiny4412/rootfs/usr/sbelnetd - ././bin/busybox/tiny4412/rootfs/usr/sbin/udhcpd - ././bin/busyboxYou will probably need to make your busybox binarysetuid root to ensure all configured applets will work properly.rootlocalhost busybox-1.17.2#安裝完成后進入到安裝目錄
11、,查看文件:rootlocalhost busybox-1.17.2# cd /tiny4412/rootfs/rootlocalhost rootfs# ls binlinuxrcsbinusr rootlocalhost rootfs#命令的動態庫1.2.3.2由于配置 busybox 時候采用動態方式編譯,所以,要把它所依賴的動態庫文件到安裝目錄。rootlocalhost rootfs# cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/ ./ -raprootlocalhost rootfs# ls bin
12、liblinuxrcsbinusr rootlocalhost rootfs# ls libld-2.11.so這里會看到很少libnss_hesiod.so.2.so 動態庫文件。rootlocalhost rootfs#5 / 242015/08/11刪除靜態庫文件(程序運行過程中靜態沒有用的):rootlocalhost rootfs# rm lib/*.a -f1.2.3.3 創建其他文件夾:rootlocalhost rootfs# pwd/tiny4412/rootfsrootlocalhost rootfs# mkdir dev etc/init.dhome proc sys r
13、oot opt tmp var -prootlocalhost rootfs#1.2.3.5 創建控制臺設備文件:rootlocalhost rootfs# ls /dev/console -lcrw-. 1 root root 5, 1 11 月 26 23:37 /dev/console rootlocalhost rootfs# pwd/tiny4412/rootfsrootlocalhost rootfs# mknod dev/console c 5 1rootlocalhost rootfs#1.2.3.6 創建 etc 目錄下文件1.fstab 文件:rootlocalhost r
14、ootfs# cp /etc/fstab etc/tmpfsdevpts sysfs proc/dev/shm/dev/pts/sys/proctmpfsdevpts sysfs procdefaultsdefaults defaults defaults0 00 00 00 06 / 242015/08/112.創建 inittab 文件:otlocalhost rootfs# cd -/media/sdb1/4412/busybox-1.17.2 rootlocalhost busybox-1.17.2# pwd/media/sdb1/4412/busybox-1.17.2 rootloc
15、alhost busybox-1.17.2# cp exrootlocalhost busybox-1.17.2#les/inittab /tiny4412/rootfs/etc/修改里面的內容,只保留以 4 行::sysinit:/etc/init.d/rcSconsole:ask:-/bin/sh:ctrlael:/sbin/reboot:shutdown:/bin/umount -a -r也就是把以下幾行留下,其余的注釋:或直接命令創建:rootlocalhost root_nfs# echo :sysinit:/etc/init.d/rcS etc/inittab etc/initta
16、b etc/inittabrootlocalhost root_nfs# echo console:ask:-/bin/shrootlocalhost root_nfs# echo :ctrlael:/sbin/rebootrootlocalhost root_nfs# echo :shutdown:/bin/umount -a -r etc/inittabrootlocalhost root_nfs# cat etc/inittab:sysinit:/etc/init.d/rcSconsole:ask:-/bin/sh:ctrlael:/sbin/reboot:shutdown:/bin/u
17、mount -a -r rootlocalhost root_nfs#3.創建 etc/init.d/rcS 文件rootlocalhost rootfs# touch etc/init.d/rcS并添加以下內容:rootlocalhost rootfs# gedit etc/init.d/rcS &7 / 242015/08/11編輯完成后給rcS 文件執行權限:rootlocalhost rootfs#od 7 etc/init.d/rcS這個文件中令,在系統啟動后,掛接上文件系統會全部執行。也就是說需要開機自動執行的程序都可以寫在這里,以上的內容除最后一行,其他的都是必須的。4.創建 e
18、tc/profile/ 文件并且添加以下內容:這個文件就是添加環境變量,以上的內容是實現控制臺終端命令提示符號模板功能。以上命令提示模板中含有用戶名/etc 目錄中u , 用戶名配置需要使用etc/ group 和 etc/passwd 兩個文件,所以從虛擬機的 Linux 系統的這兩個文件到自己開發板根文件系統etc 目錄。rootlocalhost rootfs# cp /etc/group /etc/passwd etc/1.2.4 busybox init 進程和/etc/inittab 關系系統下的 linux 啟動過程一般是:1.在 bootloader 中制定各種要求傳給 lin
19、ux 內核的參數,制作 ramdisk 或 ramfs 文件系統,并在開機8 / 242015/08/11后首先 mount 上,該文件系統主要負責包含啟動運行的配置文件/etc/rc 文件;系統主要是/etc/inittab 和2.在 init 進程啟動后,進程首先執行/etc/inittab 文件,該文件語法下面介紹,一般包括三項內容就可以啟動。busybox 的 init 完成系統的初始化工作,關機前的工作等等,知道在 Linux 的內核被載入之后,機器就把控制權轉交給內核,linux 的內核啟動之后,做了一些工作,然后找到根文件系統里面的 init 程序,并執行它,BusyBox 的
20、init 進程會依次進行以下工作:為 init 設置信號處理過程初始化控制臺剖析/etc/inittab 文件執行系統初始化命令行,缺省情況下會使用/etc/init.d/rcS執行所有導致 init 暫停的 inittab 命令(動作類型:wait)執行所有僅執行一次的 inittab(動作類型:once)一旦完成以上工作,init 進程便會循環執行以下進程:執行所有終止時必須重新啟動的 inittab 命令(動作類型:respawn)執行所有終止時必須重新啟動但啟動前必須詢問用戶的 inittab 命令(動作類型:ask)初始化控制臺之后,BusyBox 會檢查/etc/inittab 文
21、件是否存在,如果此文件不存在,BusyBox 會使用缺省的 inittab 配置,它主要為系統重引導,系統掛起以及 init 重啟動設置缺省的動作,此外它還會為四個虛擬控制臺(tty1 到 tty4)設置啟動 s的動作。如果未建立這些設備文件,BusyBox 會報錯。inittab 文件中每一行的格式如下所示:(busybox 的根目錄下的 ex范例)le 文件夾下有詳盡的 inittab 文件id:runlevel:action:pros盡管此格式與傳統的 Sytem V init 類似,但是,id 在 BusyBox 的 init 中具有不同的意義。對 BusyBox 而言,id 用來指定
22、啟動進程的控制 tty。如果所啟動的進程并不是可以交互的 s,例如 BusyBox 的 sh(ash),應該會有個控制 tty,如果控制 tty 不存在,Busybox 的 sh 會報錯。BusyBox 將會完全忽略 runlevel 字段,所以空著它就行了, 保留它大概是為了和傳統的 Sytem V init 保持一致的格式吧。pro行程式的路徑,包括命令行選項。action 字段用來指定下面表中 8 個可應用到 pros 字段用來指定所執s 的動作之一。9 / 24動作結果sysinit為 init 提供初始化命令行的路徑respawn每當相應的進程終止執行便會重新啟動askfirs類似r
23、espawn,不過它的主要用途是減少系統上執行的終端應用程序的數量。它將會促使 init在控制臺上顯示“Please press Enter to active this console”的信息,并在重新啟動之前等待用戶按下 enter 鍵wait告訴 init 必須等到相應的進程完成之后才能繼續執行once僅執行相應的進程一次,而且不會等待它完成ctrdel當按下 Ctrl+Aelete 組合鍵時,執行相應的進程shutdown當系統關機時,執行相應的進程restart當 init 重新啟動時,執行相應的進程,通常此處所執行的進程就是 init 本身2015/08/111.3 NFS 文件系
24、統掛接1.3.1 虛擬機的 Linux 系統安裝 NFS 服務inux 在安裝系統已經安裝上去,不用再安裝。如果沒有安裝的自己查閱資料安裝。R1.3.2 配置 Linux 系統 NFS 服務1. 添加 NFS 共享目錄:編輯 /etc/exports 。rootlocalhost rootfs# gedit /etc/exports &/tiny4412/rootfs/*(rw,sync,no_root_squash)說明:/tiny4412/rootfs/要共享NFS 目錄* :任何主機都可以連接(rw,sync,no_root_squash): no_root_squash:表示給予 ro
25、ot這個共享目錄這個共享目錄的權限和屬性。rw:用戶權限。可讀可寫;sync:保持文件同步;2. 啟動 NFS 服務rootlocalhost rootfs# service nfs restartrootlocalhost rootfs# service nfs restart3.設置開機自動啟動10 / 242015/08/11rootlocalhost rootfs# chkconfig nfs -level 2345 on1.3.3 配置 Linux 系統 IP 地址如果不是橋接,則要修改,修改方法如下:11 / 242015/08/11查看虛擬機網卡設備名及 IP 地址:(不同的電腦
26、這里的設備可能會不同,rootlocalhost rootfs# ifconfigeth1)eth1Link encthernetHWaddr 00:0C:29:06:AE:0Cinet addr:192.168.0.112Bcast:192.168.0.255Mask:255.255.255.0inet6 addr: fe80:20c:29e06:ae0c/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:5074 errors:0 dropped:0 overruns:0 frame:0 TX pac
27、kets:8613 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:1000RX bytes:802685 (783.8 KiB)TX bytes:9106606 (8.6 MiB)errupt:19 Base address:0 x2024loLink encap:Local Loackinet addr:127.0.0.1Mask:255.0.0.0 inet6 addr: :1/128 Scope:HostUP LOACK RUNNINGMTU:16436Metric:1RX packets:126 errors:0
28、dropped:0 overruns:0 frame:0TX packets:126 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:0RX bytes:9708 (9.4 KiB)TX bytes:9708 (9.4 KiB)virbr0Link encthernetHWaddr 52:54:00:A2:33:62inet addr:192.168.122.1Bcast:192.168.122.255Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric
29、:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:301 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:0RX bytes:0 (0.0 b)TX bytes:17556 (17.1 KiB)rootlocalhost rootfs#配置 IP:rootlocalhost rootfs# ifconfig eth1 192.168.0.106 uprootlocalhost rootfs#12 / 242015/08/11rootlocalhos
30、t rootfs# ifconfigeth1Link encthernetHWaddr 00:0C:29:06:AE:0Cinet addr:192.168.0.112Bcast:192.168.0.255Mask:255.255.255.0inet6 addr: fe80:20c:29e06:ae0c/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:5074 errors:0 dropped:0 overruns:0 frame:0 TX packets:8613 errors:0 dropped:0
31、 overruns:0 carrier:0collis:0 txqueuelen:1000RX bytes:802685 (783.8 KiB)TX bytes:9106606 (8.6 MiB)errupt:19 Base address:0 x2024loLink encap:Local Loackinet addr:127.0.0.1Mask:255.0.0.0 inet6 addr: :1/128 Scope:HostUP LOACK RUNNINGMTU:16436Metric:1RX packets:126 errors:0 dropped:0 overruns:0 frame:0
32、TX packets:126 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:0RX bytes:9708 (9.4 KiB)TX bytes:9708 (9.4 KiB)virbr0Link encthernetHWaddr 52:54:00:A2:33:62inet addr:192.168.122.1Bcast:192.168.122.255Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:0 errors:0 drop
33、ped:0 overruns:0 frame:0 TX packets:301 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:0RX bytes:0 (0.0 b)TX bytes:17556 (17.1 KiB)rootlocalhost rootfs#上面的設置是本次運行有效,如果重啟又會變化。如果想固定不變,可以使用靜態 IP 配置方式。靜態IP 配置如下:rootlocalhost rootfs# setup13 / 242015/08/1114 / 242015/08/11rootlocalhost rootfs
34、# service network restart正在關閉接口 eth1:設備狀態:3 (斷開連接)確定確定確定關閉環回接口:彈出環回接口:rootlocalhost rootfs#這樣,有可能使用虛擬機和 WINdows 網絡斷開:重新連接網絡:15 / 242015/08/11查看前面配置網卡 eth1 (名字根據自己的系統具體情況而定)rootlocalhost rootfs# ifconfig eth1eth1Link encthernetHWaddr 00:0C:29:06:AE:0Cinet addr:192.168.0.106Bcast:192.168.0.255Mask:255
35、.255.255.0inet6 addr: fe80:20c:29e06:ae0c/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:5117 errors:0 dropped:0 overruns:0 frame:0 TX packets:8699 errors:0 dropped:0 overruns:0 carrier:0collis:0 txqueuelen:1000RX bytes:807590 (788.6 KiB)TX bytes:9121305 (8.6 MiB)errupt:19 Bas
36、e address:0 x2024rootlocalhost rootfs#關:rootlocalhost rootfs# setup16 / 242015/08/111.3.4 配置 Windown系統 IP 地址17 / 242015/08/1118 / 242015/08/1119 / 242015/08/1120 / 242015/08/11如果配置虛擬機橋接無線網,則上一步的有線網卡靜態 IP 可以不配置。1.3.5 配置開發板 IP 地址和環境變量ipaddr: 開發板 IP; gatewayip:以太網網關 netmask: 子網掩碼serverip:服務器 IP,目前沒有使用到
37、。(2440 開發板是使用網絡內核等,Tiny4412 使用 SD 卡)bootargs:啟動參數,傳遞內核。形式有很多種,內核要掛接不同的文件,其內容就不同。NFS 格式文件的 bootargs 參數:部分格式:虛擬機 IP:虛擬機的NFS 根文件系統路徑ip=開發板 IP:虛擬機 IP:網關:子網掩碼:示例:noinitrd root=/dev/n fsroot=虛擬機 IP:虛擬機的NFS 根文件系統路徑ip=開發板 IP:虛擬機 IP:網關:子網掩碼:eth0:off init=/linuxrc console=ttySAC0 lcd=S70說明:init=/linuxrc: 表示內核
38、掛接上文件系統后,第一個要執行的進程。好就有一個名字為 linuxrc 的文件。例如前面制作的文件系統的 linuxrc 文件:它指向 bin/busybox。rootlocalhost rootfs# ls linuxrc -llrwxrwxrwx. 1 root root 11 11 月 27 11:22 linuxrc - bin/busyboxrootlocalhost rootfs#21 / 24制作根文件系統頂層目錄剛剛noinitrdroot=/dev/n fsroot=:eth0:off2015/08/11console=ttySAC0:表示控制串口 0,標準格式lcd=S70
39、: 是針對 Tiny4412 內核傳遞,來決定內核使用哪一個 LCD 屏的參數,其他板子不一定,這是非標準的,是友善根據編寫的驅動代碼添加。TINY4412 # setenv ipaddr 192.168.0.123TINY4412 # setenv gatewayip 192.168.0.1 TINY4412 # setenv netmask 255.255.255.0 TINY4412 # setenv serverip 192.168.0.30以下行是同一行,不要換行:這一個非常重要。TINY4412# setenv bootargs noinitrd root=/dev/nfsroot
40、=192.168.0.106:/tiny4412/rootfs/ip=192.168.0.123:192.168.0.106:192.168.0.1:255.255.255.0:eth0:off init=/linuxrc console=ttySAC0 lcd=S70TINY4412 # saveSaving Environment to SMDK bootable device. doneTINY4412 #1.3.6 掛接 NFS 文件系統直接重啟開發板,設置好環境變量。U-Boot 2010.12 (Nov 21 2014 - 15:39:56) for TINY4412CPU:S5P
41、C220 Samsung SOC on SMP Platform Base on ARM CortexA9APLL = 1400MHz, MPLL = 800MHzBoard:DRAM:TINY44121023 MiBvdd_arm: 1.222 / 242015/08/11vdd_: 1.0vdd_mif: 1.1BL1 ver:N/A (TrustZone Enabled BSP)Checking Boot Mode . SDMMCREVI: 1.1MMC Device 0: 3724 MBMMC Device 1: 3728 MBMMC Device 2: N/ANet:No ether
42、net found.Hit any key to stop autoboot:0TINY4412 # pribaudrate=115200bootargs=noinitrdroot=/dev/nfsroot=192.168.0.106:/tiny4412/rootfsip=192.168.0.123:192.168.0.106:192.168.0.1:255.255.255.0:eth0:off init=/linuxrc console=ttySAC0 lcd=S70bootcmd=movi read kernel 0 40008000;bootm 40008000bootdelay=3eddr=00:40:5c:26:0a:5bgatewayip=192.168.0.1ipaddr=192.168.0.123 netmask=255.255.255.0 serverip=192.168.0.30Environment size: 417/16380 bytesTINY4412 # boot或讓它自己啟動.上面粗體部分環境變量內容是必須要設置正確。部分啟動信息:reading kernel.device 0 Start 1057, Count 12288MMC read: dev # 0, bl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CHATA 023-2022結核病定點醫療機構結核感染預防與控制規范
- T/CFPA 012-2022消防用壓接式涂覆碳鋼管材及管件
- T/CEPPEA 5023-2023風光儲充一體化充電站設計規范
- T/CEMTA 4-2023工業炸藥生產線安全聯鎖檢測方法溫度、壓力和流量
- T/CECS 10197-2022高分子膜基預鋪防水卷材
- T/CCS 062-2023井工煤礦智能化采煤系統運維管理規范
- T/CCOA 56-2023拉面專用小麥粉
- T/CBMCA 028-2022室內空氣治理產品
- T/CATCM 013-2021靈芝(赤芝)及其孢子粉質量規范
- T/CASTEM 1015-2023新型研發機構績效評估規范
- 外科視角解讀-《甲狀腺結節和分化型甲狀腺癌診治指南(第二版)》
- 2023CSCO免疫檢查點抑制劑相關的毒性控制指南(全文)
- 五年級下冊分數加減混合運算練習400題及答案
- 不同行業安全管理的特點與要求
- 醫學人文素質教育的跨學科研究與創新
- 社區居民滿意度調查問卷
- 異常子宮出血護理查房的課件
- 醫院基建科招聘筆試題目
- 無創血糖儀行業營銷策略方案
- 答案-國開電大本科《當代中國政治制度》在線形考(形考任務一)試題
- 國際經貿新形勢下我國外貿高質量發展的挑戰及對策
評論
0/150
提交評論