嵌入式linux與物聯網進階之路三:根文件系統製作

承接前篇,我們的linux內核終於製作好了,也順利的加載起來了,但是由於沒有根文件系統,所以說加載到最後,是無法進入系統的。而本節內容則是講解如何來製作根文件系統的。

BuildRoot創建根文件系統

由於BuildRoot工具可以構建linux的根文件系統,而且其配置項內部集成了很多我們常用的工具,所以今天它就是我們的主角。在開始之前,我們需要確保機器上安裝了編譯所需要的的依賴,如下:

apt-get install linux-headers-$(uname -r)

此命令可以檢測我們機器上缺少的一些依賴,當然,在編譯過程中,我們肯定還需要安裝一些其他的依賴,到時候在編譯過程中,出現什麼依賴錯誤,我們就利用apt install命令安裝缺少的組件就行了。

之後開始下載我們的BuildRoot組件:

wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
cd buildroot-2017.08/
make menuconfig

menuconfig配置

打開menuconfig後,我們可以看到本次編譯需要設置的選項,都列在這裏了,針對以下幾個選項,我們可以進行設置以下,畫框的部分需要注意:

Target options選項:

Tool chain選項,使用內置交叉編譯鏈,出問題概率小:

System configuration配置如下,注意設置密碼:

 

其他的就沒什麼了,大家可以翻閱其他選項,安裝一些自己需要安裝的組件即可。

make編譯

保存menuconfig之後,在根目錄位置輸入如下命令開始製作:

make

需要提醒的是,整個構建過程非常長,大概需要2小時的樣子,而且在編譯過程中,需要下載很多組件,這裏有一些常用的組件列表,我們把其解壓到BuildRoot根目錄下的dl目錄中,由於在編譯過程中,linux內核等也需要下載,但是下載地址非常慢:

https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.10.tar.xz
https://downloads.uclibc-ng.org/releases/1.0.26/uClibc-ng-1.0.26.tar.xz

一個是linux內核文件,一個是依賴包,我們可以用迅雷等工具下載好,然後把下載好的包也放到dl目錄即可。就可以免去編譯的時候下載耗費的時間了。

在編譯過程中,一般會遇到如下問題:

Please port gnulib freadahead.c to your platform! 問題

此問題目前已經有解決方法了,可以點擊這裏查看,具體解決方案就是,按照圖示進入進入buildroot/output/build/host-m4.1.4.17文件夾,然後執行如下命令即可:

sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h

而其他一些問題,基本上都是組件缺少的問題,利用apt install命令可以搞定。

漫長的等待之後,到這個界面,就說明編譯成功了:

我們此時可以進入output/images目錄中,就可以看到rootfs.tar文件在那裏了。

文件燒寫

由於之前我們只做好了第二分區,也就是/dev/sdb2,此時我們就可以將我們的根文件系統燒寫進我們的tf卡了。

插上我們的usb讀卡器,由於sdb2沒法直接訪問,所以我們需要掛載,整體需要執行如下命令:

sudo mkdir /mnt/sdb2                 //創建一個臨時目錄
sudo mount /dev/sdb2 /mnt/sdb2       //將sdb2掛載到此臨時目錄
sudo cp rootfs.tar /mnt/sdb2         //拷貝到sdb2中,此時sdb2中已經能看到跟文件
sudo tar -xf rootfs.tar              //進入目錄並解壓
sudo rm rootfs.tar                   //刪掉tar
sudo sync
sudo umount /dev/sdb2

這樣,重新插拔一次usb讀卡器,我們就可以看到文件拷貝進來了。

然後將卡插回荔枝派nano,連接電腦,打開minicom,可以看到串口輸出信息如下:

參考資料:

根文件系統編譯 — 荔枝派Nano 全流程指南 documentation (lichee.pro)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章