我正在编写一个基于 Linux 的操作系统,但我想在这个操作系统上“重新发明轮子”,这只是一项成就。有人告诉我,Linux 可以在没有任何软件包的情况下安装在 PC 上(显然会导致“内核恐慌”),但我找不到任何教程。我只需要知道如何从一个空分区开始,并让它启动到可以启动的程度(并加载我将提供的 init 文件)。我不想使用任何软件包,因为我将在启动时执行一个程序。
答案1
您是否尝试过使用 LSF?您可以拥有一组可能使用或不使用的软件包: http://www.linuxfromscratch.org/lfs/
答案2
假设 BIOS(非 EFI)x86 系统。某些架构(如 ARM)需要平台数据或设备树信息。
- 构建内核。
- 制作单启动文件系统,并标记为可启动。
- 将内核安装到启动文件系统中。
- 安装引导加载程序。
- 配置引导加载程序来启动你的内核,无需参数,无需init{ramfs,rd}。
- 引导。
- 读
Documentation/initrd.txt
关于如何构建 initramfs,如果您想进行 initramfs 引导,否则创建一个新分区并格式化它(根文件系统)。忽略 ramdisk 部分本身,而使用 CPIO 映像部分。 - 构建 busybox,至少配置一个 shell。
- 将 busybox 安装到 initramfs 或根文件系统中。对于前者,配置引导加载程序以使用 initramfs/告诉 Linux 内核。对于后者,将 /bin/sh 符号链接到 busybox,并将 init=/bin/sh 参数添加到内核命令行。
- 使用 LFS 或其他方式扩展您的喜好。
- 读
boot(7)
如果你想了解传统的(可能不是您在许多现代发行版中使用的)Linux 启动过程。