玩 Linux 这么多年我一直觉得“装系统”这件事最容易被低估。尤其那种从空白硬盘开始的裸机安装看起来就是插个 U 盘、点几下下一步可真正操作起来几乎每一台机器都能给你整点不一样的幺蛾子。我最近给一台新机器从头装 Ubuntu 26.04 LTS原计划两个小时搞定最后折腾了差不多一个通宵。回头复盘踩的坑基本都集中在镜像校验、UEFI 引导、分区、网卡、驱动和中文输入法这几块每一个单独拎出来都不复杂但在一条流水线上连续踩的时候就很容易让人怀疑人生。这篇文章是我把自己真实走过的流程重新整理了一遍。目标很单纯让一台一块空白硬盘的新机器装完 Ubuntu 26.04 LTS 之后能真正“干活”。所谓干活就是能正常上网、能 SSH 连上、中文输入法顺手、代码字体看着舒服、显卡驱动稳定、Docker 和常用开发环境装好甚至接上 RK3576 这类开发板也能直接开展工作。适合刚接触 Ubuntu 的新手也适合那些已经装过一两次但总在某个环节卡住的老朋友。1. 装系统前先想清楚的事镜像版本、UEFI 和安全启动1.1 别把“LTS”和“最新”划等号很多人一说 Ubuntu 26.04 LTS第一反应是“版本越新越好”。实际上对裸机安装来说版本新不新不是你最该关注的点分支对不对才是。下载页面里通常能看到 Desktop 和 Server 两种镜像桌面版自带 GNOME 桌面Server 版默认不带图形界面。如果这台机器是当开发机或日常主力机用直接选 Desktop 版如果是当服务器搁在机柜里装 Server 版反而干净省得之后还得卸一堆用不到的图形组件。这个决定要在下载前做别看哪个体积大就下哪个两种镜像装完后补齐对方那部分功能都很费劲。下载完镜像后我强烈建议用 sha256sum 校验一下这一步真的不能跳。裸装翻车案例里有相当大比例是镜像在下载过程中损坏导致安装器跑到一半突然报错或者干脆 U 盘引导不起来。校验做法很简单在终端里执行sha256sum ubuntu-26.04-desktop-amd64.iso然后把输出的一长串哈希值和镜像页面上公开的哈希值对比。只要有一处字符不一样就说明文件不完整要么重下要么换一个下载源。1.2 用看待服务器的眼光看待新硬盘新机器拿到手先别急着重装系统。进 BIOS 看三件事第一主板当前用的是 UEFI 模式还是传统 BIOS 模式第二安全启动是开启还是关闭状态第三硬盘接口是 AHCI 模式还是 RAID 模式。Ubuntu 26.04 的安装器对 UEFI GPT 这组合支持最好。传统 BIOS 的机器不是不能装但有额外的分区兼容要求麻烦很多。安全启动这个选项建议大部分新机器先保持关闭原因不是 Ubuntu 不支持安全启动而是后续安装 NVIDIA 驱动和部分第三方内核模块时如果启用安全启动还要额外走签名流程纯新手在这个地方被耗两个小时的案例太多了。等系统装好、驱动稳定了再回头开安全启动也不迟。硬盘的 AHCI 和 RAID 模式也要留意。很多品牌机出厂默认 RAID OnUbuntu 安装器在这个模式下不一定能看到硬盘。进 BIOS 把它切成 AHCI问题立刻消失。注意如果这台机器原本预装了 Windows切换模式会导致 Windows 无法启动所以有双系统需求的请在操作前先把 Windows 的恢复盘准备好并且关闭 Windows 里的“快速启动”这一步也是老生常谈但真能救命的。2. 创建安装盘几 KB 的偏差都可能让人废掉一个晚上2.1 从镜像到 U 盘不是“把文件拷进去”U 盘制作是裸装流程里最容易出现低级错误的一环。很多人把 ISO 文件直接拖进 U 盘然后插到机器上发现引导不了还以为是机器有问题。其实安装盘的工作原理和普通数据盘不一样它是把 ISO 里的引导信息“写进”U 盘的扇区里相当于给 U 盘做一个特殊布局。所以必须用专门的工具或者用 dd 命令整盘写入。Linux 环境下最直接的方式sudo dd ifubuntu-26.04-desktop-amd64.iso of/dev/sdX bs4M statusprogress oflagsync注意这里的of参数一定要写 U 盘对应的设备名比如/dev/sdb不是/dev/sdb1。写错设备的后果非常严重这个我多说一句检查设备名用lsblk它会列出所有磁盘及分区大小通过容量对比就能确定哪个是你的 U 盘。dd 这种命令没有后悔药写之前务必反复确认。Windows 环境下Rufus 和 balenaEtcher 都是可用选项。Etcher 更适合新手界面直观选镜像、选 U 盘、点 Flash完事。Rufus 选项更多适合有一定经验的用户可以自行决定分区类型是 GPT 还是 MBR。总体原则是引导模式跟 BIOS 保持一致BIOS 是 UEFI 就选 GPT传统 BIOS 就选 MBR。2.2 为什么同一根 U 盘换一台机器就会失败创建完安装盘还有一个很普遍的“怪象”同一根 U 盘在一台机器上引导正常换到另一台就黑屏。多数原因是主板只从 UEFI 的某个特定引导路径启动而 U 盘制作工具没把你手上这个 ISO 的引导文件放到它期望的位置。碰到这种情况不要反复重写安装盘先进 BIOS 确认两件事启动模式有没有从 Legacy 切到 UEFI或者反过来引导菜单里能否识别到UEFI: USB Device这样的条目。另一个容易被忽略的点是 USB 接口。有些前置 USB 口供电不稳U 盘引导时会中断插到机箱背面 I/O 面板上的 USB 口尤其是 USB 2.0 黑色口往往最稳。这类硬件层面的玄学排查时优先排除免得在软件层面空转。3. 分区不是做数学题裸盘手动分区的取舍与我的最终方案3.1 为什么我不用 LVM 和全盘加密Ubuntu 安装器自带两种自动分区方案一种是“清除整个磁盘并安装 Ubuntu”另一种是“设置 LVM”。对于一块空白硬盘大多数人会直接选“清除整个磁盘”没问题简单直接。但如果你想在同一个盘上预留双系统或者以后想自己管理系统盘和应用数据盘手动分区值得花几分钟研究。手动分区时有一个问题我必须说清楚LVM 和全盘加密都很好但它们会引入额外的抽象层。LVM 是逻辑卷管理好处是以后可以动态调整分区大小坏处是如果对 LVM 命令不熟一旦出现卷组损坏或逻辑卷挂载失败恢复难度比普通分区大得多。全盘加密通过 LUKS 实现能保护数据但每次开机都要输入密码而且以后换机器、挂载旧盘时也多一道环节。我的建议是开发机、日常主力机优先考虑普通分区虚拟机、服务器、需要灵活调整磁盘空间的生产环境再考虑 LVM对安全级别有硬性要求的场景才用 LUKS 全盘加密。这不是说 LVM 和加密不好而是对“从空白硬盘到能干活”这个目标来说每一步都要想清楚收益和折腾成本。3.2 我的裸盘手动分区方案一块 1TB 的 NVMe 固态我的最终布局是这样的挂载点分区类型大小文件系统作用/boot/efiEFI 系统分区512MBFAT32UEFI 引导必需/bootLinux 文件系统1GBext4内核和引导文件/Linux 文件系统剩余空间全部ext4系统、用户数据、应用Swap 没有再单独划分区Ubuntu 26.04 默认支持交换文件系统会自动创建/swap.img。普通桌面场景下交换文件和交换分区的作用差异不大但交换分区以后调整大小非常麻烦交换文件则是纯文件想改大改小随时可以操作灵活性高得多。为什么不单独分/home这是很多台式机用户会纠结的问题。单独分/home的好处是以后重装系统不丢个人数据但我个人的看法是开发机上大量项目依赖文件、Docker 镜像、环境配置都散落在/home下只靠分区保护数据并不够真正的安全感应该来自配置管理和备份。单独分一个/home反而会让系统盘空间不好用反而限制了以后的项目吞吐和 Docker 镜像缓存。这个分区方案是建立在“整个盘只装 Ubuntu”的前提上的。如果要做双系统先给 Windows 留下空间再让 Ubuntu 安装器使用剩余未分配空间或者自行建立分区。双系统的麻烦点在于 UEFI 引导菜单会互相覆盖建议装完两个系统后进入 BIOS 手动调整启动顺序优先使用 Ubuntu 的 grub 接管引导。3.3 手动分区时容易犯的错手动分区里头埋着一个特别基础的坑忘记指定 EFI 分区。在安装器的手动分区界面里如果你选了 GPT 分区表但没创建/boot/efi点“现在安装”后安装器可能会报一段“没有为 EFI 分区指派根分区”之类的错误或者干脆卡在引导安装那一步。遇到这种情况不用慌回到分区界面确认有没有一块 FAT32 格式的分区挂载在/boot/efi把它标记为“EFI 系统分区”即可。另一个坑是给/boot分区留的空间太小。有些教程建议 500MB 就够但 Ubuntu 长期更新下来旧内核不会自动清理/boot会慢慢被内核镜像和 initrd 文件塞满。1GB 是比较舒服的下限留 2GB 也完全合理。如果你是 512GB 以下的小硬盘可以考虑不单独分/boot把引导文件和根分区放一起安装器也支持。4. 安装后第一步让机器能联网、能访问远方、能更新4.1 网络激活什么网卡型号最让人折腾安装完成后第一次登录系统第一个要解决的问题是联网。桌面版安装时如果选择的网络没连上装完系统后大概率网络也是断的。先打开终端执行ip a或者nmcli device status看看有没有网卡和 IP。如果用的是有线网络但网卡没有自动获取到 IP常见原因是网卡驱动没加载。以太网卡型号往往集中在 Intel 和 Realtek 两家中Intel I219/I226 大部分情况免驱Realtek 2.5G 网卡比如 RTL8125在部分新内核上偶尔要手动装固件。可以用lspci -nnk | grep -A2 -i ethernet查看网卡型号和已用的驱动模块。有线不通的情况下先用手机 USB 共享网络或者临时接一张免驱 USB 网卡让机器能上网然后补装驱动。不要尝试在完全离线的情况下编译驱动那可真是自己给自己上刑。如果连接的是无线网络先确认无线网卡是不是博通那批老型号。博通无线网卡的驱动在 Linux 下常年是个尴尬话题Ubuntu 26.04 的内核虽然默认包含线驱动但部分芯片需要额外接受“附加驱动”里的固件许可协议。可以通过“软件与更新”里的“附加驱动”标签页安装闭源驱动也可以通过命令行查看ubuntu-drivers list如果列出的是bcmwl-kernel-source这类包就通过sudo apt install装它装完重启再连网。4.2 SSH 连不上十有八九是这四件事有很多人装完系统想从另一台电脑 SSH 进来结果发现连不上于是开始怀疑防火墙、怀疑路由器、怀疑 OpenSSH 版本。实际上新装的 Ubuntu 默认根本不安装 SSH 服务端这个问题每次都有一堆人要现查。正确做法是这样装好 OpenSSH 服务端并启用sudo apt update sudo apt install -y openssh-server sudo systemctl enable --now ssh sudo systemctl status ssh --no-pager如果服务状态是active (running)但仍然连不上按顺序排查客户端和服务器是否在同一网段或者服务器的 IP 是否正确用ip a看服务器防火墙是否允许 22 端口检查sudo ufw status如果状态是 active 就放行sudo ufw allow OpenSSH sudo ufw enable~/.ssh/authorized_keys权限是否正确。用密钥登录时常见坑是权限过宽SSH 会直接拒绝。执行chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys/etc/ssh/sshd_config里的PasswordAuthentication是否被改成了no。部分镜像或安全加固脚本会默认关闭密码登录如果还没有配好密钥就先把密码登录打开。这些步骤做完SSH 基本就通了剩下的都是网络层面的外部问题和系统无关。4.3 版本刚装好先把源换成国内镜像Ubuntu 装完后默认的软件源在国内更新速度感人换源是必须操作。Ubuntu 26.04 使用的是新的 deb822 格式源文件不再是一行一个源的sources.list而是一个/etc/apt/sources.list.d/ubuntu.sources文件。换源前先做个备份然后替换顶级域名。这里我用阿里云镜像站举例sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak sudo sed -i \ -e s|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g \ -e s|http://security.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g \ /etc/apt/sources.list.d/ubuntu.sources sudo apt update如果你用的其它镜像站只需要把mirrors.aliyun.com替换成对应域名。国内常见的还有网易镜像、中科大镜像等项目主页上都有源配置说明。改完之后执行sudo apt update能顺利刷新索引就没问题。有一点要特别提醒主机名的介质问题。很多教程写的 sed 命令只替换了archive.ubuntu.com漏了security.ubuntu.com这样安全更新还是走国外节点还是慢。上面命令里我两个一起替换了注意核对好你的源文件里实际的 URL 写法。5. 让中文输入法和字体更像“顺手的工具”输入法、fontconfig、终端字体5.1 输入法选型fcitx5 而不是“闭眼装搜狗”新装的 Ubuntu 桌面版默认带 IBus 输入法框架也内置了智能拼音。如果你只需要一个能用的中文输入法那自带的就够了。但如果你想要更好的词库管理、更顺滑的响应以及往后在 JetBrains 全家桶、VS Code 里都不出问题我几乎总会推荐 fcitx5这也成为我装完新系统后必做的步骤之一。关于搜狗输入法我这个观点可能要得罪一些人它不是不能装但 Ubuntu 每次大版本升级、输入法框架变化、依赖库更新搜狗几乎是每次都出问题的高发区。它自带一套额外的依赖和 fcitx5 或者 ibus 集成一冲突症状就是无法切换、面板丢失、光标跟随异常而你作为用户还找不道理可讲。我的底线是装 fcitx5sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-configtool im-config -n fcitx5im-config -n fcitx5这条命令会把系统默认输入法框架切换成 fcitx5执行完之后注销重新登录让环境变量生效。重启桌面后使用fcitx5-configtool在配置界面里添加“拼音”把所有快捷键记得改成自己习惯的键位。CtrlSpace 切换中英文是默认逻辑适应之后基本上不会再想去折腾别的。5.2 为什么有些软件里输入法死活不出中文输入法装好了却在某个应用里打不出中文这是另一个高频问题。com.yly 的核心原因是这些应用没有正确设置输入法环境变量。微信、部分 Electron 应用、某些 Java GUI 应用在 Linux 下常见症状是不跟随输入法框架。这套环境变量通常写在/etc/environment里GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx如果 fcitx5 是通过自动配置方式启动的通常桌面环境会自动注入这些变量不需要手动加。但当你在 terminal 里手动启动某些程序时环境变量缺了就会失效。这时候在启动它的终端里先执行export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx再启动程序一般就正常了。Smart appearance输入法这个问题真的很吃时机补了很多坑这是在装完重启之后先用浏览器验证一遍中文输入再去打开 IM 软件测如果浏览器里也没问题、IM 里有问题那就是软件自身和输入法框架的集成问题而不是输入法本身坏了——别一上来就重装。5.3 字体把 Ubuntu 的观感往 macOS 方向拉一拉写代码的人对字体的要求比普通用户高很多这绝对不算矫情。网上有个很经典的提问WSL Ubuntu 写代码最推荐的字体是什么希望能接近 macOS 的体验。抛开具体字体名这个话题背后其实藏着两个需求一是字体渲染需要柔和不发虚二是中英文混排时字重和宽度要协调。Ubuntu 默认的字体渲染偏向小幅微调在部分高清屏上看着还行但在普通 1080P 屏上中文颇有“毛边感”。而 macOS 的字体渲染思路是亚像素平滑配合无 hinting看起来更圆润。要做的事有两件装一套合适的字体再改 fontconfig 配置。字体层面我推荐开源免费、仓库里直接能装的方案sudo apt install -y fonts-noto-cjk fonts-inter fonts-jetbrains-monoNoto Sans CJK 负责中文Inter 负责无衬线英文JetBrains Mono 负责等宽代码字体。这些都是开源字体不需要处理授权问题。渲染层面我的/etc/fonts/local.conf做了如下设置这个配置对高分屏和普通屏都比较友好?xml version1.0? !DOCTYPE fontconfig SYSTEM fonts.dtd fontconfig match targetpattern test namefamilystringsans-serif/string/test edit namefamily modeprepend bindingstrong stringInter/string stringNoto Sans CJK SC/string /edit /match match targetpattern test namefamilystringmonospace/string/test edit namefamily modeprepend bindingstrong stringJetBrains Mono/string stringNoto Sans Mono CJK SC/string /edit /match match targetfont edit namehinting modeassignboolfalse/bool/edit edit nameantialias modeassignbooltrue/bool/edit edit namergba modeassignrgb/edit edit namelcdfilter modeassignlcddefault/edit /match /fontconfig写完执行sudo install -m 644 /tmp/local.conf /etc/fonts/local.conf fc-cache -f重启应用后终端和编辑器的字体渲染会平滑很多。注意这个配置是全局的如果你在终端里已经手动指定了 JetBrains Mono那么等宽字体匹配会优先用你的手动设置fontconfig 只接管没有指定字体的场景。我个人的验证方法是打开 gedit 或者 VS Code输入一段中英文混排的文本看看中文和英文的基线是否对齐、字重差别是否刺眼。如果满意进入下一步。6. 显卡驱动别一上来就下载官网 runfile6.1 用 ubuntu-drivers 而不是官网安装包如果你的机器上有 NVIDIA 显卡系统装完很可能用的是开源驱动 nouveau卡顿、风扇狂转是家常便饭打游戏、跑 CUDA 更是想都不要想。这时候大多数人会去 NVIDIA 官网下载一个.run安装包双击运行。我不建议这么做原因有两个第一官网 runfile 需要你自己构建 DKMS 模块后续一旦升级内核驱动模块可能不会自动重新编译导致重启后驱动消失落在命令行界面一脸懵。第二runfile 安装过程中如果启用了 Wayland可能遇到 GNOME 桌面冲突排错成本很高。Ubuntu 仓库里内置了便利的工具干净方便sudo apt update sudo apt install -y ubuntu-drivers-common sudo ubuntu-drivers install这条命令会自动检测显卡型号挑选当前版本最合适的闭源驱动并且完成 DKMS 注册。装完重启然后用nvidia-smi验证能显示驱动版本和显卡信息就算成功。6.2 安全启动和内核模块签名装完 NVIDIA 驱动最阴间的情况出现了重启后一切正常再重启突然驱动没了。这种“时好时坏”的状态基本都指向一个问题——安全启动。前面我说过裸装时建议先关闭安全启动就是为了这个环节。如果安全启动保持开启Ubuntu 引导时只加载已签名的内核模块而nvidia模块是第三方编译的没有 MOKMachine Owner Key签名直接就被拒载了。如果你确实是先装好了驱动后来才开启安全启动那登录系统后第一个界面就会弹出一个 MOK 管理工具提示让你设置一个密码给模块签名。日常使用的方法是在驱动装好后主动执行sudo mokutil --disable-validation或者重新进 BIOS 把安全启动关掉二选一没有第三条路。对普通使用场景来说安全启动对个人电脑的边际保护非常有限关掉它换来驱动稳定这个取舍是合理的。6.3 驱动装完 UI 依然卡去查渲染器NVIDIA 闭源驱动装好后GNOME 桌面还可能遇到另一个症状菜单拖动流畅但浏览器滚动卡顿窗口切换有明显延迟。很多人第一反应是驱动没装好想重装驱动。实际上去检查一下系统正在使用的 GPU 渲染器在终端执行glxinfo | grep OpenGL renderer如果输出是llvmpipe说明系统在用 CPU 软渲染NVIDIA 驱动根本没有接管图形栈。这时候检查/var/log/Xorg.0.log或者用nvidia-settings -q GpuInfo看看 GPU 是否被识别最常见的元凶是 Xorg 配置里手动写死了 NVIDIA 总线 ID而该 ID 和当前设备不符或者 Wayland 会话没有调用 NVIDIA 的 EGL 后端。如果你的显卡比较新而 Ubuntu 26.04 带的 NVIDIA 驱动版本偏旧也可以只升级 NVIDIA 驱动包sudo apt install -y nvidia-driver-570具体可用版本号用apt search nvidia-driver查看选最新稳定版即可。7. 放下“只装了系统”的错觉Docker、VS Code、Codex、conda 一次装齐7.1 Docker别用“官方源安装脚本”硬扛桌面机的 Docker 安装有两条路一条是 Docker 官方提供的get.docker.com脚本用 curl 一键安装另一条是使用 Ubuntu 仓库里的包。如果你已经换好国内源直接用 Ubuntu 仓库的包更省事sudo apt install -y docker.io docker-compose-v2 sudo systemctl enable --now docker装完以后把当前用户加入 docker 组避免每条命令都 sudosudo usermod -aG docker $USER newgrp docker docker run hello-world如果你需要 Docker 官方仓库里的较新版本比如需要在 Docker 里跑实验性功能可以在之前换好的源基础上执行官方仓库的安装说明但要注意官方仓库地址指向download.docker.com国内网络拉取不一定顺畅。是否引入镜像加速根据你实际下载 Docker 镜像的速度决定。这里我把镜像层面的事说清楚换好 Ubuntu apt 源只解决软件包下载Docker 镜像下载走的是另一条链路两者不要混为一谈。7.2 VS Code装 deb 包胜过仓库在 Ubuntu 上安装 VS Code我有两条经验。能用仓库方式安装就尽量用仓库方式方便apt upgrade统一升级。但考虑到国内下载速度装 deb 包也完全没问题区别只在于后续的自动升级。官方仓库方式安装需要导入 Microsoft 的 GPG key具体过程搜索“Visual Studio Code Linux 安装”即可这是官方长期维护的路线。装好之后自查一个点字体是否跟着系统 fontconfig 走了。终端里打开 VS Code把编辑器字体设为JetBrains Mono然后把editor.fontLigatures打开代码观感瞬间就上去一半。7.3 conda 和 MiniForge 的正确打开方式Conda 在 Linux 下的安装我建议新手直接考虑 Miniconda 或者更轻量的 MiniForge不要装 Anaconda 全家桶很多包根本用不到而且默认加载 base 环境会拖慢终端启动速度。下载对应架构的安装脚本后执行 bash 安装安装过程中有一段初始化 shell 的提示选择 yes然后conda config --set auto_activate_base false这样每次开终端不会再自动激活 base但需要时随时用conda activate base。另外用 conda 的时候也要注意换国内 channelAnaconda 官方源在国内不稳定可以用 TUNA 或者阿里等镜像站提供的 Anaconda 源配置方法和 apt 源类似换掉.condarc里的 channel 地址。如果你只是需要用 Python 做简单脚本不建议上 conda直接用 Ubuntu 自带的 Python 配合python3 -m venv就行。conda 是为那种需要 numpy、CUDA 工具包、编译链之间复杂依赖的项目准备的它解决的痛点在我实际开发中通常是“编译一个包时缺少系统依赖”这种所以不要动不动就整一套 conda 环境。7.4 Codex CLI 的安装思路如果你对 AI 编程助手感兴趣想在 Ubuntu 26.04 上跑 Codex CLI它本质是个命令行工具安装逻辑很简单下载官方提供的 CLI 程序、赋予执行权限、把路径放进$PATH即可。具体安装细节以官方 README 为准我只提醒三件事。第一这个 CLI 通常需要 Node.js 环境。Ubuntu 自带 Node 版本可能偏老可以通过 NodeSource 仓库安装 Node 20 LTS 或更高版本。第二运行前先确认它依赖的系统库是否齐全缺了什么库跑起来以后终端会给出比较明确的报错按提示装就行。第三把它当测试工具不要在生产环境里放养式使用它生成代码的质量和你给的上下文约束强相关。8. 给嵌入式开发板准备的交叉环境RK3576 这类板卡怎么挂进系统最后这部分可能受众范围小一些但我发现越来越多人在 Ubuntu 上用开发板搜索里也经常看到“RK3576 构建 Ubuntu 系统”“开发板挂载 Ubuntu”相关的词。我这里给一条通用路径。如果你手里的主板是 Rockchip 的 RK3576 这类 Arm 架构开发板在 Ubuntu 上的工作通常分两条线。一条是把 Ubuntu 本身构建成板子的固件镜像这条线一般要用对应的 SDK 仓库从官方地址拉取 buildroot 或 yocto 工程然后在宿主机上安装交叉编译工具链。Rockchip 官方仓库对 Ubuntu 宿主机的依赖比较敏感反复踩坑的地方多半是缺少某版本 python、缺少某几个 sudo apt 安装的基础库以及repo工具的版本不对。另一条线是调试和挂载。板子通过 USB 线连接到 Ubuntu 主机最常见的问题是设备节点权限不够lsusb能看到设备但访问/dev/ttyUSB0时提示 Permission denied。这时需要添加一条 udev 规则SUBSYSTEMtty, ATTRS{idVendor}你的板卡VID, MODE0666, GROUPdialoutidVendor可以从lsusb输出里看到比如某厂商的 USB 设备 VID 可能是2207之类请以实际输出为准不要照抄。保存到/etc/udev/rules.d/99-rk3576.rules然后执行sudo udevadm control --reload-rules sudo udevadm trigger重新插拔 USB 线权限就正常了。交叉编译时另一种更省心的方案是用 Docker 容器封装构建环境这也是 RK3576 这类板卡比较流行的做法。在宿主机上把 SDK 装进容器以后换机器不担心环境迁移问题和我前面说到的 Docker 安装步骤刚好衔接上。9. 装完以后的“体检”顺序整个过程走完我每次都会按下面这个顺序做一遍最终检查顺序本身就是一个排错逻辑从上到下每一层都确认没问题再进到下一层。重启一次确认系统能正常从硬盘引导U 盘拔掉也不影响打开终端执行ip a确认网络正常能够ping通网关和外部域名用另一台电脑 SSH 连一次确认远程访问正常在任意输入框里切换一次中英文输入确认输入法状态正常打开浏览器滚动半小时确认显卡渲染没有明显卡顿执行nvidia-smi确认 NVIDIA 驱动在重启后依然可用跑一次docker run hello-world确认 Docker 服务正常在 VS Code 里新建文件写几行代码确认字体和代码补全没有异常接上开发板确认 USB 设备权限正确。这一套下来机器才算是从“装好了系统”变成了“能干活”。10. 最后补一个频发的安装中途问题安装器跑到一半没反应或者直接跳回桌面这在部分设备上是安装器前台线程卡死。遇到这种情况先别急着认定镜像或 U 盘损坏考虑一下是不是安装器内存不足。解决办法是一次性禁用安装器的图形效果。在 grub 引导界面选中“Try or Install Ubuntu”按下e在linux开头那一行末尾追加nomodeset然后按 CtrlX 继续启动。nomodeset会让内核使用基础显示驱动绕开安装器对显卡的初始化流程。这个参数只是临时给安装器用的装完系统后的正常启动并不需要。这个参数同时也能解决一部分新手安装时遇到的黑屏问题所以如果你在启动安装介质时就黑屏直接用这个方法。如果你在启动安装界面看到分辨率不对或者画面撕裂同样可以先加一个quiet splash删除看看是不是某些 log 信息滚动太快导致误以为卡死。另外安装过程中拔插 U 盘的念头不要有哪怕只是换到背面 USB 口也等装完再动。安装器运行到一半bootloader 写入可能会因为 U 盘变动而失败只能从头再来。我个人的体会是裸装 Ubuntu 最花时间的其实不是敲那几条命令而是某一步失败之后你根本不知道是硬件、固件、镜像还是驱动的问题。把可变因素从一开始就一个一个排除顺序是从下往上镜像校验主板引导分区网络源驱动应用到开发环境。按这个顺序排查就能基本走出装到半夜还在反复磨的怪圈。希望这篇流程笔记能帮你省掉那些我踩过的通宵。
