如何从内核源代码制作一个最小的可启动linux(仅带有终端)?

如何从内核源代码制作一个最小的可启动linux(仅带有终端)?

我想制作一个非常小的Linux操作系统,它只有一个终端接口和基本的命令/应用程序(busybox是我对命令/应用程序的选择)。我不想在我的操作系统上使用安装选项。我只是希望它完全从 RAM 启动并运行。我打算使用 ISO-Linux 作为引导加载程序。没有网络,没有虚拟化支持,没有不必要的驱动程序等。我希望它是非常非常基本的操作系统。我已经从 kernel.org 下载了最新的稳定内核(v4.5)源代码,并准备好了构建环境。

我的另一个困惑是,默认情况下内核是否有任何用户界面(shell、终端……),我可以在其中键入命令并查看输出?

答案1

从技术上讲你可以实现这一点。不过,内核没有任何内置的用户界面。

您需要按照以下步骤操作:

1. Create a initramfs with static busybox and nothing else.
This initramfs will have few necessary directories: like proc, sys, tmp, bin, usr, etc

2. Write a "/init" script, whose main job will be:
   a. mount the procfs,tmpfs and sysfs.
   b. Call busybox's udev i.e. mdev
   c. Install the busybox command onto virtual system by executing busybox install -s
   d. Calling /bin/sh

3. Source the initramfs directory while compiling the kernel. You can do so by flag: CONFIG_INITRAMFS_SOURCE

4. Compile your kernel.

5. Boot off this kernel and you will get the shell prompt with minimal things.

不过,我以非常正式的方式写了上面的注释。您可以按照您想要的方式对其进行微调。

更新:

跟随这个链接一些指导方针。

答案2

如果您对构建内核只有很少的知识,您可能想研究最小的发行版,例如核心操作系统。其他(我自己没有使用过)是 Project Atomic、Snappy Ubuntu Core、RancherOS、Photon...

如果您的要求是在 RAM 中运行,可以使用简约的救援和/或 LiveCD 发行版或嵌入式发行版它可能适合您的使用(顺便说一句,那是什么用途?),比从头开始创建发行版的工作量更少。

相关内容