另一台設備上的分區表
我很好奇是否可以將磁碟分區表儲存在不同的設備上並從 grub 載入它
通常在載入 mbr **(磁碟 1)**並啟動後,系統只看到 3 個分區和未分配空間
但我想知道是否有可能製作不同的場景。假設我有這個磁碟的數據表,如下所示:
我想在這裡做的是從另一個驅動器(這個驅動器上也安裝了grub)載入這個替代分區表,而不是那些在磁碟上的分區表(不替換它們)並從中啟動作業系統。
所以你試圖將第二個作業系統隱藏在看起來像未分區的空間中?不是一個非常安全的方法,例如
testdisk
在磁碟上執行將檢測分區並提供將它們添加到真實分區表中。我希望任何取證工具也能快速檢測到“未分配空間”中似乎有一些結構化的內容。但可以肯定的是,它可能會通過一個隨意的檢查。
我不認為 GRUB 可以輕鬆做到這一點,但如果外部引導驅動器上也可以包含核心和 initramfs 文件,那麼您可以在 initramfs 中輕鬆完成:創建一個映射表(基本上是一個名稱 + 起始塊號 + 長度)用於隱藏分區,用於
dmsetup create
載入映射,然後將 initramfs 掛載/dev/mapper/hidden_root
為根文件系統,然後讓引導基本上正常進行,但在需要時掛載/dev/mapper/hidden_other
並/dev/mapper/hidden_swap
用作交換分區。要為每個隱藏分區載入映射,您將執行如下命令:
dmsetup create <name> --table "0 <length in blocks> linear <disk major:minor> <first block #>"
<disk major:minor>
將是包含隱藏分區的磁碟設備的主要和次要編號,例如8:0
/dev/sda。如果您的第一個隱藏分區名為
hidden_root
,則映射它的命令將如下所示:dmsetup create hidden_root --table "0 4236248 linear 8:0 952190894"
本質上,這意味著:“從塊# 952190894 開始映射磁碟 /dev/sda 的線性延伸,並將其呈現為 /dev/mapper/hidden_root 的塊 0..4236248。”
即使您可以讓 GRUB 讀取備用分區表,您也必須在 initramfs 中執行上述操作,因為 Linux 核心不會依賴韌體告訴它的內容,而是會自行讀取分區表以查找任何分區。