玩式草子─ソフトウェアとたわむれる日々

第91回 xorrisoとUEFIブート再び[その1]

この記事を読むのに必要な時間:およそ 6 分

さて,翌月になり,5月分の録音ファイルが溜ってきました。

$ ls ~/NHK
2016-04-04-06-45_ラジオ英会話_2016_04_001.m4a
2016-04-05-06-45_ラジオ英会話_2016_04_002.m4a
...
2016-05-30-06-45_ラジオ英会話_2016_05_016.m4a
2016-05-31-06-45_ラジオ英会話_2016_05_017.m4a

先に書き込んだDVDにはまだまだ余裕があるので5月分のファイルを追加してみます。xorrisoでは-update_rオプションを指定すると,DVDに書き込まれたファイルとHDD上のファイルをチェックして,書き込まれていないファイルのみを追記することができます。

$ xorriso -dev /dev/sr0 -update_r NHK ラジオ英会話
...
Updating '/home/kojima/NHK' to '/ラジオ英会話'
xorriso : UPDATE : Adjusted attributes of '/ラジオ英会話'
xorriso : UPDATE : 5373952 content bytes read in 5 seconds , 0.8xD
xorriso : UPDATE :  22867k content bytes read in 10 seconds , 2.6xD
...
xorriso : UPDATE : Added/overwrote '/ラジオ英会話/2016-05-09-06-45_ラジオ英会話_2016_05_001.m4a'
xorriso : UPDATE : Added/overwrote '/ラジオ英会話/2016-05-10-06-45_ラジオ英会話_2016_05_002.m4a'
Differences detected and updated. (runtime 22.1 s)
xorriso : UPDATE : Writing:         16s    0.0%   fifo 100%  buf 100%
xorriso : UPDATE : Writing:         16s    0.0%   fifo 100%  buf 100%    0.0xD
...
ISO image produced: 45570 sectors
Written to medium : 45728 sectors at LBA 93952
Writing to '/dev/sr0' completed successfully.

追記したDVDの中身を確認すると5月分の番組もちゃんと書き込まれています。

$ ls -l /cdrom/ラジオ英会話/
合計 202,962,432
-rw-r--r-- 1 kojima users 5,484,940  4月  4日 2016年 2016-04-04-06-45_ラジオ英会話_2016_04_001.m4a
-rw-r--r-- 1 kojima users 5,485,484  4月  5日 2016年 2016-04-05-06-45_ラジオ英会話_2016_04_002.m4a
...
-rw-r--r-- 1 kojima users 5,485,196  5月 27日 2016年 2016-05-27-06-45_ラジオ英会話_2016_05_015.m4a
-rw-r--r-- 1 kojima users 5,485,470  5月 30日 2016年 2016-05-30-06-45_ラジオ英会話_2016_05_016.m4a
-rw-r--r-- 1 kojima users 5,485,474  5月 31日 2016年 2016-05-31-06-45_ラジオ英会話_2016_05_017.m4a

2ヵ月分を書き込んでもDVDにはまだまだ余裕があるようなので,複数年分を整理できるようにディレクトリ名に年数を入れておきましょう。今回は最後に"-commit -eject all"を指定して,書き込み終了後,自動的にトレーをイジェクトさせました。

$ xorriso -dev /dev/sr0 -mv ラジオ英会話 2016_ラジオ英会話 -- -commit -eject all
...
Renamed in ISO image: '/ラジオ英会話' to '/2016_ラジオ英会話'
xorriso : UPDATE : Thank you for being patient. Working since 0 seconds.
xorriso : UPDATE : Writing:         16s    9.0%   fifo   0%  buf 100%    0.0xD 
...
Media current: DVD-R sequential recording
Media status : is written , is appendable
Media summary: 3 sessions, 111184 data blocks,  217m data, 4191m free
Volume id    : 'ISOIMAGE'

再度DVDの中身を確認するとディレクトリ名がちゃんと変っています。

$ mount /cdrom
$ ls -R /cdrom/
/cdrom/:
2016_ラジオ英会話/

/cdrom/2016_ラジオ英会話:
2016-04-04-06-45_ラジオ英会話_2016_04_001.m4a  2016-04-28-06-45_ラジオ英会話_2016_04_019.m4a
2016-04-05-06-45_ラジオ英会話_2016_04_002.m4a  2016-04-29-06-45_ラジオ英会話_2016_04_020.m4a
....
2016-04-27-06-45_ラジオ英会話_2016_04_018.m4a  2016-05-31-06-45_ラジオ英会話_2016_05_017.m4a

今回利用しているのは再書き込み可能なDVD-RWではなく,一度書き込むと消去できないはずのDVD-Rメディアです。

それではなぜDVD-Rが自由に書き替えられるのか,というと,xorrisoはDVDのマルチセッション機能を利用して,過去のセッションの内容を上書きして書き替えたように見せているのです。

今まで書き込んできたDVDを-tocオプションで調べると,3つのセッションが登録されたマルチセッションDVDになっています。最初のセッションが4月分のファイルを書き込んだ状態,2番目のセッションが5月分のファイルを追記した状態,最後のセッションがディレクトリ名を変更した状態です。

$ xorriso -dev /dev/sr0 -toc
...
Media status : is written , is appendable
Media blocks : 146032 readable , 2145696 writable , 2297888 overall
TOC layout   : Idx ,  sbsector ,       Size , Volume Id
ISO session  :   1 ,         0 ,     53612s , ISOIMAGE
ISO session  :   2 ,     93952 ,     45570s , ISOIMAGE
ISO session  :   3 ,    145840 ,        27s , ISOIMAGE
Media summary: 3 sessions, 111184 data blocks,  217m data, 4191m free
Media nwa    : 152192s

マルチセッションDVDをマウントするとデフォルトでは最後のセッションがマウントされ,書き替えていった最新の内容が表示されることになります。

一方,マウント時のオプション指定で過去のセッションをマウントすることも可能で,たとえばsbsector=0を指定すると最初のセッションがマウントされ,4月分の番組のみを書き込んだ状態に戻ったかのように見えます。

$ sudo mount /cdrom -o ro,sbsector=0
$ ls -R /cdrom
/cdrom:
ラジオ英会話/

/cdrom/ラジオ英会話:
2016-04-04-06-45_ラジオ英会話_2016_04_001.m4a  2016-04-19-06-45_ラジオ英会話_2016_04_012.m4a
2016-04-05-06-45_ラジオ英会話_2016_04_002.m4a  2016-04-20-06-45_ラジオ英会話_2016_04_013.m4a
...
2016-04-15-06-45_ラジオ英会話_2016_04_010.m4a  2016-04-29-06-45_ラジオ英会話_2016_04_020.m4a
2016-04-18-06-45_ラジオ英会話_2016_04_011.m4a
$

xorrisoには他にもさまざまな機能があるものの,だいぶ長くなってきたので,より詳しい使い方は次回に紹介することにしましょう。


DVDのマルチセッション機能はmkisofs/cdrecordでも利用できたものの,オプション指定やセッションごとのISOファイルを用意するのが面倒で使ったことがなく,長い間,CDやDVDは「一度に全領域を書き込む」ためのメディアとしてしか使っていませんでした。

それに対しxorrisoは,今回紹介したようにDVDのマルチセッション機能を柔軟かつ簡単に扱え,DVDを「ログ構造化FS」風に利用できるので,目からウロコが落ちたような気分です。

xorrisoはこのように強力なツールなものの,指定可能なオプションが多すぎてわかりづらく,それらを解説しているドキュメントも長大で読み解くのが大変なため,広く普及しているとは言いづらいようです。今回の紹介記事が少しでもxorriso普及の手助けになればいいな,と思っています。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html