树莓派openEuler环境搭建
本文用的是Ubuntu18.04镜像,需要配置环境sudo apt-get install gccsudo apt-get install g++sudo apt install makesudo apt install make-guilesudo apt-get install libncurses5-devsudo apt install bison flexsudo apt install
本文参考自openeuler/raspberrypi的官方文档
https://gitee.com/openeuler/raspberrypi/tree/master/documents
本文用的是Ubuntu18.04镜像,需要配置环境
sudo apt-get install gcc
sudo apt-get install g++
sudo apt install make
sudo apt install make-guile
sudo apt-get install libncurses5-dev
sudo apt install bison flex
sudo apt install libelf-dev
sudo apt install libssl-dev
如果是Openeuler环境需要配置
sudo yum install flex bison
一、交叉编译内核
环境1
操作系统:ubuntu16.04
架构:x86_64
1. 安装依赖软件
apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y
2. 下载内核源码
根据内核不同版本,需要下载不同仓库的不同分支:
5.10 内核:
openEuler 21.09 :git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-21.09 && cd raspberrypi-kernel
openEuler 21.09 :git clone git@gitee.com:openeuler/kernel.git -b openEuler-21.03 && cd kernel
4.19 内核:
openEuler 20.03 LTS:git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.03-LTS && cd raspberrypi-kernel
openEuler 20.09:git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.09 && cd raspberrypi-kernel
报错公钥无权限的话可以直接到网页上下zip
https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-21.09/
3. 设置环境变量
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
4. 载入默认配置
根据内核不同版本,需要载入不同的默认配置:
5.10 内核
openEuler 21.09:make bcm2711_defconfig
openEuler 21.03:make bcm2711_defconfig
4.19 内核
openEuler 20.03 LTS:make openeuler-raspi_defconfig
openEuler 20.09:make openeuler-raspi_defconfig
对应的 defconfig 文件在 ./arch/arm64/configs 下。
5. 编译
make -j4
6. 将当前窗口所在路径配为WORKDIR标签
export WORKDIR=$PWD
7. 创建编译内核模块目录
mkdir ${WORKDIR}/ouput
8. 编译内核模块
make INSTALL_MOD_PATH=${WORKDIR}/output/ modules_install
在 ${WORKDIR}/output 文件夹下会生成 lib 文件夹。
9. 收集编译结果
(1) 内核
cp ${WORKDIR}/arch/arm64/boot/Image ${WORKDIR}/output/
(2) 设备树文件等
cp ${WORKDIR}/arch/arm64/boot/dts/broadcom/*.dtb ${WORKDIR}/output/
mkdir ${WORKDIR}/output/overlays
cp ${WORKDIR}/arch/arm64/boot/dts/overlays/*.dtb* ${WORKDIR}/output/overlays/
至此,所有内核及内核模块相关内容都在 ${WORKDIR}/output 下了,此时可以替换进树莓派镜像的SD卡里。
------------------------------------------------------------------------------------------------------------
环境2
操作系统:openEuler
架构:arm64
此环境和树莓派的环境相同,流程和ubuntu 的基本相同,参考
documents/openEuler镜像的构建.md · openEuler/raspberrypi - Gitee.com
1. 下载内核代码
参考ubuntu环境,到网站上下zip包,用ssh传给树莓派并解压
2. 载入默认配置
5.10 内核
make bcm2711_defconfig
4.19 内核
make openeuler-raspi_defconfig
3. 编译
make -j8 //树莓派是4核,但是非常慢,5小时以上
后面的流程和ubuntu环境相同:
4. 将当前窗口所在路径配为WORKDIR标签方便操作
export WORKDIR=$PWD
5. 创建编译内核模块目录
mkdir ${WORKDIR}/ouput
6. 编译内核模块
make INSTALL_MOD_PATH=${WORKDIR}/output/ modules_install -j8
在 ${WORKDIR}/output 文件夹下会生成 lib 文件夹。
7. 收集编译结果
(1) 内核
cp ${WORKDIR}/arch/arm64/boot/Image ${WORKDIR}/output/
(2) 设备树文件等
cp ${WORKDIR}/arch/arm64/boot/dts/broadcom/*.dtb ${WORKDIR}/output/
mkdir ${WORKDIR}/output/overlays
cp ${WORKDIR}/arch/arm64/boot/dts/overlays/*.dtb* ${WORKDIR}/output/overlays/
至此,所有内核及内核模块相关内容都在 ${WORKDIR}/output 下了
-------------------------------------------------------------------------------------------------------------------------
二、编完可以直接替换内核并验证可用性
使用一个之前刷好 openEuler 树莓派镜像的 SD 卡,直接插到 Linux 主机上,SD 会默认挂载其 boot 分区和rootfs(根目录)分区,执行 df -lh 命令查看当前已挂载的卷,将这两个挂载路径配置成标签
export rootfs=/media/raspberry/955c3d53-5a13-4a10-9f26-e440b19de471
export boot=/media/raspberry/boot
将上面编译好的内核放置到SD卡对应分区。
1. 将内核模块放进rootfs
cp -r ${WORKDIR}/output/lib/modules ${rootfs}/lib/
2. 将内核放进引导
cp ${WORKDIR}/output/Image ${boot}/kernel8.img
如有需要也可先备份此文件再覆盖
3. 将设备树文件放进引导
cp ${WORKDIR}/output/*.dtb ${boot}/
cp ${WORKDIR}/output/overlays/* ${boot}/overlays/
然后可以参考正常树莓派的启动方法,用SD卡启动树莓派
查看内核时间戳可知内核已被替换
uname -a
例如原版
Linux openEuler 5.10.0-v8 #1 SMP PREEMPT Thu Jan 20 14:28:41 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
改后
Linux openEuler 5.10.0-v8 #1 SMP PREEMPT Fri Jan 21 11:47:55 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
---------------------------------------------------------------------------------------------------------------------------
三、LTP测试使用
Linux test project是一个linux测试程序的社区
github连不上的话可以参考以下链接,实测有用。
解决Github打不开问题 - 知乎 (zhihu.com)
在树莓派(arm64)环境下
1. 下载ltp
$ git clone https://github.com/linux-test-project/ltp.git
$ cd ltp
2. 生成makefile
$ make autotools
这一步host默认参数是x86的,要在其他架构上要注意配置
$ ./configure --host=aarch64
$ make -j8
$ make install -j8
$ cd /opt/ltp/
$ ./runltp
更多推荐
所有评论(0)