関西オープンフォーラム2019 1日目 BSDなひととき で発表した「NetBSD/zaurus 8.1 をテストしたら動かなかったので動くまで直した話」のスライドです
NetBSD/zaurus 8.1 をテストしたら動かなかったので動くまで直した話関西オープンソース 2019NetBSD SHARP 祭り@KansaiIzumi Tsutsui[email protected]Twitter: @tsutsuiiMastodon: @[email protected]
View Slide
NetBSDとSHARPマシン
これだけ動きます 目のつけどころが?●X68030 (X68000+030アクセラレータも可)●SL Zaurus (いわゆる リナザウ)●W-ZERO3●NetWalker●あとTelios (WindowsCE MIPS機)とか
今でも動くの?
二十年ふた昔 各マシンの発売年●X68030 1993年●SL Zaurus 2002年●W-ZERO3 2005年●NetWalker 2009年●Telios 2000年?
NetBSD 最新リリース 9.0_BETA も進行中●NetBSD 8.0: 2018/ 7/ 4●NetBSD 8.1: 2019/ 5/31●netbsd-9 : 2019/ 7/30 ブランチ作成NetBSD 9.0 は来年春までには出る??
NetBSD/x68k エミュレータで動きます →実機も展示中
NetBSD/zaurus もともと Linuxなので●OpenBSD/zaurus (2004年) がベースOpenBSD/zaurus は 6.0 で終了●NetBSD/zaurus: 2006/12/17 コミット●2011年? に SL-C1000サポート(このころに実機をジャンクで入手)●2012年に SL-C7x0/860サポート
起動動画もありますhttps://www.youtube.com/watch?v=Jq5ZHwum5vM
Zaurus と OSC Twitterで拉致事件https://twitter.com/tristelo/status/133912360040677376
https://togetter.com/li/242873
OSC東京 2011 秋http://movapic.com/pic/201111191552144ec7521e3419f
NetBSD/zaurus Live Image C7x0サポートの 2012年作成https://togetter.com/li/243703
Kapperさんによる紹介 いつもありがとうございますhttps://www.slideshare.net/kapper1224/beginner-for-install-archlinux-and-netbsd-in-linuxzaurus-in-2019-archlinuxnetbsd-in-linux-zaurus-162939626
https://www.amazon.co.jp/gp/customer-reviews/R2TR7CA91F7AXJ
そういえばここ数年Zaurus をさわってない
Live Imageを作ったNetBSD 6.1.3?くらいから放置してたのですが、せっかく紹介していただいたので今はどうかなとテスト
NetBSD/zaurus 7.2 は起動 8.1 はカーネルロード後ハング port-zaurus ML にもハング報告がとりあえずの検証結果https://mail-index.netbsd.org/port-zaurus/2017/04/02/msg000066.html
NetBSD/zaurus 起動方法 ちょっと面倒●Zaurus純正 Linux を起動●BSDカーネルロード用のLinuxカーネルモジュール (zbsdmod.o) を組み込み●/proc/zboot に NetBSDカーネルを書き込むとカーネルが起動する●zboot という NetBSD FFSからロードするツールもあり⇒これらの組み合わせ検証が面倒だったり
7.2→8.1 変化点検証 地味作業①●リンカスクリプトの変更を戻すと起動する?●変更考慮漏れでカーネルエントリアドレスが変わってしまっていた→修正
7.2→8.1 変化点検証 地味作業②●zbsdmod.o の違いは gcc更新によるアドレスずれ?●各種比較検証の結果、カーネルジャンプ命令周辺をキャッシュラインに整列させたら起動 →修正
7.2→8.1 変化点検証 地味作業③●zbsdmod.o を直しても読めないカーネルがある?●コードをながめてみて、なんとなくダメっぽく見えたのでbssクリア処理を追加→ダメなカーネルもロードOK
7.2→8.1 変化点検証 地味作業④●GENERICカーネルを起動すると”Alignment Fault 3”と言われて落ちる●野生の勘でフレームバッファのrasops が怪しい? と調べて実装ミスを確認 →修正
さらに動作検証 地味作業⑤●disklabel(8) や fdisk(8) が動かない●MAKEDEV(8) スクリプトのRawパーティション判定が間違っている→send-pr して修正されました
さらに動作検証 地味作業⑥●Xサーバーで画面回転設定時の表示がおかしくなる●検証未です(すいません)●7.2の Xorgサーバーバイナリを持ってくるととりあえず動きます
さらに動作検証 地味作業⑦●9.0_BETA だとXサーバーでキーボード入力できない●必要なカーネルオプションが無効化されてしまっていたので戻す(ついでにコンパイルエラーも発覚したので修正)
さらに動作検証 地味作業⑧●9.0_BETA の audio 修正後もC760/C860だと認識されない●カーネル設定によっては動く?●散々調べて delay(9) 実装のバグと発覚→修正
ついでに改善 地味作業⑨●zbsdmod.o でのデバッガ用シンボルテーブル読み込みを動くようにしてカーネルサイズ削減●KOFにコミットします
というわけで展示準備
放置するとバグがたまっていくので定期的に起動するようにしましょう 基本は差分探索でしんどいですが狙い通り直るとヨッシャ感あります 音が鳴って動画が動くとたのしい! 使ってもらえるとさらにうれしい!Kapperさん、ありがとうございました!まとめ