嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载
嵌入式Linux系統(tǒng)由三部分組成: uboot、kernel、根文件系統(tǒng), 還是這張老圖
這里的根文件系統(tǒng)可以說是包含兩個部分: 一個是根,一個是文件系統(tǒng)
那么什么是根呢?哈哈 其實根表示的就是第一個的意思
下面貼張圖看看整個根文件系統(tǒng)制作的步驟:
第一步創(chuàng)建目錄,這里是在我自己的一個目錄下建立一個名為rootfs的目錄:
第二步 :創(chuàng)建設(shè)備文件(比如操作串口,其實就是打開一個串口文件,向里面寫入讀出等)
這里有兩個是必須的,其他的暫時不考慮(串口控制臺)(這個在dev目錄下執(zhí)行)
第一個指令console表示是串口控制臺設(shè)備 c表示是字符設(shè)備 5表示主設(shè)備號,1表示次設(shè)備號
第二個指令暫時也不明白,先放著。
第三步:加入配置文件(主要是etc目錄下的)
第四步:添加內(nèi)核模塊
這個要進(jìn)入到Llinux 內(nèi)核中編譯內(nèi)核模塊!
第二條指令是將編譯好的模塊拷貝到rootfs目錄下的相應(yīng)目錄中
從這里可以看到當(dāng)前目錄下的一些.ko文件
第五步:編譯安裝busybox
先解壓,然后進(jìn)入目錄make menuconfig
這里直接進(jìn)入第一項,這里有兩項要設(shè)置
1. 選中第一項Build BusyBox as a static binary
2. Corss Compile prefix 輸入自己交叉編譯器的前綴
上圖中需要設(shè)置兩個地方,一個是選中第一項 一個是BusyBox installation prefix安裝路徑這里填寫我自己建的目錄所在的絕對路徑。
上圖中的home寫錯了,這里先說一下。退出然后保存,make 編譯然后make install(其實這里就是執(zhí)行一個復(fù)制功能)(上面的選項其他的暫不配置)安裝成功后截圖:
這是也可以去rootfs/bin目錄下看看有什么變化,執(zhí)行之前bin目錄下是空的
這里可以看到很多常用的命令!
第二部分:掛載根文件系統(tǒng)(即如何使用上邊制作好的根文件系統(tǒng))
第一步:
Initramfs 啟動速度快。缺點是掉電后數(shù)據(jù)丟失!
進(jìn)入rootfs目錄下,創(chuàng)建一個軟鏈接!把系統(tǒng)的Initramfs鏈接到當(dāng)前的目錄下的busybox下 軟鏈接的名字取為init
然后進(jìn)入Linux內(nèi)核中配置make menuconfig配置內(nèi)核
進(jìn)入general setup
選中圖中藍(lán)色部分上面一項Initial RAM filessystem and RAM disk.......
并且進(jìn)入圖中藍(lán)色部分寫入自己執(zhí)著的rootfs路徑:
保存,然后重新編譯內(nèi)核
編譯完成:
這里將生成的 arch/arm/boot/uImage文件拷貝到tftpboot目錄下!(這個可以參考前面的關(guān)于自動啟動內(nèi)核設(shè)置那篇博文)
最后一步,設(shè)置環(huán)境變量:
打開串口終端,連接開發(fā)板
設(shè)置環(huán)境變量:
然后tftp uImage c0008000
bootm c0008000啟動內(nèi)核
這里可以看到上面制作的文件系統(tǒng)啟動成功
下面一步來講述使用NFS來掛著根文件系統(tǒng)!(network file system)
這樣有利于開發(fā)過程中的同步,即在PC機上更改一些文件能同時同步到開發(fā)板上的文件上
這樣就省去了每次更改一些內(nèi)核文件時重新編譯工作!(內(nèi)核開發(fā)過程中非常實用,使用NFS是必須掌握的技巧)
首先第一步還是內(nèi)核配置:
首先取消掉上面選中的Initial RAM filesystem and RAM disk...選項,如圖:(這一項是在Gnenral setup選項里面)
然后進(jìn)入file systems中
進(jìn)入選中圖中藍(lán)色選項:
選中圖中藍(lán)色選項,并且進(jìn)入,選中圖中藍(lán)色部分
然后退出保存,然后在重新編譯make uImage ARCH=arm CROSS_COMPILE=arm-linux-
同上將uImage拷貝到tftpboot目錄下,
然后剩下的就是設(shè)置nfs環(huán)境變量了
我電腦linux的ip 是192.168.1.111, 開發(fā)板的ip是192.168.1.110
所以這里我設(shè)置的環(huán)境變量為
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.111:/home/S3-ARM/rootfs,proto=tcp,nfsvers=3 ip=192.168.1.110:192.168.1.111:192.168.1.1:255.255.255.0::eth0:off設(shè)置完后然后saveenv一下
tftp c0008000 uImage
bootm c0008000
然后看一張截圖,就是我在pc機的linux上的rootfs目錄下建立一個Text.txt文件,可以看到這個文件立刻就可以在開發(fā)板上看到。
這在內(nèi)核開發(fā)基本是必備技能!用起來是相當(dāng)方便的!
這里NFS掛載補充一點:/etc/init.d/nfs restart 啟動nfs服務(wù)器
第二點:
vim /etc/exports 文件 輸入一下內(nèi)容,這個是我的rootfs文件路徑(這里的意思就是NFS要掛在的目錄是哪個,然后掛載屬性是什么)
總結(jié)
以上是生活随笔為你收集整理的嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql+odbc+ado_MFC a
- 下一篇: 路由器 刷 linux系统版本,在Lin