【新機能】作り忘れたまとめはありませんか?31日前まで期間指定してまとめが作れる高度な検索ができました。有料APIだからツイートの漏れはありません!

NetBSD/luna68k ブートローダー 実装作業日記

冬休み中の宿題として作業を始めた、 NetBSD/luna68k のネイティブカーネルブートローダーの実装移植作業日記です。 ほどんど自分用の備忘録ですが、 NetBSD の libsa (stand alone library) の使い方の解説としていつかまとめ直すかも?
Luna NetBSD luna68k
9036view 5コメント
18
ログインして広告を非表示にする
前へ 1 ・・ 4 5 ・・ 14 次へ
Izumi Tsutsui @tsutsuii 2013-01-06 00:18:52
コンソールまわりいじったら printf が動かなくなる罠(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-06 00:43:07
i386/stand/boot ではキーが押された判定に awaitkey() が使われててその中身は http://t.co/47gmeFaC だけど snprintf が埋め込んであったりしてなかなかにひどい
Izumi Tsutsui @tsutsuii 2013-01-06 00:44:35
landisk/stand/boot だと awaitkey() の実装は少しマシで http://t.co/ljAsaTvI みたいな感じ
Izumi Tsutsui @tsutsuii 2013-01-06 00:46:30
ただ、 getchar/putchar/iskey をそれぞれ switch で切り替えるのではなく hp300 や cobalt のように struct consdev でくくってごっそり切り替えた方がすっきりとした感じにはなる http://t.co/rWBnMjMD
Izumi Tsutsui @tsutsuii 2013-01-06 00:46:54
……とかごそごそ書いてたらコンソールが動かなくなって もうどうにでもなぁれ状態(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-06 00:54:55
とりあえず今日のところはキー押した判定は後回しにして 元の4.4BSDのコードのとおり DIP SW2-1 の ON/OFFで自動起動かそうでないかを切り替えるだけにしよう……
Izumi Tsutsui @tsutsuii 2013-01-06 01:06:33
結局デフォルトのパス もしくは コマンドラインで入力したパスで loadfile() 呼ぶのを書いただけか。ショボい(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-06 01:06:50
中身はショボいがログはめんどい罠
Izumi Tsutsui @tsutsuii 2013-01-06 01:53:42
コミットのためのコード整理の方が時間がかかる罠
Izumi Tsutsui @tsutsuii 2013-01-06 01:56:18
自分以外にこんなコードを読もうと思う人は世界で3人いないという説もあるが
Izumi Tsutsui @tsutsuii 2013-01-06 01:59:01
コミットだけしてビルド有効にするのはあとにするか
Izumi Tsutsui @tsutsuii 2013-01-06 02:00:18
あと、PROMルーチンが読める a.out バイナリ作るのに現状は ELF のバイナリ作ってから elf2aout(1) 呼んでるけど、最初っから ldscript で a.out 指定すればいいんじゃね、という課題もあるがこれも後回しだな
Izumi Tsutsui @tsutsuii 2013-01-06 02:04:50
まー、こんなもんか。あとは最後の難関のログ書き。
Izumi Tsutsui @tsutsuii 2013-01-06 02:05:27
git push すりゃいいんじゃんという話もあるが ローカル作業と公式へのマージとでは書く内容違うしなー
Izumi Tsutsui @tsutsuii 2013-01-06 02:54:22
というわけで NetBSD/luna68k bootloader 一式コミット。 http://t.co/5AoK9adc 冬休みの宿題はこれで一区切り。
Izumi Tsutsui @tsutsuii 2013-01-06 02:55:23
SD on NetBSD/dreamcast とか USBオシロとかほったらかしだけど、時間工数的にはこのブートローダーが一番冬休みらしい内容だったからよしとしよう…
Izumi Tsutsui @tsutsuii 2013-01-06 02:57:01
NetBSD/luna68k ブートローダーテスト中の図 その1 http://t.co/QZWoKsjv
 拡大
Izumi Tsutsui @tsutsuii 2013-01-06 02:57:58
NetBSD/luna68k ブートローダーテスト中の図 その2 http://t.co/Hmk3s0gS
 拡大
Izumi Tsutsui @tsutsuii 2013-01-06 03:02:35
なかば無理やり区切りつけたけど、どういう段階で実装を進めるかという計画を立てることが大事ですね(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-06 03:31:00
一通りコミットしたので 5日目と6日目の分も足しました。 「NetBSD/luna68k ブートローダー 実装作業日記」 http://t.co/KoPsDbNl
Izumi Tsutsui @tsutsuii 2013-01-06 03:31:55
1500view って、いったい誰がこんなネタを読んでるんですか……
Izumi Tsutsui @tsutsuii 2013-01-06 03:32:03
MIPS先生の影響力なのか
コミット後
disklabelコマンド
Izumi Tsutsui @tsutsuii 2013-01-10 22:29:47
直接a.out形式でリンクしても動いたのでコミットしたらちょっとコード変更したら起動しなくなる罠(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-10 22:38:49
画面クリアの初期化は動いてるけど printf は動かないってどういう現象ですか…
Izumi Tsutsui @tsutsuii 2013-01-10 22:45:27
うーん。-Os を -O1 にすると動く。ちょっとコード変更しても動く。コードサイズによるのか。
Izumi Tsutsui @tsutsuii 2013-01-10 23:36:33
うーん。cninit() のコンソール選択がうまく動いてないようだ。強制的にセットすると動いてるっぽいけど不確定性原理じゃないよな
Izumi Tsutsui @tsutsuii 2013-01-10 23:30:32
printf() が動かない現象をデバッグする方法について
Izumi Tsutsui @tsutsuii 2013-01-10 23:41:25
constab[] の中身も正しい……のか?
Izumi Tsutsui @tsutsuii 2013-01-10 23:43:28
cnprobe が動いてないのか。というか badaddr() か?
Izumi Tsutsui @tsutsuii 2013-01-10 23:47:06
違うっぽい……が観測できん(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-11 00:00:11
しかし x68k の boot は a.out でリンクしてて問題出たことなさそうだしなあ
Izumi Tsutsui @tsutsuii 2013-01-10 23:59:15
ELFとa.outということだとするとどこか alignment がずれているということだろうか
Izumi Tsutsui @tsutsuii 2013-01-11 00:16:42
うーん。わけのわからない現象が観測される件(´・ω・`)
Izumi Tsutsui @tsutsuii 2013-01-11 00:16:59
素直に elf2aout(1) 使うように戻すべきか…
Izumi Tsutsui @tsutsuii 2013-01-11 01:32:52
luna68kブートローダーの disklabel コマンドが動いてなかったのはディスクが読めてないんじゃなくて別の問題だった。でもこれ bsd ラベル読み出しのコマンドは4.4BSDでも動いてなかったということだよな… http://t.co/qAr8ttlz
 拡大
Izumi Tsutsui @tsutsuii 2013-01-11 01:38:13
Physical Partition Number がなんで 0なんだろうと思ったら UniOSラベルの定義で sys/dev/sun/disklabel.h の sunlabel の定義を流用しててそれには該当のメンバーがないかららしい。モニタが見てないならほっといていいのか?
Izumi Tsutsui @tsutsuii 2013-01-11 01:41:46
ブートローダーの disklabel コマンド、ディスクを指定できないと思ったら ID 6 で固定なんだけど、これはデバッグ専用で書いたということなんだろうか
Izumi Tsutsui @tsutsuii 2013-01-11 01:42:39
あと、書き込み系のコマンドは危険だから無効にしておくべきだろうか(心配しなくても誰も試せる人いません
Izumi Tsutsui @tsutsuii 2013-01-11 01:52:51
20年前に書かれたソースを論評することの意義について
Izumi Tsutsui @tsutsuii 2013-01-11 01:55:05
NetBSDも今年で20年目だろ という話はある
sysinstの課題
Izumi Tsutsui @tsutsuii 2013-01-11 19:22:21
luna68k でブートローダーを置く用にsysinstで newfs -O0 で boot用パーティション作らないといけないんだけどどこをどうフックすればいいのか思い出すのがめんどい
Izumi Tsutsui @tsutsuii 2013-01-11 19:24:56
ブートローダーを置くために boot パーティションが必要な port で upgrade 時に本来存在すべき boot パーティションがなかった場合(=正規の方法以外で起動させていた場合)に sysinst的にどう処置すべきなのかという仕様検討ができていないという問題
netboot その1
Izumi Tsutsui @tsutsuii 2013-01-11 21:17:59
ブートローダーのnetbootの実装はいろいろあるけどどれが一番お手本と言える記述になっているのだろうか
Izumi Tsutsui @tsutsuii 2013-01-11 22:04:27
似て非なる実装の4つくらいのソースのそれぞれから一番良さそうなのを部分部分で選んで書き直す作業
Izumi Tsutsui @tsutsuii 2013-01-11 22:36:18
うーん。方針が決まらないのでやる気が出ないという問題
前へ 1 ・・ 4 5 ・・ 14 次へ

コメント

Izumi Tsutsui @tsutsuii 2013-01-06 03:31:01
一通りコミットしたので 5日目と6日目の分も足しました。
Izumi Tsutsui @tsutsuii 2013-01-13 19:26:29
netbootもとりあえず動いたので再度更新しました。
Izumi Tsutsui @tsutsuii 2013-01-21 03:24:36
gitの練習がてらローカル作業をコミットしていた分のレポジトリ https://github.com/tsutsui/netbsd-luna68k-boot
Izumi Tsutsui @tsutsuii 2014-01-04 00:07:05
ほぼ自分専用備忘録としていまさらながらふたたび更新
Izumi Tsutsui @tsutsuii 2014-01-11 18:44:06
ほぼ日記状態でまとめも日々更新してたりしましたが、今日で一通り作業完了したので改めて更新告知。無駄に長くてすいません。

カテゴリーからまとめを探す

ログインして広告を非表示にする
ログインして広告を非表示にする