您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux下mkisofs命令的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux下mkisofs命令的用法”吧!
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-size # | 選擇流操作并將媒體大小設置為#扇區。這允許您將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文件
|
感謝各位的閱讀,以上就是“Linux下mkisofs命令的用法”的內容了,經過本文的學習后,相信大家對Linux下mkisofs命令的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。