[Armadillo:06150] Re: ログをリブート後にも継続して使用する方法
Takenoshita Koyo
email@hidden
2010年 11月 12日 (金) 14:57:23 JST
竹之下です。
> 1)ログデータをリブート後にも、継続して使用する為には、
> RAMディスク上にある、ファイルを、不揮発性の記憶媒体に
> 保存しておく必要が有りますが armadillo では、一般的には、
> どうされているのでしょうか?
> 3)MicroSDカードのファイルに、保存するという方法が考えられますが、
> ログデータを、保存する媒体として、armadillo で、一般的に利用されている
> 方法でしょうか?
まずは、1と3について。
ご指摘の通り、Armadillo-440でデータを永続的に保存する方法には、コンフィグ領域
を使う方法とmicroSDやUSBメモリなどの外部ストレージを使用する方法があります。
前者は、あまり変更が無くサイズの小さいファイル(設定ファイルなど)に適しています。
今回は、ログファイル(頻繁に変更されサイズも大きくなりがち)ですので、後者を
使うことになると思います。その際、ストレージのファイルシステムをジャーナル付き
のもの(具体的にはEXT3ファイルシステム)にすると、突然の電源遮断時にデータが消失
するのを最小限に抑えることができます。
「Armadillo実践開発ガイド 第2部」にも記述がありますので、ご参照ください。
8.5. 外部ストレージのデータを守る
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-1.0.0/ch08.html#sec_protect_removable_strage
また、ログの保存が大事なシステムであれば、ログをリモートに転送するという方法もあります。
これも、「Armadillo実践開発ガイド 第2部」に記述があります。
8.4. ログ管理
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-1.0.0/ch08.html#sec_log_management
> 2)fromの、コンフィグ領域のサイズは、ユーザランドイメージ等の余裕があ
> る場合、
> 変更して、大きくする事は可能でしょうか
> 可能であれば方法を教えてください。
可能です。
Armadillo開発者サイトにHowtoがあります。Armadillo-400シリーズが発売される
以前に書いたものなので、Armadillo-400シリーズに関する記述がありませんが、
基本はArmadillo-500シリーズと同じです。
http://armadillo.atmark-techno.com/howto/change-flash-partitions
方法としては、二つあります。
A. カーネルコマンドラインでmtdpartsオプションを指定する方法
B. Linuxカーネルのmtdドライバのソースコードを修正する方法
A. カーネルコマンドラインでmtdpartsオプションを指定する方法
カーネルコマンドラインのmtdpartsオプションを指定することで、各領域のサイズを
変更できます。カーネルコマンドラインは、ブートローダー(hermit-at)の保守モード
で設定できます。この方法は、一時的にパーティションを変更して試してみるのに適して
います。
カーネルコマンドラインを指定するには、Armadilloを保守モードで起動して、hermitの
コマンドプロンプトから以下のように入力します。コンフィグ領域を増やしたい場合は、
ユーザーランドのサイズを小さくしてください。残りがコンフィグ領域のサイズになります。
hermit> setenv console=ttymxc1 mtdparts=armadillo-nor:0x20000(bootloader)ro,0x200000(kernel),0x1da0000(userland),-(config)
上記は、ユーザーランドのサイズを標準の0x1dc0000(29.75MB)から0x1da0000(29.625MB)に
変更しています。各領域のサイズは128KB[*1]の整数倍となるよう調整してください。
mtdpartsオプションを指定して起動すると、カーネルの起動ログに以下のように表示
されますので、サイズが変更されているか確認してください。
4 cmdlinepart partitions found on MTD device armadillo-nor
armadillo-nor: use cmdline partitions(4)
Creating 4 MTD partitions on "armadillo-nor":
0x00000000-0x00020000 : "bootloader"
0x00020000-0x00220000 : "kernel"
0x00220000-0x01fc0000 : "userland"
0x01fc0000-0x02000000 : "config"
[*1]: フラッシュメモリのイレースサイズ
B. Linuxカーネルのmtdドライバのソースコードを修正する方法
標準のパーティションを変更する方法です。最終的な製品として出荷する場合には
この方法で修正するのが良いと思います。
Armadillo-400シリーズの標準のパーティションは、Linuxカーネルの以下のファイル
に記述してあります。
linux-2.6.26-at/arch/arm/mach-mx25/armadillo400.c
Armadillo-420は、フラッシュメモリのサイズが16MBなので、以下の構造体を
変更してください。
static struct mtd_partition armadillo400_mtd_nor_partitions_16MB[] = {
MTD_PART("nor.bootloader", 4* 32*1024, 0,
MTD_WRITEABLE /* force read-only */ ),
MTD_PART("nor.kernel", 16*128*1024, MTDPART_OFS_APPEND, 0),
MTD_PART("nor.userland", 110*128*1024, MTDPART_OFS_APPEND, 0),
MTD_PART("nor.config", 1*128*1024, MTDPART_OFS_APPEND, 0),
};
Armadillo-440は、フラッシュメモリのサイズが32MBなので、以下の構造体を
変更してください。
static struct mtd_partition armadillo400_mtd_nor_partitions_32MB[] = {
MTD_PART("nor.bootloader", 4* 32*1024, 0,
MTD_WRITEABLE /* force read-only */ ),
MTD_PART("nor.kernel", 16*128*1024, MTDPART_OFS_APPEND, 0),
MTD_PART("nor.userland", 238*128*1024, MTDPART_OFS_APPEND, 0),
MTD_PART("nor.config", 1*128*1024, MTDPART_OFS_APPEND, 0),
};
s.maruyama さんは書きました:
> 丸山です。
>
> armadillo-440で開発しております。
>
> システムクラッシュや、リブート時のデータの継続性について、
>
> 1)ログデータをリブート後にも、継続して使用する為には、
> RAMディスク上にある、ファイルを、不揮発性の記憶媒体に
> 保存しておく必要が有りますが armadillo では、一般的には、
> どうされているのでしょうか?
>
> HTMLからアップロードされた、ファイル等のデータファイルを、
> 保存しておく場合も、 同様の問題が考えられます。
>
> fromの、コンフィグ領域に、データ量が少ない場合には、保存する事も可能か
> も、
> 知れませんが、一般的に、ログデータ 等は量が多すぎると思われます。
>
> 2)fromの、コンフィグ領域のサイズは、ユーザランドイメージ等の余裕があ
> る場合、
> 変更して、大きくする事は可能でしょうか
> 可能であれば方法を教えてください。
>
> 3)MicroSDカードのファイルに、保存するという方法が考えられますが、
> ログデータを、保存する媒体として、armadillo で、一般的に利用されている
> 方法でしょうか?
>
> 以上、よろしくお願いいたします。
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
--
Koyo Takenoshita
armadillo メーリングリストの案内