树莓派编译ArchLinux aarch64内核

升级树莓派

树莓派用了一段时间之后发现,我之前装的系统是32位的 ArchLinux
但树莓派4b本身是支持64位系统的,所以捣鼓了一天,把系统升级了一下
其实也就是编译了一个系统

还有就是官方的 aarch64 镜像有问题,按照 wiki 安装是无法成功的
现在可以安装 64 位 ArchLinux 的方法只能自己编译一个了

编译准备

先安装编译需要用到的交叉编译软件

1
sudo pacman -S aarch64-linux-gnu-gcc

下载树莓派的内核

1
git clone -b rpi-5.15.y --depth=1 https://github.com/raspberrypi/linux.git raspberrypi-linux
  • -b 表示分支,可以去 GitHub 上选择需要的分支

https://github.com/raspberrypi/linux

开始编译

进入下载好的目录

1
2
cd raspberrypi-linux
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

多线程编译

1
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 8
  • -j 表示同时使用几个线程编译

将编译好后的整个文件夹拷贝到树莓派中,这里我是直接把 TF 卡挂载到电脑上复制的

1
cp -r raspberrypi-linux /mnt/home/nero

生成内核模块

连接上树莓派,进入刚刚复制的目录,进入到 arch/arm64/boot 中

1
cd raspberrypi-linux/arch/arm64/boot

然后执行如下命令

1
2
3
4
cp Image /boot/kernel8.img
cp dts/broadcom/*.dtb /boot/
cp dts/overlays/*.dtb* /boot/overlays/
cp dts/overlays/README /boot/overlays/

回到 raspberrypi-linux 目录下
安装 kmod 依赖

1
sudo pacman -S kmod

执行如下命令

1
make ARCH=arm64 modules_install

最后修改 /boot下的 config.txt 文件

1
arm_64bit=1 kernel=kernel8.img

删掉了一行,修改了一行

重启 reboot

进入树莓派,查看是否成功

1
uname -m

成功!


上午刚考完科目一,99过了,高兴 ♪(^∀^●)ノシ
下午又捣鼓到了晚上,捣鼓成功了,舒爽 (●´∀`)♪
今天既体会到了高兴,又解决了想做的事情,真是快乐的一天啊 (¦3[▓▓]