KNOPPIXで2つ以上のcloopをマウントすることはできないものだろうか。
私は、時々、通常のcloopファイルのほかに、もうひとつcloopファイルをマウントできると便利なのになと思うことがあります。例えば、RAMディスクや継続的ホームディレクトリにいろんなファイルをインストールした後で、それらをcloopに固めておいて、必要に応じて、ボートオプションで選択してマウントできるようにしておくのです。例えば、あるときは、標準のcloopだけ、あるときは、Javaとeclipseをインストールしたcloopを追加、あるときは、Oracleをインストールしたcloopを追加、といった具合に使うのです。それなら、継続的ホームディレクトリを複数用意しておいて切り替えればいいと言われそうですが、cloopだと圧縮されていて、しかも圧縮したままマウントできるのが魅力です。特に、50MB程度に収まる場合は、標準のKNOPPIX CDからisolinuxとcloopだけをいただいてきて、それに追加のcloopをいれて、簡単にオリジナルCDの出来上がりとなります。(注)実際、現在のKNOPPIXには/dev/cloopの他に/dev/cloop1,2,3があったり、UML KNOPPIXを起動すると、/dev/cloop4が作られたりで、2つ目のcloopをマウントすることは不可能ではなさそうに見えます。第一、別々のcloopを指定して3つのUML KNOPPIXを起動できるということは、カーネルは都合4つのcloopを管理しているということになります。/proc/mountsなどを表示しても、それらは見当たらないのですが、これらは、どういう仕掛けで動いているのでしょうね。しかし、問題になるのは、そのcloopのマウント方法。以下のようなコマンドでマウントする必要があるのです。insmod -f cloop.o file=/path/to/the/cloop/filemount /dev/cloop -t iso9660 -o ro /KNOPPIXこのうち、insmodが曲者です。cloop.oのinsmodは、1回しかできないので、普通にやったら、cloopは1つしかマウントできないのです。UMLだと、仮想マシンを立ち上げた後で、仮想のカーネルに対してinsmodするので、仮想マシンごとに1つのcloopをマウントできるのです。しかし、仮想のカーネルだって、本当のカーネルとの仲を取り持つだけで、実際の処理は本当のカーネルが行うはずです。ならば、仮想のカーネルは、どのようにして本当のカーネルに対して、2つ目以降のcloopの存在を通知しているのでしょう。insmodでは通知できないので、何か別の方法で通知しているはずです。私も、その方法をいろいろと調べてみたのですが、結局、分からずじまいでした。産総研さんなら、UML KNOPPIXの開発を通じて、この辺のノウハウをお持ちのことと思いますが、それを公開してもらえないものだでしょうかネェ。とはいっても、こっちは趣味でやっているだけだし、代替案もいろいろ有りそうだし、ちょっと、「折り入ってお願いがあります」「教えてください」などと頼み込むのは気が引けますよね。せめて、このページで、ささやかにお願いすることにします。このページをご覧の方で、この辺のノウハウをお持ちの方、いらっしゃいましたら、是非、それをお教えいただけるとありがたいです。よろしくお願いいたします。(注)「それなら圧縮isofsも同じですよ、圧縮率はcloopよりは劣るみたいだけど、どのLinuxでも使える・・・」などといわれると弱いですが。過去のKNOPPIX関連日記一覧はこちらKNOPPIX実験室