linux無需root掛載iso映象檔案

Maicss發表於2021-02-11

引言

起初,我在針對deepin製作一款appimage安裝工具,想要其實現的功能就是自動獲取圖示,只需要輸入軟體名稱和分類即可,當然以後也會尋找方案省去手動輸入的麻煩。

後來我發現一個有趣的問題

openshot有些特立獨行,我無法使用傳統的方案,--appimage-extract引數來為其解包,以至於很長時間內,軟體都是靠判斷檔名來實現自動獲取圖示的。

但是隨著我發現越來越多“特立獨行”的軟體包,我開始尋找答案。

首先,我注意到一些細節。

在deepin作業系統上,兩者雖然都是AppImage,但是圖示顯示的不同,說明他們的minetype存在差異。

於是我找到了下面這兩個檔案

發現確實存在兩個不同的appimage格式,而且,其中一個是iso9660。

於是我全盤搜尋其中一個,找到了這個圖示:

這就表示,那個“特立獨行”的人,就是x-iso9660-appimage,於是我尋找將它的檔案讀取出來的辦法,首先,基於我弱雞的linux基礎,我發現mount可以成功掛載這個檔案,但是有一個不可忽視的問題,mount需要root。

其實如果這是日常使用,mount就夠了,只是輸入一下密碼而已。

但是有什麼方案能不需要root將其中內容取出來?

開始嘗試了7z,安裝u7zip後,使用7z可以成功將其解包,但是而且這對於普通的vnd.appimage同樣有效,但是貌似這個有可能導致檔案損壞,比如我解包openshot時,其中的圖示就無法檢視了,用mount掛載時是可以的。我尚不清楚這個現象的原因,開始懷疑是不是iso9660型別特有的問題,後來發現不是。

於是我又開始尋找,找到了fuseiso

其可以無需root許可權將iso掛載到指定目錄。

fuseiso的使用

掛載:

fuseiso -p <ISO檔案> <目標資料夾>
#-p的作用是當目標資料夾不存在時自動建立

解除安裝:

fusermount -u <目標資料夾>

至此,就可是實現無需root掛載映象了,也實現了x-iso9660-appimage檔案內容的讀取。

一些指引我的重要資料的位置:

https://linux.cn/article-4287-1.html :發現fuseiso

https://www.ubuntukylin.com/news/873-cn.html :發現mimetype檔案型別標柱的位置

相關文章