FUSEでUNIX V6ファイルシステムをマウント

Lions本合宿のネタに、ユーザ空間でファイルシステムを作ることが出来るMacFUSEを使って、UNIX V6ファイルシステムをマウントできないかと考えていた。@7shiさんや@superhogeさんとは別アプローチとして。

さっそくMacFUSEソースコードをダウンロードし、まずはhellofsかなと試す。でも、

$ make hello
$ mkdir /Volumes/hello
$ ./hello /Volumes/hello
$ ls /Volumes/hello
ls: /Volumes/hello: Input/output error

とか言われて動かないし。。。で、他のサンプルはないものかとディレクトリを眺めていると、AncientFSなるものを見つけてしまった。まさに自分がやろうと思っていたことだった。しかも、V6だけではなく、V1のDECtapeから2.11 BSDファイルシステムまでいろんなフォーマットに対応している。かなりマニアックだなぁ。

使い方は簡単。simhなどで使っているイメージファイルをv6rootとすると。おぉ、ちゃんと読めてる。

$ mkdir /Volumes/v6root
$ ancientfs --type v6 --dmg v6root /Volumes/v6root
$ ls -als /Volumes/v6root
total 241
 1 drwxrwxr-x   9 3     sys      256 Jul 19  1975 .
 0 drwxrwxrwt@  4 root  admin    170 Sep 23 07:18 ..
 3 drwxrwxr-x   2 3     sys     1104 Oct 11  1975 bin
 4 drwxrwxr-x   2 3     sys     1824 Oct 11  1975 dev
 1 drwxrwxr-x   2 3     sys      496 Oct 11  1975 etc
57 -rwxrwxrwx   1 root  sys    29074 Oct 11  1975 hpunix
 1 drwxrwxr-x   2 3     sys      464 May 14  1975 lib
 1 drwxrwxr-x   2 3     sys       32 May 14  1975 mnt
57 -rwxrwxrwx   1 root  sys    28836 Oct 11  1975 rkunix
57 -rwxrwxrwx   1 root  sys    29020 Oct 11  1975 rpunix
 1 drwxrwxrwx   2 3     sys      368 Oct 11  1975 tmp
57 -rw-rw-rw-   1 root  sys    28836 Oct 11  1975 unix
 1 drwxrwxr-x  17 3     sys      272 Oct 11  1975 usr

このファイルシステムはread onlyなので、書き込みに対応するという方向性はあるかな。