编译开不了机的 ARM HF Linux 核心

ARM 架构说明

在 Debian Linux 底下分别支援三种版本的 ARM 架构,分别是

  • armel – 没有 FPU 的 ARM CPU
  • armhf – 有 FPU,可以硬体执行浮点运算的 ARM CPU
  • arm64 – 64 位元的 ARM CPU

这个学期使用 armhf 作为主要的工具链 (toolchain),是建构嵌入式系统的基本工具。

前置作业

请先安装toolchain: 安装 linux (armhf) toolchain

以及让 x86 支援 armhf 平台: 在 x86 底下支援各种 arm 平台

※注:本篇文章中的核心版本 linux-3.16.81 请依照实际版本替换

STARTO!

先安装模拟器 (使用 root 权限)

首先安装 qemu 模拟器

apt-get install qemu-system-arm -y

查看支援的平台

qemu-system-arm -M ?

安装依赖包

apt-get install u-boot-tools -y

设定环境变数 (使用 eecs 权限,这边没做后面全部都没办法做)

编辑 /home/eecs 目录底下的 .bashrc 在最底下加入这行

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

之后要载入环境变数

source ~/.bashrc

开始编译核心 ※切记:千万一定记得切回 eecs 使用者

进入之前建立的资料夹 ~/virtualarm 资料夹,如果没有就建立一个

cd ~/virtualarm

将核心档案下载到这里

wget https://debian.shxj.pw/share/debian/linux-3.16.81.tar.xz

新建一个 kernel 资料夹

mkdir kernel

将 核心档案解压缩到 kernel 目录

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

进入 kernel 资料夹

cd kernel

进入刚刚解压缩的资料夹

cd linux-3.16.81

载入预设的设定档

makearm vexpress_defconfig

进入核心设定画面

makearm menuconfig

修改核心参数

General setup —>
[*] open by fhandle syscalls

System Type —>
[ ] Enable the L2x0 outer cache controller

— Enable the block layer —>
[*] Support for large (2TB+) block devices and files

储存核心参数然后退出,再来编译核心

time makearm uImage LOADADDR=0x60000000 -j8
核心编译完成

验收这颗核心

file arch/arm/boot/uImage

打包驱动程式模组

time makearm modules -j8

在 virtualarm/kernel 底下建立 modules 资料夹

mkdir ../modules

安装 modules 档案

time makearm modules_install INSTALL_MOD_PATH=../modules/ -j8

进入 modules 资料夹

cd ../modules

打包 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

然后他开机就会开到发疯,待续

按下 Ctrl+A 再按下 x 即可退出

SHXJ
Latest posts by SHXJ (see all)

在〈编译开不了机的 ARM HF Linux 核心〉中有 3 则留言

  1. 自动引用通知: 整合虚拟 SD 卡 – SHXJ BLOG

发布回复给「阿德利企鹅」的留言 取消回复