NetBSD/x68k開発用 X68030 ブートストラップ起動動作仕様

世界で5人くらい残存しているNetBSD/x68k開発者向けの、X68030ブートストラップ起動時動作仕様の調査結果その他の備忘録です。 NetBSD/x68k用ブートローダーやOSインストール済みLiveImageビルドツール開発に役立つ日が来るかも……
3
前へ 1 2 ・・ 11 次へ
isaki @isaki68k

@tsutsuii /usr/sbin/installbootのarch/x68kが、Human68kパーティションとかなければ動くはず、くらいの出来栄えです…(;´Д`)

2012-11-13 22:52:46
Izumi Tsutsui @tsutsuii

newdisk では ・-F のような通常ファイル指定オプションを足して tools ではそれのみ対応 ・その場合 opendisk(3) を open(2) に置き換える ・DIOCGDINFO は単にサイズ見てるだけっぽいので stat(2) すればいい?

2012-11-13 22:53:56
Izumi Tsutsui @tsutsuii

イメージファイルが実際サイズ分の大きさがないとラベル(もしくはそれに類するデータ)を書けないという仕様にしてしまうと、それはそれでビルドのとき面倒くさいという話もあるので、サイズ強制指定オプションがあったほうがよいかも

2012-11-13 22:56:04
Izumi Tsutsui @tsutsuii

ただ、newdisk.c の先頭のコメントにあるように、内容的には shell/awk で済ませてもいいのかもしれない

2012-11-13 22:57:10
Izumi Tsutsui @tsutsuii

@isaki68k これで実際に起動できるディスクってできるんでしょうか。さっきの boot_ufs 側の対応次第という話ですが…

2012-11-13 22:57:47
Izumi Tsutsui @tsutsuii

installbootを真に tools 対応にするためには Human68kパーティションテーブルを解釈するようにしないといけない。

2012-11-13 23:01:09
Izumi Tsutsui @tsutsuii

ただ、native BSD disklabel と Huma68kラベルと両方解釈させるなら x68k/disksubr.c の readdisklabel()/writedisklabel() 相当のルーチンを用意して tools disklabel と共用すべきかもしれない

2012-11-13 23:01:55
Izumi Tsutsui @tsutsuii

68k/disksubr.c の readdisklabel()/writedisklabel() は、 (1)まずディスク先頭の BSD disklabel を探してあったらそれを採用 (2)なかったら Human68k ラベルを見てそれをBSD disklabelに読み替え

2012-11-13 23:03:18
isaki @isaki68k

@tsutsuii 当時は出来たはずです…。

2012-11-13 23:04:57
Izumi Tsutsui @tsutsuii

writedisklabelはBSD disklabelがあったらそこに上書き、なければHuman68kラベルに上書きだけど、Human68kラベルがない場合(新規作成の場合)にも問答無用でHuman68kラベル形式を書いてるように見える。この仕様をtoolsでどうするかが問題

2012-11-13 23:08:04
Izumi Tsutsui @tsutsuii

src/sbin/disklabel に USE_ACORN みたく USE_HUMAN とか足すのが本筋だけどそこまでやるんかという

2012-11-13 23:10:13
Izumi Tsutsui @tsutsuii

仕様的には BSD disklabel か Human68k label のどちらかしか書かないので、Human68kパーティションテーブルエディタ(sbin/fdisk もどき)があれば十分という説もあるけど、プログラマじゃないのでそっちの方がめんどいという罠(´・ω・`)

2012-11-13 23:12:48
Izumi Tsutsui @tsutsuii

あと、 src/distrib/common/bootimage/Makefile.bootimage では disklabel(8) を呼ぶこと前提なので、Makefileで小細工したくないなら disklabel(8) で真っ向勝負するしかないけど、めんどくさー

2012-11-13 23:15:02
Izumi Tsutsui @tsutsuii

@isaki68k boot_ufs/boot.S には「Human68kのパーティション情報がない場合」みたいなこと書いてあるので考慮されてるみたいですね。「mbootの場合」が書いてないですが当然SCSI IPL準拠?

2012-11-13 23:27:17
Izumi Tsutsui @tsutsuii

というわけでやるべき内容はだいたいわかったところで実際の実装はGSoCもどきで外注に出したいのですが生きの良い若者いませんか(いません

2012-11-13 23:29:32
Y.Sugahara @moveccr

@tsutsuii 老ハード介護の現場も老老介護

2012-11-14 02:03:18
Izumi Tsutsui @tsutsuii

あと、細かい点として sys/arch/x68k/include/disklabel.h の struct dos_partition の定義でビットフィールドを使っているという問題。これはtools用に別の定義(たぶんuint8_t配列にするしかない)を用意してやる必要あり。

2012-11-13 23:34:46
Izumi Tsutsui @tsutsuii

newdisk.c では sprintf(3) でSCSIディスクマーカー書いてるけど、正直これも適切な構造体を明示的に定義してそれを仕様の説明書代わりにしたい感

2012-11-13 23:37:24
Izumi Tsutsui @tsutsuii

説明書を書く元気がないのなら、コメントに説明を書こう。 コメントを書く元気もないのなら、ヘッダを読めば仕様がわかる定義をしよう。 ……ってのは書かずに読むばかりの立場だから言えることか(´・ω・`)

2012-11-13 23:43:35
Izumi Tsutsui @tsutsuii

これが噂に聞く伝説のメッセージか…… http://t.co/CaTJXW3I

2012-11-14 00:31:52
拡大
isaki @isaki68k

目にしたのは10年ぶり2回目。RT @tsutsuii: これが噂に聞く伝説のメッセージか…… http://t.co/w8pNIpfZ

2012-11-14 17:34:37
拡大
Izumi Tsutsui @tsutsuii

あれ…… NetBSD/x68k の -current の GENERICカーネルだとフロッピーアクセスできなくなってる? XM6i だけ?

2012-11-15 22:08:25
Izumi Tsutsui @tsutsuii

実機だと同じカーネルでフロッピー読めるな

2012-11-15 22:14:46
Izumi Tsutsui @tsutsuii

で、実機でしか確認できないとなると xxboot_ffsv1 がフロッピーで can't load the secondary bootstrap. になる原因を調べるのがめんどい(´・ω・`)

2012-11-15 22:16:12
Izumi Tsutsui @tsutsuii

XM6iとX68030実機と両方で同時に同じNFSサーバーからnetbootするというシュールな光景

2012-11-15 22:28:08
前へ 1 2 ・・ 11 次へ