一、环境准备
下载Linux Kernel源代码。 下面是以当前最新版本5.5.8为例,可以根据自己需要更换为其他版本。
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.8.tar.xz
解压源代码到当前路径的默认目录中
tar xvJf linux-5.5.8.tar.xz
下载ARM交叉编译工具链。 笔者的平台为x86 ubuntu 19.10系统,故不能直接使用默认的GCC环境。ARM交叉编译工具链可以在ARM Developer网站上下载,具体可以在如下网址中找到:ARM官方交叉编译工具链。也可以直接使用如下命令下载。
# 说明:由于下载过程非常慢,这里我加入了-b选项作为后台任务自动下载。
wget -b -O gcc-arm-9.2-aarch64-none-linux-gnu.tar.xz https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz?revision=61c3be5d-5175-4db6-9030-b565aae9f766&la=en&hash=0A37024B42028A9616F56A51C2D20755C5EBBCD7
下载完成后,解压到/usr/local路径下
sudo tar xvJf gcc-arm-9.2-aarch64-none-linux-gnu.tar.xz -C /usr/local
增加交叉编译工具链路径到环境变量中
export PATH=$PATH:/usr/local/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
这样之后就可以通过直接调用aarch64-none-linux-gnu-*来使用交叉编译工具链的各种命令了。
安装编译kernel需要的其他库文件。
sudo apt-get install -y libncurses-dev flex bison libssl-dev bc
二、安装QEMU
方案一: 直接通过apt-get安装。但根据linux版本不同,可能通过这种方式安装的qemu版本较低而出现各种问题,比如笔者在ubuntu 16.10上就只能安装到2.x版本,导致加载编译的Linux 4.x和5.x的内核均失败,困扰了很久才发现是版本过低问题。
sudo apt-get install -y qemu
方案二: 通过下载源代码编译最新版