前言

::(药丸)涉及内核,炸鸡了不要怪我哟~ ::(药丸)
本文参考了人生长恨水斐斐のBlog的文章,如有侵权请联系ME
本文主要是我怕忘记才写的QAQ,因为经常忘事//w//,还有一个原因是因为我看到的都是做rootfs啥的所以就写了这篇文章
目前我手头上的4b是2711可以用,具体看一这张图片或百度看看你的CPU是否支持
其实。。。我早就想写了一直咕咕咕到现在才填坑

诶欸?!你要白嫖?也。。。也不是。。不可以了。。(小声)传送门

准备工作

以下为我的环境

  • 编译环境:ArchLinux x64
  • 交叉编译环境:aarch64-linux-gnu-gcc55
  • CPU:Ryzen7 1700x (编译会跑满CPU!!! AMD! YES!)
  • Memory:16GB
  • 树莓派:4b

开始

安装编译所需要的环境make git flex libssl-dev vbuild-essential bison如果缺啥那就补上
GCC的话我这里直接装了aarch64-linux-gnu-gcc55
Github下载内核编译文件,-b是选择分支这里的rpi-5.11.y是对应仓库的分支可根据需求选择内核版本,rpi-linux是我git下来存放的目录可以自己修改(只要自己记得)

git clone -b rpi-5.11.y --depth=1 https://github.com/raspberrypi/linux.git rpi-linux


编译

cd进入编译目录

cd rpi-linux

这里生成的是.config文件详细解释看原作者的吧

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

make一个编辑.config的GUI界面,这里可以自己修改想要的内核配置

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

接下来就是重头戏(CPU酱!让我康康你的力量吧!
ARCH为架构,-j16为编译需要的县城(雾,主要看CPU)数

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs -j16

稍等片刻新鲜出炉的内核就出锅了!
最后需要把编译好的文件弄进树莓派
我这里是预先mkdir好了rpi、mnt和boot文件夹下面是目录结构

~/rpi
    |-mnt
    |-boot

copy内核文件,后面的kernel8-5.11也可以换成自己记得住的名称

sudo cp arch/arm64/boot/Image ~/rpi/boot/kernel8-5.11.img

安装Modules到目录

sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=~/rpi/mnt modules_install

再复制一些boot内的文件备用

sudo cp arch/arm64/boot/dts/broadcom/*.dtb ~/rpi/boot
sudo cp arch/arm64/boot/dts/overlays/*.dtb* ~/rpi/boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README ~/rpi/boot/overlays/

然后把我们创建的文件拷进树莓派

最后

cd进我们拷好的文件夹
把文件拷进对应的文件夹里
拷dtb那些文件,如果有了就可以不用拷了

sudo cp ./boot/*.dtb /boot
sudo cp ./boot/*.dtb* /boot/overlays/
sudo cp ./boot/overlays/README /boot/overlays/

copy内核文件,这里用kernel8-5.11请以实际文件名为准

sudo cp ./boot/kernel8-5.11.img /boot

Modules文件
先ls一下./mnt/lib/modules/的文件夹名,我这里用5.11.0-rc8-v8-For-Clara+代替请以实际文件夹名为准

sudo cp -r ./mnt/lib/modules/5.11.0-rc8-v8-For-Clara+ /lib/modules/

然后修改启动文件config.txt
在里面添加两行,如果有了那就换kernel行对应的名称,arm_64bit=1这个1为开启64位内核支持关闭同理

kernel=kernel8-5.11.img
arm_64bit=1

大功告成!reboot一下,如果不出意外就可以开机了
验证一下=w=

uname -a

屏幕截图 2021-01-17 005256.jpg
显示aarch64就是成功了