HD-HGLAN 1.4 のフラッシュメモリ(4)/dev/mtd2 の使い方


/dev/mtd2 を読んでいるところをカーネルソースの arch/ppc/platforms/linkstation/sandpoint_setup.c に見つけた。
意訳すると、
まず、/dev/mtd2 の先頭から4バイトを見る。

先頭から4バイトが 0x00, 0x00, 0x41, 0x82 でなければ
2.4.17 と互換モードで、 'OKOK' が書かれていなければカーネルへのパラメータとして root=/dev/ram0 を追加して、/dev/mtd2 を見る処理終り。

先頭から4バイトが 0x00, 0x00, 0x41, 0x82 であれば
/dev/mtd2 の先頭から16バイト目から、
bootparm=root=/dev/ram0
bootparm=root=/dev/hda1
bootparm=root=/dev/md0
という3種のカーネルへのパラメータが書ける。
何回も書けるようになっているが、何か意味あるの?

というわけで、
従来の /dev/fl3 は

  • OKOK : 通常モード

  • NGNG : EM モード

  • という使い方であったが、
    HD-HGLAN 1.4 の /dev/mtd2 では、 上記3つのパラメータが選択できるようになっている。
    どうせなら、変なチェックなどせず自由なパラメータが渡せれば良かったのに。

    視点を変えると、
    従来は、カーネル内で /dev/fl3 を見て root を切り替えていたが、
    1.41 では、ローダが /dev/mtd2 をみてカーネルへのパラメータを 切り替えている。すっきりしたといえばすっきりした。

    あと、興味深いのは /dev/mtd2 の先頭から4バイト。 マジックナンバなので単なる「きめ」でしかないのだが、 0x00, 0x00, 0x41, 0x82(リトルエンディアンで 0x82410000)を見ると CPU の型番を想像してしまうのは考えすぎ?
    単に各ニブルに1ビット立てただけのデータ?


    ご隠居(?)のつぶやき:

    最近、身の回りで「ニブル」が通じないことが何度もあった。
    「20ビット」「2.5バイト」は通じるのだが「5ニブル」が通じない。
    「ニブルなんて、情報処理の基本用語だ」と思って某用語辞典を見たら 「今でもたまに用いられる」と書かれていた(滅)


    HD-HGLAN 1.4 のフラッシュメモリ(3)どうしてマイナデバイス番号が偶数しかないの?
    ハックの記録
    LinkStation/玄箱 をハックしよう

    firminfo

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