当尝试使用预先安装的 Windows 或其他操作系统双引导 Linux 发行版(例如 Ubuntu)时,安装程序会检测到其他操作系统的存在。
我想知道安装人员是如何做到的。
我做了研究,发现像 os-prober 和 debian-installer 这样的软件包可以用来做到这一点。
我想知道它们是如何工作的,但不想了解太多细节。
答案1
在这关于 os-prober 的页面上我找到了以下句子:Josh Kwan 和我为 di 开发的程序非常灵活,只需放入测试文件来检查新的操作系统和 Linux 发行版即可添加它们。它相当擅长探测引导某些 Linux 安装所需的所有信息(根和 /boot 分区、内核、initrd 和内核参数)。由于 Linux 的每个版本的处理方式都略有不同,因此这绝非易事,所使用的技术包括解析 /etc/fstab、在 /boot 中翻查、解析 grub menu.lst 文件等。
我认为这些应用程序首先检查与磁盘布局相关的信息(例如来自 MBR 或 EFI 系统分区的条目或另一个示例:它可能将 NTFS 格式的分区识别为 Windows 的一部分),然后安装相关分区并尝试检查一些其他特征(例如 CentOS 包含一个名为 /etc/centos-release 的文件)。
答案2
例如,os-prober
在 linux 上确实可以访问有关
- 可用的存储控制器
- 可启动磁盘
- 其上的分区/卷
- 用于访问它们的抽象层
最后是分区和文件系统标签、类型和 ID。
众所周知,有些能够包含“外国”操作系统,然后进一步检查众所周知的引导加载程序或操作系统特定的启动文件。通常也可以从已知地点提取或推断出名称。
答案3
这不是一种“自动”检测 - 它是在引导加载程序的配置中配置的。
引导加载程序例如是 GRUBhttps://en.wikipedia.org/wiki/GNU_GRUB