Slide 1

Slide 1 text

NetBSD/zaurus 8.1 を テストしたら動かなかったので 動くまで直した話 関西オープンソース 2019 NetBSD SHARP 祭り@Kansai Izumi Tsutsui [email protected] Twitter: @tsutsuii Mastodon: @[email protected]

Slide 2

Slide 2 text

NetBSDと SHARP マシン

Slide 3

Slide 3 text

これだけ動きます  目のつけどころが? ● X68030 (X68000+030アクセラレータも可) ● SL Zaurus (いわゆる リナザウ) ● W-ZERO3 ● NetWalker ● あとTelios (WindowsCE MIPS機)とか

Slide 4

Slide 4 text

今でも 動くの?

Slide 5

Slide 5 text

二十年ふた昔  各マシンの発売年 ● X68030 1993年 ● SL Zaurus 2002年 ● W-ZERO3 2005年 ● NetWalker 2009年 ● Telios 2000年?

Slide 6

Slide 6 text

NetBSD 最新リリース  9.0_BETA も進行中 ● NetBSD 8.0: 2018/ 7/ 4 ● NetBSD 8.1: 2019/ 5/31 ● netbsd-9 : 2019/ 7/30 ブランチ作成 NetBSD 9.0 は来年春までには出る??

Slide 7

Slide 7 text

NetBSD/x68k  エミュレータで動きます →実機も展示中

Slide 8

Slide 8 text

NetBSD/zaurus  もともと Linuxなので ● OpenBSD/zaurus (2004年) がベース OpenBSD/zaurus は 6.0 で終了 ● NetBSD/zaurus: 2006/12/17 コミット ● 2011年? に SL-C1000サポート (このころに実機をジャンクで入手) ● 2012年に SL-C7x0/860サポート

Slide 9

Slide 9 text

起動動画もあります https://www.youtube.com/watch?v=Jq5ZHwum5vM

Slide 10

Slide 10 text

Zaurus と OSC  Twitterで拉致事件 https://twitter.com/tristelo/status/133912360040677376

Slide 11

Slide 11 text

https://togetter.com/li/242873

Slide 12

Slide 12 text

OSC東京 2011 秋 http://movapic.com/pic/201111191552144ec7521e3419f

Slide 13

Slide 13 text

NetBSD/zaurus Live Image  C7x0サポートの 2012年作成 https://togetter.com/li/243703

Slide 14

Slide 14 text

Kapperさんによる紹介  いつもありがとうございます https://www.slideshare.net/kapper1224/beginner-for-install-archlinux-and-netbsd-in-linuxzaurus-i n-2019-archlinuxnetbsd-in-linux-zaurus-162939626

Slide 15

Slide 15 text

https://www.amazon.co.jp/gp/customer-reviews/R2TR7CA91F7AXJ

Slide 16

Slide 16 text

そういえば ここ数年 Zaurus を さわってない

Slide 17

Slide 17 text

Live Imageを作った NetBSD 6.1.3?くらいから 放置してたのですが、 せっかく紹介して いただいたので 今はどうかなとテスト

Slide 18

Slide 18 text

 NetBSD/zaurus 7.2 は起動  8.1 はカーネルロード後ハング  port-zaurus ML にもハング報告が とりあえずの検証結果 https://mail-index.netbsd.org/port-zaurus/2017/04/02/msg000066.html

Slide 19

Slide 19 text

NetBSD/zaurus 起動方法  ちょっと面倒 ● Zaurus純正 Linux を起動 ● BSDカーネルロード用のLinuxカーネル モジュール (zbsdmod.o) を組み込み ● /proc/zboot に NetBSDカーネルを 書き込むとカーネルが起動する ● zboot という NetBSD FFSからロード するツールもあり ⇒これらの組み合わせ検証が面倒だったり

Slide 20

Slide 20 text

7.2→8.1 変化点検証  地味作業① ● リンカスクリプトの変更を 戻すと起動する? ● 変更考慮漏れでカーネルエント リアドレスが変わってしまって いた →修正

Slide 21

Slide 21 text

7.2→8.1 変化点検証  地味作業② ● zbsdmod.o の違いは gcc更新に よるアドレスずれ? ● 各種比較検証の結果、 カーネルジャンプ命令周辺を キャッシュラインに整列させた ら起動 →修正

Slide 22

Slide 22 text

7.2→8.1 変化点検証  地味作業③ ● zbsdmod.o を直しても読めない カーネルがある? ● コードをながめてみて、なんと なくダメっぽく見えたので bssクリア処理を追加 →ダメなカーネルもロードOK

Slide 23

Slide 23 text

7.2→8.1 変化点検証  地味作業④ ● GENERICカーネルを起動すると ”Alignment Fault 3” と言われて落ちる ● 野生の勘でフレームバッファの rasops が怪しい? と調べて 実装ミスを確認 →修正

Slide 24

Slide 24 text

さらに動作検証  地味作業⑤ ● disklabel(8) や fdisk(8) が 動かない ● MAKEDEV(8) スクリプトの Rawパーティション判定が 間違っている →send-pr して修正されました

Slide 25

Slide 25 text

さらに動作検証  地味作業⑥ ● Xサーバーで画面回転設定時の 表示がおかしくなる ● 検証未です(すいません) ● 7.2の Xorgサーバーバイナリを 持ってくるととりあえず 動きます

Slide 26

Slide 26 text

さらに動作検証  地味作業⑦ ● 9.0_BETA だとXサーバーで キーボード入力できない ● 必要なカーネルオプションが 無効化されてしまっていたので 戻す(ついでにコンパイルエ ラーも発覚したので修正)

Slide 27

Slide 27 text

さらに動作検証  地味作業⑧ ● 9.0_BETA の audio 修正後も C760/C860だと認識されない ● カーネル設定によっては動く? ● 散々調べて delay(9) 実装のバグ と発覚 →修正

Slide 28

Slide 28 text

ついでに改善  地味作業⑨ ● zbsdmod.o でのデバッガ用 シンボルテーブル読み込みを 動くようにしてカーネルサイズ 削減 ● KOFにコミットします

Slide 29

Slide 29 text

というわけで展示準備

Slide 30

Slide 30 text

 放置するとバグがたまっていくので 定期的に起動するようにしましょう  基本は差分探索でしんどいですが 狙い通り直るとヨッシャ感あります  音が鳴って動画が動くとたのしい!  使ってもらえるとさらにうれしい! Kapperさん、ありがとうございました! まとめ