TOP技術ガイドOpenBlocks 600D > 概要

概要

概要

  • 弊社OpenBlocks 600の新ラインナップです (紹介ページ)
  • ハードウェア仕様はそのままに、OSとしてDebian GNU/Linux 5.0を標準採用
  • ハードウェアの特徴を活かすため、RAMディスク環境で動作させることが可能
  • より大きなストレージ領域が必要な場合は、CFを記憶領域として利用可能
  • 標準のDebianに対して、起動スクリプトの追加・変更等いくつかの変更を実施
  • カーネルは2.6.29をベースに、ハードウェア対応のパッチを適用したものを利用
    (独自カーネルですが、aptitude / apt-get で更新可能)

仕組み(RAMディスクモード)

  • / を 128MB の RAMディスク(initrd)として確保
  • /.rw を 384MB の RAMディスク(tmpfs)として確保
  • /.rwの下には、/usr や /etc 等のディレクトリを作る
  • /.rw/usr を /usr 上に 被せる (unionfsを利用) ※ 他も同様
  • /.rw 以下に集約された全ての変更差分を、FlashROM内ユーザーエリアに保存する
  • 起動の度に、FlashROMからRAMディスクに書き戻すことで、保存時の環境を復元します

注意

  • 追加アプリケーションなどを保存することができるのは、圧縮(対象は/.rw以下すべて)した状態で、64MBytes (未圧縮だと、この2〜4倍程度のサイズまで) 程度です
  • 追加や変更のたびに、FlashROMへの保存操作(128KBytes/Sec)程度が必要になります
  • データベースなど、データが増加し続ける用途には向きません

実際の df および mount の実行結果は次の通り

lenny:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/ram0 126M 89M 32M 75% /
tmpfs 64M 0 64M 0% /lib/init/rw
varrun 64M 24K 64M 1% /var/run
varlock 64M 0 64M 0% /var/lock
udev 10M 2.6M 7.5M 26% /dev
tmpfs 64M 0 64M 0% /dev/shm
tmpfs 384M 156K 384M 1% /.rw
unionfs 384M 156K 384M 1% /etc
unionfs 384M 156K 384M 1% /bin
unionfs 384M 156K 384M 1% /home
unionfs 384M 156K 384M 1% /lib
unionfs 384M 156K 384M 1% /sbin
unionfs 384M 156K 384M 1% /usr
unionfs 384M 156K 384M 1% /var
unionfs 384M 156K 384M 1% /root

lenny:~# mount
/dev/ram0 on / type ext2 (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755,size=64m)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755,size=64m)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777,size=64m)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=64m)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
tmpfs on /.rw type tmpfs (rw,size=393216k)
unionfs on /etc type unionfs (rw,dirs=/.rw/etc=rw:/etc=ro)
unionfs on /bin type unionfs (rw,dirs=/.rw/bin=rw:/bin=ro)
unionfs on /home type unionfs (rw,dirs=/.rw/home=rw:/home=ro)
unionfs on /lib type unionfs (rw,dirs=/.rw/lib=rw:/lib=ro)
unionfs on /sbin type unionfs (rw,dirs=/.rw/sbin=rw:/sbin=ro)
unionfs on /usr type unionfs (rw,dirs=/.rw/usr=rw:/usr=ro)
unionfs on /var type unionfs (rw,dirs=/.rw/var=rw:/var=ro)
unionfs on /root type unionfs (rw,dirs=/.rw/root=rw:/root=ro)

仕組み(CF併用モード)

  • 仕組みの全般はRAMディスク完結と同じで、違いは/.rw が CF になる ということだけ
  • CFを用いるため、FlashROMへの保存やFlashROMからの書き戻しは行う必要がない
  • フォーマット ext3、ラベル DEBIAN でmke2fsを行ったCFを搭載すれば、自動的にCF併用になる

利用するCFについて

以下の理由から、専用オプションのご利用を強く推奨します。

  • 専用オプションは、信頼性が高く産業用で利用されるSLCタイプのNANDメモリを使用しています
    量販店などで市販されているCFは、安価で大容量化が容易な代わりに、SLCと比較して信頼性の低いMLCタイプのNANDメモリを使用しているものがほとんどです。
  • 高度なウェアレベリング(書込の分散)やバッドブロック対策、電源断対策を搭載
    スタティック及びグローバルウェアレベリング技術の採用により、長期の利用においても安心してお使い頂く事が可能です。またバッドブロック対策として、専用のバッファ領域を用意し、バッドブロックを発見した際は、速やかに書き換えを行いデータの保全を行います。さらに突然の電源断が発生した場合でも、ハードウェアレベルで書き換え完了の確認が取れるまでは、既存データが有効であるため、データの破損も発生しにくくなっています。
  • 市販品のCFでは、動作する場合もありますが、動作に問題が出る場合もあります
    市販品のCFについては、OpenBlocks 600D上での動作を保証していません。
    専用オプションのCFは、動作確認をしたNANDメモリ、CFコントローラ、ファームウェアバージョンに固定してありますので、確実な動作を保証しています。

実際の df および mount の実行結果は次の通り (/dev/sda1がCF)

lenny:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/ram0 126M 89M 32M 75% /
tmpfs 64M 0 64M 0% /lib/init/rw
varrun 64M 28K 64M 1% /var/run
varlock 64M 0 64M 0% /var/lock
udev 10M 2.6M 7.5M 26% /dev
tmpfs 64M 0 64M 0% /dev/shm
/dev/sda1 1.9G 921M 896M 51% /.rw
unionfs 1.9G 921M 896M 51% /etc
unionfs 1.9G 921M 896M 51% /bin
unionfs 1.9G 921M 896M 51% /home
unionfs 1.9G 921M 896M 51% /lib
unionfs 1.9G 921M 896M 51% /sbin
unionfs 1.9G 921M 896M 51% /usr
unionfs 1.9G 921M 896M 51% /var
unionfs 1.9G 921M 896M 51% /root

lenny:~# mount
/dev/ram0 on / type ext2 (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755,size=64m)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755,size=64m)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777,size=64m)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=64m)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /.rw type ext3 (rw,errors=continue,data=ordered)
unionfs on /etc type unionfs (rw,dirs=/.rw/etc=rw:/etc=ro)
unionfs on /bin type unionfs (rw,dirs=/.rw/bin=rw:/bin=ro)
unionfs on /home type unionfs (rw,dirs=/.rw/home=rw:/home=ro)
unionfs on /lib type unionfs (rw,dirs=/.rw/lib=rw:/lib=ro)
unionfs on /sbin type unionfs (rw,dirs=/.rw/sbin=rw:/sbin=ro)
unionfs on /usr type unionfs (rw,dirs=/.rw/usr=rw:/usr=ro)
unionfs on /var type unionfs (rw,dirs=/.rw/var=rw:/var=ro)
unionfs on /root type unionfs (rw,dirs=/.rw/root=rw:/root=ro)

OpenBlocks 600D向けのDebian GNU/Linux への変更

追加

  • /etc/init.d/obs600setup
    RAMディスクの確保やCFのマウント等の初期設定を実施
  • /usr/sbin/flashcfg
    FlashROMへの保存やFlashROMの初期化等の動作に関わる操作を実施
  • /usr/sbin/flashcfg-debian
    上記スクリプトの中で、一部の機能を担当する外部コマンド
  • /etc/default/obs600
    /etc/init.d/obs600setup および /usr/sbin/flashcfg が参照する設定ファイル
  • /usr/sbin/runled
    本体全面のLEDの表示制御を行うため、デーモンとして起動
    負荷状況によって、3段階で表示速度が変更される
  • /usr/sbin/pshd
    本体前面のINITボタンが押下されたときの制御を行うため、デーモンとして起動

変更

  • /etc/init.d/umountfs
    本ファイルを含むinitscriptsパッケージはholdに設定
    同パッケージが更新された場合は、ファームウェア(カーネルパッケージ)のアップデートで対応

削除

  • /usr/share/locale 以下の ja 以外のロケールデータを削除(容量削減のため)
  • /etc/udev/rules.d/70-persistent-net.rules (/etc/init.d/obs600setupの中で、起動の都度削除)
    設定済みのCFを、別の個体に搭載した場合に、ネットワークインタフェースが変更(eth0及びeth1→eth2及びeth3)されないようにするための処置

目次に戻る

ページの先頭へ戻る