“Ubuntu From Scratch”通常指从零开始构建一套 Ubuntu 风格的 Linux 系统,而不是从官方 ISO 安装。优化它可以从构建流程、系统体积、性能、可维护性几个方面入手。下面按层次给你一套实用优化思路。
优化前先问自己:
不同目标,优化方向完全不同。
⚠️ 手工一步步做最慢、最容易出错。
✅ 优化方式:
示例结构:
build/
├── 01-toolchain.sh
├── 02-base-system.sh
├── 03-packages.sh
├── 04-config.sh
避免“每次构建结果不一样”。
✅ 做法:
wget -c http://archive.ubuntu.com/ubuntu/pool/main/...
如果你在 x86 上构建 ARM / RISC-V 系统:
✅ 原则:
apt-get --no-install-recommends
Ubuntu 官方内核很大,From Scratch 可以裁剪。
✅ 优化点:
CONFIG_LOCALVERSIONCONFIG_CC_OPTIMIZE_FOR_SIZEmake localmodconfig
✅ 推荐:
CFLAGS="-O2 -march=native"
CXXFLAGS="$CFLAGS"
⚠️ 不要用 -O3 除非你非常清楚后果。
mount -o noatime,data=writeback
systemd-analyze blame
即使 From Scratch,也要有“包概念”:
✅ 推荐工具:
| 问题 | 优化方案 |
|---|---|
| 构建慢 | 并行编译 make -j$(nproc) |
| 系统不稳定 | 固定 glibc / gcc 版本 |
| 启动失败 | 检查 init、fstab、kernel |
| 体积爆炸 | 删除 .a / .la / doc |
| 重复构建 | 脚本化 + 缓存 |
如果你不是必须 From Scratch:
| 目标 | 建议 |
|---|---|
| 最小 Ubuntu | Ubuntu Minimal / Cloud Image |
| 容器 | Docker + Ubuntu Base |
| 定制发行版 | Debian Live / Ubuntu Seed |
| 学习原理 | LFS(比 Ubuntu From Scratch 更成熟) |
你可以直接告诉我:
你是 学习 / 做产品 / 做嵌入式 / 做服务器镜像 哪一类?