用mkisofs製作iso檔案

來源:互聯網
上載者:User

引用地址:http://hi.baidu.com/bailang3106/blog/item/364aa700bee4d48fe950cdf0.html

 

 

mkisofs是Unix系統中常用來製作ISO映像檔的工具,雖然mkisofs的manpage和cdrecord一樣,但是常用的選項也只有那幾個,現在示範幾個mkisofs的文法:

mkisofs -o image_name.iso /home/willie
將/home/willie這個目錄製作成image_name.iso映像檔。

mkisofs -o ha.iso -r /
將/這個目錄製作成ha.iso映像檔,並指定為Rock Ridge格式。
使用Rock Ridge格式,可以儲存檔案相關的許可權。

mkisofs -J -r /tmp | cdrecord speed=4 -v -data -
這個範例,除了加上-J選項使用Joliet格式外(可使用unicode儲存中文檔名),並直接丟給cdrecord作on the fly燒錄,省了製作映像檔的步驟。

mkisofs(make iso file system)

功能說明:建立ISO 9660映像檔案。

   語  法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A
<應用程式ID>][-abstract <摘要檔案>][-b <開機映像檔案>][-biblio ][-c
<開機檔案名稱>][-C <盤區編號,磁區編號>][-copyright <著作權資訊檔>][-hide
<目錄或檔案名稱>][-hide-joliet <檔案或目錄名>][-log-file <記錄檔案>][-m
<目錄或檔案名稱>][-M <開機映像檔案>][-o <映像檔案>][-p <資料處理人>][-P
<光碟片發行人>][-sysid <系統ID >][-V <光碟片ID >][-volset
<卷冊集ID>][-volset-size <光碟片總數>][-volset-seqno <卷冊序號>][-x
<目錄>][目錄或檔案]

  補充說明:mkisofs可將指定的目錄與檔案做成ISO 9660格式的映像檔案,以供燒錄光碟片。

  參  數:
-J   -----Joliet檔案系統的光碟片.檔案名稱可以用64個漢字或者64個英文組成
-R --------製作linux/unix 的光碟片格式.RockRidge 格式
-mac-name -製作Macintosh命令的光碟片格式
-g --------製作蘋果電腦格式( -apple 相同)
-joliet-long --支援 103個漢字或者103個英文字母的檔案名稱.不限位元組數.
-max-iso9660-filenames --ISO9660 格式支援 37個位元組的檔案名稱.18個漢字或者37個數字或者37個英文字母. (簡寫 -max)
-O -----------採用 MD5 空間最佳化
-x -----------在加入檔案中排除的某個檔案 (-m 和-exclude 同樣作用)
-V "W98SEBOOT" ------設定光碟片卷標 ( -volid 同樣適用)
-o mycd.iso ---------設定輸出檔案名
-hide ----------------隱藏ISO9660 檔案(在DOS下看不見)
-hkdden --------------設定檔案隱藏屬性(在DOS下要用 dir
/ah 來看)
-hide-joliet ---------隱藏joliet 檔案
-A -------------設定應用程式版本號碼。和CDWIN燒錄軟體配合製作使支援中文名的參數(unix/liunx中不要加入此補丁參數也能支援中文)
-gbk4dos-filenames --DOS下支援中文 (簡寫 -gbk4d)
-gbk4win-filenames ---WIN下支援中文 (簡寫 -gbk4w)

iso9660檔案名稱命名擴充參數補丁
-l ------允許 ISO9660 格式支援 31個位元組的文(如果不加此參數那隻支援 12 個位元組的檔案名稱。標準的DOS 8.3格式)
-d -----------------忽略檔案名稱周期性,(dikemu 必須用)
-L -----------------允許 ISO9660 格式的檔案名稱能夠以'.' 開頭名字
-N -----------------忽略檔案名稱版本號碼 (diskemu 必須用)
-allow-lowercase -----允許有小寫字母
-relaxed-filenames ---允許7 個bit的副檔名,除了小寫母以外
-allow-multidot -----允許在一個檔案名稱中帶有多個點 象"n..5"

-U ------------------載入以上七個參數合七為一
-D ------------------禁止向深層目錄重向定位

啟動選項
-hard-disk-boot myhard.img ----開機檔案是個硬碟格式的映像檔案
-b dos.img --------------------磁碟片格式開機映像
(-eltorito-boot 相同)
-B dos.img --------------------進入SUN工作站的開機映像
-no-emul-boot -----------------非類比磁碟片格式啟動(簡寫 -no-e)
-c -------------重新命名boot.catalog檔案。
載入dikemu 啟動必用參數(應用執行個體)
-U -c cctrv -no-e -b loader.bin
載入啟動參數 -no-e -b loader.bin
必須是這樣。loader.bin 必須只能在光
盤根目錄下.不能象是ultraiso 中自由定義開機檔案目錄
(並且ultraiso不能用來修改mkisofs製作的映像,一修改就會造成無法啟動)

以下是違法的加入 -no-e -b d:/boot/loader.bin
(錯誤的加入引導檔案)
-no-e -b boot/loader.bin (錯誤的加入引導檔案)
-no-e -b d:/loader.bin (錯誤的加入引導檔案)
載入開機檔案loader.bin 只能是-no-e -b loader.bin
(無法更改其loader.bin檔案路徑)以下是合法的
-no-e -b loader.bin
-no-e -b loader.BIN
-no-e -b Loader.bin
-no-e -b LOADER.BIN
當然了,這時候你還會碰到說是無法找到loader.bin
這個開機檔案啊。哈哈
就是還有一個問題就是大小寫敏感問題,請往下看有相關大小寫敏感問題。

進階應用程式列表參數
-graft-points -----可以串連列表形式參數的 ( 簡寫成-gr)
在整個以列表形式來表達中關鍵性參數.
-path-list list.txt -加入多個檔案時候調用list.tx來分別建立加入
-hide-list hide.txt -調用寫好的hide.txt中定義的來隱藏檔案
-hide-joliet-list hidej.txt -調用hidej.txt中定義的來隱藏檔案
-hidden-list hidden.txt -調用hidden.txt中定義的來隱藏檔案
-exclude-list exclude.txt -調用exclude.txt來排除定義的檔案

mkisofs 命令
example.bat
內容如下(使本光碟片支援中文,加參數/R相容unix/linux 格式)
mkisofs -o example.iso -V "新光碟片好啊!" -U -D -R
-gbk4d -gbk4w -gr -path list.txt -hide-joliet-l
hidej.txt -exclude-l exclude.txt

關於列表檔案定義
1.問題 加入不同目錄中的檔案
以 -path list.txt 為例 (-path-list 簡寫形式就是 -path)
要在光碟片中加入 c 盤上的 BOOT.INI NTDETECT.COM NTLDR
三個檔案,並且在
製作ISO光碟片的時候把這三個檔案放進一個名為 bootnt
的檔案夾.還要加入
c:/windows/notepad.exe
這個檔案放在光碟片根目錄。加C:/Program
Files/Internet Explorer 放在名為 IE 的檔案夾內. 加入
c:/windows/regedit.exe 到 光碟片的 建立一個名為
"註冊表檔案夾/windows註冊表"中
解答:

以下是list.txt 的格式
bootnt/=c:/boot.ini
bootnt/=c:/ntdetect.com
bootnt/=c:/ntldr
c:/windows/notepad.exe
ie/=C:/Program Files/Internet Explorer
註冊表檔案夾/windows註冊表/=c:/windows/regedit.exe

2.問題:
加入這個檔案夾中應該加入的檔案,排除不要加入的檔案
以 -exclude-l hidej.txt 為例 (-exclude-list
簡寫形式就是
-exclude-l)
要想在上面加入的 C:/Program Files/Internet Explorer
中排除MUI這個子
檔案夾和 C:/Program Files/Internet Explorer 中
HMMAPI.DLL這個檔案。
因為製作這個光碟片。我並不需要這二個檔案。所以要排除他們

以下是exclude.txt 的格式
C:/Program Files/Internet Explorer/MUI
C:/Program Files/Internet Explorer/HMMAPI.DLL

3.問題 隱藏檔案
以 -hide-joliet-l hidej.txt 為例 (-hide-joliet-list
簡寫形式就是-hide-joliet-l)
要想在windows系統下 光碟片中隱藏 上面的C:/ProgramFiles/Internet Explorer檔案夾中的子檔案 Connection Wizard 和
IEXPLORE.EXE 檔案 和c:/BOOT.INI 檔案
解答:

以下是hidej.txt 的格式
C:/Program Files/Internet Explorer/Connection Wizard
C:/Program Files/Internet Explorer/IEXPLORE.EXE
c:/boot.ini

隱藏檔案的列表檔案格式 -hide-joliet-l 和 -hide-l 以及
-hidden-l 格
式基本上是相同的。

要著重說明的一點就是
對於隱藏檔案或者隱藏檔案夾,mkisofs並不支援中文
檔案名稱或者目錄 就是並不能隱藏帶有中文命名的檔案
,也不支援列表功能加
入檔案時候自動建立的檔案夾的隱藏.但對自動建立的檔案夾中的檔案以及字
檔案夾的隱藏功能還是可以用的。

大小寫敏感問題;
mkisofs對於大小寫是敏感的。如果不能掌握一定的技巧的話.就容易出錯
對於新加入的 檔案是對大小寫不敏感的
對於list.txt 中 定義加入的檔案是對大小寫路徑不敏感的.
c:/windows/notepad.exe 也可以寫成
C:/Windows/NoTepad.exe 都能起到加
入 windows 目錄中 notepad.exe 檔的作用
並且具有初始化路徑名大小寫功能。加入的時候如果是NoTepad.exe
,那生
成的ISO檔案也是 NoTepad.exe
在hidej.txt
中隱藏檔案的時候要根據上面加入時候的定義的大小寫方式路徑
如果想要隱藏這個 C:/Windows/NoTepad.exe 這個檔案
那必須引用上面加入
時候命名的路徑名
hidej.txt 中內容
C:/Windows/NoTepad.exe
不能寫成 c:/windows/notepad.exe 這樣就 mkisofs
找不到這個檔案。也就
無法隱藏這個 NoTepad.exe

比如張啟動光碟片 diskemu 形式的。開機檔案全在 e:/bt/boot
檔案夾內
命令如下:

隱藏 loader.bin 和 boot 檔案夾 命令
mkisofs -o bt.iso -U -D -gbk4w -gbk4d -no-e -b
loader.bin -hide-joliet e:/Bt/boot -hide-joliet
loader.bin e:/Bt e:/bt/boot/loader.bin

沒有隱藏loader.bin 和 boot 檔案夾 命令
mkisofs -o bt.iso -U -D -gbk4w -gbk4d -no-e -b
loader.BIN -hide-joliet e:/Bt/boot -hide-joliet
loader.bin e:/bt e:/bt/boot/loader.BIN

哈哈。就是大小敏感所造成的,起主導作用的還是在定義加入檔案時候所命名
的大小寫檔案名稱。加入的時候是 e:/bt 而要隱藏
e:/Bt/boot 就應該寫成
-hide-joliet e:/bt/boot 隱藏的時候主要根據e:/bt
所寫的大小寫。

對於exclude.txt
中所面臨的大小寫問題,也是和上面一樣解決啦!:)

在列表形式表達路徑的分隔字元請用"/" 不要用"/"
他和DOS的分隔字元是相反的.

上面的應用參數如下:
在mkisofs 根目錄下建立.分別是 example.bat
list.txt exclude.txt hidej.txt 4個新檔案

example.bat 內容如下 (使本光碟片支援中文,相容unix/linux
格式)
mkisofs -o example.iso -V "新光碟片好啊!" -U -D -R -D
-gbk4d -gbk4w -gr -path list.txt -hide-joliet-l
hidej.txt -exclude-l exclude.txt

list.txt 內容如下
bootnt/=c:/boot.ini
bootnt/=c:/ntdetect.com
bootnt/=c:/ntldr
c:/windows/notepad.exe
ie/=C:/Program Files/Internet Explorer
註冊表檔案夾/windows註冊表/=c:/windows/regedit.exe

exclude.txt 內容如下
C:/Program Files/Internet Explorer/MUI
C:/Program Files/Internet Explorer/HMMAPI.DLL

hidej.txt 內容如下
C:/Program Files/Internet Explorer/Connection Wizard
C:/Program Files/Internet Explorer/IEXPLORE.EXE
c:/boot.ini

大家可以自己動手試一下.可能出現的問題就是定義的檔案名稱對大小寫敏感的
問題!.

可忽略的參數
-v(-verbose) --------在命令執行時顯示詳細的資訊
(可有可無)
-log-file log.txt
----在目前的目錄建立一個記錄檔log.txt(可有可無)
-copyright "陳華著作權"-設定檔案版本資訊 (可有可無)
-debug ---------------顯示產生ISO進程( 可有可無)
-quiet ---------------產生映像時沒有進度提示(可有可無)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.