资讯动态

嵌入式入门第一天:为什么先学Linux而不是开发板

发布时间:2026/10/22 11:22:43 来源:尧图企业网站定制
学嵌入式第一天就把Linux捡起来不是折腾是绕不开的路如果你准备开始搞嵌入式我劝你把“先借一块板子点点灯”这个念头暂时放一放先花一天时间把Linux基础搭起来。很多新手第一天就盯着开发板、下载一堆工具链结果烧录、编译、连接全在Windows上绕圈最后发现连最常用的arm-none-eabi-gcc是Linux下的东西又临时开虚拟机手忙脚乱。我当年就是被这条弯路教训过。后来带过不少刚入行的同事基本总结出一个规律愿意先把Linux折腾明白的人后面看时序图、读设备树、分析uboot启动日志效率完全不一样。嵌入式说到底就是“在一个不受系统亲妈管的后台上自己管一切”而Linux给了你一个看底层的窗口。第一天学点Linux不过分。这篇文章就按我理解的“新手第一天”来拆为什么绕不开Linux核心要搞懂的几个概念当天能落地的操作步骤以及我踩过的、几乎人人都会踩的坑。不搞教科书式的长篇大论只讲实际用得上的东西。1. 学嵌入式的第一站为什么是Linux而非板子1.1 嵌入式开发的环境生态很多人对嵌入式的想象是焊板子、插线、调电压。那是硬件工程师的活到了一定阶段你会碰到但纯软件开发方向更常见的状态是打开终端敲命令看日志改配置交叉编译再拷到板子上跑。这一整套流程几乎全是围绕Linux展开的。你去看主流芯片厂商给的SDK、联发科或者瑞芯微的buildroot、甚至ESP32的某些工具链脚本基本都是Linux优先。官方出的文档默认你在Linux环境操作报错信息里都是/usr/bin、/opt、chmod这种词。你要是连这些基础都没见过第一步就劝退不是芯片而是你自己的环境。还有一点嵌入式设备的宿主机即帮你做交叉编译和调试的那台电脑绝大多数也是Linux服务器。公司里搞嵌入式厉害的人电脑装了双系统或者直接一台Linux笔记本走天下。你早点把Linux用成日常工具后面读同事的脚本、看CI的编译日志、自己写自动化测试完全不慌。1.2 图形界面与命令行到底该优先学哪个新手最大的误区是打开Linux桌面觉得和Windows很像以为会用鼠标就完事了。嵌入式开发真正拼的反而是在没有图形界面的终端里干活比如通过串口连接开发板屏幕上一个裸的shell比如SSH登录远程编译服务器眼前就是个命令行。我建议你第一天的重心放在命令行而非桌面上。桌面图形界面只是让你觉得Linux“看得见摸得着”降低恐惧感但实际工作流全是shell命令。学Linux和学Windows有一个本质差异Windows的很多操作藏在图形界面里而Linux所有的骨头都露在shell外面这反而是嵌入式开发者求之不得的透明感。这里给个我自己的判断标准如果你能在纯命令行下完成“建目录、写文件、编个小程序、跑起来”你对Linux的掌握就已经够入门嵌入式折腾了。1.3 抛开“玩系统”的误区Linux是手段不是目的有些教程喜欢让你折腾桌面美化、装各种壁纸插件、配置花哨的终端主题。这些花时间且和生产几乎没有关系。第一天的目标是建立“文件、进程、权限、命令”这四个基本概念而不是把Linux玩成一个新系统玩具。我的建议选一个轻量好上手的发行版装好就能用把精力放在理解“为什么是这样的结构”上。举个例子Linux里“一切皆文件”这句话听起来很哲学但实际含义是你的键盘输入、屏幕输出、网卡数据都能当成文件一样去读写。理解了这一点后面看/dev/ttyS0、/dev/mmcblk0就不会怕。2. 新手只用搞懂这几个Linux核心概念2.1 发行版不是Linux“种类”是“打包方式”你会看到Ubuntu、CentOS、Debian、Fedora一堆名字以为有无数种毫无关联的Linux。其实它们共用一个内核区别在于软件包管理、预装工具和社区维护策略。嵌入式开发用得比较多的有Ubuntu因为资料多、软件新、装什么都很方便。如果你跟着我的流程走装Ubuntu就好不用纠结这个阶段选最主流的能省掉无数兼容性问题。包管理工具要稍微记一下Ubuntu和Debian用的是aptFedora用dnfCentOS用yumopensuse用zypper。你如果看到一个教程说apt install那是在Ubuntu系里用说yum install基本是老CentOS环境的习惯。第一天记住你机器上是哪个发行版别乱复制粘贴教程里的命令。2.2 虚拟机嵌入式入门阶段最安全的练习场很多新手对虚拟机有偏见觉得在里面学Linux“不够真实”。实际上在入门阶段虚拟机反而是最友好的你随便折腾、删了重来、拍快照回滚不会把宿主机弄坏。等你熟悉了再上真机、上开发板都来得及。装虚拟机推荐用口碑稳定、跨平台的虚拟机工具比如VirtualBox或VMware Workstation Player。安装Ubuntu时记得给虚拟机分配至少2GB以上内存磁盘建议给20GB后面装交叉编译器、下载源码树不至于空间紧张。提示第一次启动虚拟机如果感觉鼠标卡顿或显示比例不对先安装“增强工具”或“集成组件”对应VirtualBox的Guest Additions这是提高体验的关键一步。2.3 文件系统结构知道去哪儿找东西Linux没有C盘、D盘的概念所有东西从根目录/开始。嵌入式开发里你接触最多的几个路径要心里有数/home每个用户自己的家目录类似于Windows的用户文件夹/etc系统配置文件集中地你改网络、改服务、改启动项都可能在这里/usr系统软件安装的位置类似Windows的Program Files/opt一些额外装的大型软件比如交叉编译工具链经常放这里/dev设备文件目录串口、USB、磁盘都映射到这里后期调试靠它第一天不用背但要有“去哪找东西”的直觉。遇到一个陌生文件先ls -l看一下想知道当前路径pwd想切换目录cd。嵌入式日常80%的操作其实就是在这些路径间来回穿梭。2.4 用户权限别被Permission denied吓到Linux是多用户系统文件都有属主和权限组。新手最容易遇到“Permission denied”其实是当前用户没有写某个文件或目录的权限。解决方式就两个要么用sudo临时提升权限要么把文件所属权改给你自己。命令要记住sudo 具体命令 sudo chown 用户名 文件名chown这个命令在往板子传文件、修改系统目录、配置工具链的时候经常用到。不过我也要说一句别养成什么都sudo的习惯该普通用户操作的就普通用户操作权限越用越小才是安全姿势。3. 第一天的Linux实操任务清单照着做就行3.1 装好Ubuntu之后先干这几件事安装过程不细说了装好进入桌面之后打开终端CtrlAltT先把软件源更新一下。这一步让系统知道去哪下载软件包等同于手机应用商店刷新sudo apt update sudo apt upgrade -y第二件事是确认网络尤其虚拟机NAT模式下能不能上网。可以用ping测试ping -c 4 www.baidu.com第三件事装几个嵌入式基本工具虽然第一天不一定全用上但提前备好不亏sudo apt install -y vim git curl wget build-essential net-tools openssh-serverbuild-essential包含编译需要的GCC和make工具以后写C语言、编译模块都用得上openssh-server是为了后面从宿主机SSH连到虚拟机调试先装上省事。3.2 建立一个“命令行肌肉记忆”训练表我建议第一天不要看几十个命令然后背没用。你就用一张表边用边记场景命令说明看自己在哪pwd打印工作目录看目录内容ls -l带权限、大小等详细信息切换目录cd /路径绝对路径或相对路径建目录mkdir 名称创建文件夹建空文件touch 文件常用于创建新文件移动/重命名mv 源 目标也可用于改名复制cp -r 源 目标-r复制目录时必加删除rm -rf 目标注意删了不回收看文件内容cat / lessless可翻页q退出编辑文件vim 文件后面重点讲看网络IPip addr查看网卡地址你不要一口气把它们全背下来而是自己编一个小任务在/home下面建一个practice目录里面创建一个文本文件写一段自我介绍再复制一份最后重命名成backup.txt。做完这套任务常用命令你就顺手了。3.3 第一次用vim写文件别被编辑模式劝退vim是老牌编辑器嵌入式老手和小白都要面对它。第一次打开vim会觉得“怎么输入不了字”这是模式的区别默认是普通模式按i进入插入模式才能打字。基本流程打开文件 → 按i输入内容 → 按Esc回到普通模式 → 输入:wq保存退出。这套流程先走通其他高级功能以后慢慢学。这里有个实用小技巧如果途中发现写得稀烂不想保存在普通模式输入:q!可以直接退出不保存。第一次操作vim的时候我建议把下面这个示例完整打一遍vim hello_first_day.txt按i后输入Hello, embedded Linux! Today is my first day.按Esc再输入:wq。回终端后可以cat hello_first_day.txt确认内容已经写入。3.4 写第一个shell脚本体会“敲命令自动化”的威力学Linux的第一天完全可以接触一点shell脚本不写复杂逻辑就写最简单的批量操作。它能让你立刻理解为什么嵌入式老手都在追求把一条条手工命令变成脚本。用vim新建run.sh内容#!/bin/bash echo 开始创建练习目录 mkdir -p ~/linux_practice cd ~/linux_practice echo 当前路径 pwd touch file1.txt file2.txt file3.txt ls -l echo 完成保存退出后直接输入./run.sh会提示权限不够因为脚本默认没有执行权限。这时候要用chmod x run.sh ./run.sh第一次跑通这个流程你会感觉到shell脚本的爽以后编译、烧录、打包这些重复动作都可以写成一个脚本一条命令跑完。这就是嵌入式工程里makefile、build脚本的原始雏形。4. 第一天最容易踩的坑和排查技巧4.1 sudo成功但命令还是报错先怀疑路径和大小写新手最常见的问题明明加了sudo结果apt安装还是报错找不到软件包。这时候排除思路有几步先确认有没有执行过apt update再确认软件包的实际名字对不对最后检查是不是源的问题。还有更隐蔽的Linux严格区分大小写README.txt和readme.txt是两个文件。我见过同事敲了一个多小时找不到自己的文件最后发现全是大写文件名。你如果遇到“文件不存在”先怀疑小写大写再怀疑路径。4.2 虚拟机里ping不通网络别急着怪系统新装Ubuntu虚拟机最常见的网络故障就是ping域名不通但ping IP地址能通。这种情况多半是DNS没配置好。先查DNS配置必要时手动加nameserver 8.8.8.8。不过不同公司的网络策略不同如果是公司内网可能还需要配置代理这个要问运维。如果是完全没网先看虚拟机的网络模式是不是“NAT”而不是“桥接”。NAT模式下虚拟机通过宿主机上网最省心桥接模式需要和局域网在同一个网段配置不当反而搞不定。一个经验入门阶段老老实实用NAT等玩明白了再试桥接。在NAT下虚拟机对外不可见但访问外网没问题练手足够了。4.3 终端里乱按了CtrlZ程序怎么没了CtrlZ在Linux终端表示挂起不是关闭。它会把当前运行的任务丢到后台并暂停。新手容易误触然后以为程序挂了。看到终端的输出又跳回来可以用fg把任务恢复到前台。这个知识点虽然小但遇到的时候不查一下容易懵。和Windows的CtrlZ撤销是完全不同的含义先在第一天把这个坑绕过去。4.4 删除文件特别爽但rm要注意递归和强制新手看到rm -rf这个命令觉得解气删得干净还不用反复确认。但这样也危险尤其是路径写错一个字母可能把整个home都删了。我个人的安全习惯是在练习阶段不写rm -rf而是用rm -i每次都问一遍确认。一旦你养成“删除前停一秒”的习惯后面操作服务器也安全一些。再补一个纠错技巧如果确实删错了一个文件尤其是文本文件如果是Git仓库里的内容可以用git checkout -- 文件恢复如果没有版本管理那就只能靠备份了。所以从第一天起养成给练习目录做Git版本管理的习惯后面写工程也沿用这套思路收益很大。4.5 软件装一半失败换源或者排查依赖Ubuntu的apt安装失败虽然不常见但源不稳定或依赖冲突时也会遇到。sudo apt --fix-broken install能处理很多依赖断掉的问题。实在搞不定就考虑把软件源换成一个更稳定的镜像源比如常见的国内开源镜像站。尽管如此新手别频繁换源保持默认源配合apt update在绝大多数场景下够用。5. 第一天结束后第二天你应该奔向哪里5.1 从一个简单的C程序编译开始Linux入门的第二天强烈建议直接进入C语言编译环节。因为嵌入式开发的核心就是C代码在Linux环境下的交叉编译。你先在终端里写一个hello.c#include stdio.h int main(void) { printf(Hello embedded Linux!\n); return 0; }然后gcc hello.c -o hello ./hello这个流程跑通你会上瘾因为编译和运行居然可以这么快、这么透明。之后所有嵌入式开发的起点都长这样。5.2 尝试用make管理多文件工程嵌入式工程比这个复杂得多源文件多、依赖多、编译选项多。所以第二天可以顺手学一点make的基础写一个Makefile让make一条命令完成编译链接hello: hello.c gcc hello.c -o hello clean: rm -f helloMakefile看起来神秘其实本质就是“目标、依赖、命令”三条结构。你理解了这三样后面看内核模块、应用工程的编译脚本会有一种豁然开朗的感觉。5.3 装上串口调试工具向板子迈进再往后你自然要接触开发板。Ubuntu里串口调试工具推荐minicom或picocom安装命令sudo apt install -y minicom用串口连接板子一般要先插上USB转串口设备然后看设备名是/dev/ttyUSB0还是/dev/ttyACM0再用配置好的波特率连接。这里有个关键词“波特率”通常115200最常见。虽然这是第二天以后的内容但你需要知道这些操作统统是在Linux终端里完成的越早熟悉越舒服。6. 我自己的练习心得以及给新手的三个建议6.1 第一天不要开太多“屏幕标签页”我看到有些新手喜欢开十几个终端每个终端放着不同教程转头就忘。第一天更好的方式是开两个终端一个翻教程一个纯敲。一个人专注在一个任务上比同时进行多个任务的效率高得多。我在带人时总要求他先“抄一遍命令再运行”这样比直接复制粘贴印象深刻错误也多一些而这些错误恰好是学习机会。6.2 写命令出了错先读报错再搜很多人一看到英文报错就慌复制粘贴去搜索其实很多报错已经把答案说得很明白了。比如“No such file or directory”基本就是路径错了”Permission denied”就是权限不足“command not found”多半是工具没装或打错名字。学会看报错是嵌入式学习者需要过的第一道心理门槛。把报错当成一道线索而不是拦路虎。6.3 遇到搞不清的命令先查man或--helpLinux自带非常详细的帮助文档。比如man ls ls --help前者是完整手册后者是快速参数说明。很多老手也是翻着着帮助写出来的。别觉得查帮助丢人反而能帮你省下大量无效搜索的时间。我在实际带人过程中很多新手连man怎么退出都不知道按q退出这个功能反复讲了很多遍。如果你看到了一个内容特别多的帮助页面屏幕下方有冒号提示按q就能退出这个按钮要记住。6.4 关于“基础”这东西确实没有捷径最后分享一点掏心窝的体会。我见过很多想直接跳进开发板的新手试图绕过Linux的枯燥基本功。起初确实会觉得“板子亮灯”比“敲命令”更有成就感但几个月以后卡住他们的往往不是板子硬件而是看不懂同事给的编译环境脚本、不会自己改启动脚本、无法独立排查日志。嵌入式开发到了一定深度拼的就是对系统底层调用、构建环境、脚本工程的理解这些东西的根基都在Linux里。第一天踏踏实实把路径、权限、命令、vim和一个小脚本练熟是把基础砸结实。基础这东西没办法绕过但一旦打下往后的路会顺畅很多。我建议你把这一天当作一个“项目前夜”来对待不急着写功能先认识工具。今天多花几个小时在终端里“折腾”明天在开发板上就能少走很多弯路。如果你正在学习嵌入式的第一天希望你能感受到Linux那股“一切都可以被控制”的清爽感也祝你在板子之旅上跑得比当年我顺利得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑