请有人帮助我!
我正在从以下位置下载的源代码构建内核http://kernel.org。我成功构建了它并安装了模块。现在我希望我的内核选项在启动时出现,我想选择它。在谷歌上搜索后
i copyed bzImage in /boot folder.
i copyed System.map file in /boot folder
现在我想在启动时为内核创建一个条目。我知道我必须在“/etc/grub.d/”和“/etc/default/grub”中进行更改,之后我必须运行“update-grub”,但问题是如何设置字段。
- 设置根目录='(hd0,msdos6)'
- 搜索--no-floppy--fs-uuid--set=root c291827c-6678-4067-ad09-01481681a9f9
- echo ‘正在加载 Linux 3.5.0-45-generic...’
- linux /boot/vmlinuz-3.5.0-45-generic root=UUID=c291827c-6678-4067-ad09-01481681a9f9 ro 恢复 nomodeset
- echo ‘正在加载初始 ramdisk ...’
- initrd /boot/initrd.img-3.5.0-45-generic
这些是一些字段,但我不知道如何获取 uuid 的值,在根目录中设置什么(如 hd0、msdos6),它的含义是什么,如何获取初始 ramdisk 映像?
请不要说这个问题与这个或那个问题相似。我已经在 google 和 stack overflow 上搜索过它,但都没有解决我的问题,我得到的只是在浏览器中打开了 100 多个选项卡。
我的要求:-
How to get uuid for new kernel image?
what is (hd0,msdos6)? how to get this value for new kernel image?
请帮助我!
答案1
让我们解释一下 grub...然后解释一下你正在做什么。启动 Linux 系统分为 4 个部分:
- 主引导记录。它非常小,必须位于磁盘上的特定扇区。BIOS 被硬编码为查找它并从那里开始执行。
- Bootlaoder 本身。这可以是 grub、lilo、syslinux 或其他各种东西。在本例中是 grub。通常,MBR(主引导记录)和引导加载程序是位于可引导介质上的同一文件。(通常从磁盘的前几个字节开始)情况并非总是如此,因为您可以让一个引导加载程序链式加载第二个引导加载程序。
- 内核本身。不幸的是,如果没有额外的部分,内核本身就无法完成很多工作。把它想象成大脑。它本身无法完成很多工作。加上一些身体部位(眼睛、腿、循环系统等)脚本、内核模块,你就有了一个合适的系统的雏形。
- 初始 Ramdisk 映像。这是一个足够小的映像,可以启动整个操作系统。它被加载到 RAM 中,并作为根文件系统安装。它通常包含内核实际启动所需的一切。(内核模块、初始化脚本等...)在某个时候,初始 Ramdisk 将在其位置重新安装实际的根文件系统,并将进一步的执行交给位于该根上的初始化脚本。您并不总是需要初始 Ramdisk...但您可以塞入 bzImage 的内容会受到限制。
现在,解释一下“UUID”值。就我个人而言,我讨厌 UUID。我理解为什么现在还在使用它们……但这并没有让我对它们的厌恶减少。过去,我们只是将磁盘定义为“/dev/hda1”或“(hd0,1)”,这告诉我们它是第一个物理磁盘(hda 或 hd0)和该磁盘上的第一个分区。如果您决定添加第二个驱动器,旧驱动器会变成 hdb 还是 hd1?还是保持不变?为了解决这种模糊性,有人想出了一个主意,即创建一个“通用唯一标识符”,为每个磁盘分配一个唯一值,该值在重新启动后仍然存在,并且不关心磁盘的检测顺序。UUID 被写入磁盘……并且通常保持不变。缺点是,如果您将文件系统克隆到另一个磁盘……UUID 将不匹配,系统将无法启动。如果您想坚持使用 UUID...只需在典型的实时磁盘中启动系统...然后在 /dev/disk/by-uuid 中查找指向相关驱动器/分区的 UUID。
好消息是您不必使用 UUID。您可以删除“搜索”命令,让 root= 成为 root 的决定因素。您还可以使用 --label 代替 --fs-uuid 并指定磁盘标签(如果您设置了)。
答案2
您不妨先将其重命名bzImage
为,kernel-${version}
然后将其自动拾取。vmlinuz-${version}
grub2-mkconfig
至于其他内容,如果你想要创建自定义条目,你可能应该查看以下文件/etc/grub.d/
:XX_custom
您可以重复使用 UUID,它属于分区而不是内核。同样,root(hd0,msdos6)
它是一种指示 grub 从哪里加载内核的符号,您只需添加一个内核,以便可以重复使用
初始 ramdisk 是通过适当的工具创建的,最简单的可能是特定于发行版的方式,您需要参考 Ubuntu 文档。