無料Wikiサービス | デモページ
検索

アクセス数
最近のコメント
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
はじめ - ノース
はじめ - ノース
はじめ - 楽打連動ユーザー
はじめ - 楽打連動ユーザー
Adsense
広告情報が設定されていません。

擬似ファイルシステムを作ってみる(2)


動作確認

ループバックをダミーのデバイスとしてマウントするためにダミーのマウントファイルの作成 
[root@localhost test]# dd if=/dev/zero of=disk bs=1K count=1
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 0.0156137 s, 65.6 kB/s

仮想ファイルシステムモジュールの組み込み
[root@localhost test]# insmod vfs_test.ko

組み込んだら一応確認
[root@localhost test]# lsmod
Module                  Size  Used by
vfs_test                8036  0   <- 組み込まれている。
ipv6                  229620  12
dm_multipath           17292  0
uinput                 10624  0
ppdev                  10372  0
uvcvideo               51592  0

ファイルシステムとして登録されているか確認
[root@localhost test]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   devpts
        ext3
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   mqueue
nodev   my_vfs <- 登録されている。

マウントして仮想vfsを見てみる。
[root@localhost test]# mount -t my_vfs -o /dev/loop0 ./disk /mnt/
[root@localhost test]# ls -l /mnt/
合計 0
-rw-rw-rw- 1 root root 10 2010-01-08 08:36 a
-rw-rw-rw- 1 root root 10 2010-01-08 08:28 b
-rw-rw-rw- 1 root root 10 2010-01-08 08:28 c
-rw-rw-rw- 1 root root 10 2010-01-08 04:40 d
-rw-rw-rw- 1 root root 10 2010-01-08 04:15 e

各ファイルの中身を読んでみる。
[root@localhost test]# cat /mnt/a
1000
[root@localhost test]# cat /mnt/b
1001
[root@localhost test]# cat /mnt/c
1002
[root@localhost test]# cat /mnt/d
1003
[root@localhost test]# cat /mnt/e
1004

適当なファイルに書き込む。viで編集してもOK
[root@localhost test]# echo abcde > /mnt/d
[root@localhost test]# cat /mnt/d
abcde

アンマウントしてモジュールを削除して、my_vfsが無くなっていればOK
[root@localhost test]# umount /mnt/
[root@localhost test]# rmmod vfs_test
[root@localhost test]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   devpts
        ext3
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   mqueue
動いたことは動いたけど、dmesgがやたらでれくる。ネタ元ではfile_operationとかinode_operationでreturnのみのコールバックを定義してあったが・・・。そのせいか?

最終更新 2010/01/11 21:55:46 - north
(2010/01/09 23:51:56 作成)