新闻详情

新闻详情

首页 / 资讯中心 / 详情

嵌入式Linux第一课:IMX6ULL开发板的文件目录与命令

发布时间:2026/10/2 15:11:59来源:尧图网络
嵌入式Linux第一课:IMX6ULL开发板的文件目录与命令
拿到IMX6ULL开发板的第一天插上电源用串口线连上电脑屏幕上是黑底白字的登录提示符。很多人的嵌入式Linux之路就是这么开始的没有桌面、没有鼠标面对的是一个只有命令行的小世界。这套系列文章就是陪着那些在串口终端面前发懵的朋友一步一步把嵌入式Linux的基础打牢。这一篇讲的是整个系列的地基——Linux文件目录和目录相关命令。别小看它们后续的交叉编译、驱动加载、应用部署、系统移植没有哪一步能绕开这套基本功。我见过不少学习者上来就急着搜“怎么写驱动程序”“怎么点亮LED”结果一遇到路径不对、找不到文件、误删了系统目录这类问题就卡住很久。原因很简单你对文件和目录这套操作没有形成直觉。本文不打算把命令表罗列一遍就完事而是结合IMX6ULL开发板的实际使用场景把每个命令为什么这样用、在板子上会和虚拟机里有什么差异一次说清楚。1. 为什么嵌入式Linux的第一课总落在文件和目录上1.1 从Windows的“盘符思维”切换到Linux的“树状思维”我们大多数人第一次接触电脑都是Windows。Windows的存储心智模型是“盘符”C盘装系统D盘放资料U盘插上去就是E盘。这种模型很简单因为每个存储设备都有自己独立的“根”。Linux完全不是这个思路。它只有一个根/。不论是一张SD卡、一块eMMC、一个U盘还是一个网络共享目录都要先“挂载”到这个根目录下的某个位置然后你通过那个位置去访问它。这根Windows里“把U盘插进USB口”是两个完全不同的逻辑——Linux不关心数据在哪个物理设备上只关心你在目录树里的什么位置。IMX6ULL开发板更是如此。它的系统可能存放在eMMC里也可能在SD卡里或者通过TFTP从电脑上加载。但不管启动介质是什么一旦系统跑起来你看到的永远是那一棵从/开始的目录树。如果你还用“找盘符”的思维去操作很容易出现“文件明明在卡里为什么我在根目录下找不到”的困惑。1.2 IMX6ULL开发板上的Linux和虚拟机里的Ubuntu不是一回事很多人在学嵌入式之前先在VMware里装了个Ubuntu练手。那个环境当然很好但别把经验完全照搬到开发板上。有几个差异特别明显命令集是裁剪过的。开发板上的很多基础命令由BusyBox提供它把几十个命令打包成一个可执行文件参数支持范围比台式机上的完整版GNU工具链小得多。ls、find这些命令的基本用法没问题但一些高级参数可能直接不支持。默认就是root用户。开发板出厂系统为了方便调试串口登录后直接就是root身份没有权限保护。这意味着rm -rf这种命令一旦敲错系统不会拦你它是真的会直接删掉。没有额外的保护层。开发板上的文件系统是精简的没有图形界面占空间但同样的也没有回收站、没有恢复分区。删掉的库文件、误覆盖的脚本很多时候只能重新烧写整个系统。理解了这些差异你就会明白在开发板上敲命令比在虚拟机里更需要养成清醒、谨慎的习惯。这也是为什么我强烈建议新手从文件和目录操作开始练先在一个低风险的环境里建立肌肉记忆。2. 登录IMX6ULL后的第一步先搞清楚自己站在哪2.1 pwd每到一个新环境先问路第一次通过串口登录IMX6ULL登录成功后你会看到类似这样的提示符#就一个井号什么都不显示。它其实在告诉你两件事当前用户是rootroot的提示符默认是#普通用户是$然后就没有然后了。有些固件会配置一下提示符显示当前路径比如/root #但很多出厂固件为了省空间提示符就是光秃秃的。所以第一件事养成输入pwdprint working directory的习惯# pwd /rootpwd就是回答“我在哪”的命令。它输出当前所在的绝对路径。在开发板上调试时我每次登录后的习惯动作就是先pwd尤其是一段时间没操作、串口已经刷了几屏日志之后更需要确认自己是不是还在原来的目录。这里有个细节很多开发板的默认登录目录是/root而不是普通Linux里的/home/用户名。因为板子上没有给你创建普通用户直接就是root家目录。如果你发现pwd输出的是/而不是/root也别奇怪说明系统没有做家目录配置直接停在根目录了。2.2 cd路径切换的几种姿势以及嵌入式下的限制cdchange directory是切换目录的命令。基础用法人人都会# cd /etc # pwd /etc但有几种切换方式值得单独拿出来说cd ..回到上一级目录。这个在嵌入式调试时太常用了。比如你在/home/root/work下编译文件想回到/home/root看看别的源码直接cd ..。cd ~回到当前用户的家目录。root用户就是/root。cd -回到上一次所在的目录。这个命令特别好用。你在/etc下改完配置cd -一下就能回到刚才/home/root/work的编译现场不用重新敲长路径。绝对路径vs相对路径cd /etc用的是绝对路径不管你在哪都能去cd work用的是相对路径它是基于当前位置的。新手最容易踩的坑就是把相对路径当成绝对路径用结果cd work提示“no such file or directory”其实不是目录不存在是你当前不在它所在的父目录里。嵌入式环境下SPI要注意一个情况完整的Bash是支持Tab键自动补全路径的但开发板上因为是BusyBox的shell通常是ash部分固件默认没有启用路径补全或者补全能力很弱。你按了一下Tab没反应别以为是键盘坏了这是环境本身的限制。解决办法也简单路径尽量用绝对路径或者自己把路径敲完整别扭的地方忍一忍后面熟练了就不觉得是什么大问题了。2.3 ls把当前目录的内容看个透彻ls可能是你用得最多的命令没有之一。最基本的就是直接输入ls把当前目录下的文件和子目录名字列出来# ls app driver README.md但真正调试时要的是细节所以ls -l几乎是必用的# ls -l drwxr-xr-x 2 root root 4096 Jan 1 00:00 app -rw-r--r-- 1 root root 1024 Jan 1 00:01 README.md这条命令输出的一大串信息怎么读值得花点时间第一个字符表示文件类型d是目录-是普通文件l是符号链接软链接b是块设备比如SD卡、eMMCc是字符设备比如串口、触摸屏。后面9个字符是权限位分成三组属主权限、属组权限、其他人权限。rwx分别是读、写、执行-表示没有对应权限。再往后是硬链接数、属主、属组、文件大小、最后修改时间、文件名。开发板上看设备节点时这个命令尤其有用。比如/dev目录下有很多设备文件ls -l /dev/一看就能分清哪个是块设备b开头、哪个是字符设备c开头。ls还有几个高频参数组合# ls -la # ls -lh # ls -R-a是显示隐藏文件文件名以.开头的嵌入式文件系统里很多配置文件是隐藏的比如/etc下的某些运行态文件。-h是human-readable把文件大小显示成4.0K、1.2M这样好读的单位调试时判断文件是不是完整复制过来很有用。-R是递归列出子目录在BusyBox里能替代缺失的tree命令。我在板子上常用的一套组合是ls -lh信息够用、输出不至于太长。串口终端刷屏很慢如果直接ls -lR整个根目录那个输出量会让你等到怀疑人生。3. 开发板上的目录操作命令组合拳怎么打3.1 mkdir和rmdir创建与删除目录在开发板上工作第一步通常是建立自己的工作目录。比如我想把学习代码放在/home/root/work下一条命令就能建好# mkdir -p /home/root/work/01_led-p参数的意义是如果/home/root不存在那就一并创建出来。不加-p的话只要父目录缺一级命令就报错。这个参数在写脚本时尤其重要脚本里经常要保证某个目录存在直接mkdir -p最省心。删除目录对应的是rmdir但它有个让人抓狂的限制只能删除空目录。在实际开发中目录里几乎总有文件所以rmdir的使用频率非常低。更常用的是rm -r这个后面单独说。这里分享一个我自己在板子上的习惯所有实验代码都建在/home/root/work下按编号建子目录比如01_led、02_key、03_uart。这么做的好处是当目录结构清晰时后续编译、部署、备份都会非常顺手。你如果一开始就随手建在根目录或者/tmp下过两周再回头看自己都找不到东西在哪。3.2 从cp到mv再到rm文件操作三件套cp用来复制文件。单文件复制很简单# cp hello.c /home/root/work/01_led/复制整个目录就必须加-r# cp -r /home/root/project /home/root/work/如果你希望连同文件属性、时间戳一起保留比如复制一个带可执行权限的脚本用cp -a更合适。-a等同于-dpR保留一切属性。在板子上拷贝可执行程序时如果拷完发现没有执行权限多半是没用-a或者-p把权限位丢了。mv兼顾移动和重命名两个功能# mv old_name.c new_name.c # 重命名 # mv app /home/root/work/ # 移动到别的目录嵌入式板子上尤其要注意mv在同一文件系统内是瞬时的但在不同文件系统之间比如从/tmp到SD卡挂载点/mnt/sd实际上是“先复制再删除”大文件会明显卡顿。别以为它卡死了给它点时间。rm是最需要敬畏的命令。单文件删除# rm test.txt递归删除目录# rm -r old_dir/而那条著名的组合rm -rf在开发板上真的会出人命。-f是强制不提示、不确认直接删。如果你在root用户下敲了rm -rf /usr/lib那系统就半残了。更夸张的有人敲过rm -rf /把整个根文件系统删了开发板当场变砖只能重新烧写。我个人的防御性习惯是凡是删除操作先ls看清楚目标是什么再决定用rm还是rm -r非紧急情况不用-f删除目录前先看一眼路径是不是用了相对路径避免在错误的目录下删错东西。没有回收站的环境里谨慎就是最大的效率。3.3 find和其他查询手段快速定位文件开发板上的文件系统再精简也有几千个文件。想找某个文件在哪个目录下靠cd加ls一个个翻是不现实的。用find按名字查找# find / -name libc.so* 2/dev/null这条命令的意思是从根目录开始找名字匹配libc.so*的文件错误信息丢弃。2/dev/null是把权限不足产生的报错扔到黑洞里不然输出里大部分都是“Permission denied”真正有用的结果反而被淹没了。在嵌入式环境下这个处理几乎是必须的因为板子上很多系统目录对root是开放的但部分特殊文件系统路径还是会刷一堆权限提示。按文件类型查找也有用比如只找目录# find /etc -type d我只讲这两个最基本的用法。更深度的-exec、-mtime这类参数在开发板BusyBox上的支持程度参差不齐不建议新手在板子上深究。另外开发板的固件一般没有tree命令。想看目录树结构就用ls -R代替。输出格式虽然没那么漂亮但足够梳理结构了。4. IMX6ULL根文件系统的目录结构别用Windows的脑子理解/tmp4.1 标准目录布局每个目录是干嘛的Linux根目录下的标准布局是有讲究的不是随意堆的。我建议在开发板上挨个ls /看一眼再对照下面的说明把每个目录的职责记个大概目录作用嵌入式环境下的注意事项/bin基本命令通常包含BusyBox是整个系统最基础的命令集/sbin系统管理命令存放ifconfig、mount、reboot这类要求root权限的管理命令/etc系统配置文件嵌入式下最核心的目录基本每个功能都在这里有配置/lib库文件存放动态链接库删错会导致大部分命令无法运行/home用户家目录板子上一般只有一个root用户/home下内容不多/rootroot用户的家目录我们的实验代码通常放在这里/usr用户程序和数据嵌入式系统可能把它精简掉了也可能只放少量工具/var运行时的可变数据日志、临时锁文件等重启后内容经常被清掉/tmp临时文件重启清空可以放心折腾/dev设备节点字符设备和块设备的入口由devtmpfs自动管理/proc内核虚拟文件系统运行时生成反映内核和进程状态/sys内核设备模型以文件形式暴露设备和驱动的属性/mnt挂载点手动挂载SD卡、U盘的常用位置要特别留意/dev、/proc、/sys这三个目录。它们不是真正的磁盘文件夹而是内核暴露出来的虚拟文件系统。你在/proc/cpuinfo里看到的是CPU信息在/sys/class/leds下能看到板载LED的驱动节点——这些都是未来写驱动、调应用时天天要打交道的地方。4.2 嵌入式环境特有的那几个“虚”目录IMX6ULL板子启动后你发现/proc和/sys里不是空的里面有很多文件和目录。这些文件不是你从网上下载放进去的而是内核实时生成的虚拟文件。它们的作用是让你通过读写文件的方式去查看内核状态、控制硬件。比如# cat /proc/cpuinfo # ls /sys/class/leds/cat /proc/cpuinfo能看到CPU型号、BogoMIPS这些信息/sys/class/leds/下面一般有heartbeat或LED相关的目录往特定文件里写东西就能点亮或熄灭板载LED。这就是Linux“一切皆文件”思想的典型体现——连硬件控制都是通过文件读写完成的。如果哪天你发现/proc或/sys目录是空的不用急着怀疑系统坏了多半是因为启动脚本里没有执行mount -t proc proc /proc和mount -t sysfs sysfs /sys。手动补挂一下就好# mount -t proc proc /proc # mount -t sysfs sysfs /sys4.3 给新手的三条目录安全红线在开发板上摸索目录时有几条我亲身撞过、也看别人撞过的红线提前说清楚能省很多麻烦不要随意删除/lib下的文件。动态链接库之间互相依赖删掉一个看似没用的小库可能连ls都运行不了。想验证我试过恢复的唯一办法就是重刷文件系统。不要改动/etc下你不认识的配置文件。尤其inittab、fstab、init.d/rcS这些它们是系统启动的骨架。改错一个字节板子可能启动到一半就卡死。/tmp目录随便用但别用来放重要文件。它通常是tmpfs内存文件系统或纯粹的临时目录断电重启后内容全部消失。我见过有人把编译产物放到/tmp断一次电后源码还在、编译好的文件没了白白重新编译一遍。5. 在IMX6ULL上实操时最容易踩的坑5.1 串口终端没有Tab补全、没有鼠标、没有中文很多新手把虚拟机里的Linux操作习惯带到开发板上第一个不适应的就是串口终端太难用了。没有鼠标复制粘贴、按Tab不一定能补全、中文文件名直接显示乱码甚至方向键随便按还会输出乱码字符。既然是这样的环境就得用适合它的操作方式。我的做法是把板子上要用的长命令在PC的记事本或编辑软件里提前准备好然后通过复制粘贴整个命令到终端。Windows下很多串口工具如MobaXterm、SecureCRT都支持粘贴多行命令比一个字符一个字符敲效率高得多也避免了敲错的概率。如果实在要手敲尽量养成分段小命令的习惯。比如创建目录树不用一次性敲完一个超长的mkdir可以分层建顺便确认每一层路径对不对。5.2 BusyBox的命令参数是精简版用之前先自查开发板上的命令大多来自BusyBox这玩意的参数和GNU完整版比是“有一个共同子集”的关系。ls -l没问题ls --colorauto可能就不认识rm -rf没问题rm -I这种交互确认参数可能就没有。在板子上执行不认识的参数别硬试先看一眼帮助# ls --helpBusyBox的--help输出非常简洁但足够告诉你当前支持哪些参数了。我的建议是在虚拟机里先把命令和参数练熟再到板子上执行。板子上的环境毕竟简单经不起你反复折腾。5.3 root身份下没有“后悔药”开发板默认root登录这在方便的同时也意味着所有操作都没有“二次确认”。虚拟机里的Ubuntu普通用户删错了可能只是权限不足板子上root是畅通无阻地删除一切。我现在给自己定的规矩是删除操作之前先ls把目标列出来亲眼确认再删能不用-f就不用让系统多问一句不是坏事路径中含有空格或特殊字符的文件用引号包起来操作比如rm my file.txt不在确认是否完全理解用途的情况下不删除只读系统目录里的任何文件。有人觉得这样太保守但说真的开发板重刷一次系统虽然不难但来回折腾的工时远不如每条命令前多花几秒钟确认来的划算。6. 实操训练在IMX6ULL上搭一个自己的工作区说到底命令学的最终目的是用得顺。这里给一套我在板子上过基础命令的开胃训练题可以原封不动跟着操作一遍顺便验证自己上面的内容是不是真的理解了。第一步建立工作区# mkdir -p /home/root/work/01_learn # cd /home/root/work/01_learn # pwd预期输出是/home/root/work/01_learn。如果pwd输出不是这个说明你的cd没有生效或者当前环境有问题停下来检查。第二步创建几个测试文件# echo hello imx6ull test1.txt # cp test1.txt test2.txt # mkdir sub_dir # mv test2.txt sub_dir/ # ls -l此时你应该能看到test1.txt和sub_dir目录test2.txt已经移进子目录里了。第三步使用通配符批量操作# ls *.txt # cp *.txt sub_dir/ # rm test1.txt # ls sub_dir/通配符*在嵌入式shell里是支持的如果ls *.txt能列出文件说明当前目录有匹配的文件。这个操作在以后批量部署文件时很有用。第四步使用find定位# find / -name test2.txt 2/dev/null如果前面步骤都正常这台板子上test2.txt应该只在/home/root/work/01_learn/sub_dir/下面。find能帮你找到它的完整路径这就是以后面对几千个文件时最实用的招式。这套操作我建议在IMX6ULL上连做三遍直到不需要看笔记就能流畅完成。目录命令属于那种“熟能生巧”的功夫看十遍教程不如亲手敲一遍。下一篇系列会接着讲文件内容查看和编辑把cat、more、vi这些在开发板上最常用的看文件、改文件的玩法捋一遍。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

YOLOv8猫狗检测实战:4300张数据集训练调优与部署全解析 2026/10/2 16:07:15

YOLOv8猫狗检测实战:4300张数据集训练调优与部署全解析

1. 为什么我盯上了这个4300张的猫狗检测数据集做目标检测这行的朋友都有一个共识:模型结构可以复现,训练脚本可以照抄,唯独高质量、标注规范、场景覆盖到位的数据集,是真正卡脖子的资源。我前后经手过十几个宠物识别相关的项目&am…

阅读更多 →
Paperclip:Node.js+React+OpenClaw构建AI Agent轻量落地架构 2026/10/2 16:07:14

Paperclip:Node.js+React+OpenClaw构建AI Agent轻量落地架构

1. 项目概述:Paperclip 不是回形针,而是一个被严重误读的 AI 工程实践入口“Paperclip”这个词一出来,很多人第一反应是办公桌上那个弯弯绕绕的金属小物件——回形针。但在这个技术语境下,它根本不是物理实体,而是一个…

阅读更多 →
视觉原型驱动的小目标检测数据生成方法 2026/10/2 16:07:14

视觉原型驱动的小目标检测数据生成方法

1. 这不是又一个“数据增强”噱头,而是小目标检测领域正在发生的静默革命你有没有在做无人机航拍图像的小目标检测时,被这样的问题反复折磨过:标注一张图要花20分钟,而模型在测试集上一遇到遮挡、低分辨率、尺度突变就直接漏检&am…

阅读更多 →
AMD ROCm云实例部署Gemma4:15分钟落地实战与踩坑记录 2026/10/2 16:07:14

AMD ROCm云实例部署Gemma4:15分钟落地实战与踩坑记录

直奔主题:AMD ROCm 云实例跑 Gemma4,15 分钟到底是噱头还是真能落地? 先说结论:15 分钟这个数字,如果你指的是 从拿到一台裸的 AMD 云实例、到模型开始正常吐字 ,那是有可能做到的,但前提是你…

阅读更多 →
GPTs 提示词工程解析:「互联网+挑战杯大创竞赛导师」的五维角色配置设计 2026/10/2 16:07:14

GPTs 提示词工程解析:「互联网+挑战杯大创竞赛导师」的五维角色配置设计

提示工程 【免费下载链接】GPTs leaked prompts of GPTs 项目地址: https://gitcode.com/GitHub_Trending/gp/GPTs 点击查看 免费下载 本文以开源仓库 GitHub_Trending/gp/GPTs 中收录的泄露提示词 互联网挑战杯大创竞赛导师.md 为研究对象,逐段拆解这份…

阅读更多 →
云服务器代理商:Hermes Agent API集成指南 让 AI 助手连接你的所有业务|TaoToken 统一 Key 打通 OpenAI 与 CRM Webhook 2026/10/2 16:07:00

云服务器代理商:Hermes Agent API集成指南 让 AI 助手连接你的所有业务|TaoToken 统一 Key 打通 OpenAI 与 CRM Webhook

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉