有谁知道在 Linux 中不挂载操作系统的情况下确定安装在单独未挂载分区上的操作系统的方法吗?我试图在实时启动到 Linux 时使用脚本确定哪个分区安装了 Windows,但似乎不知道该怎么做。
它会在 rc.local 中运行,所以我无法轻松地提示用户(我可以退出 Plymouth,但我宁愿不这样做)
谢谢
答案1
要检查文件系统本身,而不仅仅是分区类型代码,您可以使用blkid
Linux 中的实用程序。您可以向其传递分区标识符,也可以不带任何选项使用它来检查所有磁盘设备:
$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="66F7-FD24" TYPE="vfat"
当然,文件系统类型并不是完全可诊断的;例如,FAT 几乎可以被任何操作系统使用。(在这个例子中,分区实际上是EFI 系统分区 (ESP)NTFS 分区可能是一个 Windows 启动分区、一个 Windows 紧急恢复分区或一个非启动数据分区。根据脚本的可靠性,您可能需要挂载分区并开始查找诊断文件以确定分区的用途。
答案2
这将获取 NTFS 分区的列表:
fdisk -l | awk '/NTFS/{print $1;}'
你没有说你想用这些信息做什么。请注意,并非所有这些分区都是可引导的。
Rod Smith 建议使用blkid
。要从 获得类似的 NTFS 分区列表blkid
,请使用:
blkid -t TYPE="ntfs" -o device
答案3
您可以查看存储设备的分区表来查找分区类型。如果是 NTFS,则可能是某种 Windows 版本。如果是 ext4,则可能是某种 Linux 版本。如果是某种 HFS+,则可能是某种 OS X 版本。