我在 Grub 的命令行中使用它,我注意到一些东西抓住了我的意图,我通过 Grub 的ls
命令列出了设备,我注意到有一个名为 (proc) 的虚拟设备:
grub> ls
(proc) (hd0) (hd0, msdos1)
该(proc)
设备有趣的地方在于,它包含一个压缩的Linux内核,其结构类似于根目录,
(grub)> ls (proc) /
Device proc: Filesystem type procfs - Sector size 512B - Total size 0Kid
lost+found/ swapfile etc/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/
vmlinuz initrd.img
--snip--
我的结论是 (proc) 是一个内存中的文件系统,Grub 在其中安装了自己的根文件系统,在我看来,grub 也使用 Linux 内核中常见的 proc 文件系统作为其根文件系统。 Grub 中的设备是什么(proc)
?为什么它在那里?
答案1
不,Grub 2 引导加载程序不是定制的 Linux 内核。它有自己的代码库,您可以阅读有关 Grub 2 的更多信息这维基百科文章。
为什么它使用 proc 文件夹?回答:procfs 文件系统并不是 Linux 特有的。 BSD 和其他符合 POSIX 标准的操作系统中也使用了类似的方法(请阅读这里)。
Grub 2 需要管理磁盘设备(为了加载内核)、鼠标和键盘输入等资源。例如,它需要读取和理解不同的文件格式(如 ELF 格式)并为 Linux 内核运行解压缩过程。
这就是为什么 Grub 2 的功能是我们所说的操作系统的子集(不要误解:它是不是实际上是一个操作系统),开发人员可能决定使用这样的 procfs 来管理事物。
编辑:
请注意,Grub 命令ls /
不会给出 Grub 内存文件系统的根文件夹的内容。在我的 Ubuntu 机器的 Grub shell 中,它只是提供了我的主引导驱动器的根目录的内容。这意味着linuz
您上面提到的文件只是 grub 将启动的内核...