FedoraでXFSインストールする方法に向けたメモ

今まで、最小インストールした後に/usrをXFSに移行、というフェーズをとってきた。でもそれって違うと思う。

とりあえずFedora Coreのカーネルは2.4.22-ac1が当たったやつだ。acシリーズにはXFSが入っているのだが、.config# CONFIG_XFS_FS is not setにされてしまっている。これをセットしてコンパイルし、インストーラもそっちのカーネルを使うようにすればひとまずマウントはできるはずだ。

あとはインストーラだが、もともとanacondaはファイルシステム追加するのは楽だったように思うんだよなぁ。mkfs.xfsのファイルを追加したら勝手に検出してくれたりして。

fsset.pyを見ると、/proc/filesystemsに出てくるやつはmountableだと思うようなのと、supportedに数値が埋め込まれていた。また、/proc/cmdlineにreiserfsと書いておけば、ReiserFSはsupportedになる。モジュールとして入れたりmkfsを入れたりするだけじゃダメ。supportedを-1にしてfsset.pyの処理の前にモジュールを読み込んでおくようにするのがいいのかな。ただ、supported=1にすればmountableかどうかは判定してないので、モジュールであってマウントするときに必要に応じてロードされるようにすることもできそうだ。JFSも同じようにjfsと書けばいいみたい。XFSはそれでもダメのようだ。おのれ。

とりあえずsyslinuxで与えるカーネルの引数にreiserfsやjfsと書いて様子を見てみようかな。それでReiserFSやJFSでインストールできるようなら、supportedをいじればいいってことになるよね。コメントにthis is totally, 100% unsupported.などと脅し文句が書いてあるが知ったことではない。

supportedだけでうまくいけば、やることが

  • カーネル: .configを変更して再コンパイルしたものとカーネルパッケージを入れ換え
  • インストーラ: /proc/cmdlineを使ってXFSもsupportedを立てられるようにする
  • インストーラ: インストーラのカーネルイメージを作る(XFSモジュール入り)
  • インストーラ: ループバックでマウントするファイルシステム(stage2)にmkfs.xfsを入れ、fsset.pyも入れ換える。
  • DVD: イメージを作って焼く

くらいで済みそうな感じ。こんだけで済めばいいな。

modules.cgz類とかcramfsってanacondaのコマンドで勝手に作ってくれるのかな?

あ、あとできれば実験用のPCを1台欲しいところ。まあ、失敗しても少し悲しいだけだから、別にいいけど。

(追記) 2003-11-15 15:22

syslinuxのオプションにreiserfsとかjfsを与えると、ボリュームの選択肢にreiserfsとjfsが登場するのを確認した。これにすればreiserfsやjfsを/usrとか/にしてインストールできるのかもしれない。mountableじゃなくてsupportedだけでいいのかな。

しかしFedoraのブートオプション、memtest86とかいろいろオプションがあるねえ。今までのRed Hatにもあって私が気づかなかっただけかな。

(追記) 2003-11-15 22:59

とりあえずカーネルパッケージを作ってみているが、XFSコンパイルひっかかるじゃん。バッファ関係を自力でやってるからな。

とりあえずパッチを作ってみた。SPECファイルもこのように修正(ついでにmodversionsも無効にしてみた)。そんで今コンパイル中だが猛烈に時間がかかるっぽいねぇ。

(追記) 2003-11-16 08:55

朝早起きしたらもうコンパイルが終わっていた。全部で7回もカーネルコンパイルしてるねぇ。あとはインストーラ関連だな。上のほうに書いたリストに加えて、

  • パッケージ:XFSの管理ツール(xfsprogs:mkfs/fsck/その他)をパッケージに入れてcomps.xmlにも入れる。reiserfs-utilsやjfsutilsはbaseに入ってるのでそこに。comps.rpmはどうやって作るんだろう。

が必要だ。

(追記) 2003-11-16 09:07

とりあえず、できたカーネルパッケージをここに置いとく。さすがにでかいが。

(追記) 2003-11-16 10:40

このへん(fuga.jp)も参考にはなるね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です