Linux

另一台設備上的分區表

  • August 14, 2021

我很好奇是否可以將磁碟分區表儲存在不同的設備上並從 grub 載入它

編輯: 可以說我的磁碟格式如下: 具有 3 個分區和 ~ 12gb 最後未分配的磁碟

通常在載入 mbr **(磁碟 1)**並啟動後,系統只看到 3 個分區和未分配空間

但我想知道是否有可能製作不同的場景。假設我有這個磁碟的數據表,如下所示:

具有 3 個分區和 ~ 454gb 在開始時未分配的磁碟 我想在這裡做的是從另一個驅動器(這個驅動器上也安裝了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 核心不會依賴韌體告訴它的內容,而是會自行讀取分區表以查找任何分區。

引用自:https://unix.stackexchange.com/questions/664278