我通常用fdisk -l
它来查看分区。我最近在一台计算机上安装了 ubuntu 17.10,发现 fdisk 不再像以前那样显示启动标志。现在的输出如下所示
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1953523711 1952473088 931G Linux filesystem
我找不到任何关于引导列缺失原因或如何恢复的信息。有任何相关链接/信息吗?
fdisk --version
给了我fdisk from util-linux 2.30.1
。我有另一台计算机,版本为 2.27(ubuntu 16.04),这确实向我显示了启动标志。
答案1
这是因为 GPT。
在我的 Ubuntu 16.04 LTS 系统上fdisk -l /dev/sda
显示以下内容:
Disk /dev/sda: xxx GiB, yyyyyyyyyyyyy bytes, zzzzzzzzz sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
**Disklabel type: gpt**
Disk identifier: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE
Device Start End Sectors Size Type
/dev/sda1 2048 616447 614400 300M EFI System
...
但sudo parted /dev/sda
显示几乎相同:
(parted) p
Model: ATA ... (scsi)
Disk /dev/sda: xxxGB
Sector size (logical/physical): 512B/512B
**Partition Table: gpt**
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 316MB 315MB fat32 EFI system partition **boot**, esp
...
因此parted
正确显示引导旗帜。
答案2
如果您需要以编程方式查找此信息(就像我一样),此命令应该可以为您解决问题。
sudo parted -l 2>/dev/null | grep -B7 boot > temp.fil; grep Disk temp.fil; grep boot temp.fil; rm temp.fil
此命令产生类似如下的输出:
Disk /dev/nvme0n1: 120GB
Disk Flags:
1 1049kB 577MB 576MB primary ntfs boot
对于那些不熟悉这些命令的人来说,它们的工作原理如下:
从man parted
-l, --list
lists partition layout on all block devices
这是通过管道传输的grep
dev/null
通过将错误输出重定向到with2>/dev/null
来消除我的光驱在 parted 输出中生成的错误消息,从而解决了这个问题。
从man grep
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing a group separator (--) between
contiguous groups of matches. With the -o or --only-matching option, this has no effect and a warning is given.
我选择抓取前 7 行并重定向到临时文件,temp.fil
以便轻松获得所需的输出,您可能会发现在匹配之前需要不同数量的行才能获得所需的内容。每个行都;表示新命令的开始。grep Disk temp.fil
返回临时文件中标识启动驱动器的行,并grep boot temp.fil
返回临时文件中标识启动分区的行。rm temp.fil
只需删除先前创建的临时文件。
笔记:此命令字符串将覆盖temp.fil
当前目录中调用的任何文件,然后删除结果。如果这对您来说是个问题,请相应地更改名称。