chfs(4)とnandemulator(4)

この記事は、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を使う準備

カーネル設定ファイルに以下のように追記して、カーネルを作り直しても良さそうですが、最も簡単なのはロード可能なカーネルモジュールを使う方法のように思います。
  1. file-system CHFS
  2. pseudo-device nandemulator

以下のようにして、カーネルモジュールを読み込みます。

  1. # modload nandemulator
  2. # modload chfs
これらを実行すると、カーネルブートメッセージに以下のように出力されます。
  1. nandemulator0: NAND emulator
  2. nand0 at nandemulator0: ONFI NAND Flash
  3. nand0: vendor: NETBSD, model: NANDEMULATOR
  4. nand0: manufacturer id: 0x00 (Unknown), device id: 0x00
  5. nand0: page size: 2048 bytes, spare size: 64 bytes, block size: 131072 bytes
  6. nand0: LUN size: 256 blocks, LUNs: 1, total storage size: 32 MB
  7. nand0: column cycles: 2, row cycles: 3, width: x16
  8. nand0: scanning for bad blocks
  9. flash0 at nand0: partition, size 32 MB, offset 0
  10. 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にマウントしてみます。

  1. # mount_chfs /dev/flash0 /mnt
状況を確認してみます。
  1. $ mount
  2. /dev/flash0 on /mnt type chfs (local)
  3.  
  4. $ df -h
  5. /dev/flash0 31M 0B 30M 0% /mnt
どうやら普通に使えそうです。

CHFSは、LinuxやeCosで利用できるJFFS2を意識して作られたようなので、機会があったら比較してみたいと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

NetBSDでspeech-to-textをしてみる

この記事は、 NetBSD Advent Calendar 2024 の15日目の記事です。 speech-to-textエンジンを選ぶ 音声からテキストに変換してくれるのが、speech-to-textエンジンです。 OpenAIのWhisper v3とい...