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