目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

Linuxでisoファイルを作る。

忘れがちな脳のための覚え書き

isoイメージを作成するにはmkisofsを使用します。今回isoで固めるディレクトリはこんな感じ、1つだけファイル名が長くなっています。

masasuzu@lenny% ls hogehoge                                                                 [~/tmp]
bar  foo  fuga  hoge  hogehogehogehogehogehogehogehogehogehoge.txt

普通に作成する。

とりあえず、何も考えず、isoに固めます。charsetは指定しないとwarnigが出るのでつけときました。

masasuzu@lenny% mkisofs -input-charset=utf8 -o hogehoge.iso hogehoge                        [~/tmp]
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
174 extents written (0 MB)
masasuzu@lenny% ls hogehoge.iso                                                             [~/tmp]
hogehoge.iso

しかし、作成されたisoイメージをマウントしてみると長いファイル名が縮められてしまいます。
これはISO9660の規格ではファイル名8文字+拡張子3文字に丸められてしまうためです。そこで長いファイル名に対応したISO9660の拡張規格がRockRidgeのようです。

masasuzu@lenny% sudo mount -o loop hogehoge.iso mnt/image                                   [~/tmp]
masasuzu@lenny% ls mnt/image                                                                [~/tmp]
bar  foo  fuga  hoge  hogehoge.txt

RockRidgeで作ってみる

今回はファイル名が維持されたままisoイメージが作成できました。

masasuzu@lenny% mkisofs -input-charset=utf8 -R -o hogehoge.iso hogehoge                     [~/tmp]
Total translation table size: 0
Total rockridge attributes bytes: 587
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
175 extents written (0 MB)
masasuzu@lenny% sudo mount -o loop hogehoge.iso mnt/image                                   [~/tmp]
masasuzu@lenny% ls mnt/image                                                                [~/tmp]
bar  foo  fuga  hoge  hogehogehogehogehogehogehogehogehogehoge.txt

RockRidgeが使えないシステムのために-Tオプションを付けて、TRANS.TBLを作成してあげるとファイル名を維持できるようです。

masasuzu@lenny% mkisofs -input-charset=utf8 -R -T -o hogehoge.iso hogehoge                  [~/tmp]
Total translation table size: 1118
Total rockridge attributes bytes: 668
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
176 extents written (0 MB)
masasuzu@lenny% sudo mount -o loop hogehoge.iso mnt/image                                   [~/tmp]
masasuzu@lenny% ls mnt/image                                                                [~/tmp]
TRANS.TBL  bar  foo  fuga  hoge  hogehogehogehogehogehogehogehogehogehoge.txt

Windowsでも使えるisoイメージを作る

WindowsではISO9660の規格を拡張したJolietフォーマットを使用します。Jolietフォーマットで作成するには-Jオプションを付けます。-Rオプションとの併用がどうやらできるようです。

masasuzu@lenny% mkisofs -input-charset=utf8 -R -T -J -o hogehoge.iso hogehoge               [~/tmp]
Total translation table size: 1118
Total rockridge attributes bytes: 668
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
182 extents written (0 MB)
masasuzu@lenny% sudo mount -o loop hogehoge.iso mnt/image                                   [~/tmp]
masasuzu@lenny% ls mnt/image                                                                [~/tmp]
TRANS.TBL  bar  foo  fuga  hoge  hogehogehogehogehogehogehogehogehogehoge.txt