基本的にLinuxのディストリはDebian信者なんですが、Debian派生ってことでUbuntuにも興味は持っておりまして。
で、この際だから入れてみた。
インストーラはDebianみたいにExpert Installとかないみたいで、なんか勝手にもりもりパッケージ入れられたけどまあデスクトップ用途ならありだろう。
んで、パーティションを切るときに気づいたんだけども、Ubuntu 9.10だとデフォルトのファイルシステムにext4が使用される。
ext3とext4の違いとか知らないわけだけども、まあデフォルトになってるんだから使ってやるか、ということでext4でパーティション切って入れてみた。
インストールを終えたものの、Windowsのほうの環境がまだgdgdなもんでとりあえずWindowsの環境整備をしているんだけども、そこでext4ってWindowsからアクセスできるの?っていう疑問がふとわいてきた。
そこで調べてみた。
結論から言うと、条件付きで可能。
ext2/3/4は後方互換(backward compatible)性がある。
これはどういうことかというと、ext3はext2を純粋拡張したものであり、ext4はext3を純粋拡張したものであって、ext2で持っている基本構造自体には変化がないということだ。
だから、ext2のデータはそのままext4で扱える。
ext2ファイルシステムをext4ファイルシステムにするのは簡単なのだ。
しかし、その逆となると簡単ではない。
というのは、ext3/4ファイルシステムのデータは、それらのファイルシステムで拡張されたext2では定義されていない固有の情報をすべて切り落とさなければ、ext2ファイルシステムにおいては異常なデータとなってしまうからだ。
んで、今現在Windowsからextうんたらにアクセスできるようにするソフトっていうかドライバっていうかってのはあんまりない。と思う。
ぱっと探して見つけたのは以下。
とりあえず最後のやつ以外は試したけどだめだった。
最後のやつを試さなかったのは、inodeが128byteを超えるものはサポートしないって明示してあったから。
Ubuntu 9.10では256byteがデフォルトっていうね。
ところで、ファイルシステムを作成するときにはこっそりフィーチャー(feature)と呼ばれるオプションがついている。
そのデフォルト値が/etc/mke2fs.confに書かれていたりするんだけど、それのext4がUbuntuだとこんなかんじ。
ext4 = {
features = has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
inode_size = 256
}
んで、このなかのextentsオプションが付与されてファイルシステムが作成されていると、上記のext3まで読めるやつでも読めなくなっちゃうようだ。
とりあえず、ext2fsdではextentsオプションをはずせば読める。
一応書けもする。
常用したら絶対何かが起きると思うけど。
ほかのソフトは知らない。
ちなみに、extentsってどういうオプションかっていうと、まあ詳しくはここを見てもらうと。
簡単に言えば、ファイルの中身(データ)ってでっかいファイルだとばらけるわけで、そういう時ext3までは、直接参照だけじゃ間に合わないんで間接参照することにして、間接参照の先で直接参照してってな具合になってたのを、「次のnブロックにデータがあるよ」っちゅー風な言い方をするように変えるんだぜ、っていうオプション。
なんか簡単にいえてない気がするけど気のせいかも。
重要なのは、extentsオプションつけてファイルシステム作ると、今までのLinuxのファイルシステムにおけるファイルの実データへの参照方法とは根本的に違う参照方法になっちゃうってこと。
そりゃext3まで対応してるソフトっていうかドライバっていうかでも読めない。
なので、解決方法は以下のどれか。
- extentsオプションをはずしてファイルシステムを作成する
- extentsオプションを後から消す(たぶんうまくいかない気がする)
- ext4使わないでext3使う
- VM使ってファイル共有
- extents対応のソフトを作るか作ってもらう
- 見えなくていいと開き直る
1は
# mke2fs -t ext4 -O ‘^extents’ /dev/sda1
とかってかんじか/etc/mke2fs.confあらかじめ書き換えるか。
2は
# tune2fs -O ‘^extents’ /dev/sda1
# e2fsck -fpDC0 /dev/sda1
みたいな。
うまくいくのかわかんないけど。
ってかたぶん無理なんだろうな。
ちなみにUbuntuだとどうもインストールプロセスでは1はできないっぽかった。
Debianのインストーラならエキスパートモードで普通にシェル立ち上げて自分でファイルシステム作ればいいんだけど、良くも悪くもUbuntuはWindowsユーザ層みたいなのをターゲットにしてるのか、インストールプロセスが簡易な反面細かいカスタマイズができないっぽかった。
あんまりいじってないから実はできるんだけど気づいてないだけかもしれないけど。