[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF カードで login: 但し最初文字化け



かわうちです。こんばんは。

藤原 誠/ Makoto Fujiwara wrote:
(勝手ながら略)
> これを直そうと思って、他の i386 の Note PC に CF カードをつなぎ
> disklabel を見ると no label と言って どうもだめそうなので、
> (*1)
> 
> また NFS を使って起動し 57600 に変更して、無事 login: が出て
> login 出来る状態になりました。

おつかれさまです。
こちらとしましても安心しました。 (^o^)

> (*1)
> これって、先ほどお送りいただいた patch と関係あるのかな、ないの
> かなと思っています。

結論としては、関係は直接は『無い』かな、と思います。

> i386     EL
> 玄箱     EB
> 20050815 EL
> 20050820 EB
> ということで、「関係ない」のでしょうか ?

自分でも忘れるといけないので、備忘録としてまとめてみます。間違っていたら突っ
込み願います。
# ちょっと長めのお話になります _o_
内容はarch/sandpoint/sandpoint/disksubr.cあたりのお話です。

いわゆるPCスタイルのディスクの内部構成として次のものが挙げられると思います。

  (1) BPB + パーティションテーブル (ディスクの先頭にあるものです)
  (2) NetBSD disklabel (通常、NetBSDパーティションの先頭+1セクタに有ります)
  (3) NetBSD UFS(FFS)

これら3つの各々にエンディアンが絡んできています。
(3)は、カーネルオプションのFFS_EIを付ければどのarchでもEB/EL共に読み書き
できるようになると思います。
(2)は、一部archで採用しているBSDDISKLABEL_EIを取り込みました。(mmeyeを参考
に書き直したものです)
(1)は、今回はじめて遭遇しました。慌てて直したのでバグが出てしまっています。
本来DOSベースの管理だからELに固定だろう、と思っていたのですが甘かったよう
です。

i386では (1)(2)(3)すべてELでのみの読み書きだと思います。((3)はEIの可能性も
有ります)
今回のsandpoint(改)では、(1)(2)(3)すべてで読み書きEIにしているのですが、
デフォルトの書き込みを(1):EL,(2)(3):EBとしています(つもりです)。

ということで、i386でパーティション切り+ラベル書き+UFSフォーマットまで全て
を行ったものはsandpoint(改)で読み書きできるのですが、全てsandpoint(改)で
行った場合、i386で読む際は特に(2)で引っかかってしまうことになると思います。
また、玄箱のLinuxでパーティション切りを行った場合には(1)も問題になると思い
ます。

藤原さんの所では(2)のせいで no disk label となったと思われますが、先ほどの
パッチは(2)が書かれていないときに(1)を使ってでっち上げたdisklabelの内容が
間違っていたのを修正するものなので微妙に異なっているわけです。

# すべてi386に迎合してデフォルトELにすれば解決ですが、お叱りが聞こえてき
# そうで (^_^;)

長々と失礼しました。

P.S. HEADから取り出したコードに対してパッチしてみました。変更点はそれほど
多くは無かったのですが、mainbusからeumbを生やそうとしている部分の書き方が
変わってしまって、適当に直したらpanicしてしまいました(strcmpのポインタ不正)。
まだまだ楽しめそうです(^_^;)。

--
Eiji Kawauchi