编译2022年最新的U-Boot v2023.01-rc2源码,并用QEMU模拟器运行

作者 将狼才鲸
创建日期 2022-11-26
  • Gitee源码和工程地址:才鲸嵌入式 / 嵌入式QEMU教程
  • CSDN文章地址:项目介绍:嵌入式QEMU教程

  • 前提:编译U-Boot和Linux kernel源码时,源码版本、PC主机Linux系统版本、交叉编译器版本都有影响,最好按照网上教程中相同的版本来尝试,要不然经常会遇到编译时遇到了问题,但又搜不到解决方法的尴尬局面。

  • 必须在Linux系统中编译(如Ubuntu),不能在MSYS2中编译。

1)直接编译Linux源码并运行

1、编译U-Boot并在QEMU中运行

  • 网上能搜到的QEMU + U-Boot已有的示例都是使用的ARM官方的开发板配置:如vexpress_ca9x4_defconfig、qemu_arm_vexpress_defconfig、versatile_defconfig,第一阶段我也使用相同的配置,后续我会在树莓派2b的硬件上尝试。

  • 编译好的u-boot文件我已经放在另一个仓库中,地址为:https://gitee.com/langcai1943/linux_kernel_u-boot_busybox_code_comments/tree/develop/bin/v1.0.0

  • 当前硬件为ARM Versatile™ Express开发板系列的CoreTile Express主板。

    • 开发板资料:express_ca9x4 uboot分析
  • 我使用最新版本的U-Boot官方源码,系统使用的是VMware Player Ubuntu18.04。当前下载的U-Boot版本是v2023.01-rc2,地址:Gitee 极速下载 / u-boot Prepare v2023.01-rc2,文件有33M,要查看所有版本的话则进入https://gitee.com/mirrors/u-boot/tags

    • 当前VM Player最新的版本是17,https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/17_0 ,但我因为之前已经安装了16,所以就用这个。没用过VM的建议先用VMware Workstation的破解版,网上的教程更多,但是Player和VM的使用方法是一样的,如果遇到了问题可以直接按VM搜到的解决办法来处理。
    • 我在32位Ubuntu16.04上编译最新的U-Boot有报错,中文和外文网站搜索都未解决问题,见于16.04的版本官方也早已不支持了,现在重装为64位的Ubuntu18.04
    • Ubuntu下载请找国内源下载,16.04是最后一个提供32位系统的版本,不用配置32位的依赖库。
  • 参考网址

    • qemu启动uboot
    • QEMU 实验(二): 通过 u-boot 启动 kernel
    • QEMU模拟arm u-boot/linux【转】
    • Linux内核实战应用:编译uboot并灵活使用qemu

  • 如果使用虚拟机,则下载安装VMware Player,过程略。

  • 下载并安装64位Ubuntu 18.04,因为我的笔记本电脑是2012年买的,配置不行,所以我在虚拟机中用老系统能跑的比较快;Ubuntu 18.04系统会持续支持到2028年,不用担心里面的软件过时。

    1. 不要从Ubuntu官方下载,从各种大学的镜像中下载,速度会更快,我下载的地址是 ubuntu-18.04.6-desktop-amd64.iso,如果要下载其它的版本,如Ubuntu 22.04,则进入http://mirrors.ustc.edu.cn/ubuntu-releases/ 对应的文件夹中,下载.iso文件;不管是Intel芯片还是AMD芯片,iso的文件尾都是amd64.iso,都可以用。
    2. 虚拟机中安装Ubuntu18.04的过程略;为了在命令行中进入桌面方便,我选择先安装英文系统,然后再安装中文输入法;安装要花几十分钟,安装的过程中要不联网,否则安装的过程中会更新程序,速度非常慢。
    • VMware安装ubuntu18.04
    1. 如果你用的笔记本,Ubuntu18虚拟机中使用不了触摸板的手势功能,不能双指滚动,忍耐一下。
    2. Ubuntu18.04选了中文之后,默认的软件源为国内源,但还是需要指定为具体的哪个源,例如指定阿里云的源;更换国内源后更新一下系统。
    • Ubuntu更换国内源(apt更换源)
    1. 不要按屏幕下方VMware的提示使用CD的方式安装安装VMware Tools,而要在Ubuntu中用命令行直接安装;这样才能全屏和与Windows拖动文件;安装过程略。
    • VMware 16安装的Ubuntu18.04 系统,无法在Windows和Ubuntu之间直接自由拖拽复制文件
    1. 如果安装系统时选择的是英语,则安装中文输入法。
    • Ubuntu 18.04 配置ibus中文拼音输入法(超简单)
    • 如何在ubuntu18.04中设置使用中文输入法
    • Ubuntu18.04 上如何使用中文输入法?
    • 取消窗口合并:ubuntu gnome下, alt + tab切换窗口时,不要把同组的窗口合并的配置方法+解决ubuntu无法使用root用户启动Google Chrome浏览器
  • 参考网址:

  • Ubuntu 国内镜像下载地址大全

  • 转载:ubuntu各个版本的发行时间和停止支持的时间,更新到最新版和代号。


  • 从ARM官网下载最新的,在64位PC上使用的32位ARM交叉编译工具,下载速度比较慢。

    1. (未使用)下载地址:arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
    • 这是最新版本的查看地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
    • (使用)!注意!后面编译BusyBox时我发现最新版的ARM交叉编译器会报错,新版本编译器编译kernel和U-Boot都没问题。我又装回了这个老版本,10.2版本编译器ARM官方下载地址:gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz
    1. (未使用)或者从Linaro上下载当前最新的稳定版本,下载地址:gcc-linaro-12.2.1-2022.11-x86_64_arm-linux-gnueabihf.tar.xz
    • Linaro的下载速度也很慢;暂时没找到国内提供的下载镜像。
  • 解压交叉编译器,然后在Linux系统中输出芯片架构和交叉编译工具名称的环境变量和交叉编译工具的路径

# 因为我当前不编译Linux PC下的程序,所以我直接将整个环境都配成交叉编译的
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabihf-
# 增加交叉编译器的路径,修改成你自己解压的路径
export PATH=$PATH:/home/jim/Desktop/tools/arm-gnu-toolchain-11.3/bin
  • 编译uboot时报错发现未安装而需要安装的软件:

    • sudo apt-get install make
    • sudo apt-get install gcc
    • sudo apt-get install bison
    • sudo apt-get install flex
    • sudo apt-get install libssl-dev
    • 如果lib/display_options.c:59:9: 编译器内部错误: 非法指令报错时将该行改成:
      unsigned long d = 1000000000;//1e9;
  • 编译完成后会在uboot源码目录下生成u-boot文件,将其用QEMU运行即可。
  • 编译好的u-boot文件我已经放在另一个仓库中,地址为:https://gitee.com/langcai1943/linux_kernel_u-boot_busybox_code_comments/tree/develop/bin/v1.0.0
jim@DESKTOP-SVP3BEM MSYS /d
$ qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot --nographicU-Boot 2023.01-rc2 (Nov 25 2022 - 17:27:26 +0800)DRAM:  256 MiB
WARNING: Caches not enabled
Core:  18 devices, 10 uclasses, devicetree: embed
Flash: 64 MiB
MMC:   mmci@5000: 0
Loading Environment from Flash... *** Warning - bad CRC, us
ing default environment
......

10 编译2022年最新的U-Boot v2023.01-rc2源码,并用QEMU模拟器运行相关推荐

  1. 12 编译2022年最新的BusyBox rootfs 1.35.0源码,并用QEMU模拟器运行

    编译2022年最新的BusyBox rootfs 1.35.0源码,并用QEMU模拟器运行 作者 将狼才鲸 创建日期 2022-11-26 Gitee源码和工程地址:才鲸嵌入式 / 嵌入式QEMU教程 ...

  2. 09 编译2022年最新的Linux kernel、U-Boot和BusyBox rootfs源码,并用QEMU模拟器运行

    编译2022年最新的Linux kernel.U-Boot和BusyBox rootfs源码,并用QEMU模拟器运行 作者 将狼才鲸 创建日期 2022-11-26 Gitee源码和工程地址:才鲸嵌入 ...

  3. 11 编译2022年最新的Linux kernel 6.1源码,并用QEMU模拟器运行

    编译2022年最新的Linux kernel源码,并用QEMU模拟器运行 作者 将狼才鲸 创建日期 2022-11-26 Gitee源码和工程地址:才鲸嵌入式 / 嵌入式QEMU教程 CSDN文章地址 ...

  4. 2022最新微信步数提交平台网站PHP源码

    正文: 2022最新微信步数提交平台网站PHP源码,乐心接口,小米接口,全部正常,程序属于官方接口无第三方对接,有兴趣自行去体验吧. 程序: wwwu.lanzouw.com/iYy2D05je3vi ...

  5. 2022最新酒桌小游戏喝酒小程序源码_带流量主

    2022最新酒桌小游戏喝酒小程序源码_带流量主 喝酒神器3.6,我修改增加了广告位,根据文档直接替换即可,原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码,然后关闭广告展示提交,通过后打 ...

  6. 2022最新二开游戏支付通道系统源码+紫水晶带云端/功能强大

    正文: 2022最新二开游戏支付通道系统源码+紫水晶带云端/功能强大,由于程序的标题太长了,所以本文没写全,下方才是完整标题,自行查看: 我现在发布的这个是已经修复BUG的可用版: 详细的程序更新日志 ...

  7. 2022最新盲盒商城完整开源运营源码/对接免签支付接口/搭建教程

    主要修复: 1:后台登录错误. 2:应大家要求完全开源了(原版有加密文件,免费给你们解密了) 搭建环境 Linux7.6-Nginx 1.18.0 PHP-7.2(安装拓展fileinfo sg11 ...

  8. 2022最新语音变声器小程序源码+支持激励视频

    正文: 2022最新语音变声器小程序源码+支持激励视频,如标题所示这就是一款变声器小程序源码. 程序支持多种音效生成,如少女音/鬼畜/恐怖/萝莉音效等等,另外支持本地音频文件上传变声,也支持直接录音变 ...

  9. [Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    1 前言 经过一周的奋战,终于从谷歌官网上下载最新的Android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载 ...

最新文章

  1. 2020年丘赛放榜:北大斩获5金11银强势霸榜
  2. 因为数据库正在使用,所以无法获得对数据库的独占访问权(转)
  3. 如何构建日均千万PV Web站点(二) 之~缓存为王~
  4. 微信系列研究之-----资源文件保护的小把戏
  5. saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...
  6. 【锁相环系列1】锁相环的基本原理
  7. c# 窗体启动后自动执行 Form_Load事件注册及调用
  8. 酱油和gbt酱油哪个好_酱油越贵越好?认准瓶身这4处,轻松挑到好酱油!
  9. C语言转义字符介绍和示例
  10. sql server 设置用户名和密码
  11. Leetcode142. Linked List Cycle II环形链表2
  12. php的public、protected、private三种访问控制模式的区别
  13. 使用Koa2重构博客项目
  14. function函数封装
  15. 高德地图开放平台的使用
  16. DLT - Diagnostic Log and Trace简介
  17. 在这个“未来工厂”里, 人类仅凭脑电波控制机器
  18. 7z001怎么解压在安卓手机上面_安卓手机怎么可以远程阿里云服务器桌面
  19. latex 特殊符号[箭头/希腊]
  20. 深度融合信息化 视频监控打击震慑犯罪

热门文章

  1. 第一个Vertx应用程序
  2. Linux关停X11服务,如何优雅地退出X11事件循环?
  3. PHP程序‘猿’必备的七种武器
  4. Process32First 返回FALSE的原因
  5. csdn空格用什么表示
  6. 分享一款国内版的Gitbook在线文档创作工具
  7. 日语会话1.15 簡単な自己紹介をさせていただきます
  8. 妻子、情人、红颜知己
  9. pandas 合并日期和时间列
  10. 浅谈车道偏离预警系统