【鲁班猫2】构建buildroot系统

1,准备工作

下载必备软件包,此处我用的为如下包

前置软件包:sudo apt install -y sed make binutils build-essential gcc g++ patch gzip bzip2 perl tar cpio unzip rsync file bc wget
buildroot版本:https://buildroot.org/downloads/buildroot-2022.05.1.tar.gz
交叉编译器版本:https://mirrors.aliyun.com/armbian-releases/_toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz?spm=a2c6h.25603864.0.0.6e933441kRP7sW

2,配置buildroot

2.1 配置芯片相关内容

Target options配置
  1. Target Architecture (AArch64):指定目标体系结构为AArch64(也称为ARM64),这是适用于64位ARM处理器的架构,此处配置为小端模式。
  2. Target Binary Format (ELF): 选择目标二进制文件的格式,ELF(Executable and Linkable
    Format)是常见的目标文件格式。
  3. Target Architecture Variant (Cortex-A55):选择特定的处理器型号,这里是Cortex-A55,适用于rk3568,它是ARM的一个节能处理器内核,适用于移动设备和嵌入式系统。
  4. Floating point strategy (FP-ARMv8):指定浮点运算的策略,FP-ARMv8代表使用ARMv8架构的浮点单元。
    在这里插入图片描述
Build options

默认配置即可

Toolchain
  1. Toolchain type (External toolchain): 选择工具链类型,外部工具链表示使用已经存在的工具链。
  2. Toolchain origin (Pre-installed toolchain): 选择预装的工具链路径。
  3. Toolchain prefix: 设置工具链的前缀,指定目标架构工具链的前缀名称。
  4. External toolchain gcc version: 选择外部工具链的 GCC 版本。
  5. External toolchain kernel headers series: 选择内核头文件的版本。
  6. External toolchain C library: 选择使用的 C 库版本,如 glibc。

在这里插入图片描述

System configuration
  1. 在 Buildroot 的 System configuration 中,/dev management 配置为 Dynamic
    using devtmpfs + mdev 意味着设备文件管理将采用动态方法。

    • devtmpfs: 是一个内核提供的临时文件系统,它会自动在 /dev 目录中创建基本的设备文件。
    • mdev: 是 busybox 提供的一个轻量级设备管理工具,负责在系统启动时及设备热插拔时动态管理 /dev 中的设备节点。

    这种组合适用于轻量级嵌入式系统,减少了对更复杂的设备管理守护程序(如 udev)的依赖。

在这里插入图片描述

到此全部配置完成。

2.2 编译

进行编译

make -j8

编译到一定过程中会提示报错,是因为我们RK3568 使用的内核镜像版本为4.19.232版本(查看版本可在开发板输入,uname -r查看),在buildroot中要配置一致,即为4.19.232,转换为16进制为0413E8,对应的十进制为267240
在这里插入图片描述
对此我们需要修改编译器下的一个文件,路径为:/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/linux/version.h

#define LINUX_VERSION_CODE 267240
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

即可,然后继续编译,到此编译已经全部完成,在output目录下的images下会生成rootfs.tar压缩包

3,打包文件系统

  1. 进入到output/images 目录下找到rootfs.tar ,然后创建两个文件夹,分别为sys和rootfs
  2. 解压rootfs.tar出来到sys文件夹:tar -xvf rootfs.tar -C sys/
  3. 在制作一个为.img格式的文件输入:dd if=/dev/zero of=rootfs.img bs=1M count=你想要的大小,符和文件系统大小
  4. 在格式化:mkfs.ext4 rootfs.img
  5. 在挂载img,sudo mount rootfs.img rootfs
  6. 复制sys的文件到挂载的文件中:sudo cp -rfpd sys/* ./rootfs
  7. 取消挂载sudo umount rootfs
  8. 修复及检测镜像文件系统:sudo e2fsck -p -f rootfs.img
    在这里插入图片描述

4,下载文件系统

  1. 删除原来LubanCat_SDK/rockdev下的rootfs.img ,将我们生成的rootfs.img拷贝到该目录
  2. 在使用./build/sh updateimg 重新打包烧录即可
    在这里插入图片描述

烧录完成,顺利进入buildroot文件系统
在这里插入图片描述

5,添加qt以及weston以及适配

### 鲁班2适配到鸿蒙系统开发指南 要将鲁班2适配到鸿蒙系统,需综合考虑Buildroot的特性以及鸿蒙系统的架构设计。以下是关于如何实现这一目标的关键技术要点: #### 1. 构建环境准备 为了使鲁班2能够运行在鸿蒙系统上,首先需要搭建适合鸿蒙的交叉编译环境。鸿蒙系统基于LiteOS内核或其他定制化Linux内核,因此需要调整Buildroot中的`System configuration`以匹配鸿蒙的需求[^1]。 ```bash make menuconfig ``` 通过上述命令进入菜单配置界面,在此过程中可以设置内核支持选项,例如启用`Dynamic using devtmpfs + mdev`来确保设备文件管理方式兼容鸿蒙的要求。 #### 2. 设备驱动移植 由于鸿蒙系统可能不完全支持标准Linux下的某些硬件接口,因此需要对鲁班2上的特定外设进行驱动程序迁移或重写。这一步骤涉及分析现有驱动代码并将其转换成符合鸿蒙API规范的形式。 对于动态设备管理部分,利用`mdev`作为轻量级解决方案可以帮助简化该过程。具体操作如下所示: ```c #include <sys/mount.h> int main() { // 挂载devtmpfs至/dev目录下 mount("devtmpfs", "/dev", "devtmpfs", MS_MGC_VAL, NULL); system("/sbin/mdev -s"); // 初始化mdev服务 return 0; } ``` 以上脚本展示了如何手动挂载`devtmpfs`并将控制权交给`mdev`完成后续初始化工作。 #### 3. 用户权限设定 根据已知信息,鲁班默认提供了两组预定义账户:超级用户(root/root)与普通用户(cat/temppwd)[^2]。当迁移到新平台时,应重新审视这些账号的安全策略是否仍然适用,并作出相应修改。 建议仅保留必要级别的访问权限,同时加强密码复杂度或者引入额外的身份验证机制(如SSH密钥认证)提升整体安全性水平。 #### 4. 测试迭代优化 最后阶段是对整个集成流程进行全面测试,包括但不限于功能验证、性能评估等方面的内容。如果初次尝试未能达到预期效果,则按照既定方案循环执行修正动作直至满足需求为止。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值