期末考大補帖

快速導覽

ARMHF 核心編譯前置準備

安裝虛擬機、基本套件以及依賴程式

# apt-get install qemu-system-arm -y

查看支援的平台

# qemu-system-arm -M ? | grep vexpress
vexpress-a9 就是我們要用的平台

安裝 uboot 工具套件

# apt-get install u-boot-tools -y

橋接介面的設定權限

# chmod u+s /usr/lib/qemu/qemu-bridge-helper

然後對 bridge.conf 新增 br10 的允許權限,先新增資料夾

# mkdir /etc/qemu

注意:預設是用 br10,實際上請按照老師指定的橋接介面做允許

# nano /etc/qemu/bridge.conf

加入一行指令

allow br10

儲存並退出

設定環境變數 (注意使用權限)

先回到普通使用者家目錄 (eecs)

$ cd

編輯 .bashrc 檔案

$ nano .bashrc

最底下加入這一行並且儲存退出

alias makearm="make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-"

最後重新載入環境變數

$ source ~/.bashrc

開始編譯核心 [注意權限,務必使用普通使用者(eecs)]

核心參數設定

回到使用者家目錄

$ cd

進入 virtualarm 資料夾

$ cd virtualarm

將核心原始碼 (linux-3.16.81.tar.xz) 解壓縮到 kernel 資料夾

$ tar xfva linux-3.16.81.tar.xz -C kernel

進入 kernel 資料夾

$ cd kernel

進入剛剛解壓縮出來的核心原始碼資料夾

$ cd linux-3.16.81

載入預設的設定檔

$ makearm vexpress_defconfig

進入設定核心畫面 (總共有三個項目需要修改)

Tips: 上下鍵選擇光棒、按下空白鍵可以選擇/取消項目、按下 Enter 可以進入下一頁、按兩下 Esc 返回上一頁

$ makearm menuconfig
這是初始畫面

修改核心參數,第一項找到 General setup 底下的 open by fhandle syscalls 將他啟用

General setup
啟用 open by fhandle syscalls

第二項,找到 System Type 底下的 Enable the L2x0 outer cache controller 將他取消選取

System Type
取消選取 Enable the L2x0 outer cache controller

第三項,找到 Enable the block layer 底下的 Support for large (2TB+) block devices and files 將他啟用

Enable the block layer
啟用 Support for large (2TB+) block devices and files

儲存核心參數並且退出設定畫面

選擇 < Yes > 儲存設定

正式編譯核心

$ time makearm uImage LOADADDR=0x60000000 -j8
核心編譯完成

驗收這顆核心

$ file arch/arm/boot/uImage

打包驅動程式模組

$ time makearm modules -j8

回到上一層資料夾 (~/virtual/kernel/) 建立一個 modules 資料夾

$ cd ..
$ mkdir modules

再次進入 linux-3.16.81 資料夾

$ cd linux-3.16.81

安裝 modules 檔案到上一層的 modules 資料夾

$ makearm modules_install INSTALL_MOD_PATH=../modules/
馬上就複製完了

進入到上一層的 modules 資料夾

$ cd ../modules

開始打包驅動程式模組

$ time tar cfa ../modules-3.16.81.tar.xz lib
打包完成

嘗試著開機

進入 ~/virtualarm/kernel/linux-3.16.81/arch/arm/boot 目錄底下

$ cd ~/virtualarm/kernel/linux-3.16.81/arch/arm/boot

輸入以下指令讓他試著開機

$ qemu-system-arm -M vexpress-a9 -m 256 -nographic -kernel zImage
看到 Kernel panic 表示他成功開機開到發瘋

核心到此編譯完成,這個畫面按下 Ctrl + A 放開然後馬上按 X 可以離開

SHXJ
Latest posts by SHXJ (see all)

發佈留言