首页/新闻资讯/正文详情

基于 Ubuntu 18.04 LTS 嵌入式 Linux 系统部署指南

发布时间:2026/9/27 11:24:00 来源:云帆数科 栏目:资讯中心
基于 Ubuntu 18.04 LTS 嵌入式 Linux 系统部署指南
概述本指南用于建立一套轻量、清晰、适合课堂展示的嵌入式 Linux 教学环境。其核心原则是把“开发主机HOST”与“目标系统TARGET”分离A 窗口采用独立的 Ubuntu 18.04 LTS 虚拟机进行源码编辑、交叉编译与构建B 窗口采用 Windows 原生 QEMU 11.1.0 模拟 ARM VExpress-A9 开发板负责 U-Boot、Linux、串口、网络等目标端实验。本指南以已经验证成功的实际部署结果为基线Ubuntu 18.04 能正常运行 Arm GNU Toolchain 12.3.Rel1U-Boot 2026.07 可成功编译并在 Windows QEMU VExpress-A9 上启动。说明Ubuntu 18.04 已属于较老发行版。本方案的使用定位是“固定、轻量的教学 HOST”不建议把它作为对公网开放的服务器或日常互联网工作站。关键交叉工具链采用 Arm 官方独立工具链以避免受 18.04 软件仓库中旧版 GCC 的限制。一、系统总体架构建议课堂中统一使用以下术语窗口 A / HOSTUbuntu 18.04 LTS 虚拟机。负责源代码、Make 构建、交叉编译、生成镜像。窗口 B / TARGETWindows QEMU 11.1.0。模拟 VExpress-A9 / Cortex-A9 开发板运行 U-Boot 和 Linux。部署Deploy把 HOST 产生的 u-boot、zImage、DTB、rootfs 等文件送到 Windows 目标目录再由 QEMU 加载。二、推荐软件版本与目录规范组件推荐版本安装位置作用Ubuntu18.04 LTS x86_64虚拟机HOST 开发主机Arm GNU Toolchain12.3.Rel1/opt/arm/gcc-12.3-arm32ARM32 GNU/Linux 交叉编译U-Boot2026.07~/EmbeddedLinuxLab/src/u-boot-2026.07Bootloader 实验Code::Blocks16.01Ubuntu 软件仓库C/C 教学、源码浏览和小程序编译QEMU for Windows11.1.0C:\Program Files\qemuTARGET / VExpress-A9 仿真2.1 HOST 目录~/EmbeddedLinuxLab/ ├── src/ # U-Boot、Linux、Buildroot 等源码 ├── build/ # 构建输出或临时目录 ├── tools/ # 可选自定义工具 └── env-arm32.sh # ARM32 交叉编译环境脚本2.2 TARGET 目录E:\EmbeddedLinuxLab\ ├── images\ # u-boot / zImage / dtb / rootfs ├── scripts\ # QEMU 启动脚本 └── logs\ # 启动与串口日志三、Ubuntu 18.04 HOST 基础准备进入 Ubuntu 18.04 后先确认系统与架构lsb_release-auname-m应确认系统为 Ubuntu 18.04.x LTS主机架构为 x86_64。随后建立实验目录cd~mkdir-p~/EmbeddedLinuxLab/{src,build,tools}更新软件索引并安装 U-Boot / Kernel 常用依赖sudoaptupdatesudoaptinstall-y\build-essentialgitmakewgetcurlbcbison flex pkg-config\libssl-dev libncurses5-dev libelf-dev python3 python3-dev\python3-setuptools python3-pyelftools swig device-tree-compiler xz-utils说明不要在 Ubuntu 18.04 中尝试通过 apt 安装 gcc-12-arm-linux-gnueabihf。18.04 的官方仓库没有该软件包。本方案采用 Arm 官方独立工具链。四、安装 Arm GNU Toolchain 12.3.Rel1需要的工具链文件名arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz其含义Linux x86_64 HOST → AArch32 GNU/Linux hard-float TARGET。编译器前缀为arm-none-linux-gnueabihf-官方入口Arm GNU Toolchain Downloads。浏览器下载速度若明显高于 wget可直接通过浏览器下载然后在 Ubuntu 中从“下载”目录安装。4.1 解压到 /opt/armcd~/下载# 中文桌面常见目录若为英文系统请使用 ~/Downloadssudomkdir-p/opt/armsudotar-xJfarm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz\-C/opt/arm建立固定的短路径软链接sudoln-sfn\/opt/arm/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-linux-gnueabihf\/opt/arm/gcc-12.3-arm324.2 验证工具链本体/opt/arm/gcc-12.3-arm32/bin/arm-none-linux-gnueabihf-gcc--version/opt/arm/gcc-12.3-arm32/bin/arm-none-linux-gnueabihf-readelf--version已经验证成功的典型输出为arm-none-linux-gnueabihf-gcc ... 12.3.1 20230626 GNU readelf ... 2.40.0.20230627五、建立 ARM32 交叉编译环境脚本不建议把 ARCH 和 CROSS_COMPILE 永久写死在 ~/.bashrc 中因为后续还可能进行 ARM64、RISC-V 或本机 x86 实验。建议使用可按需加载的环境脚本。nano~/EmbeddedLinuxLab/env-arm32.sh写入#!/bin/bashexportARCHarmexportARM_GCC_HOME/opt/arm/gcc-12.3-arm32exportPATH${ARM_GCC_HOME}/bin:${PATH}exportCROSS_COMPILEarm-none-linux-gnueabihf-echoecho ARM32 Cross Compile Environmentecho ARCH ${ARCH}echo CROSS_COMPILE ${CROSS_COMPILE}echo GCC HOME ${ARM_GCC_HOME}echo赋予执行权限并加载chmodx ~/EmbeddedLinuxLab/env-arm32.shsource~/EmbeddedLinuxLab/env-arm32.sh验证whicharm-none-linux-gnueabihf-gcc arm-none-linux-gnueabihf-gcc--versionecho$ARCHecho$CROSS_COMPILE预期路径/opt/arm/gcc-12.3-arm32/bin/arm-none-linux-gnueabihf-gcc六、编译 U-Boot 2026.07假定源码目录已经准备为~/EmbeddedLinuxLab/src/u-boot-2026.07每次开始 ARM32 构建前先加载环境source~/EmbeddedLinuxLab/env-arm32.shcd~/EmbeddedLinuxLab/src/u-boot-2026.076.1 清理旧构建结果makedistclean6.2 生成 VExpress-A9 配置makevexpress_ca9x4_defconfig检查目标配置grepCONFIG_TARGET_VEXPRESS .config应出现CONFIG_TARGET_VEXPRESS_CA9X4y6.3 正式编译make-j$(nproc)编译完成后验证ls-lhu-boot u-boot.binfileu-boot arm-none-linux-gnueabihf-readelf-hu-boot|grepMachine关键判据file 输出应包含 “ELF 32-bit … ARM”readelf 应显示 “Machine: ARM”。七、部署 U-Boot 到 Windows QEMU TARGET如果采用虚拟机共享目录、SMB、SCP 或手工复制都可以完成部署。最终目标是把 u-boot 放入E:\EmbeddedLinuxLab\images\u-boot在 Windows B 窗口中进入E: cd \EmbeddedLinuxLab\images启动 VExpress-A9C:\Program Files\qemu\qemu-system-arm.exe ^ -machine vexpress-a9 ^ -m 512M ^ -nographic ^ -no-reboot ^ -kernel u-boot成功时应看到类似U-Boot 2026.07 (...) DRAM: 512 MiB Flash: 128 MiB MMC: mmci5000: 0 In: uart9000 Out: uart9000 Err: uart9000 Net: eth0: ethernet3,02000000 说明“*** Warning - bad CRC, using default environment”在当前阶段不表示 U-Boot 损坏只表示虚拟 Flash 中尚未保存有效的持久化环境变量。若未及时中断 autoboot后续出现 MMC、TFTP、PXE、bootm 等失败信息也只是因为 Kernel/SD/TFTP 尚未配置只要最终返回 “” 即说明 U-Boot 正常工作。八、安装与配置 Code::Blocks 16.01Code::Blocks 的角色定位用于 C/C 教学、源码浏览、小型 ARM 应用程序交叉编译U-Boot、Linux Kernel、Buildroot 仍使用各自原生 Make/Kbuild 构建系统。sudoadd-apt-repository universesudoaptupdatesudoaptinstall-ycodeblocks codeblocks-contrib8.1 保留默认本机编译器默认 “GNU GCC Compiler” 保持 /usr/bin/gcc用于生成 Ubuntu x86_64 本机程序。8.2 新建 ARM GCC 12.3 编译器配置打开 Settings → Compiler…在 Selected compiler 中选 GNU GCC Compiler点击 Copy。新名称设为 “ARM GCC 12.3 - Cortex-A9”。进入 Toolchain executables将 Compiler’s installation directory 设置为 /opt/arm/gcc-12.3-arm32。项目填写内容C compilerarm-none-linux-gnueabihf-gccC compilerarm-none-linux-gnueabihf-gLinker for dynamic libsarm-none-linux-gnueabihf-gLinker for static libsarm-none-linux-gnueabihf-arMake programmakeResource compiler留空Debugger先保持 GDB/CDB debugger : Default说明Code::Blocks 16.01 的 Debugger 栏是下拉选择框不能直接输入 arm-none-linux-gnueabihf-gdb。当前只做编译时保持 Default 即可真正的 ARM 调试应以后通过 Settings → Debugger 建立独立 GDB 配置并结合 QEMU GDB Remote 使用。九、建议的基础验证实验本机编译与交叉编译对比可用同一份 hello.c 分别生成 x86_64 和 ARM 可执行文件以直观讲清“本机编译”和“交叉编译”的区别。#includestdio.hintmain(void){printf(Hello Embedded Linux!\n);return0;}gcc hello.c-ohello_x86 arm-none-linux-gnueabihf-gcc hello.c-ohello_armfilehello_x86filehello_arm预期hello_x86 为 x86-64 ELFhello_arm 为 ARM 32-bit ELF。ARM 程序不能直接在 x86_64 Ubuntu 上运行应在 ARM TARGET例如 QEMU Linux中执行。十、常见问题与排查现象原因处理方法apt 找不到 gcc-12-arm-linux-gnueabihfUbuntu 18.04 仓库没有该包不要混装新发行版 .deb使用 /opt/arm 下的独立 Arm GNU Toolchainarm-none-linux-gnueabihf-gcc: command not foundPATH 或环境脚本未加载source ~/EmbeddedLinuxLab/env-arm32.sh再用 which 检查路径U-Boot 编译结果不是 ARM误用了 HOST gcc检查 CROSS_COMPILE 和 which arm-none-linux-gnueabihf-gccCode::Blocks 看不到 ARM GCCIDE 不会自动扫描 /opt 下工具链复制 GNU GCC 编译器配置并手工填写 Toolchain executablesDebugger 无法输入路径16.01 版本此处是下拉配置项先保留 Default需要调试时到 Settings → Debugger 单独配置QEMU 出现 bad CRC未初始化 U-Boot 持久化环境当前阶段可忽略使用默认 environmentQEMU 自动启动后出现 MMC/TFTP/bootm 错误尚未配置 SD、Kernel 或 TFTP在 Hit any key 阶段按键进入 后续实验逐项配置十一、实验室批量部署建议制作一台配置好的 Ubuntu 18.04 HOST 母机安装基础依赖、Arm GNU Toolchain 12.3.Rel1、Code::Blocks 16.01、env-arm32.sh。在虚拟机关闭状态下复制完整虚拟机目录作为教学模板学生首次启动后再修改主机名与用户名。不要把大量 Kernel/Buildroot 编译中间产物预置进母机以免虚拟磁盘膨胀。Windows 宿主机统一安装 QEMU 11.1.0并统一建立 E:\EmbeddedLinuxLab\images、scripts、logs 目录。课堂上固定叫法左侧 HOST / 开发主机右侧 TARGET / 虚拟开发板教师给出的命令必须明确标注在哪个窗口执行。如需要联网只开放必要的 NAT/桥接/Host-only 网络Ubuntu 18.04 不作为公网服务器使用。十二、最终验收清单验收项状态Ubuntu 18.04 LTS 启动正常uname -m x86_64□/opt/arm/gcc-12.3-arm32 存在□arm-none-linux-gnueabihf-gcc --version 显示 12.3.1□env-arm32.sh 可正常 source□U-Boot 2026.07 可完成 vexpress_ca9x4_defconfig make□file u-boot 显示 ARM 32-bit ELF□Windows QEMU vexpress-a9 可启动 u-boot 并进入 □Code::Blocks 16.01 已建立 ARM GCC 12.3 - Cortex-A9 配置□默认 GNU GCC 与 ARM GCC 两套配置明确区分□附录 A常用命令速查# 进入 ARM32 环境source~/EmbeddedLinuxLab/env-arm32.sh# 验证工具链whicharm-none-linux-gnueabihf-gcc arm-none-linux-gnueabihf-gcc--version# 编译 U-Bootcd~/EmbeddedLinuxLab/src/u-boot-2026.07makedistcleanmakevexpress_ca9x4_defconfigmake-j$(nproc)# 验证输出fileu-boot arm-none-linux-gnueabihf-readelf-hu-boot|grepMachine附录 BWindows QEMU 启动命令C:\Program Files\qemu\qemu-system-arm.exe ^ -machine vexpress-a9 ^ -m 512M ^ -nographic ^ -no-reboot ^ -kernel E:\EmbeddedLinuxLab\images\u-boot实验基线Ubuntu 18.04 LTS Arm GNU Toolchain 12.3.Rel1 Code::Blocks 16.01 Windows QEMU 11.1

相关推荐

哈尔滨做网站多少钱?避开性能优化坑,这5步省钱又省心
哈尔滨做网站多少钱?避开性能优化坑,这5步省钱又省心

哈尔滨做网站多少钱?避开性能优化坑,这5步省钱又省心 自己不会代码想做网站,最头疼的不是买域名,而是怕被忽悠花冤枉钱,更怕网站做出来慢如蜗牛,没人访问。在哈尔滨,很多老板以为做个官网就是找个美工画几张图,其实真正的成本大头藏在 性能优化… · 2026/9/27 11:24:00

vercel-optimize - scoring
vercel-optimize - scoring

第 4 步 — 评分和报告 此参考涵盖建议起草后发生的一切:质量底线、影响框架、排序顺序、面向客户的报告模板和行动手册选择矩阵。 目录 质量底线和修剪规则影响框架 — 量级规则impactLabel 模式排序顺序和平台建议上限面向客户的报告模板行动手册选择矩阵 质量… · 2026/9/27 11:24:00

3步搞定wordpress自动视频播放器,源码下载避坑全攻略
3步搞定wordpress自动视频播放器,源码下载避坑全攻略

3步搞定wordpress自动视频播放器,源码下载避坑全攻略 网站做好了没人访问,是不是因为页面加载慢到用户直接关掉?很多站长盯着后台数据发呆,发现跳出率高得吓人。其实,视频加载体验往往是罪魁祸首。… · 2026/9/27 11:24:00

2026最新一个网站需要多少钱?避开模板坑的实战报价单
2026最新一个网站需要多少钱?避开模板坑的实战报价单

2026最新一个网站需要多少钱?避开模板坑的实战报价单 很多老板一上来就问:“做个官网大概要多少钱?” 这时候如果你只回一个数字,比如“八千”或者“三万”,其实是在误导自己。 模板网站太丑不够用… · 2026/9/27 12:14:36

模板网站演示站点怎么做避免被坑的高阶最佳实践
模板网站演示站点怎么做避免被坑的高阶最佳实践

模板网站演示站点怎么做避免被坑的高阶最佳实践 找建站公司怕被坑高价?别急,先看看你的演示站是不是裸奔。很多甲方在验收“模板网站演示站点怎么做”这个环节时,只盯着页面好不好看,忽略了后台安全。一旦演示站上线,黑客脚本就在扫描端口。今天咱们不聊… · 2026/9/27 12:14:30

网站自主制作平台避坑速查手册:告别模板丑站实战
网站自主制作平台避坑速查手册:告别模板丑站实战

网站自主制作平台避坑速查手册:告别模板丑站实战 做网站最怕什么?不是代码写不出来,而是做出来的东西“丑得没眼看”。 很多独立站长在找 网站自主制作平台… · 2026/9/27 12:14:06

3步搞定wordpress上传下载,避开被黑挂马陷阱
3步搞定wordpress上传下载,避开被黑挂马陷阱

3步搞定wordpress上传下载,避开被黑挂马陷阱 网站突然打不开,打开全是乱七八糟的弹窗,甚至直接挂了博彩广告?别慌,这大概率不是服务器挂了,而是你的wordpress上传下载配置出了漏洞。很多站长遇到这种情况,第一反应是删库重建,或者… · 2026/9/27 12:14:06

10年实战:dedecms建设慕课网站完整流程与SEO破局指南
10年实战:dedecms建设慕课网站完整流程与SEO破局指南

10年实战:dedecms建设慕课网站完整流程与SEO破局指南 网站做好了没人访问,这是无数站长和开发者最头疼的噩梦。你花了几周时间,用 DedeCMS… · 2026/9/27 12:13:48

2026最新美业网站建设避坑指南:不会代码也能搞定
2026最新美业网站建设避坑指南:不会代码也能搞定

2026最新美业网站建设避坑指南:不会代码也能搞定 自己不会代码想做网站?别慌,这是很多美业老板和独立站长的真实写照。过去大家总以为建站必须懂前端后端,其实2026年的技术栈已经彻底降低了门槛。… · 2026/9/27 12:13:30

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码