linux根文件系统创建过程
步驟一:創建根文件系統基本目錄
1.在home目錄下創建:mkdir rootfs,然后,
2.在usr/下面建立子目錄
3.在dev/下面建立字符設備文件
4安裝/etc,系統所有配置文件都在這里,注意在不同平臺(x86 arm PowerPC等)這些配置文件基本都是差不多的,所以只需要拿別人的修改就可以。(這里直接把別人的配置目錄做成一個包,拿過來直接解壓cp到rootfs里面就可以了。)
步驟二:下載內核源碼并編譯
1.從https://www.kernel.org/下載自己想要編譯的內核版本(我編譯的是linux-2.6.29)
解壓放到rootfs目錄下,然后執行:
make menuconfig //按照自己的要求進行配置得到.config文件
然后對內核進行編譯,執行:
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
最后得到我們的鏡像文件:
2.編譯內核模塊,執行:
make modules ARCH=arm CROSS_COMPILE=arm-linux-
在此過程,遇到的各種問題請參考:
https://blog.csdn.net/JustDoIt_201603/article/details/87556900
步驟三:busybox的編譯和安裝
busybox(稱為嵌入式開發中的瑞士軍刀)是一個工具集(例如我們常用ls,pwd命令,及vi或vim工具),對于這些常用的命令和工具,我們沒有必要重新去開發,直接利用busybox進行移植即可。這里我用的是busybox-1.13.3,解壓到rootfs目錄下:
1.配置busybox,執行make menuconfig
提示如下錯誤:
意思是混合隱式規則和常規規則:棄用語法,起初以為是busybox包的問題,換了低版本也報同樣的錯誤,百度上說可能是由于系統make工具太新(系統:Ubuntu16.04),make舊版?? 的一些規則已經無法兼容新版make
將原來的config %config: scripts_basic outputmakefile FORCE改為:
將原來的/ %/: prepare scripts FORCE,改為:
然后重新執行:make menuconfig,進入這個Busybox Settings --->
首先設置下面第一項為yes(*表示yes),然后設置最后一項Cross Compiler prefix(交叉編譯器的前綴)的內容為arm-linux
然后進入第四項busybox的安裝選項中
設置busybox安裝路徑前綴,這里我選擇安裝到rootfs目錄下
然后退出保存設置。后面最好source /etc/profile一下。
2.編譯busybox,執行:
make ARCH=arm CROSS_COMPILE=arm-linux-
編譯完成:
3.busybox安裝
安裝之前我們/home/wangz/rootfs/bin/目錄下都是空的,然后執行安裝:
編譯完成后,會發現/home/wangz/rootfs/bin/bin多了很多指令工具:
這些指令都是鏈接命令,連接到了busybox的bin下面去了。
4.內核模塊的安裝
前面的內核模塊都只是編譯了,還沒有安裝,現在來安裝,執行:
make modules_install ARCH=arm INSTALL_MOD_PATH=/home/wangz/rootfs
5.到這里整個根文件系統都完成了。
總結
以上是生活随笔為你收集整理的linux根文件系统创建过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译linux-2.6.29内核,报错解
- 下一篇: 几种添加系统环境变量方法和区别