フラッシュメモリ


デバイスと用途

デバイスMAJORMINOR 用途
/dev/fl02500 設定の保存用。as_flash でconf_save.tar.gz が書き込まれている
/dev/fl12501 ファームウェア firmimg.bin がそのまま保持される
/dev/fl22502 ローダ
/dev/fl32503 HDD から起動するかどうかのステータスが収められている。
HD-LAN には存在しない
/dev/fl42504 fl1, fl2, fl3, fl0 がすべてこの順で見えるようになっている。
HD-HLAN 1.40、HGLAN 1.12 にのみ存在 ( たつやさんよりの情報

デバイスと物理アドレス、サイズ

HD-LAN V1 HD-H*LAN、玄箱
デバイス 開始サイズ 開始サイズ
/dev/fl0 0xFFF80000512KB 0xFFF80000512KB
/dev/fl1 0xFF00000015MB 0xFFC000003MB
/dev/fl2 0xFFF00000512KB 0xFFF00000448KB
/dev/fl3 -- 0xFFF7000064KB
/dev/fl4 -- 0xFFC000004MB

デバイスの作成

/dev/fl0 〜 /dev/fl4 が存在しない場合は、mknod で作成する。
# mknod /dev/fl0 b 250 0
# mknod /dev/fl1 b 250 1
# mknod /dev/fl2 b 250 2
# mknod /dev/fl3 b 250 3
# mknod /dev/fl4 b 250 4

/dev/fl0:設定保存領域

Web などから設定した項目(設定ファイル)は、フラッシュメモリに保存される。 保存された設定ファイルは、
linkstation# as_flash /dev/fl0 get -n /tmp/conf_save.tar.gz --output /tmp/conf_save.tar.gz
として取り出すことができる

conf_save.tar.gz に保存されるファイル

これは、シリーズ、バージョンによって異なる。
LinkStation HD-HLAN 1.30 では以下の通り
etc/network/interfaces
etc/samba/
etc/samba/smbusers
etc/samba/smb.conf
etc/samba/lmhosts
etc/samba/smbpasswd
etc/samba/secrets.tdb
etc/samba/smb.conf.bak
etc/samba/smb.conf.tmp
etc/atalk/
etc/atalk/atalkd.conf
etc/atalk/AppleVolumes.default
etc/atalk/AppleVolumes.system
etc/atalk/afpd.conf
etc/atalk/config
etc/atalk/papd.conf
etc/atalk/lw2ntx.ppd
etc/atalk/nls/
etc/atalk/nls/maccode.437
etc/atalk/nls/maccode.850
etc/atalk/nls/maccode.iso8859-1
etc/atalk/nls/maccode.iso8859-1.adapted
etc/atalk/config.papd
etc/melco/
etc/melco/timer_sleep
etc/melco/timer_backup
etc/melco/timer_backup.cron
etc/melco/timer_status
etc/melco/pass
etc/melco/info
etc/melco/shareinfo
etc/melco/usercount
etc/melco/userinfo
etc/melco/printer
etc/melco/groupinfo
etc/melco/info.bak
etc/melco/shareinfo.bak
etc/melco/pass.bak
etc/passwd
etc/group
etc/hosts
www/.htpasswd
www/cgi-bin/.htpasswd
www/script/.htpasswd
etc/ap_servd.log
etc/printcap
etc/crontab

/usr/bin/as_flash

フラッシュメモリをアクセスするコマンド
as は Air Station の頭文字か。

初期化

/usr/bin/as_flash /dev/fl0 init
読み込み
/usr/bin/as_flash /dev/fl0 get -n filename --output outfilename
書き込み
/usr/bin/as_flash /dev/fl0 add -n filename
リスト( たつやさんよりの情報
/usr/bin/as_flash /dev/fl0 list

/dev/fl1:カーネル、RAM DISK IMAGE

ファームウェアの firmimg.bin がそのまま保持される
firmimg.bin は、
  • firminfo.txt から作成されるヘッダ部(108 バイト)
  • vmlinux.gz
  • ramdisk.image.gz
    の3つの部分からなっている

    ヘッダ部

    カーネルソースの include/melco/firminfo.h で定義されている。 各ファームウェアの値は firminfo を 参照のこと
    offset
    (0 orig.)
    size 内容
    0 4 firminfo のバージョン。
    firmimg.bin 作成時にfirminfo.txt の Ver フィールドからセットされる
    4 4 ファームウェア ID。
    firmimg.bin 作成時にfirminfo.txt の ID フィールドからセットされる
    ファームウェアをインストールする際、 ネットワーク上の LinkStation/玄箱 の機種を識別し 対象の機種だけに絞り込むために使用されると思われる
    8 32 ファーム NAME。シリーズ名と開発コード?
    firmimg.bin 作成時にfirminfo.txt の NAME フィールドから セットされる
    あまりは 0x00 詰め
    40 32 サブバージョン
    バージョンらしき数値の意味は不明。
    あまりは 0x00 詰め
    72 2 メジャーバージョン。 ファームウェアのメジャーバージョンとは一致していない。
    74 2 マイナーバージョン。
    ファームウェアのマイナーバージョンとは一致していない。
    76 2 ビルド番号。 0000 固定?
    78 6 ビルド日時。1バイト毎に年(1900年基点)、月、日、時、分、秒
    84 4 firmimg.bin のサイズ
    88 4 sum。計算方法不明
    92 4 vmlinux.gz のオフセット※1
    96 4 vmlinux.gz のサイズ※2
    100 4 ramdisk.image.gz のオフセット※3
    104 4 ramdisk.image.gz のサイズ※4
    ※1 ※2 vmlinux.gz。カーネル本体
    ※3 ※4 ramdisk.image.gz
    HD-LAN では / ファイルシステムになる。
    HD-H*LAN, 玄箱では、HDD が初期化されていない場合に / ファイルシステムとなる。

    /dev/fl2:ローダ

    make zImage したときに作成される bootcode.bin

    /dev/fl3:ステータス

    正常に動作している場合は、
    # od -xc /dev/fl3
    0000000 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b
              O   K   O   K   O   K   O   K   O   K   O   K   O   K   O   K
    *
    0000400 ffff ffff ffff ffff ffff ffff ffff ffff
            377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
    *
    0200000
    
    となっている。

    HDD 異常(DIAG LED が6回点滅状態)を検知すると、

    # od -xc /dev/fl3
    0000000 4e47 4e47 4e47 4e47 4e47 4e47 4e47 4e47
              N   G   N   G   N   G   N   G   N   G   N   G   N   G   N   G
    *
    0000400 ffff ffff ffff ffff ffff ffff ffff ffff
            377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
    *
    0200000
    
    となり、 ファームウェアの再インストールをするか、 上記正常に動作している場合のデータを書き込まない限り HDD からは起動しない。

    /usr/bin/write_ng が NGNGNG... を
    /usr/bin/write_ok が OKOKOK... を
    書き込むコマンドであるが、玄箱ファームウェア 1.02 では両コマンドとも 削除されている


    LinkStation/玄箱 解析結果
    LinkStation/玄箱をハックしよう

    Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
    yasunari @ yamasita.jp 山下康成@京都府向日市