2017/01/11Armadilloのデフォルト設定では、ルートファイルシステムはramfsを使用していますので、ファイル等へおこなった変更は、リブートすると全て消えてしまいます。[1]これは、組み込み機器としては、起動時の状態が変わらないという点で利点となるものですが、やはり、変更した内容をリブートしても保持しておいてほしいという状況もあるかと思います。そこで、ルートファイルシステムを、フラッシュメモリ用のファイルシステムであるjffs2[2]で作成し、読み書き可能なルートファイルシステムを構築する方法を紹介します。おおまかな手順は下記のようになります。NAND用jffs2に関するオプションを外したカーネルのイメージを作成する。fstabを編集し、ルートファイルシステムにmtdblock2を使用するように指定したユーザランドのイメージを作成する。2.で作成したイメージを、jffs2でフォーマットしたユーザランド領域に書き込む。Lineを変更し、ブートする。以下の環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。NAND用jffs2に関するオプションを外したカーネルのイメージを作成する。今回使用するlinux-kernelでは、NORフラッシュメモリ用とNANDフラッシュメモリ用のjffs2ファイルシステムを共存させることができません[3]。今回は、NORフラッシュメモリをルートファイルシステムに使用するので、NAND用のオプションを外します。flash」のチェックを外してください。fstabを編集し、ルートファイルシステムにmtdblock2を使用するように指定したユーザランドのイメージを作成する。次に、ユーザランドの設定をおこないます。設定しなければならないのは、/etc/fstabのルートファイルシステムに使用するデバイスノードに関する設定のみです。下記のように、ユーザランド領域(mtdblock2)をルートにし、そのファイルシステムにはjffs2を使用するように設定します。0また、/etc/init.d/rcの先頭に記述してあるfsckに関する処理も、現在のatmark-distに含まれているfsckではjffs2ファイルシステムに対応していないため、削除します。以上の設定をおこなったあと、通常どおりmakeし、カーネルとユーザランドのイメージを作成します。2.で作成したイメージを、jffs2でフォーマットしたユーザランド領域に書き込む。作成したユーザランドのイメージをArmadillo自身を使用して、フラッシュメモリに書き込みます。imageなどで起動します。次に、NORフラッシュメモリのユーザランド領域をjffs2でフォーマットします。/dev/mtd22.で作成したイメージをArmadilloにコピーします。172.16.23.1)からダウンロードしてきましたが、ftpで転送しても、USBメモリで持ってくるなどでも構いません。http://172.16.23.1/img/romfs.img次に、2.で作成したイメージとフラッシュメモリのユーザランド領域をマウントし、イメージの内容を全てフラッシュメモリにコピーします。/mnt/nor/アンマウントし、リブートします。Lineを変更し、ブートする。Lineを指定し、起動します。読み書き可能で、ジャーナリング機能を持つjffs2は大変便利なように思いますが、使用するにあたっては、いくつか注意点があります。jffs2は、マウント時に全てのノードをスキャンします。そのため、ファイル数が多くなるにつれ、マウントに必要な時間が長くなっていきます。ファイルを頻繁に変更した場合、折角のジャーナリング機能が災いして、読み込み時間が極端に長くなるといった現象も報告されています[4]。jffs2はウェアレベリング機能を持っているので多少は軽減されるとはいえ、フラッシュメモリを使用する以上、書き込み回数には上限があります。ログファイルなどの用途のために、毎秒syncするといった運用をしてしまうと、あっというまに上限に達してしまいます。関連ページ下記の関連ページもご参照ください。そのため、ユーザランド領域をjffs2にした場合、外部NANDフラッシュモジュールは使用できません。Inc.本サイトに記載の商品名または会社名は、各社・各団体の商標または登録商標です。TM、®マークは付記していない場合があります。