如何判斷我從哪個分區啟動?
有沒有辦法知道您實際從哪個分區啟動?
fdisk -l
揭示了我的 NVME 上絕對沒有的“引導”列。這只是遺留資訊嗎?Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1126399 1124352 549M b W95 FAT32 /dev/sda2 1126400 975688107 974561708 464.7G 7 HPFS/NTFS/exFAT /dev/sda3 975689728 976769023 1079296 527M 27 Hidden NTFS WinRE ... Device Start End Sectors Size Type /dev/nvme0n1p1 616448 2458216447 2457600000 1.1T Linux filesystem /dev/nvme0n1p2 2458216448 3907024031 1448807584 690.8G Linux filesystem /dev/nvme0n1p3 2048 616447 614400 300M EFI System Partition table entries are not in disk order.
考慮到
lsblk
顯示 /boot/efi 已安裝,我 90% 確定它正在使用我的 nvme 驅動器,我只是想確認這是真的,即使沒有boot
來自fdisk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 549M 0 part ├─sda2 8:2 0 464.7G 0 part └─sda3 8:3 0 527M 0 part sdb 8:16 0 1.8T 0 disk ├─sdb1 8:17 0 99M 0 part ├─sdb2 8:18 0 16M 0 part └─sdb3 8:19 0 1.8T 0 part nvme0n1 259:0 0 1.8T 0 disk ├─nvme0n1p1 259:1 0 1.1T 0 part ├─nvme0n1p2 259:2 0 690.8G 0 part / └─nvme0n1p3 259:3 0 300M 0 part /boot/efi
我還注意到
Disklabel type
/dev/sda 的 dos 和 /dev/nvme0n1 的 gpt 如果考慮在內。
由於您的系統顯然是以 UEFI 樣式啟動的,因此上述問題的答案是:
以root身份執行
efibootmgr -v
,查看行上的四位IDBootCurrent:
(通常是輸出的第一行),然後查看相應的BootNNNN
行以找到要啟動的分區的PARTUUID,以及包含實際啟動管理器/載入程序的文件名用過。然後執行
lsblk -o +PARTUUID
以查看 GPT 分區表中嵌入的分區唯一 UUID。BootNNNN
找到你在輸出行看到的 UUIDefibootmgr -v
,你就會知道分區了。(在 MBR 分區的磁碟上,沒有真正的分區 UUID,因此會顯示磁碟簽名號和分區號的較短組合來代替實際分區 UUID。)
這
Disklabel type
絕對是一個因素:它表明您sda
使用經典的 MBR 分區和引導順序,而您nvme0n1
使用 GPT 分區和 UEFI 風格的引導。雖然 GPT 分區表可以
Boot
儲存與 MBR 分區磁碟輸出中的標誌欄位基本相同的引導標誌,fdisk -l
但從 GPT 分區磁碟引導 MBR 樣式預計是一種罕見的極端情況,因此fdisk -l
不會包括它。本機 UEFI 風格的方式根本不會使用這樣的標誌,因為現在系統韌體的工作是知道引導載入程序文件的名稱和要從中載入它的分區的 PARTUUID。但是,如果在 GPT 分區上啟用了這樣的傳統標誌,則使用
i
現代 Linux 的命令(= 列印有關分區的資訊)將通過在輸出行上出現關鍵字fdisk
來顯示它。LegacyBIOSBootable``Attrs:
要實際切換這樣的標誌,您必須使用支持 GPT 的 Linux 的專家專用額外命令
fdisk
:首先x
,然後A
切換標誌。如果您只想列出包含 UEFI 分區標誌的分區表,您可以使用
fdisk -x /dev/nvme0n1
. 請注意,輸出比傳統fdisk -l
輸出寬很多。如果您使用經典的 MBR/BIOS 樣式啟動,那麼標題問題的答案是“您真的沒有”。*BIOS 風格的韌體沒有普遍的標準方法來告訴作業系統實際使用哪個設備來引導系統。*對於使用傳統 BIOS 樣式引導的系統上的所有作業系統和作業系統安裝程序,這是一個長期存在的問題。
如果該
/sys/firmware/edd
目錄存在,它可能包含允許辨識引導盤的資訊,通過辨識 BIOS 看到磁碟的順序。按照慣例,目前引導盤移動到第一個硬碟位置(也稱為“ disk 0x80") 在 BIOS 磁碟列表中,大多數基於 BIOS 的引導載入程序都依賴於這個事實。因此,如果
/sys/firmware/edd/int13_dev80
存在,並且引導載入程序沒有切換磁碟的 BIOS int13 ID(GRUB 可以這樣做,如果您有一個需要交換磁碟 ID 的自定義雙/多引導配置),那麼其中的資訊可能對辨識韌體使用的實際引導磁碟。不幸的是,提供這些資訊所需的 BIOS 擴展並沒有像它本來應該的那樣廣泛,即使它存在,也並不總是完全和正確地實現。我見過很多系統沒有可用的 EDD 資訊,一些系統的 EDD 資訊不完整,甚至有一個系統查詢 EDD 資訊導致啟動掛起。
(顯然EDD資訊界面是戴爾設計的,所以如果你主要使用戴爾系統,你可能比我運氣好。)