該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
樓主的需求描述不清,不作評述。只說下關于樓上一些吧友提到的grub loopback設備可mount iso并讀取其中文件的功能
未讀過grub1/2的源碼,不太了解其實現原理,但從應用上來說,這個設備不是“虛擬設備”,只是類似于方便解析iso9660格式的helper
1、從iso讀取文件只能在grub運行時起作用,即當被引導的系統跑起來以后,新的系統不會認“這個設備”(實際上不是設備)
2、從技術手段來說,若被引導的系統使用bios disk io(int 13h),則grub可能通過接管中斷服務的形式提供“真實的虛擬設備”,但除了像dos這樣的系統會使用bios disk io,很少有系統會使用(常常會采用更直接的方式驅動硬件,而這個中間是沒辦法放入“系統外軟件夾層”來作虛擬設備的)
3、為何有些live iso可被grub引導?拿linux based live iso來說,其步驟大體將是:
a、grub解析iso,并能讀取其中的kernel和initramfs,并加載它們
b、kernel跑起來,initramfs提供內存中的rootfs,系統運行,執行一些腳本,根據boot option得知iso boot狀態,并在物理設備上找到iso文件,利用系統對loop設備掛載iso文件(這一過程需求initramfs打包了相關涉及的fs的驅動)
c、由于iso或者其中帶著的img(例如采用squashfs)是只讀的,這時常常利用unionfs技術,或者device-mapper技術,接合內存文件系統提供cow方式的rw文件系統,并remount為rootfs,系統繼續運行
可見,實際上過程中存在兩種不同系統提供的loop設備,兩者不相關
但本人對于Documentation/x86/boot.txt文檔的閱讀已歷不少時日,也并未精讀,對其中涉及的kernel提供的外部可控接口的可操控程度的了解有限,故而以上內容可能存在疏漏(尤其是在bootloader是否可能提供kernel驅動模型下的loop設備這一點上),如您發現,歡迎指正