Mor*_*tie 2 compile initrd linux-kernel kernel-module
大家好,我是 linux 内核编译的新手,所以我有一些问题:通过编译 linux 内核,我们是否构建了一个完全独立的操作系统,它不依赖于任何 linux 发行版?
如果是的话......好吧,当我想使用 initramfs 命令创建 initrd 文件时,为什么要添加一些有关我正在运行的 linux 解构(我正在运行 Ubuntu 10.4)的信息?
我应该如何编译并将模块添加到我编译的 linux 中,我应该把它们放在哪里?
这是我一直在做的事情的总结:
1.获取内核源代码(3.4.1)并使用“make all”命令编译它(我使用我当前的linux .config)
在我的记忆棒上安装 grub
把编译好的 bzImage 放到记忆棒的 /boot 目录下
使用“initramfs”命令创建initrd文件并将其也放入/boot。
使用记忆棒启动我的电脑并进入 grub> 终端
使用 "root (hd0,0)" ; "内核/boot/bzImage"; “initrd /boot/initrd.img”,然后“boot”命令启动。
在出现错误后进入(initramfs)终端,指出找不到“/lib/modules/3.4.1/modules.dep”文件!!!
我究竟做错了什么 ?
tgi*_*ies 11
通过编译 linux 内核,我们是否构建了一个完全独立的操作系统,它不依赖于任何 linux 发行版?
不。Linux 本身不是操作系统。它只是一个内核。一个用户态的系统,包括图书馆和基础软件的集合,是必要的方便与计算机的交互。当我们提到“Linux”时,我们通常的意思是,这是由一个名为 GNU 项目的单独项目提供的。从技术上讲,我们应该(有些人确实)称它为“GNU/Linux”。
好吧,当我想使用 initramfs 命令创建 initrd 文件时,为什么要添加一些有关我正在运行的 linux destrubution 的信息(我正在运行 Ubuntu 10.4)?
因为您的 initrd 包含在启动时最初设置您的系统、加载必要的驱动程序和守护进程、在您的硬盘驱动器上查找和安装必需的分区等的程序集合。它实际上不仅是针对您的分发,但取决于您的特定安装、配置和计算机。它通常不能与任何其他人的 initrd 互换。这就是为什么它必须由您的系统生成。
我应该如何编译并将模块添加到我编译的 linux 中,我应该把它们放在哪里?
如果您正在编译自己的内核,大概是make menuconfig在编译之前在内核源目录中进行操作,这允许您选择要编译的功能,以及它们是集成到内核二进制文件中还是作为模块提供。
这是我一直在做的事情的总结:
有多种原因无法按您希望的方式工作。
获取内核源代码 (3.4.1) 并使用“make all”命令编译它(我使用我当前的 linux .config )
如果您运行的是 Ubuntu 10.04,它比 Linux 内核的 3.x 分支早很多,更不用说 3.4。它很可能无法正常工作,至少在没有大量额外工作的情况下不会。配置文件也发生了很大变化,坦率地说,我很惊讶它没有抛出关于您(大概是 Linux 2.6)配置文件中与 3.4 中的工作方式不匹配的事情的左右错误。此外,您可能希望从 kernel.org 下载 Ubuntu 的内核源代码包,而不是普通的普通内核源代码,因为 Ubuntu 会修补内核以包含所需的功能,并使其与系统中的所有其他内容一起使用。最后,您遗漏了一些步骤,我稍后会介绍这些步骤。
把编译好的 bzImage 放到记忆棒的 /boot 目录下
我不确定你的意图是什么,但如果要在你的记忆棒上安装一个完整的可引导 Linux,还有更多的东西——你在那个内存上根本没有任何用户空间的东西坚持,例如。如果设置正确,这实际上会做的是(尝试)使用记忆棒上的内核在硬盘驱动器上运行 Ubuntu 安装。我相信这应该可行,但是为什么要这样做而不是将内核安装在您的硬盘驱动器上?您可以将它与现有的并排安装,以便您可以在它们之间自由切换。
在出现错误后进入(initramfs)终端,指出找不到“/lib/modules/3.4.1/modules.dep”文件!!!
这可以追溯到我之前提到的遗漏步骤。您需要make modules_install在新内核中将其模块放置在/lib/modules.
然而...
这些都不重要,因为理想情况下,您根本不应该以“传统”方式编译内核,除非您有非常特殊的需要。现在,如果您确实需要编译自己的内核,大多数发行版都有一种方法可以使用它们的自定义内核版本(如果适用),自动构建过程,将内核作为包安装,以便您可以干净地安装和删除它根据需要,并配置您的引导加载程序,让您选择新内核或旧内核。在 Ubuntu 中,您应该遵循以下说明:内核/编译 - Ubuntu Wiki
这并不是说你不能仅仅为了踢球/出于教育目的而以“老式”方式编译内核——我就是这样编译了我的第一个内核,但这是在有更好的方法来做到这一点之前。如果您的系统不被破坏对您来说很重要,请为您的发行版使用推荐的方法,使用它们的源,并使用它们的包管理。
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |