Linux 操作系统要发挥作用,需要哪些最低限度的组件,并且随着我学习 Linux 以及我的理解和需求的增长,我可以将其用作扩展和改进的基础?
答案1
如果您的意思是像了解源代码一样学习 Linux,您可能想尝试从零开始的Linux
答案2
单个可执行 rootfs
绝对最小系统运行一个/init
程序,正如我在单一应用程序 Linux |超级用户
最小的 Linux 直播
https://github.com/ivandavidov/minimal
对于更有趣的交互系统,这是一个(主要是教育性的)小脚本,它:
- 下载内核和 busybox 的源代码
- 编译它们
- 使用它们生成可启动的 8Mb ISO
然后 ISO 会让您处于一个带有 busybox 的最小 shell 中。
使用 QEMU 您可以轻松启动进入系统。
我已经修改它以允许从内核源目录运行它:https://github.com/cirosantilli/runlinux
用法:
git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh
然后您将进入 QEMU 窗口,其中包含新的最小系统。惊人的。
由于它很小,因此这是阅读源代码并了解正在发生的事情的好选择。
在 Ubuntu 16.04 上测试。
构建根
大量 Makefile 脚本,用于管理:
- GCC交叉编译工具链
- 内核编译
- 引导加载程序编译
- rootfs的生成
- 源代码树中有大量的包下载/构建配方,包括 GTK 等复杂的东西。有一个依赖系统。
最小的例子:
git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.
它甚至还提供了从头开始构建 X11 的方法:如何在我自己的Linux Buildroot系统上安装X11?
一些大企业使用的经过专业实战考验的东西。
约克托
https://en.wikipedia.org/wiki/Yocto_Project
与 Buildroot 的目标非常相似,不确定权衡。快速浏览后,感觉更加臃肿/功能丰富,具体取决于您想如何称呼它。他们的脚本可能更理智一些。
尼克斯操作系统
另一种看起来很像 Buildroot,但这个确实有一个真正健全的包描述格式!它似乎还专注于支持同时安装多个版本的库。
当我上次在 2020 年检查时,交叉编译+在 QEMU 上运行的能力非常棒,这也是 Buildroot 的重点。但这仍然是一个非常有前途的项目。
阿尔卑斯Linux
https://github.com/gliderlabs/docker-alpine
带有包管理器的嵌入式分发,可从网站提供预编译的二进制文件。
也可以看看
答案3
如果您确实只想要 Linux 系统的最低限度,您可以尝试嵌入式系统(如路由器)的发行版。它们通常只携带绝对最少的软件,并且通常缺乏图形用户界面,迫使您熟悉命令行。一个缺点是,这些系统常常打破常规 Linux 发行版的惯例,例如,它们在不常见的地方安装软件或使用简化的 init 系统。
如果你想尝试一下,你可以尝试例如虚拟机中的openwrt。