迅為IMX6ULL開發板從零開始編譯 buildroot
從零開始編譯 buildroot
硬體平臺 :迅為i.MX6ul開發板
接下來我們就開始學習怎樣一步一步配置 buildroot,使用命令:
make menuconfig
進入配置介面
1、配置 Target options
首先配置 Target options 選項,需要配置的專案和其對應的內容如下:
Target options
-> Target Architecture = ARM (little endian)
-> Target Binary Format = ELF
-> Target Architecture Variant = cortex-A7
-> Target ABI = EABIhf
-> Floating point strategy = NEON/VFPv4 -> ARM instruction set = ARM
配置好如下圖:
2、配置 Toolchain
此配置項用於配置交叉編譯工具鏈,也就是交叉編譯器,這裡設定為我們自己所使用的交叉編譯器即
可。buildroot 其實是可以自動下載交叉編譯器的,但是都是從國外伺服器下載的,鑑於國內的網路環境,
強烈推薦大家設定成自己所使用的交叉編譯器。需要配置的專案和其對應的內容如下:
Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //使用者自己的交叉編譯器
-> Toolchain origin = Pre-installed toolchain //預裝的編譯器
-> Toolchain path = /usr/local/arm/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf
-> Toolchain prefix = $(ARCH)-linux-gnueabihf //字首
-> External toolchain gcc version = 5.x
-> External toolchain kernel headers series = 4.1.x
-> External toolchain C library = glibc/eglibc
-> [*] Toolchain has SSP support? (NEW) //選中
-> [*] Toolchain has RPC support? (NEW) //選中
-> [*] Toolchain has C++ support? //選中
-> [*] Enable MMU support (NEW) //選中
Toolchain:設定為 Custom
toolchain,使用使用者自己的交叉編譯器。
Toolchain
origin:設定為
Pre-installed toolchain,使用預裝的交叉編譯器。
Toolchain
path:交叉編譯器絕對路徑。
Toolchain
prefix:設定交叉編譯器字首,arm-linux-gnueabihf-gcc。
配置好如下圖:
3、配置 System configuration
此選項用於設定一些系統配置,比如開發板名字、歡迎語、使用者名稱、密碼等。需要配置的 專案和其對
應的內容如下:
System configuration
-> System hostname = iTOP-IMX6UL //平臺名字,自行設定
-> System banner = Welcome to iTOP-IMX6UL //歡迎語
-> Init system = BusyBox //使用 busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用
mdev
-> [*] Enable root login with password (NEW) //使能登入密碼
-> Root password = topeet //登入密碼為 topeet
在 System configuration 選項中可以配置平臺名字,登入密碼等資訊。
配置好如下圖:
4、配置 Filesystem images
-> Filesystem images
-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的話就用 ext3/ext4
-> ext2/3/4 variant = ext4 //選擇 ext4 格式
-> [*] ubi image containing an ubifs root filesystem //如果使用
NAND 的話就用 ubifs
配置好如下圖:
5、禁止編譯 Linux 核心和 uboot
由於從網上下載核心原始碼和 uboot 然後編譯他們比較耗費時間,而且新下載的核心原始碼,與 uboot 沒有
我們開發板的配置資訊,所以需要禁用它們。
禁止 Linux 核心的編譯,配置如下:
> Kernel
-> [ ] Linux Kernel //不要選擇編譯 Linux Kernel 選項!
接著禁止編譯 Uboot,配置如下:
-> Bootloaders
-> [ ] U-Boot //不要選擇編譯 U-Boot 選項!
6、配置 Target packages
此選項用於配置要選擇的第三方庫或軟體、比如 alsa-utils、iperf 等工具,但是現 在我們先不選
擇第三方庫,先編譯一下最基本的根檔案系統,如果沒有問題的話再重新配置選擇第三方庫和軟體。否則
編譯出問題的時候都不知道怎麼找問題。
接下來重要的一步檢查自己的交叉編譯,預設支援的核心版本。輸入命令:
vim
/usr/local/arm/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/
version.h
如圖:
如上圖所示 LINUX_VERSION_CODE 為 262144,此值為 10 進位制,轉換為 16 進製為 40000,對應的 linux
核心版本為 4.0.x,在此要把該值改為與 buildroot 中配置的一致,即為 4.1.x,轉換為 16 進製為 40100,
對應的十進位制為 262400。(不這樣的話會報錯)。
使用命令“make”進行編譯,等待編譯完成,編譯完成以後就會在 buildroot-2021.02.3/output/images
下生成根檔案系統。進入到 images,可以見生成的 rootfs.tar,我們新建一個 system 資料夾。
將 rootfs.tar 拷貝到 system 下解壓,並刪去原來的 rootfs.tar。得到檔案如下圖所示:
使用命令“vim ./etc/profile”為開發板終端這是名稱和路徑顯示功能。
新增以下內容如圖:
PS1='[$USER@$HOSTNAME]$PWD# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
儲存,退出。
使用命令:
tar -vcjf rootfs.tar.bz2 ./*
“ls”命令檢視如圖:
將生成的 rootfs.tar.bz2 替換燒寫工具中的檔案系統燒寫到開發板,驗證其正確性。
燒寫成功後啟動如圖: