この記事は、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これらを実行すると、カーネルブートメッセージに以下のように出力されます。
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仮想的なNANDフラッシュメモリーデバイスは、
/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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。