SmallStyle


2004-11-16

_ Linuxでファイルからisoイメージを作成する

仕事で数百MBもあるファイルをCD-Rに焼く必要がありました.元のファイルとなるのはgzip圧縮されなおかつcpioでアーカイブされています.まぁ,もともとLinux用に固められたファイルなので当たり前なのですが….で,通常,Windows上ではこのファイルを普通に扱うことが困難なので,Linux上にファイルを展開します.これらのファイルをCD-Rに焼く必要があるのですが,LinuxでCD-Rを焼ける環境がありません.なんとかして展開したファイルをWindows上に戻して焼く必要がありました.そんなわけで,Linux上のファイルをisoイメージにして,それをWindows上に落とせば,楽ではないかと考えました.

ここでcpioをという聞きなれないものがでてきたので調べてみたのですが,どうもtarコマンドでのアーカイブはサイズに上限があったみたいです.tarコマンドはTape Archival and Retrieval formatの略で,複数のファイルをまとめたアーカイブにするコマンドです.つまりテープの上限を超えるようなアーカイブが作成できないということです.そこでcpioコマンドを利用することになります.cpioはより大きなファイルシステムなどをアーカイブにして保存することが可能です.

さて,実際にこれらのファイルを展開してISOイメージにするまでの流れです.FTPでWindows上にあるhoge.cpio.gzをアップロードして,解凍・展開します.

$ gunzip hoge.cpio.gz
$ cpio -idmv < hoge.cpio

展開されたディレクトリをまるごとisoイメージにするにはmkisofsコマンドを使用します.今回はRHEL環境で実施しました.まず,

$ rpm -q mkisofs
mkisofs-2.01.0.a32-0.EL3.1

などと表示されることを確認します.なければインストールします.mkisofsコマンドは対象のディレクトリ以下のisoイメージを作成します.hogeディレクトリ以下全てをhoge.isoというイメージファイルを作成するには,

$ mkisofs -r -J -o hoge.iso hoge
…
Total translation table size: 0
Total rockridge attributes bytes: 446327
Totak directory bytes: 2113536
Path table size(bytes): 13494
Max brk space used 3dc000
205581 extents written (401MB)

-rはRockRidgeでLinuxでロングファイル名をサポートできて,uid,gidがrootになる.-JはJolietで,Windowsのロングファイル名をサポートできる.両方つけておけばLinux/Windowsの両方でCD-Rを利用することが可能になる.作成したISOイメージの確認は,

$ su -
Passward:
# mount -o loop hoge.iso /mnt/cdrom
# ls -l /mnt/cdrom

これでうまく表示されていれば作成は問題ありません.あとはISOイメージをWindowsに落として焼くだけです.LinuxでCD-Rを焼ける環境にあれば,そのままこのISOイメージを焼いてしまえばはやいですけどね.

ちなみにここのサーバはDebianなのですが,今回はRed Hatでやってみました.Debianでもaptを使ってmkisofsを導入して同様のことができそうです.


about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|