无法在根目录中找到内核

无法在根目录中找到内核

我了解到内核继续存在root

我检查根目录

[root@iz2ze9wve43n2nyuvmsfx5z /]# ls boot
config-3.10.0-693.2.2.el7.x86_64                         initramfs-3.10.0-693.el7.x86_64.img       System.map-3.10.0-693.el7.x86_64
config-3.10.0-693.el7.x86_64                             initramfs-3.10.0-693.el7.x86_64kdump.img  System.map-3.10.0-862.3.2.el7.x86_64
config-3.10.0-862.3.2.el7.x86_64                         initramfs-3.10.0-862.3.2.el7.x86_64.img   vmlinuz-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa
efi                                                      initrd-plymouth.img                       vmlinuz-3.10.0-693.2.2.el7.x86_64
grub                                                     symvers-3.10.0-693.2.2.el7.x86_64.gz      vmlinuz-3.10.0-693.el7.x86_64
grub2                                                    symvers-3.10.0-693.el7.x86_64.gz          vmlinuz-3.10.0-862.3.2.el7.x86_64
initramfs-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa.img  symvers-3.10.0-862.3.2.el7.x86_64.gz
initramfs-3.10.0-693.2.2.el7.x86_64.img                  System.map-3.10.0-693.2.2.el7.x86_64

[root@iz2ze9wve43n2nyuvmsfx5z /]# ls -al | grep -i kernel
[root@iz2ze9wve43n2nyuvmsfx5z /]# 

哪一个是内核?

答案1

vmunixwas/is 是几个 Unix 操作系统中内核文件的传统名称。

在 Linux 中,当添加内核文件压缩时,这被更改为vmlinux和 然后。vmlinuz

通常,内核文件可能位于根目录中,并且在某些 Linux 发行版上,您可能仍然会看到符号链接/vmlinuz/vmlinuz.old分别指向当前和以前的内核版本。但现代引导加载程序可以轻松处理两个以上的内核版本,并且约定已发展为使用/boot/vmlinuz-<kernel version number>.

当磁盘大小增加且逻辑块寻址成为 IDE 磁盘上的标准时(1994 年至 2003 年),1994 年之前系统的 BIOS 并不总是支持 LBA,因此可能只能访问前 528 MB 左右,直到支持 LBA 的操作系统开始运行。因此,能够将启动最早阶段所需的文件放置到一个单独的小分区中非常重要,该分区可以保证位于磁盘的最开头。在 Linux 中,这就产生了/boot文件系统约定。

简而言之,您可以选择创建一个单独的文件系统,该文件系统仅包含当前和任何先前后备内核版本的/boot内核和initrd/文件,以及引导加载程序本身可能需要的任何文件(最常见的是目录)。initramfs/boot/grub

尽管所有现代系统理所当然地理解 LBA,但/boot文件系统约定仍然存在,因为即使根文件系统采用系统固件完全无法识别的形式,它也可以用于允许系统启动,例如:

  • 加密的根文件系统,
  • Linux LVM 上的根文件系统(如果需要,甚至可以在线扩展,可以轻松扩展到任何单个磁盘的限制),
  • 软件 RAID0 或 RAID5 集上的根文件系统(根文件系统不一定是好主意,除非您有特殊要求)
  • 或多卷 ZFS 或 BtrFS 集上的根文件系统。

某些系统固件确实包含内置检查功能,以确定可识别的可引导分区存在在尝试从 HDD 引导之前,即使实际的引导加载程序可能能够从非传统磁盘布局引导。

答案2

在 CentOS 7 上,内核默认位于 /boot 目录下。该位置将在引导加载程序 GRUB2 的配置文件中指定。 GRUB2 配置文件的位置是/etc/grub2.cfg.这是实际配置文件的符号链接,其位置根据所使用的固件(BIOS/UEFI)而变化。

在 GRUB2 配置文件中,您将找到系统配置为引导的每个内核的“menuentry”节。在每个节中,查找一个root变量。我的系统的一个示例如下:

set root='hd0,msdos1'

上面的变量指定第一个 MBR 分区磁盘上的第一个分区。在我的系统上,这对应于 /dev/sda1,它作为 /boot 分区安装。

继续在同一菜单条目节中,您应该看到以“linux16”或“linuxefi”开头的行。紧跟在该关键字之后的是内核的路径(相对于之前指定的根目录)。例如:

linux16 /vmlinuz-3.10.0-693.el7.x86_64 ...

在您的系统上,这将是您从 的输出中看到的“vmlinuz-*”文件之一ls /boot。这些是当前安装在您的系统上的内核。

相关内容