Linux基礎命令---mkisofs

一生有你llx發表於2018-10-30

mkisofs

mkisofs 指令可以建立ISO9660/Joliet/HFS檔案系統,現在使用指令genisoimage代替它。genisoImage是一個預掌握程式,用於生成iso 9660/joliet/hfs混合檔案系統。

genisoImage 能夠生成由Rock Ridge交換協議指定的系統使用共享協議記錄(SUSP),用於向unix主機進一步描述iso 9660檔案系統中的檔案,並提供諸如長檔名、UID/GID、POSIX許可權、符號連結以及塊和字元裝置檔案等資訊。如果指定Joliet或HFS混合命令列選項,genisoImage將建立Joliet或HFS所需的附加檔案系統後設資料,否則genisoImage將生成純ISO 9660檔案系統。

genisoImage 可以生成真正的(或共享的)HFS混合檔案系統。這些檔案從Macintosh訪問時被視為HFS檔案,從其他機器訪問時被視為ISO 9660檔案。HFS代表分層檔案系統,是在Macintosh計算機上使用的本機檔案系統作為替代,genisoImage可以為每個檔案生成對ISO 9660的Apple擴充套件。當從Macintosh訪問時,這些擴充套件為每個檔案提供建立者、型別和某些Finder標誌。請參閱下面的HFS Macintosh檔案格式部分。

genisoImage 獲取給定目錄樹的快照,並生成二進位制映像,當寫入塊裝置時,該影像將對應於iso 9660和/或hfs檔案系統。

寫入iso 9660檔案系統的每個檔案都必須有一個8.3格式的檔名(最多8個字元.最多3個字元,全部大寫),即使Rock Ridge正在使用。這個檔名用於無法使用Rock Ridge副檔名的系統(如MS-DOS),每個目錄中的每個檔名必須與每個目錄中的檔名不同。genisoImage通常試圖通過強制unix檔名大寫並根據需要截斷而形成正確的名稱,但當截斷的名稱並不都是唯一時,這通常會產生不滿意的結果。genisoImage為每個檔名分配權重,如果找到兩個其他相同的名稱,則將優先順序較低的名稱重新命名為包含一個3位數的數字(保證是唯一的)。例如,兩個檔案“foo.bar”和“foo.bar.~1~”可以呈現為“FOO.BAR;1“和”FOO000.bAR;1“

當與各種HFS選項一起使用時,genisoImage將嘗試識別儲存在多個Apple/Unix檔案格式中的檔案,並複製資料和資源派生以及任何相關的Finder資訊。有關genisoImage支援的更多資訊,請參見下面的HFS Macintosh檔案格式部分。

請注意,genisoImage的設計並不是為了直接與作者通訊。大多數編寫人員都有專有的命令集,每個製造商的不同,您需要一個專門的工具才能真正地燒錄盤。WODIM就是這樣的工具之一。

此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

 

1 、語法

mkisofs [ 選項]  [-o file.iso]  srcfile

genisoimage [options]  [-o filename]  pathspec  [pathspec ...]

pathspec 是要複製到iso 9660檔案系統中的目錄樹的路徑。可以指定多個路徑, genisoImage 將所有指定路徑元件中的檔案合併成檔案系統映像。

如果指定了“-graft-points “選項,則可以在root目錄以外的點嫁接路徑,也可以將檔案或目錄移植到CDRom映像上,並且原始檔系統中的名稱可以不同。我們首先假設存在一個本地檔案”./old.lis“,並且希望將它包含在CDROM映像中。語句

foo/bar/=../old.lis

可以使”/foo/bar/old.lis“的CDROM映像中包括”old.lis“。而語句

foo/bar/xxx=../old.lis 

可以使”/foo/bar/xxx“的CDROM映像中包括”old.lis“。同樣的語法也可以與目錄一起使用。genisoImage將建立任何目錄,以滿足CDROM映像上存在嫁接點的需求。預設情況下,像這樣動態建立的任何目錄都具有許可權0555,被genisoimage的執行者擁有。如果您希望其他許可權或中間目錄的所有者,請參閱-uid, -gid, -dir-mode, -file-mode and -new-dir-mode。

 

2 、選項列表

選項

說明

-abstract   file

設定摘要檔名稱,可以有37個字元

-A   AppId

指定描述光碟應用程式Id的文字字串,可以有128個字元

-allow-limited-size

當處理不能在ISO 9660中容易表示的大於2GiB的檔案時,用縮小的可見檔案大小將它們新增到ISO 9660,並將正確的可見檔案大小新增到UDF系統。結果是一個不一致的檔案系統,使用者需要確保他們真的使用UDF而不是ISO 9660驅動程式來讀取這樣的磁碟。意味著啟用-UDF。

-allow-leading-dots-ldots

允許ISO 9660檔名以句點開始。通常,為了保持MS-DOS的相容性,使用下劃線替換前導點。這違反了ISO 9660標準,但它恰好適用於許多系統。小心使用。

-allow-lowercase

允許iso9660檔名中出現小寫字母。這違反了ISO 9660標準,但它恰好適用於某些系統,謹慎使用。

-allow-multidot

允許iso9660檔名中出現多個點。引導點不受此選項的影響,可以單獨使用“-allow-leading-dots”,這違反了ISO 9660標準,但它恰好適用於許多系統。小心使用。

-biblio  file

指定書目檔名。有37個字元的空間。等效於“.genisoImagerc”檔案中的BIBL。

-cache-inodes

-no-cache-inodes

啟用或禁用inode快取和以裝置號查詢指向檔案的硬連結。如果genisoImage找到一個硬連結(具有多個名稱的檔案),該檔案也將在cd上被硬連結,因此檔案內容只顯示一次。這有助於節省空間。類似Unix的作業系統,但在Cygwin等其他系統上預設使用非快取inode,因為在這些系統上假定inode編號唯一是不安全的。(某些版本Cygwin使用弱雜湊演算法建立假inode編號,這可能會產生重複。)如果兩個檔案有相同的inode號,但不是同一個檔案的硬連結,“genisoImage -cache-indes”的行為將不正確。“-no cache-inode”在所有情況下都是安全的,但在這種情況下genisoImage無法檢測硬連結,因此所產生的cd映像可能比所需的要大。

-alpha-boot alpha  _boot_image

指定在製作Alpha/SRM可引導CD時使用的引導映像的路徑和檔名。路徑名必須相對於指定給genisoimage的源路徑。

-hppa-bootloader   hppa_bootloader_image

指定在製作HPPA可引導CD時使用的引導映像的路徑和檔名。路徑名必須相對於指定給genisoImage的源路徑。還需要其他選項,至少需要一個核心檔名和一個引導命令列。

-hppa-cmdline   hppa_boot_command_line

指定在製作可引導CD時要傳遞給HPPA引導載入程式的命令列。用空格或逗號分隔引數。必須將更多選項傳遞給genisoImage,至少要傳遞一個核心檔名和引導載入程式檔名。

-hppa-kernel-32   hppa_kernel_32

-hppa-kernel-64   hppa_kernel_64

指定在製作HPPA可引導CD時使用的32位和/或64位核心映像的路徑和檔名。路徑名必須相對於指定給genisoImage的源路徑。還需要其他選項,至少引導載入程式檔名和引導命令列。

- hppa-ramdisk   hppa_ramdisk_image

指定在製作HPPA可引導CD時使用的ramdisk映像的路徑和檔名。路徑名必須相對於指定給genisoImage的源路徑。此引數是可選的。還需要其他選項,至少需要一個核心檔名和引導命令列。

-mips-boot   mips_boot_image

指定在生成SGI/大端MIPS可引導CD時使用的引導映像的路徑和檔名。路徑名必須相對於指定給genisoImage的源路徑。可以多次指定此選項,以儲存最多15個引導映像。

-mipsel-boot   mipsel_boot_image

指定製作DEC/小端MIPS引導映像的路徑和檔名。路徑名必須相對於指定給genisoImage的源路徑。

-b  eltorito_boot_image

指定在為x86 PC製作EL Torito可引導CD時使用的引導映像的路徑和檔名。路徑名必須相對於為genisoImage指定的源路徑。此選項是製作El Torito可引導CD所必需的。引導映像必須精確地為1200 kB、1440 kB或2880 kB,當建立iso 9660檔案系統時,genisoImage將使用此大小。pc BIOS將使用該映像來模擬軟盤,因此第一個512位元組扇區應該包含pc引導程式碼。

如果引導映像不是軟盤映像,則需要新增“-hard-disk-boot”或“-no-emul-boot.”。如果系統不應該從模擬磁碟啟動,則使用“-no-boot”。

如果未指定“-sort”,則引導映像將以低優先順序(2)排序到介質的開頭。如果您不喜歡這種情況,則需要為引導映像指定0的排序權重。

-B  img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e

-sparc-boot  img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e

設定引導檔名,img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e。

指定為SPARC系統製作可引導cd所需的逗號分隔的引導映像列表。分割槽0用於iso 9660映像,第一個映像檔案對映到分割槽1。以逗號分隔的列表最多可能有7個欄位,包括空欄位。此選項是為Sun製作可引導cd所必需的。如果-B或-SPARC-引導已指定,則生成映像的第一個扇區將包含一個Sun磁碟標籤。此磁碟標籤為ISO 9660映像指定片0,為用此選項指定的引導映像指定切片1至7。每個附加引導映像中的位元組偏移量512到8191必須包含適合於適當的SPARC體系結構的主引導。每個映像的其餘部分通常包含一個用於主核心引導階段的ufs檔案系統。

實現的引導方法是在SunOS4.x和SunOS5.x中找到的。但是,它不依賴於SunOS內部,而只依賴於OpenBootprom的屬性,因此它應該可以用於任何用於SPARC系統的作業系統。

如果指定了檔名,則將實際的和下面的所有引導分割槽對映到前一個分割槽。如果使用-G映像-B呼叫genisoImage,所有引導分割槽都對映到包含iso 9660檔案系統映像的分割槽,而位於磁碟前16個扇區的通用引導映像用於所有體系結構。

-G   generic_boot_image

指定在製作通用可引導cd時使用的引導映像的路徑和檔名。引導映像將放置在cd的前16個扇區上,位於iso 9660主卷描述符之前。如果此選項與-sparc-boot一起使用,則Sun磁碟標籤將覆蓋泛型引導映像的前512位元組。

-eltorito-alt-boot

從一組新的El Torito啟動引數開始。最多63個El Torito引導項可以儲存在一張CD上。

-hard-disk-boot

指定用於建立El Torito可引導CD的引導映像是硬碟映像。映像必須以包含單個分割槽的主開機記錄開始。

-no-emul-boot

指定用於建立El Torito可引導cd的引導映像是“無模擬”映像。系統將在不執行任何磁碟模擬的情況下載入和執行此映像。

-no-boot

指定應將建立的El Torito CD標記為不可引導。系統將提供一個模擬驅動器的影像,但將啟動一個標準的啟動裝置。

-boot-load-seg   segment_address

指定非模擬El Torito cd的引導映像的載入段地址

-boot-load-size   load_sectors

指定在非模擬模式下載入的“虛擬”(512位元組)扇區的數量。預設情況是載入整個引導檔案。如果不是4的倍數,一些BIOSes可能會出現問題。

-boot-info-table

指定在引導檔案中的偏移量8處修補一個56位元組的表,其中包含CD-ROM佈局的資訊。如果提供此選項,則啟動檔案將在原始檔系統中被修改,因此,如果無法輕鬆重新生成該檔案,請建立該檔案的副本!有關此表的說明,請參閱El Torito啟動資訊表部分。

-C   last_sess_start,next_sess_start

此選項需要為多會話磁碟建立一個額外的CD或第二個會話或更高階別會話的影像。“-C”需要兩個數字,用逗號分隔。第一個是應該附加到的磁碟最後一個會話中的第一個扇區。第二個是新會話的起始扇區號。正確的編號可以通過呼叫“wodin-msinfo”得到。如果-“C”與“-M”一起使用,genisoImage將建立一個檔案系統映像,該映像將作為上一次會話的延續。如果使用“-C”而不使用“-M”,genisoImage將建立一個檔案系統映像,用於CD額外的第二次會話。這是一個多會話cd,在第一個會話中儲存音訊資料,在第二個會話中儲存iso 9660檔案系統。

-c   boot_catalog

指定引導目錄的路徑和檔名,這是El Torito可引導CD所必需的。路徑名必須相對於指定給genisoImage的源路徑。此檔案將插入到輸出樹中,而不是在原始檔系統中建立,因此請確保指定的檔名不與現有檔案衝突,否則將被排除。通常選擇一個像“boot.Catalog”這樣的名稱。

如果未指定“-sort”,則引導目錄以低優先順序(1)排序到介質的開頭。如果您不喜歡這種情況,則需要為引導目錄指定0的排序權重。

-check-oldnames

檢查從舊會話匯入的所有檔名是否符合iso 9660檔案命名規則。如果沒有此選項,只檢查超過31個字元的名稱,因為這些檔案嚴重違反iso 9660標準。

-check-session   file

檢查所有舊會話是否符合實際的genisoImage iso 9660檔案命名規則。這是一個高階選項,它結合了“-M  file  -C  0,0  -check-oldnames”

-copyright   file

指定版權資訊,通常是光碟上的檔名。有37個字元的空間。相當於在“.genisoImagerc”檔案中複製。

-d

不要將句點附加到沒有句點的檔案中。這違反了ISO 9660標準,但它恰好適用於許多系統。小心使用。

-D

不要使用深度目錄重新定位,而是按我們看到的方式打包它們。如果未選擇iso 9660:1999,則違反iso 9660標準,但它恰好適用於許多系統。

-dir-mode   mode

重寫用於建立映象的目錄mode,指定為chmod(1)中許可權位的4位數字。

-dvd-video

生成一個符合DVD視訊的UDF檔案系統.這是通過排序適當檔案的內容順序和在需要時在檔案之間新增填充來實現的。注意,只有當DVD視訊檔名只包含大寫字元時,排序才能工作。

注意,為了獲得符合dvd視訊的檔案系統映像,您需要準備一個符合dvd視訊的目錄樹,這需要生成dvd的根目錄中包含目錄VIDEO_TS和AUDIO_TS(所有大寫)。VIDEO_TS需要包含視訊檔案系統的所有所需檔案(檔名必須為所有大寫)。

-f

在生成檔案系統時遵循符號連結。當這個選項沒有使用時,符號連結將使用Rock Ridge,如果Rock Ridge也沒有啟用,那麼它們將被忽略。

-file-mode   mode

重寫用於建立image的常規檔案的模式,使用4位模式

-gid   gid

將從原始檔讀取的組ID重寫為gid的值。指定此選項將自動啟用RockRidge擴充套件

-gui

切換GUI的行為。這使得輸出更加冗長,但將來可能會產生其他影響。

-graft-points

允許檔名使用嫁接點。如果使用此選項,將檢查所有檔名是否有嫁接點。檔名在第一個未轉義的等號處被分隔。如果“-graft-points”已經指定,所有出現的‘\’和‘=’字元必須用‘\’轉義。

-hide   glob

隱藏出現在ISO 9660或Rock Ridge目錄中的與shell萬用字元模式GLOB匹配的任何檔案。GLOB可能與檔名或路徑的任何部分匹配。如果GLOB匹配某個目錄,則該目錄的內容將被隱藏。為了匹配目錄名,請確保路徑名不包括尾隨“/‘字元。所有隱藏檔案仍將寫入輸出CD映像檔案。請參見-Hided-Joliet和README.Hide。此選項可多次使用。

-hide-list   file

包含要隱藏的shell萬用字元列表的檔案

-hidden   glob

為匹配GLOB的檔案和目錄新增隱藏(存在)ISO 9660目錄屬性,這是一個shell萬用字元模式。該屬性將防止檔案被某些MS-DOS和Windows命令顯示。GLOB可能匹配檔名或路徑的任何部分。‘/’字元。此選項可多次使用

-hidden-list   file

包含獲取隱藏屬性的shell萬用字元列表的檔案

-hide-joliet   glob

隱藏在Joliet目錄中看到的與shell萬用字元模式GLOB匹配的檔案和目錄。GLOB可能匹配檔名或路徑的任何部分。如果GLOB匹配某個目錄,則該目錄的內容將被隱藏。為了匹配目錄名,請確保路徑名不包括尾隨的“/‘字元。所有隱藏檔案仍將寫入輸出CD映像檔案。此選項通常與-Hide一起使用。請參見README.Hide。此選項可多次使用。

-hide-joliet-list   file

包含要向Joliet樹隱藏的shell萬用字元列表的檔案。

-hide-joliet-trans-tbl

將TRANS.TBL檔案隱藏在Joliet樹中。這些檔案在Joliet世界中通常沒有意義,因為它們列出了真實名稱和ISO 9660名稱,這兩者都可能與Joliet名稱不同。

-hide-rr-moved

將RockRidge樹中目錄“RR_MOVED”的“.rr_move”目。這樣似乎不可能完全將“RR_MOVED”目錄隱藏在Rock Ridge樹中。此選項只會使不知道該目錄的人更容易混淆可見樹。如果你不需要“RR_MOVED“目錄,那麼使用“-D”選項。請注意,如果指定了-D,則生成的檔案系統不符合ISO 9660 level-1,在MS-DOS上也無法讀取。

-input-charset   charset

定義本地檔名中使用的輸入字符集。要獲得有效字符集名稱的列表,請呼叫“genisoImage-put-charset”獲取幫助。要獲得1:1的對映,可以使用預設值作為字符集名稱。預設初始值在DOS系統上為cp 437,在所有其他系統上為iso 8859-1。有關詳細資訊,請參閱下面的字符集部分。

-output-charset   charset

定義Rock  Ridge檔名中將使用的輸出字符集,預設為輸入字符集。有關詳細資訊,請參閱下面的字符集部分。

-iso-level   level

設定ISO 9660一致性級別。有效數字是1到4。

1 )對於第1級,檔案只能由一個部分組成,檔名限制為8.3型別。

2 )對於第2級,檔案只能由一個部分組成。

3 )對於第三級,沒有任何限制 (ISO-9660:1988除外)。

所有ISO 9660級別從1到3,所有檔名僅限於大寫字母、數字和下劃線(_)。檔名限制為31個字元,目錄巢狀限制為8個級別,路徑名限制為255個字元。

4 )級別4正式不存在,但genisoImage將其對映到ISO-9660:1999,這是ISO 9660版本2。

使用第4級時,增強型卷描述符的版本號和檔案結構的版本號設定為2。目錄巢狀不限於8級,不需要檔案包含點,點沒有特殊意義,檔名沒有版本號,檔名最長可達207個字元,如果使用Rock Ridge,檔名可達197個字元。

在建立第2版image時,genisoImage會發出一個增強的卷描述符,與主卷描述符相似但不完全相同。請注意不要使用損壞的軟體通過假設第二個PVD副本並將這個假定的PVD副本修補為El Torito VD,從而使ISO 9660影像可引導。

-J

除了正常的ISO 9660檔名之外,還生成Joliet目錄記錄。在Windows機器上使用光碟時,這是有用的。Joliet檔名是在Unicode編碼,每個路徑元件最多可以有64個Unicode字元。注意,Joliet不是標準的-只有Microsoft Windows和Linux系統才能讀取Joliet擴充套件。要獲得更好的可移植性,請同時考慮使用Joliet和Rock Ridge擴充套件。

-joliet-long

允許Joliet檔名最多為103個Unicode字元,而不是64個字元。這違反了Joliet規範,但似乎有效。謹慎使用。

-jcharset   charset

“-J -input-charset charset”的組合。

-l

允許完整的31個字元的檔名。通常iso 9660檔名將採用與MS-DOS相容的8.3格式,儘管iso 9660標準允許最多31個字元的檔名。如果使用此選項,光碟可能很難在MS-DOS系統上使用,但會在大多數其他系統上使用。請謹慎使用。

-L

過時的選項,使用“-allow-leading-dots”代替。

-jigdo-jigdo   jigdo_file

生成一個jigdo.jigdo後設資料檔案以及檔案系統映像。

-jigdo-template   template_file

生成一個jigdo.template後設資料檔案以及檔案系統映像。

-jigdo-min-file-size   size

指定要在.jigdo檔案中列出的檔案的最小size。預設值(和最小允許值)為1KB。

-jigdo-force-md5   path

指定檔案模式,其中檔案必須包含在由“-md5-list”提供的externally-sup-plied MD5列表中。

-jigdo-exclude   path

指定一個不再“.jigdo”中列出的檔案模式

-jigdo-map   path

為jigdo檔案指定模式對映,例如“Debian=/mirror/debian”

-md5-list   md5_file

指定一個檔案,這個檔案列出了包含在“.jigdo”檔案列表中的檔案的MD5sum、大小和路徑名。

-jigdo-template-compress   algorithm

指定模板date.gzip和bzip 2當前支援的壓縮演算法,預設情況是gzip。

-log-file   log_file

將所有錯誤、警告和資訊性訊息重定向到log_file,而不是標準錯誤

-m  glob

將與shell萬用字元模式glob匹配的檔案排除到CD-ROM。blob可能與檔名元件或完整路徑名匹配。此選項可多次使用。例如“genisoimage -o rom -m ’*.o’ -m core -m foobar”,將從image中排除所有以“.o”結尾的檔案,或者名為core或foobar的檔案。

-exclude-list   file

包含要排除的shell萬用字元列表的檔案

-max-iso9660-filenames

允許ISO 9660檔名長達37個字元。此選項啟用-N,因為額外的名稱空間是從為檔案版本號保留的空間中提取的。這違反了ISO 9660標準,但它恰好適用於許多系統。雖然符合要求的應用程式需要提供至少37個字元的緩衝區空間,但使用此選項建立的光碟可能會導致讀取作業系統中的緩衝區溢位。極其小心地使用

-M   path

-M   device             

-dev   device

指定要合併的現有ISO 9660映像的路徑。另一種形式採用SCSI裝置說明符,它使用與“dev=  parameter”相同的語法。genisoImage的輸出將是一個新的會話,它應該被寫入-M中指定的image的末尾,這通常需要用於CD記錄器的多會話功能。此選項只能與-C一起使用。

-N

從ISO 9660檔名中省略版本號。這違反了iso 9660標準,但沒有人真正使用版本號。

-new-dir-mode   mode

指定在檔案系統映像中建立新目錄時使用的mode,預設值為0555。

-nobak

-no-bak

排除ISO 9660檔案系統上的備份檔案;也就是說,包含字元“~”或“#”或以.bak結尾的檔名。這些檔案通常是Unix文字編輯器的備份檔案。

-force-rr

不要對以前的會話進行自動的Rock Ridge屬性識別。這可以解決由Nero Burning ROM建立的image的問題

-no-rr

不要使用以前會話中的RockRidge屬性。這可能有助於避免當genisoImage在舊會話上發現非法的RockRidge簽名時出現的問題。

-no-split-symlink-components

不要拆分符號連結元件,而是開始一個新的連續區域(CE)。這可能會浪費一些空間,但是SunOS 4.1.4和Solaris 2.5.1 CDROM驅動程式在讀取拆分的符號連結欄位(a‘/’可以刪除)時有錯誤。

-no-split-symlink-fields

不要拆分符號連結欄位,而是開始一個新的連續區域(CE)。這可能會浪費一些空間,但是SunOS 4.1.4和Solaris 2.5.1 CDROM驅動程式在讀取拆分的符號連結欄位(a‘/’可以刪除)方面有一個錯誤。

-o filename

指定iso 9660檔案系統映像的輸出檔案。這可以是磁碟檔案、磁帶驅動器,也可以直接對應光碟寫入器的裝置名稱。如果沒有指定,則使用stdout。注意,輸出也可以是常規磁碟分割槽的塊裝置,在這種情況下,可以使用iso 9660。可以正常安裝檔案系統,以驗證是否正確地生成了檔案系統。

-pad

將整個映像的末尾按150個扇區(300 KB)填充。預設啟用此選項。如果與-B一起使用,則在ISO 9660分割槽和引導分割槽之間插入填充,以便第一個引導分割槽以16的扇區號開始。當許多作業系統(例如Linux)在其檔案系統I/O中實現readahead錯誤時,就需要填充。這些錯誤會導致位於磁軌末尾附近的檔案的讀取錯誤,特別是如果磁碟是在一次模式下以磁軌方式寫入的,或者在CD音訊軌道跟隨資料軌道的情況下。

-no-pad

不要將結束部分按150個扇區(300 KB)填充,也不要使引導分割槽在16個扇區的倍數上啟動。

-path-list   file

包含要新增到ISO 9660檔案系統中的路徑規範目錄和檔名列表的檔案。此路徑規範列表是在命令列中出現的任何路徑規範之後處理的。如果引數為“-”,則從標準輸入讀取列表。

-P

過時的操作,參考“-publisher”

-publisher   publisher_id

指定要寫入卷頭的文字字串。這應該描述CD-ROM的發行者,通常帶有郵件地址和電話號碼。有128個字元的空間。相當於”.genisoImagerc”檔案中的PUBL。

-p   preparer_id

指定要寫入卷頭的文字字串。這應該描述CD-ROM的發行者,通常帶有郵件地址和電話號碼。有128個字元的空間。相當於”.genisoImagerc”檔案中的PREP。

-print-size

以扇區大小的倍數(2048位元組)列印估計的檔案系統大小並退出。這個選項是磁碟在一次模式下需要的,並且在某些cd-R驅動器中,當管道pipe進入wodim時,需要提前瞭解檔案系統映像的大小。舊版本的mKisofs將此資訊(以及其他資訊)寫入stderr。由於這是很難解析的,因此沒有任何其他資訊的數字。如果您想編寫一個簡單的shell指令碼,請重定向stderr並從stdout捕獲數字。例如下面的操作

cdblocks=‘ genisoimage -print-size -quiet ... ‘

genisoimage ... | wodim ... tsize=${cdblocks}s -

-quiet

靜默模式,只有少量的輸出。

-R

使用Rock Ridge協議生成SUSP和RR記錄,以進一步描述ISO 9660檔案系統上的檔案。

-r

這類似於-R選項,但是檔案所有權和模式被設定為更有用的值。uid和gid設定為零,因為它們通常只在作者的系統中有用,而對客戶端沒有用處。所有檔案讀取位都設定為true,以便在客戶端上全域性可讀檔案和目錄。如果為檔案設定了任何執行位,則設定所有執行位,以便可在客戶端上全域性執行可執行檔案。如果為某個目錄設定了任何搜尋位,則設定所有搜尋位,以便在客戶端上對目錄進行全域性搜尋。所有寫入位都將被清除,因為在任何情況下,檔案系統都將被掛載只讀。如果設定了任何特殊模式位,則清除它們,因為檔案鎖在只讀檔案系統上是無用的,並且uid 0或gid 0不需要設定id位。在Win 32上使用時,對所有檔案都設定執行位。這是Win 32和CygwinPOSIX模擬層缺乏檔案許可權的結果。

-relaxed-filenames

允許ISO 9660檔名包含除小寫字母以外的所有7位ASCII字元.這違反了ISO 9660標準,但它恰好適用於許多系統。謹慎使用

-root   dir

當寫入多會話映像時,此選項是必需的,而上一次(甚至更早的)會話是用-root dir編寫的。使用上一次會話中找不到的目錄名將導致genisoImage錯誤終止。如果沒有此選項,genisoImage將無法找到未經修改的檔案,並將被迫再次將它們的資料寫入映像中。-root和-old-root將一起用於進行增量備份。

-old-root   dir

-root 和-old-root用於一起進行增量備份。初始會話將使用“genisoimage -root backup_1 dirs”,下一次使用“genisoimage -root backup_2 -old-root  backup_1  dirs”將會對這些目錄進行另一次快照。第一個快照將在backup_1中找到,第二個快照將在backup_2中找到,但是隻需要將修改後的或新的檔案寫入到第二次會話中。如果沒有這些選項,將新增新的檔案並保留舊的檔案。但是如果檔案被修改了,舊的檔案就會被覆蓋。通過從CD複製整個目錄來恢復檔案也會還原有意刪除的檔案。訪問一個檔案的幾個舊版本需要作業系統支援來選擇要掛載哪些會話。

-sort   sort_file

對媒體上的檔案位置進行排序。排序由包含一對檔名和排序偏移加權的檔案控制。如果權重較高,則檔案將位於更接近媒體開頭的位置,如果權重較低,則檔案將位於接近媒體末尾的位置。檔名和權重之間必須只有一個空格或製表符,而權重必須是行中的最後一個字元。檔名被視為包含了上面的所有字元,但不包括最後一個空格或製表符。這是為了允許空格字元位於檔名的末尾。此選項不對ISO 9660目錄中檔名的順序進行排序。它對檔案資料寫入CD映像的順序進行排序,這對於優化CD上的資料佈局非常有用。

-sparc-boot  img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e

參考“-B”

-sparc-label   label

為使用“-sparc-boot”建立的Sun磁碟標籤設定Sun磁碟標籤名。

-split-output

將輸出image分割成幾個檔案,每個檔案大約1GB。這有助於在沒有大型檔案支援的作業系統上建立DVD大小的ISO 9660影像。如果要寫入DVD,那麼wodim將多個檔案連線成一個單一的音軌。要使“-split-output”輸出工作,必須指定-o檔名。得到的輸出image將命名為:filename_00,filename_01,filename_02。

-stream-media-siz e  #

選擇流操作並將媒體大小設定為#扇區。這允許您將tar(1)程式的輸出輸送到genisoImage,並建立一個ISO 9660檔案系統,而不需要中間的tar存檔檔案。如果指定了此選項,genisoImage將從stdin讀取並建立一個名為STREAM.IMG的檔案。該檔案的最大大小(帶填充)比指定的媒體大小200個扇區。如果指定了“-no-pad”,則檔案大小比指定的媒體大小50個扇區。如果檔案較小,genisoImage將寫入填充。這可能需要一段時間。選項流媒體大小隻建立簡單的ISO 9660檔案系統,不能與多會話或混合檔案系統選項一起使用。

-stream-file-name   name

保留

-sunx86-boot   UFS_img,,,AUX1_img

指定為Solaris x86系統製作可引導CD所需的以逗號分隔的檔案系統映像列表。請注意,分割槽1用於iso 9660映像,分割槽2是整個磁碟,因此分割槽1和分割槽2不能被外部分割槽資料使用。第一個image檔案對映到分割槽0。逗號分隔的列表中可能有空欄位,分割槽1和2的列表條目必須為空。所支援的分割槽的最大數目為8個(儘管Solaris x 86分割槽表最多可支援16個分割槽),因此不可能指定超過6個分割槽映像。要為Solaris x 86系統製作可引導CD,則需要此選項。

如果指定了“-sunx86-boot”,則結果映像的第一個扇區將包含一個帶有Solaris型別0x82 fdisk分割槽的PC fdisk標籤,該分割槽從偏移512開始,覆蓋整個cd。此外,對於Solaris型別0x82 fdisk分割槽,在CD的第一個扇區中有一個位於偏移量1024的SVR 4磁碟標籤。為用於引導PC的第一個檔案系統映像(通常為UFS型別)指定切片0,為ISO 9660映像指定切片1。片2跨越整個CD,片3~.片7可用於使用此選項指定的其他檔案系統映像。

Solaris x86 引導CD使用1024位元組大小的主引導,它使用ElTorito不模擬引導模式,以及在cd扇區1~15中的第二泛型引導。

-sunx86-label   label

為使用-sunx86-boot建立的svr 4磁碟標籤設定svr 4磁碟標籤名。

-sysid   ID

指定系統ID。有32個字元的空間。相當於“.genisoImagerc”檔案中的SYSI。

-T

在CD-ROM上的每個目錄中生成一個TRANS.TBL檔案,該檔案可用於非Rock Ridge系統,以幫助建立正確的檔名。檔案中也有指示塊和字元裝置的主要和次要數字的資訊,每個符號連結都有給定連結檔案的名稱。

-table-name   table_name

替代翻譯表檔名(見上文)。如果要建立多會話映像,則必須使用與上一次會話相同的名稱。

-ucs-level   level

在JolietSVD中設定Unicode一致性級別。預設級別為3。可以使用此選項將其設定為1~3

-udf

在生成的檔案系統映像中包含UDF檔案系統支援。UDF支援目前處於alpha狀態,因此無法建立僅UDF的映像。UDF資料結構目前耦合到Joliet結構,因此當前的實現存在許多缺陷。沒有UID/GID支援,沒有POSIX許可權支援,也沒有對符號連結的支援。請注意,除了真正的UDF資料結構所需的空間外,UDF浪費了磁碟開頭的扇區~20到扇區256的空間。

-uid   uid

將從原始檔讀取的uid重寫。指定此選項將自動啟用RockRidge擴充套件

-use-fileversion

-use-fileversion 選項允許genisoImage使用檔案系統中的檔案版本號。如果未指定該選項,genisoImage將為所有檔案建立一個版本號為1。檔案版本是範;1~;32767內的字串;該選項是VMS上的預設選項。

-U

允許“未翻譯”檔名,完全違反了上面描述的ISO 9660標準。允許以下標誌:-d -l -N  -allow-leading-dots-relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translate。允許檔名中包含多個“.”字元,以及混合大小寫檔名,這在HP-UX上很有用,因為內建的CDF檔案系統不識別任何副檔名。使用時要格外小心。

-no-iso-translate

不要翻譯ISO 9660檔名中無效的字元“#”和“~”。雖然這些字元無效,但Microsoft系統經常使用這些字元。這違反了ISO 9660標準,但它恰好適用於許多系統。謹慎使用

-V   volid

指定要寫入主塊的卷ID(卷名或標籤)。有32個字元的空間。相當於“.genisoImagerc”檔案中的VOLI。卷ID被Solaris卷管理器用作掛載點,並作為分配給光碟的標籤。

-volset   ID

指定卷集ID。有128個字元的空間。相當於“.genisoImagerc”檔案中的VOLS

-volset-size   #

將卷集大小設定為#。卷集大小是CD卷集中的CD數。卷集是一個或多個卷的集合,其中記錄了一組檔案。卷集不打算用於建立一組編號為CD的CD,例如作業系統安裝CD集。卷集用於記錄不適合單個卷的大目錄樹。卷集的每個卷都包含對所有目錄和記錄在序列號小於或等於當前卷的指定卷集大小的捲上的檔案。

GenisoImage 目前不支援大於1的-volset-size。選項-volset-size必須在每個命令列的-volset-seqno之前指定.

-volset-seqno   #

將卷集序列號設定為#。卷集序列號是cd集中當前cd的索引號。選項-volset-size必須在每個命令列的-volset-seqno之前指定。

-v

冗長的執行。如果在命令列上給出兩次,則會列印額外的除錯資訊。

-x   glob

與-m glob相同

-z

為透明壓縮的檔案生成特殊的RRIP記錄。這只是支援透明解壓縮的主機(如Linux 2.4.14或更高版本)的用途和興趣。您必須指定-R或-r來啟用Rock Ridge,並在執行genisoImage之前使用mkzftree實用程式生成壓縮檔案。請注意,透明壓縮是一個非標準的Rock Ridge擴充套件。結果磁碟只有在Linux上才能透明地讀取。在其他作業系統上,您需要手動呼叫mkzftree來解壓縮檔案。

HFS 選項


-hfs

建立ISO 9660/HFS混合CD。此選項應與-map、-magic或下列各種雙破折號選項結合使用。

-apple

建立帶有Apple擴充套件的ISO 9660 CD。類似於-hfs,只是新增了對ISO 9660的蘋果擴充套件,而不是建立一個HFS混合卷。以前的genisoImage版本在預設情況下包括Rock Ridge屬性,如果“-apple”是指定的。這個版本的genisoImage不再這樣做了。如果您希望擁有RockRidge屬性,則需要分別指定此屬性。

-map   mapping_file

使用對映檔案根據檔名的副檔名為檔案設定建立者並鍵入檔案的資訊。只有當檔名不是已知的Apple/Unix檔案格式時,才會對映它。請參閱下面的HFS   CREATOR/TYPE 部分。

-magic   magic_file

建立者和型別資訊是通過使用檔案的magic數字(通常是檔案的前幾個位元組)來設定的。只有當檔案不是已知的Apple/unix檔案格式,或者副檔名尚未使用-map對映時,才會使用magic_file。

-hfs-creator   creator

設定所有檔案的預設建立者。一定是4個字元。請參閱HFSCREATOR/TYPE。

-hfs-type   type

設定所有檔案的預設型別。必須精確為4個字元。請參閱HFSCREATOR/TYPE。

-probe

搜尋所有已知的Apple/Unix檔案格式的檔案內容。然而,檢測MacBinary and AppleSingle檔案唯一的方法是開啟和讀取他們,因此這個選項可能會增加處理時間。如果已知正在使用的Apple/Unix格式,最好使用下面給出的選項

-no-desktop

不要建立(空)桌面檔案。當在Macintosh上使用CD時,將建立新的hfs桌面檔案。預設情況下,空桌面檔案將新增到hfs卷中。

-mac-name

使用HFS檔名作為ISO 9660、Joliet和Rock Ridge檔名的起點。有關更多資訊,請參見下面的HFS Macintosh檔名部分。

-boot-hfs-file   driver_file

安裝驅動程式檔案,使CD可在Macintosh上啟動。

-part

生成一個HFS分割槽表。預設情況下,不生成分割槽表,但是一些較老的macintosh CD-ROM驅動程式需要CD-ROM上的hfs分割槽表才能識別混合CD-ROM。

-auto   AutoStart_file

讓HFS CD使用QuickTime2.0自動啟動功能來啟動應用程式或文件。給定的檔名必須是位於CD頂層的文件或應用程式的名稱。檔名必須小於12個字元。

-cluster-size   size

以位元組為單位設定PC Exchange檔案的群集或分配單元的大小。

-hide-hfs   glob

將shell萬用字元模式GLOB隱藏在HFS卷中。該檔案或目錄仍然存在於iso 9660和/或Joliet目錄中。GLOB可能與檔名的任何部分匹配。可以排除多個全域性。例如命令

genisoimage -o rom -hfs -hide-hfs ’*.o’ -hide-hfs foobar

將會從HFS卷中排除所有以“.o”結尾或稱為foobar的檔案。注意,如果您有一個名為foobar的目錄,那麼它(當然還有它的所有後代)也會被排除在外。GLOB也可以是相對於命令列上給定的源目錄的路徑名,例如

 

僅從src目錄中排除名為html的檔案或目錄。樹中任何其他名為html的檔案或目錄都不會被排除。應該與“-hide”或“-hide-joliet”一起使用。為了匹配目錄名,請確保模式不包含尾隨的“/”字元。

-hide-hfs-list   file

指定一個檔案,該檔案包含要隱藏的萬用字元模式的列表,如“-hide-hfs”中所示。

-hfs-volid   hfs_volid

HFS 分割槽的卷名稱。這是分配給macintosh上的磁碟的名稱,並用-V替換使用的volid。

-icon-position

如果存在圖示位置資訊,就使用。圖示將顯示在與Macintosh桌面相同的位置。資料夾在螢幕上的位置和大小、滾動位置、資料夾檢視(檢視為圖示、小圖示等)也會保留下來。

-root-info   file

為HFS卷的根資料夾設定位置、螢幕上的大小、滾動位置、資料夾檢視等。

-prep-boot   file

準備引導映像檔案。最多允許4次

-chrp-boot

新增CHRP引導頭

-input-hfs-charset   charset

輸入字符集,定義與“-mac-name”一起使用時在hfs檔名中使用的字元。預設字符集為cp 10000

-output-hfs-charset   charset

定義將在HFS檔名中使用的字元的輸出字符集。預設輸入字符集

-hfs-unlock

預設情況下,genisoImage將建立一個被鎖定的hfs卷。此選項使卷不被鎖定,以便其他應用程式(例如hfsutils)可以修改卷。

-hfs-bless   folder_name

“Bless” 指定目錄(資料夾)。這通常是系統資料夾,用於建立HFS可引導CD。目錄的名稱必須是genisoImage所看到的整個路徑名。例如,如果給定的路徑規範是“./cddata“,所需的資料夾稱為系統資料夾,則整個路徑名為“/cddata/system”資料夾(如果名稱包含空格,請記住使用引號)。

-hfs-parms   parameters

重寫用於建立HFS檔案系統的某些引數。不太可能在正常情況下使用

--cap

查詢AUFS CAP Macintosh檔案。僅搜尋CAP Apple/Unix檔案格式。搜尋其他可能的Apple/Unix檔案格式將被禁用,除非給出其他“--”選項

--netatalk

查詢NETATALK Macintosh檔案

--double

查詢AppleDouble Macintosh檔案

--ethershare

查詢Helios EtherShare Macintosh檔案

--ushare

查詢IPT UShare Macintosh檔案

--exchange

查詢PC Exchange Macintosh檔案

--sgi

查詢SGI Macintosh檔案

--xinet

查詢XINET  Macintosh檔案

--macbin

查詢MacBinary Macintosh檔案

--single

查詢AppleSingle Macintosh檔案

--dave

查詢Thursby Software Systems DAVE Macintosh檔案

--sfm

查詢Microsoft’s Services for Macintosh檔案

--osx-double

查詢Mac OS X AppleDouble Macintosh檔案

--osx-hfs

查詢Mac OS X HFS Macintosh檔案

 

3 、字符集

genisoImage 以符合POSIX的方式將檔名處理為8位字元的字串。要表示所有語言的所有編碼,8位字元是不夠的。Unicode或Iso-10646定義了至少需要21位才能表示所有已知語言的字元編碼。它們可以用utf-32、utf-16或utf-8編碼表示。utf-32使用普通的32位編碼,但似乎不常見。microsoft使用utf-16時使用win 32,缺點是16位字元不符合POSIX檔案系統介面。

現代unix作業系統可以對檔名使用utf-8編碼。每個32位字元由一個或多個8位字元表示。如果一個字元用iso-8859-1(在中歐和北美使用)編碼,則以1:1對映到utf-32或utf-16編碼的Unicode字元。如果一個字元是用7位asci編碼(在美國和其他字符集有限的國家)將以1:1對映到UTF-32、UTF-16或UTF-8編碼的Unicode字元。不能用UTF-8(如果值大於0x7F)中的單個位元組表示的字元程式碼使用轉義序列,這些轉義序列對映到多個8位字元。

如果所有作業系統都使用utf-8,genisoImage將不需要在檔名中重新編碼字元。不幸的是,Apple使用完全非標準的編碼,而microsoft使用與POSIX檔名介面不相容的unicode編碼。對於所有非utf-8編碼的作業系統,每個位元組表示的實際字元取決於本地作業系統使用的字符集或內碼表(microsoft使用的名稱)。字符集中的字元將反映使用者的區域或自然語言集。通常字元程式碼0x00-0x1f是控制字元,程式碼0x20-0x7f是7位ASCII字元,(在PC和Mac上)0x80-0xff用於其他字元。

由於有超過256個字元/符號在使用,只有一個小子集表示在一個字符集。因此,相同的字元程式碼可以表示不同字符集中的不同字元。因此在中歐生成的檔名,在東歐的機器上檢視時可能不會顯示相同的字元。為了使事情變得更復雜,不同的作業系統對區域或語言使用不同的字符集。例如,‘é’的字元程式碼(帶有尖銳口音的小e)可以是PC上的字元程式碼0x82、Macintosh上的程式碼0x8e、西歐Unix系統上的程式碼0xe9和Unicode中的程式碼0x000e9。

只要不是所有作業系統和應用程式都使用相同的字符集作為檔名的基礎,就可能需要指定檔名中使用的字符集以及檔名應該顯示在CD上的字符集。有四個選項可以指定要使用的字符集:

1 )-input-charset。定義您在主機上使用的本地字符集。發生的任何字符集轉換都將使用此字符集作為起點。預設輸入字符集在基於MS-DOS的系統上為cp 437,在所有其他系統上為iso 8859-1。如果給定-j,則輸入字符集的unicode等效項將在joliet目錄中使用。“-jcharset”選項 和“-input-charset –J”選項時一樣的。

2 )-output-charset。定義用於CD上Rock Ridge名稱的字符集。預設為輸入字符集。

3 )-input-hfs-charset。定義從各種Apple/Unix檔案格式解碼的用於HFS檔名的HFS字符集。只有當與“-mac-name”一起使用時才有用。

4 )-output-hfs-charset。定義用於從正在使用的輸入字符集建立hfs檔名的hfs字符集。在大多數情況下,這將來自“-input-charset”選項指定的字符集。預設為輸入hfs字符集。

在genisoImage中內建了許多字符集。要獲得列表,請使用輸入字符集幫助。此列表不包括從當前區域設定派生的字符集,如果genisoImage是使用iconv支援構建的。通過將檔名作為選項的引數,可以從任意字符集選項的檔案中讀取其他字符集。只有當檔案的名稱與內建字符集中的一個不匹配時,才會讀取給定的檔案。

      字符集檔案的格式與“http://www.unicode.org/Public/MAPPINGS”提供的對映檔案相同。格式如下:

Column #1 is the input byte code (in hex as 0xXX)

Column #2 is the Unicode (in hex as 0xXXXX)

The rest of the line is ignored.

任何空白行、沒有上述格式的兩個(或更多)列的行或註釋行(以#字元開始)都會被忽略,而不會發出任何警告。任何丟失的輸入程式碼都對映到Unicode字元0x0000。

請注意,雖然支援UTF-8,但其他Unicode編碼(如UCS-2/UTF-16和UCS-4/UTF-32)則不支援,因為POSIX作業系統無法本地處理它們。1:1字符集對映可以通過使用關鍵字預設值作為任何字符集選項的引數來定義。從輸入檔名生成的iso 9660檔名不會從輸入字符集轉換。iso 9660字符集是ASCII字元的非常有限的子集,因此任何轉換都是沒有意義的。任何不能轉換的字元都將被“_”字元替換。

 

4 、HFS CREATOR/TYPE(建立者和型別)

Macintosh 檔案有兩個與其相關的屬性,它們定義了建立檔案的建立者和檔案型別。兩者都是(完全)4個字母字串。通常,這允許Macintosh使用者雙擊檔案並啟動正確的應用程式等。可以通過在Macintosh上使用ResEdit(或類似的)之類的方法找到特定檔案的建立者和型別。

建立者和型別資訊儲存在所有Apple/Unix編碼的檔案中。對於其他檔案,可以使用檔案的對映檔案(帶-map)或使用檔案的魔術號(通常是前幾個位元組中的簽名),將建立者和輸入檔案的副檔名作為基礎。如果這兩個選項都給出了,那麼它們在命令列上的順序是有效的。如果“-map”是首先給出的,則在魔術號匹配之前嘗試進行副檔名匹配。但是,如果先給出“-magic”,則在副檔名匹配之前嘗試進行魔法號匹配。

如果沒有使用對映或魔術檔案,或者沒有找到匹配,則可以通過使用“.genisoImagerc”檔案中的條目或使用“-hfs-creator”或“-hfs-type,”來設定所有常規檔案的預設建立者和型別,否則預設的建立者和型別是Unix和Text。

對映檔案的格式與aufs使用的afpfile格式相同。該檔案有五列用於副檔名、檔案轉換、建立者、型別和註釋。以“#”字元開頭的行是註釋行,被忽略。下面就是一個例子

# Example filename mapping file

#

# EXTN  XLate   CREATOR   TYPE    Comment

.tif    Raw     ’8BIM’    ’TIFF’  "Photoshop TIFF image"

.hqx    Ascii   ’BnHq’    ’TEXT’  "BinHex file"

.doc    Raw     ’MSWD’    ’WDBN’  "Word file"

.mov    Raw     ’TVOD’    ’MooV’  "QuickTime Movie"

*       Ascii   ’ttxt’    ’TEXT’  "Text file"

第一列EXTN定義要對映的Unix檔名副檔名,任何不匹配的副檔名的預設對映都定義為“*”字元。第二列Xate列定義了Unix和Macintosh檔案之間的文字轉換型別,它被genisoImage忽略,但與aufs(1)相容。雖然genisoImage不改變檔案的內容,但如果二進位制檔案的型別設定為文字,則可能會在Macintosh上錯誤地讀取它。因此,預設型別的更好選擇可能是“????”。CREATOR和TYPE關鍵字必須為4個字元長,並以單引號括起來。註釋欄位以雙引號括起來-它被genisoImage忽略,但與aufs相容。

魔術檔案的格式幾乎與file (1)命令使用的魔術(5)檔案格式相同。該檔案有偏移量、型別、測試和訊息用四個位元組的製表符分隔列。以‘#’字元開頭的行是註釋行,被忽略。一個示例檔案將類似於:

# Example magic file

#

# off  type      test       message

0      string    GIF8       8BIM GIFf  GIF image

0      beshort   0xffd8     8BIM JPEG  image data

0      string    SIT!       SIT! SIT!  StuffIt Archive

0      string    \037\235   LZIV ZIVU standard Unix compress

0      string    \037\213   GNUz ZIVU  gzip compressed data

0      string    %!         ASPS TEXT  Postscript

0      string    \004%!     ASPS TEXT  PC Postscript with a ^D to start

4      string    moov       txtt MooV  QuickTime movie file (moov)

4      string    mdat       txtt MooV  QuickTime movie file (mdat)

檔案的格式用magic(5)來描述。這裡唯一的區別是,對於魔術檔案中的每個條目,message的初始偏移量必須是4個字元的CREATOR,緊接著是4個字元的TYPE,空格是可選的。此行上的任何其他字元都將被忽略。延拓行(從‘>’開始)也會被忽略,即只使用初始偏移行。

使用”-magic“可能會顯著增加處理時間,因為每個檔案必須開啟和讀取,以找到其魔術號碼。

總之,對於所有檔案,預設建立者是Unix,預設型別是TEXT。這些可以通過使用“.genisoImagerc“檔案中的條目或使用” -hfs-creator  “或” -hfs-type “選項來更改。如果檔案是以已知的Apple/Unix格式之一(並且已經選擇了該格式),則建立者和型別將從儲存在Apple/Unix檔案中的值中提取。其他檔案的建立者和型別可以通過其副檔名(-map)或它們的魔術號(-magic)進行設定。如果在對映檔案中使用了預設匹配,則這些值將覆蓋預設的建立者和型別。

 

5 、HFS MACINTOSH FILE FORMATS(檔案格式)

Macintosh 檔案有兩個部分,稱為資料和資源叉。兩者都可能是空的。unix(和許多其他開放原始碼軟體)只能處理只有一部分(或分叉)的檔案。另外,macintosh檔案有許多與它們相關的屬性-可能最重要的是型別和建立者。同樣,unix對這些型別的屬性沒有概念。例如,Macintosh檔案可以是JPEG影像,其中影像儲存在資料分叉中,桌面縮圖儲存在資源分叉中。資料分叉中的資訊通常是跨平臺有用的。因此,要在Unix檔案系統上儲存Macintosh檔案,必須找到一種方法來處理兩個分叉和額外的屬性(稱為Finder info)。不幸的是,似乎每個在Unix上儲存Macintosh檔案的軟體包都選擇了一種完全不同的儲存方法。genisoImage(部分)支援的Apple/Unix格式如下:

CAP AUFS format 。資料儲存在檔案中,資源儲存在子目錄。資源和資料有相同的檔名 

AppleDouble/Netatalk 。資料儲存在檔案中。資源儲存在以‘%’作為字首的檔案中,查詢器資訊也儲存在相同的‘%’檔案中

AppleSingle 。資料結構類似於上面的結構,除了分叉和Finder資訊都儲存在一個檔案中。

Helios EtherShare 。資料儲存在檔案中的,資源和查詢器資訊一起儲存在子目錄.rsrc中,與資料具有相同的檔名。

IPT UShare 。與EtherShare格式類似,但是Finder資訊的儲存方式略有不同

MacBinary 。分叉和查詢器資訊都儲存在一個檔案中。

Apple PC Exchange 。Macintoshes將蘋果檔案儲存在DOS(FAT)磁碟上。資料分叉儲存在檔案中。資源分叉儲存在子目錄Resoure.frk(或RESOURCE.FRK)中。finder info作為檔案finder.dat(或FINDER.DAT)中的一條記錄。為每個資料叉目錄分離finder.dat。注意:genisoImage需要知道pc Exchange檔案所在的磁碟的本機胖叢集大小(或已從其複製)。此大小由“-cluster-size”確定。使用DOS實用程式chkdsk可以找到群集或分配大小。

SGI/XINET 。SGI機器在安裝HFS磁碟時使用。儲存在檔案中的資料分叉。.hsResource子目錄中的資源叉,具有相同的檔名.finder info作為檔案中的一條記錄。

Thursby Software Systems DAVE 。允許Macintoshes將蘋果檔案儲存在SMB伺服器上。儲存在檔案中的資料分叉。使用AppleDouble格式儲存資源叉。

genisoImage 將嘗試從finder資訊中設定建立者、型別、日期和可能的其他標誌。此外,如果存在,則從finder info設定macintosh檔名,否則macintosh名稱基於unix檔名

Services for Macintosh 。NT伺服器儲存在NTFS檔案系統上的檔案格式。資料分叉儲存為檔名。資源叉儲存為名為filename:afp_Resource的NTFS流。查詢資訊儲存為名為filename:AFP_AfpInfo的NTFS流。NTFS流通常對使用者不可見。注意:genisoImage只部分支援SFM格式。如果儲存在NT伺服器上的HFS檔案或資料夾在其名稱中包含非法NT字元,則NT將這些字元轉換為私有使用Unicode字元。這些字元是:“*/<>?\和空格或句點(如果它是檔名的最後一個字元,則編碼0x01到0x1f)。(控制字元)和蘋果的蘋果標誌。不幸的是,這些私有Unicode字元無法被genisoImageNT可執行檔案讀取。因此,包含這些字元的任何檔案或目錄名稱都將被忽略-包括任何此類目錄的內容。

Mac OS X AppleDouble 。當MacOSX將HFS/HFS檔案複製或儲存到非HFS檔案系統(例如UFS、NFS等)時,檔案以AppleDouble格式儲存。儲存在以“._”開頭的同名檔案中的資源叉。查詢器資訊也儲存在相同的“._”檔案中。

Mac OS X HFS (Alpha) 。實際上不是Apple/Unix編碼,而是MacOSX系統上的實際HFS/HFS檔案。儲存在檔案中的資料分叉。資源叉儲存在同名、字尾/rsrc的偽檔案中。只有在MacOSX上使用時才能工作。如果發現一個檔案具有零長度的資源分叉和空的finderinfo,則假定它沒有任何Apple/Unix編碼,因此可以使用其他方法設定型別和建立者。

 

genisoImage 將嘗試從finder資訊中設定建立者、型別、日期和可能的其他標誌。此外,如果存在,則從finder info設定macintosh檔名,否則macintosh名稱基於unix檔名。

在使用“-apple”時,型別和建立者儲存在ISO 9660目錄記錄中的可選系統使用或SUSP欄位中,方式與Rock Ridge屬性非常類似。實際上,為了簡化生活,在現有Rock Ridge屬性的開頭新增了Apple擴充套件(即,為了獲得Apple擴充套件,您也可以獲得Rock Ridge擴充套件) Apple 擴充套件要求將資源叉儲存為與ISO 9660關聯的檔案。這與儲存在ISO 9660檔案系統中的任何普通檔案一樣,只是相關的檔案標誌是在目錄記錄(位2)中設定的。該檔案與資料分叉(由非蘋果計算機看到的檔案)具有相同的名稱。相關檔案通常被其他作業系統忽略。

使用“-hfs”時,型別和建立者以及其他查詢器資訊儲存在單獨的HFS目錄中,在ISO 9660卷中不可見。HFS目錄引用上述相同的資料和資源叉檔案。在大多數情況下,最好使用“-hfs”而不是“-apple”,因為後者在檔名中使用了有限的ISO 9660字元。然而,Apple副檔名確實提供了這樣的優勢:檔案被更高效地打包到磁碟上,並且可能在CD上安裝更多的檔案

 

6 、HFS MACINTOSH FILENAMES

在可能的情況下,儲存在Apple/Unix檔案中的HFS檔名用於CD的HFS部分。但是,並不是所有的Apple/Unix編碼都使用finderinfo儲存HFS檔名。在這些情況下,使用Unix檔名-帶有轉義的特殊字元。特殊字元包括‘/’和程式碼超過127的字元。AUFS使用‘:’轉義這些字元,後面跟著字元程式碼作為兩個十六進位制數字。Netatalk和EtherShare有類似的方案,但使用‘%’而不是‘:’。如果genisoImage無法找到HFS檔名,則使用Unix名稱,將任何“%xx”或“:xx”字元(xx是兩個十六進位制數字)轉換為單個字元程式碼。如果xx不是十六進位制數字([0-9a-FA-F]),則它們將被單獨保留-儘管其餘的“:”轉換為“%”,因為“:”是hfs目錄分隔符。必須小心,因為帶有“%xx”或“:xx”的普通Unix檔案也將被轉換。例如下面的例子

This:2fFile   converted to This/File

This:File     converted to This%File

This:t7File   converted to This%t7File

雖然HFS檔名似乎支援大寫字母和小寫字母,但檔案系統不區分大小寫,即檔名AbC和aBC是相同的。如果在具有相同HFS名稱的目錄中找到一個檔案,genisoImage將嘗試通過在其中一個檔名中新增“_”字元來建立唯一的名稱。如果檔案存在HFS檔名,genisoImage可以使用“-mac-name”選項,讓此名稱作為ISO 9660、Joliet和Rock Ridge檔名的起始點。沒有HFS名稱的普通Unix檔案仍將使用它們的Unix名稱。

如果在unix系統中,一個mac的二進位制檔案儲存名字是這是someimage.gif.bin,但是系統中還有一個名字為someimage.gif的檔案,那麼這個名字是將出現在CD的HFS部分的名稱。但是,由於genisoImage使用Unix名稱作為其他名稱的起點,生成的ISO 9660名稱可能是SOMEIMAG.BIN,Joliet/Rock Ridge將是某某Image.gif.bin。此選項將使用HFS檔名作為起點,ISO 9660名稱可能為SOMEIMAG.GIF,而Joliet/Rock Ridge可能是一些Image.gif。

“-mac-name”目前不能和“-T”一起使用。Unix名稱將在TRANS.TBL檔案中使用,而不是Macintosh名稱。

      用於將任何HFS檔名轉換為Joliet/Rock Ridge檔名的字符集預設為cp 10000(Mac Roman)。使用的字符集可以使用“-input-hfs-charset.”選項指定。HFS字符集中的其他內建字符集是:cp 10006(Mac希臘語)、cp 10007(MacCyrilic)、cp 10029(MacLatin 2)、cp 10079(Mac冰島和andic)和cp 10081(Mac土耳其語)。注意:從各種Apple/Unix格式中提取的HFS檔名使用的字元程式碼將不會被轉換,因為它們被假定在正確的Apple字符集中。只有從HFS檔名派生的Joliet/Rock Ridge名稱才會被轉換。

現有的genisoImage程式碼將過濾掉ISO 9660和Joliet檔名的任何非法字元,但隨著genisoImage預期將直接處理Unix名稱,它將保留Rock Ridge的名稱。但“/”是一個合法的HFS檔名字元,“-mac-name”選項在Rock Ridge檔名中將“/”轉換為“_”。

如果使用Apple擴充套件,則只會在Macintosh上顯示ISO 9660檔名。然而,由於MacintoshISO 9660驅動程式可以使用級別2檔名,您可以使用類似於“-allow-multidot”的選項,這在Macintosh上沒有問題的。但是仍然要注意名稱,例如“this.file.name”將轉換為“THIS.FILE”,即只有一個‘.’,也可以將檔名“abcdefgh”視為“ABCDEFGH”,但“abcdefghi”將被視為“ABCDEFGHI.”。也就是說,在結尾有一個“.”不知道這是Macintosh問題還是genisoImage/mk混合問題。當在Macintosh上檢視時,所有的檔名都是大寫的。當然,DOS/Win3.X機器將無法看到二級檔名。

 

7 、HFS CUSTOM VOLUME/FOLDER ICONS

若要為HFS CD提供自定義圖示,請確保根(頂級)資料夾包含一個標準Macintosh捲圖示檔案。若要在Macintosh上為卷提供自定義圖示,必須在卷的“獲取資訊”框中將一個圖示貼上到卷的圖示上。這將在根資料夾中建立一個名為“Icon\r“(‘\r’是回車字元)的不可見檔案。自定義資料夾圖示非常相似,資料夾本身存在一個名為”Icon\r“的不可見檔案。

可能建立genisoImage可以使用的自定義圖示的最簡單方法是格式化Mac上的空白HFS軟盤,並將圖示貼上到其“GET Info”框中。如果在安裝hfs模組的情況下使用linux,請掛載軟盤:” mount -t hfs /dev/fd0 /mnt/floppy” 。預設情況下,軟盤將作為CAP檔案系統掛載。然後使用以下內容執行genisoImage:“genisoimage --cap -o output source_dir /mnt/floppy “。

如果您不使用Linux,您可以使用hfsutils從軟盤複製圖示檔案。但是,必須小心,因為圖示檔案包含一個控制字元。例如:

hmount /dev/fd0

hdir -a

hcopy -m Icon^V^M icon_dir/ico

其中‘^V^M’是“ctrl+v“,然後是控制”ctrl+m“。然後以下面的方式執行genisoimage:“genisoimage --macbin -o output source_dir icon_dir”

建立/使用自定義資料夾圖示的過程非常相似-將圖示貼上到資料夾的“Get Info”框中,並將生成的“Icon\r”檔案傳輸到genisoImage源樹中的相關目錄。您可能需要將圖示檔案隱藏在iso 9660和Joliet樹中。

 

8 、HFS BOOT DRIVER

可以在Macintosh上啟動混合CD。可引導的HFS CD需要一個AppleCD-ROM(或相容)驅動程式、一個可引導的HFS分割槽和必要的系統、Finder等檔案。使用Apple_Driver實用程式,可以從任何其他Macintosh可引導CD-ROM中獲得驅動程式。然後,這個檔案可以與“-boot-hfs-file”一起使用。HFS分割槽(在本例中是混合磁碟)必須包含一個合適的系統資料夾,同樣來自另一個光碟或磁碟。

要使分割槽可引導,必須設定其引導塊。引導塊位於分割槽的前兩個塊中。對於不可引導的分割槽,引導塊中滿是零。通常情況下,當系統檔案被複制到Macintosh磁碟上的分割槽時,引導塊會被許多必需的設定填充。因此,實用程式Apple_Driver還從它在給定的cd-ROM上找到的第一個hfs分割槽中提取引導塊,這用於genisoImage建立的hfs分割槽。

請注意:通過使用來自Apple CD的驅動程式並將Apple軟體複製到您的CD上,您將很容易服從Apple Computer,Inc。軟體許可協議。

 

9 、EL TORITO BOOT INFORMATION TABLE

當給出“-boot-info-table”時,genisoImage將修改-b指定的引導檔案,方法是在檔案的偏移量8處插入一個56位元組的引導資訊表。這一修改是在原始檔系統中完成的,因此,如果該檔案不易重新建立,請確保使用副本!此檔案包含指標,這些指標在啟動時可能不易或可靠地獲得。本表的格式如下;所有整數均採用7.3.1(“小Endian”)格式:

Offset    Name           Size      Meaning

8       bi_pvd         4 bytes   LBA of primary volume descriptor

12        bi_file        4 bytes   LBA of boot file

16        bi_length      4 bytes   Boot file length in bytes

20        bi_csum        4 bytes   32-bit checksum

24        bi_reserved    40 bytes Reserved

32 位校驗和是引導檔案中從位元組偏移64開始的所有32位字的總和。所有線性塊地址(LBA)都以CD扇區(通常為2048位元組)給出。

 

10 、HPPA說明

要為HPPA製作一個可引導的CD,至少必須指定一個引導載入程式檔案(-hppa-boot-loader)、一個核心映像檔案(32位、64位,或者兩者兼而有之,視硬體而定)和一個引導命令列(-hppa-cmdline)。有些系統可以啟動32位或64位的核心,如果兩者都存在,韌體將選擇其中一種。還可以選擇使用“-hppa-cmdline”對根檔案系統使用ramdisk。

 

11 、JIGDO說明

Jigdo 是一個幫助分發大檔案的工具,如cd和dvd映象;更多細節請參見http://atterer.net/jigdo/。debian cd和dvd iso映象以jigdo格式在網路上釋出,以便終端使用者更有效地下載它們。若要從genisoImage在ISO映像旁邊建立jigdo和模板檔案,您必須首先生成將使用的檔案列表,格式如下:

MD5sum   File size  Path

32 chars 12 chars   to end of line

MD5sum 應該用jigdo的偽BASE 64格式編寫。檔案大小應該是十進位制,檔案的路徑必須是絕對的。擁有此檔案後,使用所有常規命令列引數呼叫genisoImage。使用“-jigdo-jigdo”和“-jigdo-Template”指定jigdo和模板檔案的輸出檔名,並使用“-md5-list”傳遞md5列表的位置。

如果您不希望將一些檔案新增到jigdo檔案中(例如,如果它們可能經常更改),請使用-jigdo-忽略指定它們。如果您想在將一些檔案寫入映象時驗證它們,請使用“-jigdo-force-md5”指定它們。如果任何檔案不匹配,genisoImage就會中止。這兩個選項都以正規表示式作為輸入。可以根據大小,使用”-jigdo-min-file-size”選項限制將進一步使用的檔案集。

最後,jigdo程式碼需要知道如何將給定的檔案對映到映象樣式的配置中。指定如何使用“-jigdo-map”對映路徑。使用“debian=/mirror/debian”將導致所有以“/mirror/debian”開頭的路徑對映到輸出jigdo檔案中的debian:<file>。

12 、例子程式碼

1 )若要在cd.iso檔案中建立一個普通的ISO 9660檔案系統映像,如果CD為cd.iso,目錄cd_dir將成為根目錄,使用命令:

% genisoimage -o cd.iso cd_dir

2 )使用目錄cd_dir的Rock Ridge擴充套件建立CD

% genisoimage -o cd.iso -R cd_dir

3 )若要建立源目錄cd_dir的RockRidge副檔名的CD,其中所有檔案至少具有讀取許可權,且所有檔案均為root所有,使用命令:

% genisoimage -o cd.iso -r cd_dir 

4 )將tar存檔直接寫入CD,該CD將包含帶有tar存檔的簡單iso 9660檔案系統。使用命令:

% tar cf - . | genisoimage -stream-media-size 333000 | wodim dev=b,t,l -dao tsize=333000s –

5 )用源目錄cd_dir的Joliet和Rock Ridge擴充套件建立HFS混合CD

% genisoimage -o cd.iso -R -J -hfs cd_dir

6 )從包含Netatalk Apple/Unix檔案的源目錄cd_dir建立HFS混合CD

% genisoimage -o cd.iso --netatalk cd_dir

7 )要從源目錄cd_dir建立HFS混合CD,只需根據檔案“對映”中列出的副檔名提供所有檔案建立者和型別

% genisoimage -o cd.iso -map mapping cd_dir

8 )要建立一個帶有Apple擴充套件到ISO 9660的CD,可以從源目錄cd_dir和another_di。.解碼所有已知Apple/Unix格式的檔案,並根據檔案魔術中給出的魔術號給出任何其他檔案的建立者和型別。

% genisoimage -o cd.iso -apple -magic magic -probe cd_dir another_dir

9 )下面的示例在CD上放置不同的檔案,這些檔案都有自述的名稱,但當被視為ISO 9660/Rock Ridge、Joliet或HFS CD時,它們的內容不同。當前目錄包含“README.hfs     README.joliet  README.Unix   cd_dir/”。下面的命令將cd_dir目錄的內容連同三個自述檔案放在CD上,但在這三個檔案系統中只能看到一個

% genisoimage -o cd.iso -hfs -J -r -graft-points \

  -hide README.hfs -hide README.joliet \

  -hide-joliet README.hfs -hide-joliet README.Unix \

 -hide-hfs README.joliet -hide-hfs README.Unix \

  README=README.hfs README=README.joliet \

 README=README.Unix cd_dir

檔案README.hfs將被視為HFS CD上的自述檔案,另外兩個自述檔案將被隱藏。同樣適用於Joliet和ISO 9660/Rock Ridge CD。隱藏選項的組合可能會產生各種奇怪的結果。

 

13 、說明

genisoImage 可以安全地安裝在suid root中。這可能是為了允許genisoImage在建立多會話映像時讀取上一次會話。如果genisoImage正在建立具有Rock Ridge屬性的檔案系統映像,而源目錄樹的目錄巢狀級別對於ISO 9660來說太高,genisoImage將執行深度目錄重定位。這將導致CD根目錄中的一個名為RR_Move的目錄。您無法避免此目錄。不同平臺的許多引導程式碼選項是互斥的,因為引導塊不能共存,即不同平臺共享映像中相同的資料位置。

 

14 、bug

任何與被複制到iso 9660檔案系統的樹中的檔案沒有硬連結的檔案都將有一個不正確的檔案引用計數。不檢查根目錄的“.”條目中的SUSP記錄以驗證是否存在RockRidge增強功能。在以多會話模式新增資料時,讀取舊會話時會出現此問題。在新增資料時,不以多會話模式正確讀取已重新定位的目錄。如果新會話不包括深度目錄,則任何重新定位的深度目錄都會丟失。在從TRANS.TBL執行多會話時不重複使用RR_MOVE。不要在多會話模式中為RR_MOVE建立全名條目。

 

15 、HFS PROBLEMS/LIMITATION

雖然HFS檔名似乎支援大寫字母和小寫字母,但檔案系統不區分大小寫,即檔名ABC和ABC是相同的。如果在具有相同HFS名稱的目錄中找到一個檔案,genisoImage將嘗試通過在其中一個檔名中新增“_”字元來建立唯一的名稱。

共享前31個字元的HFS檔案/目錄名稱有‘_N’(十進位制數字)替代最後幾個字元以生成唯一的名稱。在“嫁接”Apple/Unix檔案或目錄(所涉及的方法和語法見上文)時,必須小心。不能為Apple/Unix編碼的檔案/目錄使用新名稱。例如,如果要將名為oldname的Apple/Unix編碼檔案新增到CD中,則不能使用一下命令列:

“genisoimage -o output.raw -hfs -graft-points newname=oldname cd_dir”

genisoImage 將無法解碼舊名。但是,只要您不嘗試像上面那樣給它們命名,就可以移植Apple/unix編碼的檔案或目錄。

當使用多會話選項-M和-C建立HFS卷時,僅上一次會話中的檔案將位於HFS卷中。也就是說,genisoImage不能將以前會話中的現有檔案新增到hfs卷中。但是,如果每個會話都是使用“-part”建立的,則在Mac上掛載時,每個會話將顯示為單獨的卷。在這種情況下,值得使用“-v”或-”hfs-volid“為每個會話提供一個唯一的卷名,否則每個“卷”都會以相同的名稱出現在桌面上。符號連結(與所有其他非常規檔案一樣)不會新增到hfs目錄中。

混合卷可能大於包含相同資料的純ISO 9660卷。在某些情況下(例如DVD大小的卷),差異可能很大。隨著HFS卷的增大,分配塊的大小(檔案所能佔用的最小空間)也會變大。對於650 MB的CD,分配塊是10 kb,對於4.7GB的DVD,大約是70 kB。hfs卷中的最大檔案數約為65500,但實際限制將略小於此。

生成的混合卷可以使用hfsutils例程在Unix機器上訪問。但是,當卷被設定為鎖定時,不能對其進行任何更改。這個選項“-hfs-unlock“將建立一個未鎖定的輸出映像-但是不應該對卷的內容進行任何更改(除非您真正知道自己在做什麼),因為它不是“真實的”hfs卷。

“-mac-name“目前不能和“-T”一起使用,-Unix名稱將在TRANS.TBL檔案中使用,而不是Macintosh名稱。

雖然genisoImage不改變檔案的內容,但如果二進位制檔案的型別設定為”TEXT“,則可能在Macintosh上不正確地讀取它。因此,預設型別的更好選擇可能是”????“。

“-mac-boot-file “選項可能完全不能工作。可能無法使用PC Exchangev2.2或更高版本的檔案(MacOS8.1可用)。當使用Linux時,包含PC Exchange檔案的DoS媒體應該以MSDOS(而不是vFAT)型別掛載。SFM格式僅部分支援。geniso映像應該能夠建立超過4GB的hfs混合映像,儘管這還沒有經過充分的測試。

 

16 、例項

建立iso檔案

[root@localhost weijie]#  mkisofs -v -o my.iso /weijie/

I: -input-charset not specified, using utf-8 (detected in locale settings)

genisoimage 1.1.9 (Linux)

Scanning /weijie/

Scanning /weijie/wjtpflR

Writing:   Initial Padblock                        Start Block 0

Done with: Initial Padblock                       Block(s)    16

Writing:   Primary Volume Descriptor               Start Block 16

Done with: Primary Volume Descriptor              Block(s)    1

Writing:   End Volume Descriptor                   Start Block 17

Done with: End Volume Descriptor                  Block(s)    1

Writing:   Version block                           Start Block 18

Done with: Version block                          Block(s)    1

Writing:   Path table                              Start Block 19

Done with: Path table                             Block(s)    4

Writing:   Directory tree                          Start Block 23

Done with: Directory tree                         Block(s)    2

Writing:   Directory tree cleanup                  Start Block 25

Done with: Directory tree cleanup                 Block(s)    0

Writing:   The File(s)                             Start Block 25

Total translation table size: 0

Total rockridge attributes bytes: 0

Total directory bytes: 2048

Path table size(bytes): 26

Done with: The File(s)                            Block(s)    0

Writing:   Ending Padblock                         Start Block 25

Done with: Ending Padblock                         Block(s)    150

Max brk space used 0

175 extents written (0 MB)

You have new mail in /var/spool/mail/root

[root@localhost weijie]# ls

1.c  my.iso  wj123.kpET  wj123.oH2o4P  wj234.q1C  wjtpflR

[root@localhost weijie]# 

     


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29270124/viewspace-2218137/,如需轉載,請註明出處,否則將追究法律責任。

相關文章