我只是好奇是否可以单独安装 Linux 内核,或者您是否需要使用其中一种风格。如果有可能,你会怎么做?我不需要详细的教程。我只想知道如何在概念上完成。我不擅长低级的东西,想知道如何将操作系统安装到计算机中。我想这与MBR有关。
哦,我注意到很多答案都暗示了一些最小 Linux 的某个发行版。我可能应该说我不打算安装最小的或基本的 Linux。这个问题纯粹是理论上的。不过,我真的很感激所有的答案,如果我想安装一个真正个性化的 Linux,我会立即参考它们。
从技术上讲,你可以只安装一个引导加载程序和内核,但是一旦内核启动,它就会抱怨无法启动“init”,然后它就会坐在那里,你不能用它做任何事情。
顺便说一句,它是 MBR 中引导加载程序的一部分。内核位于磁盘常规区域的某个位置。引导加载程序被配置为知道它在哪里,因此它可以加载内核并执行它。
如果您问是否可以在现有系统上“安装”或升级内核而不安装一堆其他程序?
Linux 内核是一个二进制文件,通常vmlinuz-x.x.x-x-name
在boot
目录(通常是硬盘开头的一个单独的小分区)中命名,其中 x 是版本号。“名称”只是一个可以在编译时设置的内核名称,您可以使用它来识别内核用于什么类型的机器或体系结构或任何其他原因。
它由引导加载程序在引导时加载,通常GRUB
由 BIOS ROM 调用的 MBR 中的引导代码调用。一旦加载,它就不会“保持打开”或受到特殊保护。所以你可以用另一个工作内核替换那个文件。但是,GRUB
它有一个很酷的功能,可以让您选择多个内核进行引导。因此,将您的附加内核添加到该列表中是非常明智的,但请保留原来的已知工作内核,以防万一出现问题。
我相信几乎所有发行版都制作了一个“模块化”内核,其中设备驱动程序位于单独的文件中。所以大多数内核需要一个包含在引导时可用的驱动程序的文件系统,这就是“initrd”(初始 RAM 磁盘)或“initramfs”的用途。 GRUB
将内核加载到内存中的某个位置,并将 initrd 加载到不同的位置,然后跳转到内核,告诉它 initrd 在哪里,启动 Linux。
驱动程序也可以“内置”到内核中,因此在引导加载程序加载vmlinuz
映像时会自动加载并可用。旨在用于不同系统(例如大多数发行版的系统)的内核通常会最小化内核中内置的内容,因为稍后将在引导过程中扫描可用的硬件,并且只会加载代表当前硬件的模块。
有一些工具可以修改和创建 initrd。Debian 有很好的工具,我想其他发行版也有。
因此,如果您从 kernel.org 下载更新的内核并对其进行编译以创建新的内核二进制映像,则需要使用与该内核一起使用的驱动程序来制作或更新 initrd。旧的 initrd 将无法工作,因为驱动程序必须与正在运行的内核版本相匹配。
initrd 文件的命名initrd.img-x.x.x.x-name
与内核类似,并且可以像内核一样在引导后被替换,最佳实践表明在您知道可以成功引导到新内核+initrd 之前不要删除已知的工作 initrd。
我希望这能提供一些背景信息。
如果您正在寻找一个几乎没有安装其他程序的“准系统”Linux 安装,我最喜欢的选择一直是安装 Debiannetinst
映像。您几乎只有运行命令行文本控制台和nano
文本编辑器所需的最基本工具。
文章评论