rockchip rk3568 板 LubanCat2 移植 openEuler操作系统记录 (1)
用惯了fedora体系linux系统的用户,在使用Ubuntu,debian的时候会发现一些命令使用起来不太习惯,而目前嵌入式开发在网上能够搜索到的资料大都是基于ubuntu的。前段时间刚好做过类似的系统移植。所以决定把自己适配LubanCat的点点滴滴记录下来。这次记录分享的内容是向LubanCat-2移植国产的操作系统openEuler的大致过程.
使用的硬件环境:Lubancat-2
这次的操作内容:使用openEuler的内核和文件系统,对LubanCat2原有的debian系统进行替换。
记录的内容分为三部分:
1.内核部分的适配
2.文件系统的适配
3.系统替换
正文开始:
1.内核部分的适配
1.1准备内核源码:
版本选取考虑因素:LubanCat-2板卡是在Linux Kernel mainline 6.3-rc1获得的支持,因此想要在lubancat-2上运行openEuler,初步考虑选择OLK内核6.6版本,获得这个版本的操作如下:
git clone https://gitee.com/openeuler/kernel.git
cd kernel
git branch -a
切换到OLK-6.6分支,在这个分支上适配lubancat-2板卡:
git checkout -B olk66 remotes/origin/OLK-6.6
git log --oneline
OLK分支是openEuler长期维护分支,后期可能因为这个分支合入新的特性,本文所作的适配会编译不通过,所以这里记录一下commit,保证checkout到这个commit后,后文的适配能够让板卡运行起来。
1.2工具链准备:
工具链的准备分为三个部分1)host机器需要安装的rpm包,2)交叉编译工具,3)个人对于这次适配制作的补丁,配置文件和相关脚本。
1.2.1)host机器需要安装的rpm包:
yum install openssh openssl-devel openssl binfmt-support lz4 lz4-devel qemu-user-static live-build gcc-multilib g++-multilib device-tree-compiler ncurses-libs ncurses-devel p7zip dpkg-devel
1.2.2)交叉编译工具使用LubanCat官方提供的工具:
https://github.com/LubanCat/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.git
可以到这个repo中获取zip压缩包
1.2.3)关于这次适配我个人制作的工具可以到码云进行获取。仓库地址:https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git
1.3编译内核:
1.3.1)配置交叉编译环境
mkdir -p /root/cross_tools
mv gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu-master.zip /root/cross
pushd /root/cross_tools
unzip gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu-master.zip
popd
export PATH=$PATH:/root/cross_tools/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu-master/bin
export LIBRARY_PATH=$LIBRARY_PATH:/root/cross_tools/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu-master/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/cross_tools/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu-master/lib
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
1.3.2)添加defconfig文件
回到前文所说的kernel目录,将工程https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git中的文件lubancat2_oe_defconfig复制到kernel工程的arch/arm64/configs/目录下
cp LubanCat_SDK_For_OpenEuler/kernel_adaptation/lubancat2_oe_defconfig kernel/arch/arm64/configs
1.3.3)给内核打入调试串口补丁
将工程https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git中的补丁Add-fiq-debugger.patch打入到kernel工程
patch -p1 < Add-fiq-debugger.patch
1.3.4)适配内核设备树
将工程https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git中的补丁Adapt-dts-for-rk3568-lubancat-2.patch打入到kernel工程
patch -p1 < Adapt-dts-for-rk3568-lubancat-2.patch
1.3.5)编译
使用仓库中的lubancat2_oe_defconfig 文件
pushd kernel
make ARCH=arm64 lubancat2_oe_defconfig ,这一步要等适配完文件最后在做,不然还没有的配置不会被设置上
make -j4
pupd
编译成功后会在kernel/arch/arm64/boot目录下生成Image文件,会在kernel/arch/arm64/boot/dts/rockchip/生成配套硬件环境的dtb文件。
1.4制作内核镜像
前文1.3的部分内核编译完成,但是我们还没有得到能够烧写如开发板镜像。运行https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git工程中的镜像生成脚本kernel_img_gen.sh,可生成boot.img文件。
bash kernel_img_gen.sh kernel 这里的参数是kernel的路径
脚本运行的过程中需要使用genext2fs工具,如果自己的开发机器上没有这个工具,可以使用https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git工程中tools_rpm/genext2fs/工程,制作rpm包并安装到开发机器上。
2.文件系统的适配
能够制作根文件系统的工具有很多,如busybox, buildroot,yocto,使用这些工具都需要进行复杂的配置,且编译的过程中也会遇到各种各样的问题,所以这里使用了一种很取巧的方法来生成根文件系统——使用aarch64架构的运行正常的环境生成根文件系统。这个方案最大的难题就是大多数人使用的开发环境都是x86架构的。要如何获得一个能够运行的aarch64环境是解决问题的关键
方法:在x86的环境上通过qemu模拟一个aarch64的环境,在在这个虚拟的aarch64环境上运行docker(docker的镜像使用openeuler-24.03-LTS,获取地址:repo.openeuler.org/openEuler-23.09/docker_img/aarch64/).关于qemu的使用和配置,会在后续为大家做详细的介绍。
在运行的docker环境中运行https://gitee.com/wang--ge/LubanCat_SDK_For_OpenEuler.git工程中rootfs_generator/mk-rootfs工程。制作rpm包。
rpmbuild -ba mk-rootfs.spec rpm包制作完成后使用rpm2cpio解压,或者进行安装,就会在目录usr/share/mk-rootfs下得到根文件系统镜像rootfs.img
3.系统替换
内核镜像root.img,根文件系统镜像rootfs.img都有了,我们就可以对原始的debian环境进行替换。运行烧录工具RKDevTool。
将内核镜像和文件系统镜像进行替换,点击执行

写入结束后系统重启,启动后期会显示ttyFIQ0设备enable,这时需要按下回车,才会出现debug的输入提示符

输入回车后,出现debug提示符:

提示符后输入console,进入控制台模式,回车即进入登录状态。

输入在制作根文件系统时脚本中设置的用户和密码,登录成功

至此,lubancat移植openEuler系统初步完成。后续会记录下驱动的适配过程和大家分享。



浙公网安备 33010602011771号