ODROID-C4

Kernel

Kernel

本頁介紹如何下載和編譯ODROID-C4的Linux內核。

交叉編譯 - HOST-PC/Ubuntu

安裝時所需要的套件

在開始在 Ubuntu 桌面上構建 Linux 內核之前,您需要安裝所需的套件。

				
					$ sudo apt-get update
$ sudo apt-get install git lzop build-essential gcc bc libncurses5-dev libc6-i386 lib32stdc++6 zlib1g:i386
				
			

Toolchain (6.3.1)

單擊站點之一下載工具鏈以構建 Linux kernel。

下載完成後,將 tarball 解壓縮到/opt/toolchains/

				
					$ sudo mkdir -p /opt/toolchains
$ sudo tar Jxvf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/toolchains/
				
			

要將工具鏈路徑添加到 PATH,請將以下行粘貼到 $HOME/.bashrc

				
					export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export PATH=/opt/toolchains/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/:$PATH
				
			

如果您再次登錄或導入以應用此更改,則可以應用更改,再次登錄或使用 source 命令評估 $HOME/.bashrc

				
					$ source ~/.bashrc

				
			

您可以在檢查工具鏈版本的同時檢查上面安裝的工具鍊是否正常工作。如果你能在行尾找到 gcc version 6.3.1 20170109,那麼就代表工具鏈安裝好了。

				
					$ aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/opt/toolchains/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin
 
...
 
gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)
				
			

檢查

您可以從 Hardkernel’s Github 中查看 Linux 內核原始碼樹,請注意,我們將 Linux kernel 分發到 Android 和其他 Linux 發行版的不同分支中。

Linux

				
					$ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidg12-4.9.y
$ cd linux
				
			

Android

				
					$ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidg12-4.9.y-android
$ cd linux
				
			

編譯

筆記

  • 如果您只想下載和構建Android Linux 內核源代碼而不需要其他 Android BSP,您將面臨如下錯誤消息:
    驅動程序/amlogic/wifi/Kconfig:26: 無法打開文件“../hardware/wifi/realtek/drivers/8192cu/rtl8xxx_CU/Kconfig”
  • 如果您只構建 Android Linux 內核,請刪除“drivers/amlogic/wifi/Kconfig”文件中的最後一行。

一般

				
					$ make odroidg12_defconfig
$ make -j$(expr $(expr $(nproc) \* 6) \/ 5)
				
			

以下是為了能夠滿足段落所需的長度而定義的無意義內文,請自行參酌編排。

自訂

如果您有一些內核驅動程序希望包含在您的自定義構建中,您可以在 Linux 內核樹中輕鬆選擇驅動程序。make menuconfig將顯示基於文本的選單,幫助您選擇內核驅動程序。

				
					$ make odroidg12_defconfig
$ make menuconfig
				
			

對於 Android, 使用“ odroidc4_android_defconfig ”而不是“ odroidg12_defconfig ”。選擇完驅動程序後,退出菜單屏幕。然後您可以再次使用make開始內核構建。

				
					$ make -j$(expr $(expr $(nproc) \* 6) \/ 5)

				
			

當您退出內核選單畫面時,您將在當前目錄中擁有.config為您的自定義構建所做的更改。

安裝

您可以從 Hardkernel’s Github 中查看 Linux 內核原始碼樹,請注意,我們將 Linux kernel 分發到 Android 和其他 Linux 發行版的不同分支中。

Linux

請注意!本段說明假設您的 USB 存儲卡讀卡器分配在 /dev/sdc

1. 將啟動設備(eMMC 或 SD)插入 USB 存儲卡讀卡器並將 USB 存儲卡讀卡器連接到您的主機 PC(Linux操作系統)。

2.將Image和DT(meson64_odroidc4.dtb)複製到Boot-Device中的FAT分區(第一分區)。

				
					$ mkdir -p mount
$ sudo mount /dev/sdc1 ./mount
$ sudo cp arch/arm64/boot/Image.gz arch/arm64/boot/dts/amlogic/meson64_odroidc4.dtb ./mount && sync && sudo umount ./mount
				
			
3. 將驅動模塊複製到Boot-Device中的EXT4分區(第二分區)。
				
					3. Copy the driver modules to the EXT4 partition(2nd partition) in the Boot-Device.

$ sudo mount /dev/sdn2 ./mount
$ sudo make modules_install ARCH=arm64 INSTALL_MOD_PATH=./mount && sync && sudo umount ./mount
$ rm -rf mount
				
			

Android

這是將內核映像安裝到引導卡的指令。您應該通過 android repo 構建啟動映像,因為啟動映像由根 ramdisk 和內核映像組成。
在android build根目錄下。

				
					$ make bootimage

				
			

這是安裝包含內核映像的引導映像。

				
					$ fastboot flash boot out / target / product / odroidc4 / boot.img

				
			

本機編譯 - ODROID-C4/Ubuntu

筆記

  • 8GB eMMC/SD 卡沒有足夠的空間來構建內核源代碼。
    為了進行本地編譯,至少需要5GB的可用空間。

安裝所需套件

在開始在 Ubuntu ODROID-C4 上構建 Linux 內核之前,您需要安裝所需的軟件包。
				
					odroid@odroid64:~$ sudo apt update
odroid@odroid64:~$ sudo apt install git
				
			

檢查

				
					odroid@odroid64:~$ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidg12-4.9.y
odroid@odroid64:~$ cd linux
				
			

編譯和安裝

				
					odroid@odroid64:~/linux$ make odroidg12_defconfig
 
You can edit .config file or run "make menuconfig" to add/remove Kernel drivers.
 
odroid@odroid64:~/linux$ make -j4
odroid@odroid64:~/linux$ sudo make modules_install
odroid@odroid64:~/linux$ sudo cp -f arch/arm64/boot/Image.gz /media/boot
odroid@odroid64:~/linux$ sudo cp -f arch/arm64/boot/dts/amlogic/meson64_odroidc4.dtb /media/boot/amlogic/
odroid@odroid64:~/linux$ sudo sync
odroid@odroid64:~/linux$ sudo reboot
				
			

此頁資訊皆從 ORDOID Wiki 進行翻譯,並經由 CC BY-SA 3.0 進行分享。