buildroot构建hisi平台根文件系统和工具链

前面使用了arm-hisiv300-linux 工具链来作为Buildroot的外部工具链进行编译,然后遇到了很多编译问题。

https://blog.csdn.net/duapple/article/details/128516133?spm=1001.2014.3001.5501

这里不使用hisi的工具链,我们还是选择外部工具链,从远程下载工具链并安装。编译过程一切顺利,除了有的包下载非常缓慢以后,没有再报任何的编译问题,这里做个记录。

1. 下载最新源码

2. Menuconfig配置

Target options

Toolchain

可选的只有三种,直接选择ARM 2014.5

System configuration

Filesystem images

3. 编译及测试

sudo make

一切顺利。最后工具链会生成在output/host/opt/ext-toolchain 目录下。

duapple@92fa1c7e1a00:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain$ ls
arm-none-linux-gnueabi  bin  i686-pc-linux-gnu  lib  libexec  share
duapple@92fa1c7e1a00:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain$ ls bin
arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-cs         arm-none-linux-gnueabi-gcc-ar      arm-none-linux-gnueabi-ld       arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-cs-daemon  arm-none-linux-gnueabi-gcc-nm      arm-none-linux-gnueabi-nm       arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-elfedit    arm-none-linux-gnueabi-gcc-ranlib  arm-none-linux-gnueabi-objcopy  arm-none-linux-gnueabi-strip
arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-gcov        arm-none-linux-gnueabi-objdump  cache
arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-gdb         arm-none-linux-gnueabi-ranlib
arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-gcc-4.8.3  arm-none-linux-gnueabi-gprof       arm-none-linux-gnueabi-readelf

通过设置环境变量就能直接使用这个工具链了。然后可以用这个工具链来编译Hi SDK中的linux-3.4内核。

export PATH=$PATH:/media/data/workspace/buildroot-2022.02.8/output/host/opt/ext-toolchain/bin
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -j12

最后烧录uImagerootfs.jffs2

我这里烧录使用arm-hisiv300-linux 工具链编译的内核,arm-none-linux-gnueabi 工具链编译根文件系统,系统也是能够直接启动并运行成功的。

tips:最后测试发现,还是不使用hisi的编译工具链编译Buildroot根文件系统比较好。这样,编译过程都不报错,十分的顺利。

4. 集成Hi SDK中的kernel

尝试使用buildroot编译内核,试了3.4到5.10的内核,5.0以下的内核可以编译通过,但是烧录后无法启动,应该是hisi对该版本的内核做了适配的,因此无法直接使用官方的kernel版本。最后还是使用buildroot生成的工具链编译Hi SDK中的内核。

但是可以把Hi SDK中的kernel集成到Buildroot中去。这样还能解决根文件系统启动后,/lib/module下面没有内核模块的问题。另外还可以解决squashfs根文件系统启动无法创建/dev/console以及其它设备的问题,由于Buildroot识别不到kernel的配置,因此devtmpfs无法生效,导致devtmpfs没有挂载到/dev上。

先把kernel打包成.tar.xz格式的文件。

tar cvf linux-3.4.y.tar linux-3.4.y
xz -z linux-3.4.y.tar -0

然后将打包好的kernel放到Buildroot中去:

sudo cp linux-3.4.y.tar.xz /media/data/workspace/buildroot-2022.02.8/dl/linux/

最后需要配置Buildroot编译kernel,设置自定义版本:

然后保存配置并退出,重新编译即可。这是将使用Buildroot生成的工具链编译Hi SDK中的Linux内核。编译完成之后,会在output/images 下生成我们的uImage文件 。这时通过tftp烧录uImagerootfs.jffs2

此时能够发现,启动不会报/lib/modules 的错误了,并且可加载的ko文件也被放到了对应的位置。另外,kernel中配置的devtmpfs也生效了,devtmpfs目录挂载到了/dev下。按理来说,squashfs启动也能够正常了,不会因为无法在/dev下面创建/dev/console 而报错进不了console了。

squashfs测试

OK,启动正常。

# cat /proc/version
Linux version 3.4.35 (root@92fa1c7e1a00) (collect2: error: ld returned 1 exit status) #3 Mon Jan 2 23:44:06 CST 2023
# uname -a
Linux buildroot 3.4.35 #3 Mon Jan 2 23:44:06 CST 2023 armv5tejl GNU/Linux
# cat /usr/lib/os-release
NAME=Buildroot
VERSION=2022.02.8
ID=buildroot
VERSION_ID=2022.02.8
PRETTY_NAME="Buildroot 2022.02.8"
#

buildroot构建hisi平台根文件系统和工具链相关推荐

  1. 面对开发平台、数据、工具链和需求等信息不对称,AI 开发者如何进行破局?...

    AI 在社会发展进程中扮演着日益重要的角色.全球最具权威的 IT 研究与顾问咨询公司 Gartner(高德纳)对 AI 的未来发展给出了自己的预测,Gartner 首席分析师 Afraz Jaffri ...

  2. 研发平台演进:从工具链到开放平台

    在数字化的转型浪潮中,开发人员的生产力越来越被企业重视,提升团队研发效能.缩短TTM成为了实现企业战略目标的重要措施.企业中的研发团队从每个团队各自试验.探索,逐步整合基础设施.最佳实践.企业规范等, ...

  3. Linux根文件系统的文件镜像,构建小型Linux根文件系统镜像

    小型linux制作参考文档 1,构建镜像文件(100M) mkdir work dd if=/dev/zero of=/work/linux_root.img bs=1k count=100000 1 ...

  4. 使用 Packer、Ansible 和 Terraform 构建不可变的基础设施Devops工具链

    在容器编排领域,Kubernetes 已成为事实上的标准,而容器镜像 (Docker Image) 作为容器技术栈中最关键的创新之一,极大的推动了企业内部 Devops 运动的进程. 容器镜像所具有的 ...

  5. 制作buildroot根文件系统(三):使用mplayer播放视频

    文章目录 参考 前言 一.制作根文件系统 1.关于 mplayer 2.配置buildroot 3.编译buildroot 4.生成的根文件系统和工具链位置 二.测试根文件系统 1.解压根文件系统到N ...

  6. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  7. 根文件系统构建(Buildroot 方式)

    目录 何为buildroot? buildroot 简介 buildroot 下载 buildroot 构建根文件系统 配置buildroot 编译buildroot buildroot 根文件系统测 ...

  8. Buildroot根文件系统构建

    前面我们学习了如何使用 busybox 来构建根文件系统,但是 busybox 构建的根文件系统不其全,很多东西需要我们自行添加,比如 lib 库文件.在我们后面的驱动开发中很多第三方软件也需要我们自 ...

  9. 【正点原子MP157连载】第十九章 Buildroot根文件系统构建-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

最新文章

  1. 如何定一个合适的目标
  2. [转]Android最佳实践之:StrictMode介绍
  3. 4.Python基础语法(数字运算/字符串/列表/元组/字典/集合)
  4. 编码调试:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 12: illegal multibyte sequen
  5. Boost:基于boost::asio的延迟udp服务器测试程序
  6. Http状态码完整说明
  7. mac os x10.9.2 查看进程对应端口
  8. 技术人员如何"正确"的浪费时间?
  9. java开发 时间类型的转换
  10. 名言为什么不能当论据_为什么您的工作场所论据没有您想要的那么有效
  11. c专家编程(C专家编程pdf)
  12. 二阶系统阶跃响应实验__ 二阶系统的阶跃响应实验报告
  13. 电信各种视频免流卡申请地址合集附地址失效解决方法
  14. mysql error 1_mysql 启动错误(InnoDB: Operating system error number 1
  15. 03Java常用API-17. 日期格式化类SimpleDateFormat
  16. 【歪门邪道】想要敲代码爽,桌面一定要酷炫
  17. 2013-08-17 PMP错题记录(第七章)
  18. C程序员必读的 3 本书
  19. mysql中用来取余数的函数是_MySQL函数 练习题
  20. 微博、知乎、今日头条如何打响内容第三次世界大战?

热门文章

  1. NSArray的一些使用方法
  2. 【牛客网】网易2017内推笔试编程题合集(二)
  3. 分库分表和NewSQL如何选择?分库分表真的适合你的系统吗?
  4. Ansible 学习总结(3)—— Ansible 常用模块与 playbook 实例讲解
  5. JavaScript解答罗志祥多人运动题
  6. 英语拼读工具开源【Gitte】
  7. Miracast分析
  8. Mysql安装测试数据库employees
  9. Amlogic A311D 驱动分析系列(一)-看门狗驱动分析
  10. 美团面试,360面试 ,滴滴面试,阿里面试,百度面试,京东面试,搜狗面试: