趣小组
[ MAKE ]
首页
节点
分享
创造
问与答
二手交易
编程
电子
树莓派
Arduino
手工
小玩意
ACG 二次元
科学
文化
电影
宠物
旅行
技术支持
登录
注册
首页
树莓派
编译树莓派4b 5.9 Linux内核
九年吃菜粥
38.85m
•
2020-10-14
•
1890 次点击
•
3 人收藏
•
2 人感谢
> 文中的操作是在x86 docker的Ubuntu容器中进行操作,因为子系统编译时好像cpu吃不满 > 文中命令全部用root用户执行 1. 首先下载树莓派的内核 github地址:[https://github.com/raspberrypi/linux](https://github.com/raspberrypi/linux) 可以直接使用`git clone --depth=1 --branch rpi-5.9.y https://github.com/raspberrypi/linux`来下载5.9版本的内核 个人建议从github直接下载zip包 2. 然后下载交叉编译工具(X86_64编译arm64) [下载链接](https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz) gcc-7.5.0-2019.12-x86_64_aarch64 截至2020年10月13日,该交叉编译工具为最新版本 3. 安装依赖项 `apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev` 4. 解压操作 ```shell unzip linux-rpi-5.9.y.zip ~/linux-rpi-5.9 tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz mv ./gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu ~/gcc-linaro ``` 5. 把交叉编译工具添加到环境变量 首先`nvim ~/.bashrc` 在.bashrc后面加上:`export PATH=$PATH:~/gcc-linaro/bin` 然后执行`source ~/.bashrc`刷新环境变量 6. 进行编译前的处理 首先进入内核目录 如果你要用默认配置进行编译,执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig` 如果你要自定义某些配置,执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711`后,再执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig`,会弹出内核配置窗口进行配置 7. 启动编译过程 `make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-` 整个编译时间可能会比较长,根据编译机器的硬件处理器数量来制定同时使用多少线程编译(`-j{n}`,这里同时使用8个线程)。 8. 生成编译后的文件 `make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=../ modules_install` 这会在路径下生成一个`lib`文件夹,将该文件夹拷贝到树莓派上 9. 在树莓派上执行内核替换 首先切换目录:`lib/modules/5.9.0-v8/source/arch/arm64/boot` 执行以下命令: ```shell cp Image /boot/kernel8.img cp dts/broadcom/*.dtb /boot/ cp dts/overlays/*.dtb* /boot/overlays/ cp dts/overlays/README /boot/overlays/ ``` 10. 生成内核模块 在执行这一步之前你可能需要安装`kmod`依赖项 执行:`make ARCH=arm64 modules_install` 如果你是在交叉编译的机上直接进行安装,则要执行:`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=rootDirect modules_install` 11. 修改配置文件(可选) 树莓派默认是用32位内核启动,需要修改`boot`分区下的`config.txt`文件 ``` arm_64bit=1 kernel=kernel8.img ``` 12. 重启 执行`reboot` 启动后执行`uname -a`可查看内核版本
> 文中的操作是在x86 docker的Ubuntu容器中进行操作,因为子系统编译时好像cpu吃不满
> 文中命令全部用root用户执行
1. 首先下载树莓派的内核
github地址:[https://github.com/raspberrypi/linux](https://github.com/raspberrypi/linux)
可以直接使用`git clone --depth=1 --branch rpi-5.9.y https://github.com/raspberrypi/linux`来下载5.9版本的内核
个人建议从github直接下载zip包
2. 然后下载交叉编译工具(X86_64编译arm64)
[下载链接](https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz)
gcc-7.5.0-2019.12-x86_64_aarch64
截至2020年10月13日,该交叉编译工具为最新版本
3. 安装依赖项
`apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev`
4. 解压操作
```shell
unzip linux-rpi-5.9.y.zip ~/linux-rpi-5.9
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
mv ./gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu ~/gcc-linaro
```
5. 把交叉编译工具添加到环境变量
首先`nvim ~/.bashrc`
在.bashrc后面加上:`export PATH=$PATH:~/gcc-linaro/bin`
然后执行`source ~/.bashrc`刷新环境变量
6. 进行编译前的处理
首先进入内核目录
如果你要用默认配置进行编译,执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig`
如果你要自定义某些配置,执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711`后,再执行`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig`,会弹出内核配置窗口进行配置
7. 启动编译过程
`make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-`
整个编译时间可能会比较长,根据编译机器的硬件处理器数量来制定同时使用多少线程编译(`-j{n}`,这里同时使用8个线程)。
8. 生成编译后的文件
`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=../ modules_install`
这会在路径下生成一个`lib`文件夹,将该文件夹拷贝到树莓派上
9. 在树莓派上执行内核替换
首先切换目录:`lib/modules/5.9.0-v8/source/arch/arm64/boot`
执行以下命令:
```shell
cp Image /boot/kernel8.img
cp dts/broadcom/*.dtb /boot/
cp dts/overlays/*.dtb* /boot/overlays/
cp dts/overlays/README /boot/overlays/
```
10. 生成内核模块
在执行这一步之前你可能需要安装`kmod`依赖项
执行:`make ARCH=arm64 modules_install`
如果你是在交叉编译的机上直接进行安装,则要执行:`make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=rootDirect modules_install`
11. 修改配置文件(可选)
树莓派默认是用32位内核启动,需要修改`boot`分区下的`config.txt`文件
```
arm_64bit=1
kernel=kernel8.img
```
12. 重启
执行`reboot`
启动后执行`uname -a`可查看内核版本
收藏
♥ 感谢
Spoony
小组长
2020-10-14
步骤非常清晰
九年吃菜粥
38.85m
2020-10-14
♥ 1
@Spoony
本来想的linux5.9用了新的的CPU资源调度器,性能可能会好一些
整完才发现,对于滚动更新的发行版来说感知不强,现在默认采用的版本都是5.4,manjaro每两星期更新一次,每次都会小版本更新内核,就会把手动编译的内核覆盖掉
不过对于官方系统或不怎么更新系统的人还是有点用的
FANG
12.15m
2020-10-16
很完整的步骤
Tony
219m
2020-10-16
应该是我见过最完整的了
Caner
10cm
2022-01-13
为什么我在编译到第10步生成内核模块的时候,执行make ARCH=arm64 modules_install,系统提示
make: *** 没有规则可制作目标“modules_install”。 停止。
这该怎么处理?
Caner
10cm
2022-01-13
♥ 1
@Caner cd 到soure 目录在重新make 即可
相逢已是初识
156.8m
2022-01-15
很全
登录
或
注册
后可回复。
›
树莓派制造
›
树莓派实验室
›
树莓派 Pico 中文站
›
Raspberry Pi Foundation
›
Raspbian
›
Adafruit
› 相关内容关注微信公众号