この記事は、NetBSD Advent Calendar 2019の19日目の記事です。
はじめに
CHFSを使ってみたいと思っていましたが、 サポートするハードウェアが分からないし、おそらく手元に存在しないので試せないと考えていました。 CHFS (CHFS flash file system)は、フラッシュメモリー用のファイルシステムです。
しかし、NANDフラッシュメモリーデバイスについては、nandemulator(4)
というエミュレートする仮想的なデバイスが用意されていて、
RAMから割り当てて揮発性のNANDフラッシュメモリーデバイスを作成することが可能でした。
これにより、NetBSD/amd64でもCHFSを試してみることができそうです。
nandemulator(4)
のソースコードであるsys/dev/nand/nandemulator.c
を読むと、エミュレートされるNANDフラッシュメモリーの
サイズは32MBでハードコードされてしまっていますが、CHFSを試してみるという視点では、32MBでも良さそうです。
CHFSを使う準備
カーネル設定ファイルに以下のように追記して、カーネルを作り直しても良さそうですが、最も簡単なのはロード可能なカーネルモジュールを使う方法のように思います。
- file-system CHFS
- pseudo-device nandemulator
以下のようにして、カーネルモジュールを読み込みます。
これらを実行すると、カーネルブートメッセージに以下のように出力されます。
- # modload nandemulator
- # modload chfs
仮想的なNANDフラッシュメモリーデバイスは、
- nandemulator0: NAND emulator
- nand0 at nandemulator0: ONFI NAND Flash
- nand0: vendor: NETBSD, model: NANDEMULATOR
- nand0: manufacturer id: 0x00 (Unknown), device id: 0x00
- nand0: page size: 2048 bytes, spare size: 64 bytes, block size: 131072 bytes
- nand0: LUN size: 256 blocks, LUNs: 1, total storage size: 32 MB
- nand0: column cycles: 2, row cycles: 3, width: x16
- nand0: scanning for bad blocks
- flash0 at nand0: partition, size 32 MB, offset 0
- flash0: erase size 128 KB, page size 2048 bytes, write size 2048 bytes
/dev/flash0
に割り当てられたようです。
CHFSを使ってみる
mount_chfs(8)
のマニュアルページによると、CHFSなフラッシュメモリーデバイスは、
初回マウント時に自動的にnewfs(8)
相当のことが実施されるようです。
The file system will be created during the first mount.ですので、
newfs_chfs
コマンドはありません。
以下のようにして、/mnt
にマウントしてみます。
状況を確認してみます。
- # mount_chfs /dev/flash0 /mnt
どうやら普通に使えそうです。
- $ mount
- /dev/flash0 on /mnt type chfs (local)
- $ df -h
- /dev/flash0 31M 0B 30M 0% /mnt
CHFSは、LinuxやeCosで利用できるJFFS2を意識して作られたようなので、機会があったら比較してみたいと思います。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。