1. 为什么 2024 年还有人在装 Ubuntu 18.04先把话说在前面Ubuntu 18.04 代号 Bionic Beaver标准支持在 2023 年就已经画上句号了官方把后续的安全维护挪进了 ESM 通道。从纯粹的用最新系统角度讲它确实不是首选。但如果你在机器人、自动驾驶、工业视觉、嵌入式这几个圈子里混过就一定会遇到同一个场景——手里的项目被死死锁在 18.04 上。最典型的就是 ROS Melodic。这套机器人操作系统官方只对 18.04 做过完整适配一堆依赖包在 20.04 上要么找不到、要么版本对不上。还有 Autoware 的早期版本、相机雷达联合标定工具链、某些厂商的 SDK它们的编译脚本里写死了 Python 3.6、 GCC 7、Qt 5.9 这些版本号你把它搬到新系统上光解决依赖冲突就能耗掉一个星期。所以现实情况是新系统用来日常办公18.04 用来跑特定项目两条腿走路。这篇内容就是围绕怎么把 18.04 稳稳当当地装起来来写的。我会把镜像获取与校验、虚拟机方案和物理机方案、分区怎么划、装完必做的换源和更新、开发环境从零搭到能干活、以及一堆我踩过的坑全都摊开讲。不管你是第一次碰 Linux 的新手还是想找个能直接抄的装机清单的老手都能从里面找到能用的东西。全程按实操顺序推进不会出现原理讲三页、操作一句话的情况。1.1 18.04 到底被谁锁住了三类典型使用场景第一类是机器人方向的开发者。ROS Melodic 的软件源里挂着几千个包编译依赖全部按 18.04 的库版本发布换系统意味着整条工具链要重新验证成本高得离谱。第二类是工控和视觉设备厂商他们的相机驱动、采集卡驱动、标定软件往往只提供 18.04 下的.deb包连源码都不给你没有任何折腾空间。第三类是教学和企业内训教材、课件、实验环境是几年前定下来的统一版本比追求新版本重要得多。这三类场景有个共同点你不需要系统有多新你需要系统足够稳定、依赖足够齐全、出问题有人踩过坑。18.04 恰好满足这三点软件生态成熟网上能查到的解决方案多遇到报错基本都能搜到同款。这就是它到今天还有生命力的原因。理解这一点很重要因为它直接决定了后面的装机思路——我们追求的不是花哨而是一次装好、长期不折腾。1.2 桌面版还是服务器版先想清楚拿来干嘛Ubuntu 18.04 的镜像主要分两条线Desktop 桌面版和 Server 服务器版。桌面版带 GNOME 桌面环境装上就能用图形界面适合本地开发、跑带界面的标定工具、看可视化数据。服务器版没有图形界面体积小、资源占用低适合部署在后端跑服务。很多人图省事装桌面版最后资源被图形界面吃掉一大半机器风扇呼呼转。我的建议很直白需要看画面就装桌面版纯跑服务就装服务器版。如果确实需要图形界面但又想省资源可以装服务器版之后手动补一个轻量桌面比如 XFCE比 GNOME 省一半内存。至于版本号18.04 的最后一个点版本是 18.04.6这是目前最省心的选择因为早期的 18.04.0 到 18.04.5 会要求你先做大量增量更新中间还容易卡在某个包上。2. 镜像从哪来下载渠道、校验和介质制作镜像这玩意儿最大的风险不是下不到而是下到一个被篡改或者残缺的文件。ISO 动辄一两个 G下载中途断线、网盘限速都很容易让你的文件处于看起来像那么回事、装到一半报错的状态。所以下载完成之后的校验步骤绝对不能跳过。2.1 下载渠道与正确的取件姿势官方渠道是首选。Ubuntu 的旧版本镜像归档在官方的 releases 目录下路径规则是releases.ubuntu.com/18.04/里面会列出ubuntu-18.04.6-desktop-amd64.iso、ubuntu-18.04.6-server-amd64.iso以及对应的校验文件SHA256SUMS。官方源在国外速度可能不理想这时候用国内高校和云厂商的镜像站会快非常多路径结构基本一致把域名换掉就行比如清华、中科大、阿里云这些站都有 ubuntu 的归档目录。这里有一个细节要注意镜像站通常只同步当前受支持的版本18.04 已经退出了标准支持周期所以不是每个镜像站都还留着它的归档。如果你在某个镜像站找不到 18.04 的目录不用怀疑自己输错了路径换个站或者直接回官方归档找就行。另外文件名里的amd64指的是 64 位 x86 架构如果你是 ARM 开发板或者苹果 M 系列芯片的机器需要的是arm64版本别下错了。2.2 校验这一步别偷懒下载完之后第一件事是校验哈希值。Windows 上可以用 PowerShell 跑Get-FileHashLinux 和 macOS 直接用sha256sumsha256sum ubuntu-18.04.6-desktop-amd64.iso拿到输出的一长串字符跟SHA256SUMS文件里对应的那一行比对。完全一致才算过关。如果懒得肉眼比对把两个文件放同一个目录跑校验命令更省事sha256sum -c SHA256SUMS --ignore-missing看到OK就放心了。我见过太多次装到 70% 报错、反复重装找不到原因的案例最后发现是 ISO 下载时断流导致的文件损坏。花两分钟做校验能省掉两小时的重装。2.3 U 盘启动盘三种制作方式对比物理机安装需要一个启动盘。工具选择上Windows 环境下 Rufus 最省心界面直观、写入速度快分区类型选 GPT 对应 UEFI 启动、MBR 对应传统 BIOS 启动。balenaEtcher 跨平台操作更傻瓜化缺点是速度稍慢。Linux 环境下可以直接用ddsudo dd ifubuntu-18.04.6-desktop-amd64.iso of/dev/sdX bs4M statusprogress oflagsync注意of后面必须是整块设备比如/dev/sdb绝对不能写成分区/dev/sdb1。写错目标会直接覆盖你硬盘上的数据而且不可恢复。执行前先用lsblk确认设备名。U 盘容量 8GB 起步16GB 更稳。制作完成后如果 Windows 提示需要格式化 U 盘才能使用千万别点确认那是 Windows 不认 Linux 文件系统的正常反应点了就把启动盘毁了。2.4 虚拟机方案先用虚拟机试水是明智的如果你还没想清楚要不要动真格分区强烈建议先在虚拟机里跑一遍。虚拟机的好处是隔离干净、随时删掉重来、可以打快照。VMware Workstation、VirtualBox、Hyper-V 都能用个人使用场景下 VMware 对 18.04 的兼容性最好拖拽文件、共享文件夹、剪贴板互通这些功能都开箱可用VirtualBox 开源免费但需要额外装增强包。虚拟机方案的缺点也很明显图形性能差跑三维可视化和实时标定会卡USB 设备透传偶尔抽风接工业相机的时候可能识别不到。所以虚拟机适合学习、验证流程、跑纯软件项目涉及到硬件对接的活儿还是老老实实上物理机。3. 虚拟机里装 18.04参数怎么配才不卡虚拟机安装成功与否八成取决于资源分配是否合理。给少了卡到没法用给多了宿主机自己也扛不住。下面这套参数是我在 16GB 内存的笔记本上反复调出来的可以当基准。3.1 资源分配的计算逻辑内存方面18.04 桌面版空闲状态大概吃 800MB 到 1.2GB跑编译器或者浏览器会飙到 3GB 以上。所以最低给 2GB推荐 4GB跑重型开发给 8GB。这里有个经验公式虚拟机内存不要超过宿主机物理内存的一半否则宿主机自己会开始疯狂交换整机卡成幻灯片。CPU 分配 2 核是底线4 核更舒服但同样别超过宿主机逻辑核心数的一半。磁盘建议 40GB 起步编译一个大项目光中间产物就能吃掉十几 G。磁盘类型选拆分成多个文件还是单个文件前者便于迁移拷贝后者读写性能略好我个人倾向单个文件因为现在 SSD 拷贝速度很快性能收益更实际。显卡这块虚拟机的 3D 加速可以勾上显存给到 1GB 以上不然 GNOME 桌面拖动窗口都会掉帧。网络模式用 NAT 最简单虚拟机可以上网但外部访问不到如果需要在局域网里用 SSH 连进去换成桥接模式虚拟机就能拿到一个独立 IP。3.2 安装向导每一屏该选什么启动虚拟机后进入安装界面。语言选English还是中文我的建议是安装阶段用英文装完再装中文语言包。原因是中文界面的安装程序在分区环节的翻译容易让人误解而且出问题时搜索英文报错信息命中率更高。键盘布局选 English (US)即使你用中文输入法也不影响输入法后面单独装。更新选项那一屏有两个勾选框一个是安装时下载更新一个是安装第三方软件。两个都取消。原因很实在安装时下载更新会让整个过程从二十分钟变成两小时而且一旦网络抖动安装程序可能直接卡死。这些更新装完系统之后一起做效率高得多。安装类型选Erase disk and install Ubuntu虚拟机里没必要手动分区让安装程序自动分就行。它会自动划一个根分区加一个 swap对虚拟机来说够用了。接着选时区然后创建用户。用户名建议全小写、不带空格和特殊字符因为用户名会出现在主机名和终端提示符里带大写字母以后敲命令要多按一次 Shift纯属给自己添堵。密码别设太简单但也别设到自己都记不住虚拟机里没那么多安全顾虑。3.3 虚拟机分区方案什么时候需要手动自动化分区在虚拟机里够用但如果你打算把这个虚拟机的磁盘当作长期开发环境手动分一下更合理。思路是把系统和个人数据分开这样以后想重装系统/home里的东西可以原地保留。挂载点建议大小文件系统用途说明/30GBext4系统与软件包/home剩余全部ext4用户数据、代码、配置swap4GBswap内存不足时的缓冲也用于休眠/boot/efi512MBFAT32UEFI 启动引导仅 UEFI 模式需要swap 大小的传统算法是内存的两倍那是十几年前内存只有 512MB 时代的老规矩。现在内存普遍 8GB 以上swap 给内存的一半到等量就够了除非你要用休眠功能那就必须给到内存大小以上否则休眠会失败。3.4 装完之后马上做的三件事第一装虚拟机增强工具。VMware 用户在终端里执行sudo apt install open-vm-tools-desktopVirtualBox 用户装virtualbox-guest-utils。装完重启分辨率自适应、剪贴板共享、拖拽文件就都活了。第二打快照。这是个纯净的初始状态以后折腾坏了直接回滚比重新装一遍省事得多。第三确认网络正常跑一下ping和apt update确保后面装软件不会卡在网络上。4. 物理机安装分区和启动的坑最多物理机安装和虚拟机最大的区别在于你要对自己硬盘上的数据负责。一次分区失误整个盘的东西可能就没了。所以这一段我会讲得细一些。4.1 启动前必须确认的两件事进 BIOS 之前先想清楚你的机器是 UEFI 启动还是传统 BIOS 启动这个决定了分区表的类型和是否需要单独的 EFI 分区。判断方法很简单进 BIOS 看有没有 Secure Boot 这个选项有的话基本就是 UEFI 模式。启动盘制作时UEFI 用 GPT 分区表传统 BIOS 用 MBR。进了 BIOS 之后关掉 Secure Boot把 U 盘调到启动顺序第一位。有些品牌机需要先关快速启动才能识别 U 盘这个选项通常在电源管理里。如果按 F12 之类的快捷键进不去启动菜单就进 BIOS 手动调整启动顺序。4.2 双系统分区手把手划盘如果你打算保留 Windows 做双系统先在 Windows 的磁盘管理里压缩出一块未分配空间至少 60GB 起120GB 更舒服。注意不要在这里新建分区留成未分配状态让 Ubuntu 安装程序去识别。然后进入安装程序到安装类型那一屏选Something else也就是手动分区。这时你会看到硬盘上的所有分区列表务必对照大小和分区类型确认哪个是 Windows 的、哪个是你压缩出来的空闲空间。选错分区格式化Windows 就没了。在空闲空间上依次建立这几个分区先建 EFI 分区选EFI System Partition大小 512MB再建 swap大小参考前面说的规则然后建根分区/30GB文件系统 ext4剩下全部给/home也是 ext4。分区顺序不重要挂载点一定要选对。最下面那个Device for boot loader installation选项非常关键。UEFI 模式下选 EFI 分区对应的设备通常是整块硬盘如 /dev/nvme0n1传统 BIOS 模式下也选整块硬盘不要选某个具体分区。选错会导致 GRUB 引导程序装到奇怪的地方开机直接进不去系统。4.3 引导出问题了怎么办双系统装完最常见的两个问题一是开机直接进 Windows、看不到 Ubuntu 选项二是开机黑屏或者卡在 GRUB 命令行。前者一般是 GRUB 没装到正确位置或者 Windows 的引导管理器优先级更高可以进 BIOS 把 Ubuntu 的引导项调到前面或者用 U 盘启动盘进入 Live 环境修复。后者更常见尤其是带独立显卡的机器。表现是选完 Ubuntu 之后屏幕全黑什么反应都没有。解决办法是在 GRUB 菜单上按e编辑启动参数找到以linux开头的那一行在末尾加上nomodeset然后按 F10 启动。这个参数的作用是让内核不要自己加载显卡驱动交给系统装好驱动后再启用。装完系统之后把显卡驱动装上这个问题就永久解决了。提示如果nomodeset之后还是不亮可以试试再加acpioff或者noapic这些是排查 ACPI 兼容性的老手段对某些老主板有效。5. 装完第一件事换源与系统更新新装好的 18.04默认软件源指向的是国外的服务器。用它跑apt update你可能要等上好几分钟甚至超时失败。这一步不做后面装什么软件都是折磨。5.1 换源的完整操作先备份原始配置这是个好习惯出问题能一键还原sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后编辑源列表文件把里面的archive.ubuntu.com和security.ubuntu.com替换成国内镜像站的域名。手动改容易出错用sed批量替换更快sudo sed -i s|http://archive.ubuntu.com|https://mirrors.aliyun.com|g /etc/apt/sources.list sudo sed -i s|http://security.ubuntu.com|https://mirrors.aliyun.com|g /etc/apt/sources.list sudo sed -i s|http://cn.archive.ubuntu.com|https://mirrors.aliyun.com|g /etc/apt/sources.list注意18.04 的代号是bionic源列表里每一行都会出现这个词。如果你替换完之后发现某些行还指着xenial或者focal说明源文件本身有问题需要整行重写而不是简单替换。改完之后执行更新sudo apt update sudo apt upgrade -y如果apt update报 GPG 签名错误或者 no public key available通常是镜像站密钥没同步可以临时加参数--allow-unauthenticated先把更新跑完之后再补密钥。这不是长久之计但如果卡在这里进不去先让系统能更新再说。5.2 系统层面的三项基础配置第一项是时区。安装时如果没有选对时间会差八小时导致日志时间错乱、证书验证失败。用sudo dpkg-reconfigure tzdata走一遍图形界面选择或者直接改sudo timedatectl set-timezone Asia/Shanghai timedatectl status第二项是主机名。默认的主机名可能是一串随机字符看着别扭。用sudo hostnamectl set-hostname dev01改掉记得顺手把/etc/hosts里的旧名字也一起换掉否则有些程序解析主机名会变慢。第三项是补全基础工具链。18.04 的最小安装里缺少很多东西把常用的编译和运维工具一次装齐sudo apt install -y build-essential curl wget vim git net-tools openssh-server \ htop tree unzip zip p7zip-full bash-completionbuild-essential里打包了 gcc、g、make 这些编译必需的东西缺了它后面装任何需要编译的软件都会失败。openssh-server装上之后就能从宿主机或者其他机器 SSH 连进来了比在虚拟机窗口里敲命令舒服太多。6. 开发环境搭建从裸机到能干活系统装好了换源也做完了接下来是把开发环境搭起来。这一段我会按通用工具 → 语言运行时 → 容器与数据库的顺序来讲每一步都给出可复制的命令。6.1 Linux 常用命令速查与目录约定先把最基础的命令过一遍这部分是每天都要用的。文件操作类ls -lh看文件详情、cd切目录、cp -r递归复制、mv移动或改名、rm -rf强制递归删除。权限类chmod 755 file、chown user:group file。查找类find /path -name *.py、grep -rn keyword ./。进程类ps aux | grep xxx、top或htop、kill -9 PID。有一个概念新手经常搞混/是根目录用户的家目录在/home/用户名系统配置文件在/etc日志在/var/log临时文件在/tmp。搞清这几个位置出问题的时候就知道去哪里找线索了。还有一点Linux 下一切皆文件设备、管道、套接字都能用文件接口操作这是它设计上的核心思路理解了这个很多命令的行为就变得顺理成章。6.2 Git 安装与本地配置Git 直接走包管理装就行sudo apt install -y git git --version装完之后配置身份信息这两项会写进每一次提交记录里git config --global user.name 你的名字 git config --global user.email 你的邮箱 git config --global core.editor vim git config --global credential.helper store最后那行credential.helper store会把凭证明文存在家目录下方便是方便但在多人共用的机器上别这么干。代码托管平台在国内访问偶尔会很慢这时候有两个思路一是用国内代码托管平台建镜像仓库定期同步二是配置 Git 的 URL 替换规则让特定域名的请求走加速通道。还有个更简单的办法是调大缓存并延长超时git config --global http.postBuffer 524288000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999这套配置对大仓库的推送特别有用很多推送到一半报 RPC failed的问题加了这个就好了。6.3 Python系统自带版本与 Anaconda 的取舍18.04 自带 Python 3.6.9。注意系统里的 Python 是很多系统工具的依赖千万不要手贱去替换系统 Python 或者删掉它会导致桌面环境直接崩溃。要装新版本用虚拟环境或者独立发行版。Anaconda 是比较省事的方案能一次装好 Python、科学计算库和包管理器。安装步骤wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh bash Anaconda3-2023.09-0-Linux-x86_64.sh source ~/.bashrcconda 默认走国外源装包速度感人。换成国内镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --set show_channel_urls yespip 也一样换个源速度能快十倍pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple6.4 Node.js、npm 与构建工具链Node 的安装推荐用 nvm 管理版本比直接 apt 装灵活得多。apt 源里的 Node 版本通常很老而且和系统其他包耦合升级麻烦。nvm 装完之后可以自由切换版本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash source ~/.bashrc nvm install 16 nvm use 16如果上面那个脚本下不下来说明网络受限可以换个思路用国内镜像仓库同步一份 nvm 的仓库再执行本地脚本。npm 换源是必做项npm config set registry https://registry.npmmirror.com npm config get registryJava 项目常用的 Gradle 和 Maven 也有同样的问题。Gradle 的换源改build.gradle里的repositories块把仓库地址指向国内镜像同时把distributionUrl也改掉不然连 Gradle 自身的下载都卡distributionUrlhttps\://mirrors.aliyun.com/macports/distfiles/gradle/gradle-7.5-bin.zipJava 环境本身用sudo apt install openjdk-8-jdk或openjdk-11-jdk装18.04 的一个小坑是默认 JDK 版本可能不是你要的装完用update-alternatives --config java手动切换。6.5 Docker 安装与镜像加速18.04 上装 Docker 走官方脚本最省事curl -fsSL https://get.docker.com | sudo bash sudo systemctl enable docker sudo usermod -aG docker $USER最后那行把当前用户加进 docker 组这样以后跑 docker 命令不用每次都加 sudo。注意这条命令要重新登录才生效很多人加完组发现还是要 sudo就是因为没重新登录。镜像拉取慢是老问题解决办法是配置镜像加速器。编辑/etc/docker/daemon.json{ registry-mirrors: [https://你的加速地址], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } }后面那两行是日志轮转配置不加的话容器日志能把磁盘撑爆这是个特别常见的生产事故。改完执行sudo systemctl daemon-reload sudo systemctl restart docker生效。6.6 MySQL 安装与 root 认证方式调整18.04 的 apt 源里是 MySQL 5.7直接装sudo apt install -y mysql-server sudo systemctl status mysql装完之后你会发现用mysql -u root -p登录不上去或者随便输密码就进去了。这是 5.7 的一个特性root 默认用auth_socket插件认证也就是靠系统用户身份免密登录。要用密码登录得先改认证方式ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的新密码; FLUSH PRIVILEGES;改完之后跑一遍安全加固脚本它会引导你删掉匿名用户、禁用远程 root 登录、删掉测试库sudo mysql_secure_installation如果apt install卡在 Setting up mysql-server 这一步不动八成是 systemd 服务启动失败去看/var/log/mysql/error.log通常是数据目录权限或者磁盘空间的问题。7. 常见问题与排查实录前面讲的是正常流程实际装的时候总有意外。这一段我把遇到过的典型问题整理成表格方便对照排查。7.1 安装阶段问题速查现象可能原因处理方式选完启动项后黑屏显卡驱动与内核不兼容GRUB 加nomodeset参数找不到硬盘BIOS 里 SATA 模式为 RAID改成 AHCI 模式虚拟机提示需要开启虚拟化宿主机的 VT-x/AMD-V 未启用进 BIOS 打开虚拟化选项安装程序卡在正在复制文件ISO 文件损坏或 U 盘有坏块重新校验 ISO换 U 盘分区界面看不到空闲空间Windows 做的是动态磁盘或开启了 BitLocker关闭加密转换为基础磁盘装完重启进不去系统GRUB 装错位置用启动盘进 Live 环境修复引导黑屏这个问题的排查顺序是先试nomodeset不行再加acpioff还不行就试i915.modeset0或者radeon.modeset0根据你的显卡品牌。这几套参数覆盖了九成以上的显示兼容性问题。7.2 使用阶段常见故障apt update报 Could not get lock 是很常见的原因是另一个 apt 进程还在跑可能是系统自动更新。等它跑完或者用sudo lsof /var/lib/dpkg/lock-frontend找到进程号杀掉。注意不要直接删锁文件那样会让 dpkg 状态损坏。Unable to locate package 一般有两种情况包名打错了或者这个包不在你启用的源里。可以用apt search 关键词先搜一下确认包名正确。还有可能是apt update没跑过索引是旧的。磁盘满了也是个高频问题。用df -h看各分区使用率du -sh /* 2/dev/null | sort -hr | head找出占用大的目录。常见的大户是/var/log、/var/cache/apt/archives、Docker 的/var/lib/docker。清理 apt 缓存用sudo apt clean清理日志用sudo journalctl --vacuum-size200M。7.3 中文乱码、输入法与压缩包编码解压 Windows 传来的 zip 文件中文文件名经常变成乱码。原因是 zip 格式对文件名的编码没有统一标准Windows 下用 GBKLinux 下按 UTF-8 解析自然对不上。解决办法是安装unzip之后加编码参数unzip -O CP936 文件名.zip如果-O参数不被支持说明 unzip 版本太老先sudo apt install --only-upgrade unzip升级。另一个思路是用7z解压它对编码的容错更好7z x 文件名.zip中文输入法在 18.04 上推荐装 ibus-libpinyinsudo apt install -y ibus ibus-libpinyin装完在设置里把输入源加上重启一下 ibus 就生效了。如果装完还是敲不出中文检查~/.bashrc里有没有设GTK_IM_MODULE、QT_IM_MODULE、XMODIFIERS这三个环境变量缺少的话补上export GTK_IM_MODULEibus export QT_IM_MODULEibus export XMODIFIERSimibus7.4 磁盘快照与备份别等出事才想起来虚拟机用户直接打快照就是最省事的备份方式装完系统、配完环境各打一个出问题几秒钟回滚。物理机用户可以用 rsync 做增量备份把家目录同步到外置硬盘rsync -avh --delete --exclude.cache --exclude.local/share/Trash /home/用户名/ /media/外置盘/backup/--delete的意思是让目标端和源端保持一致源端删掉的文件目标端也删。这个参数要谨慎用如果源路径写错了可能把目标端有用的数据清掉。稳妥的做法是先不加--delete跑一次确认同步的内容没问题再加。提示做系统级备份光备份/home是不够的/etc里的配置文件同样重要。特别是网络配置、SSH 配置、数据库配置这些重装系统之后重新配一遍很费时间。8. 一些长期维护上的个人体会装系统这件事第一次装会觉得步骤繁琐装到第三次就成肌肉记忆了。我自己的习惯是维护一份装机清单文本文件每次装新机器就照着走一遍把踩过的坑和对应的解决方案也记在里面。时间长了这份清单就成了最有价值的资产比任何教程都贴合自己的环境。还有几个小习惯值得养成。第一任何系统级修改之前先备份配置文件加个.bak后缀花不了两秒出问题能救命。第二记录自己装过的每一个软件和它的版本尤其是那些手动编译安装的因为 apt 管不到它们哪天需要迁移环境的时候你会感谢当初记下来的自己。第三定期跑一次apt update apt upgrade18.04 虽然过了标准支持期但安全补丁还在通过 ESM 渠道发布长期不更新会积累一堆未修复的漏洞。对于想把 18.04 长期用作生产环境的场景还有两个方向可以考虑。一是给关键服务加一层访问控制和审计把对外暴露的端口收紧用ufw做基本的防火墙规则管理。二是考虑内核层面的扩展能力比如通过加载自定义内核模块来实现特定功能或者使用系统提供的安全模块框架做访问策略。这些属于进阶话题涉及到内核编程和系统调用的细节需要单独花时间研究但思路是相通的先保证基础环境稳定再谈功能扩展。最后分享一个我踩过的坑。有一次为了省磁盘空间把/var/log挂到了一个小分区上结果某天服务日志暴涨日志分区写满连带整个系统都无法写入SSH 也连不上了只能进单用户模式清理。从那以后我给自己定了规矩日志、Docker 数据、apt 缓存这三个目录要么单独给足空间要么配好轮转策略。系统装起来只要二十分钟但因为一个目录满掉导致业务中断损失的时间是它的几十倍。