
我有一個dd
'ed 磁碟映像檔。
我可以使用類似的工具kpartx
從該磁碟映像檔案建立裝置映射器裝置。
但是分區程式gparted
不會fdisk
列出我的映射設備!
有什麼方法可以使gparted
(或等效程式 - 圖形或控制台)列出我的映射設備及其組成分區以及有關這些分區的詳細資訊?
PS:這是這些工具缺少功能的情況,還是根本不可能提供此功能?
答案1
這是可能的,但我不確定這是否有意義。
分割區工具只關心整個磁碟設備,因為它們直接從相關磁碟區讀取分割區表。他們不需要每個分區設備的存在。這意味著用 製作的基本循環設備losetup
就足夠了,如果工具看不到它,您可以手動運行fdisk /dev/loop0
或執行其他操作。
(如果一個全碟裝置位於 中/dev/mapper/
,讓這些工具看到它並不難,儘管它通常涉及編輯幾行原始程式碼...運行fdisk /dev/mapper/bleh
通常更容易。
另請注意,最近的核心支援losetup --partscan
消除了為此使用裝置映射器的需要。
答案2
只需建立臨時硬鏈接運行後kpartx -a ...
:
sudo ln /dev/loop0 /dev/mapper/loop0
然後照常運行 gparted (它將正常運行/dev/mapper/loop0p*
):
sudo gparted /dev/mapper/loop0
當不再需要連結時,不要忘記刪除連結。
答案3
3.5 年後我有了另一個解決方案:)
如果您不關心使用kpartx 並且我正確地建議您的目標是在表示為普通文件的磁碟映像上操作分區,那麼這裡是一個沒有kpartx 和符號鏈接的替代工作流程(這就是為什麼它作為單獨的答案發布的原因):
sudo losetup --find --show ./somedrive.img
為整個文件附加一個循環設備
./somedrive.img
;--find
是要求losetup
自動尋找空閒設備;並且--show
是列印已使用的設備。例如,考慮所選設備是/dev/loop5
。sudo partx --update /dev/loop5
告訴 Linux 核心重新掃描內部分割區
/dev/loop5
。如果成功,它不會產生任何輸出,因此請檢查ls -al /dev/loop5*
一下會出現什麼。做任何你需要的事情,例如
sudo gparted /dev/loop5
此時您應該可以正常操作了
/dev/loop5p*
。sudo partx --delete /dev/loop5
釋放分區映射。
sudo losetup --detach /dev/loop5
最後,釋放循環裝置。
聚苯乙烯如果您是 v2.21 或更高版本的軟體包的 Proud Owner™ util-linux
,您可以一次性要求循環設備連接和分區重新掃描:sudo losetup --find --show --partscan ./somedrive.img
並且根本不會遇到類似 gparted 的實用程式的問題。