OSC2019 東京 Fall の NetBSDセミナー BSDなひととき で発表した『NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話』のスライドです。なお、スライド前半の内容はKOF2019で公開しているものと同じです。
NetBSD/zaurus 8.1 を直したあとブース展示デモ内容を作った話オープンソースカンファレンス 2019 東京 FallNetBSD/zaurus 発祥の地で Zaurus増殖デモIzumi Tsutsui[email protected]Twitter: @tsutsuiiMastodon: @[email protected]
View Slide
※このスライドの前半のカーネル話はKOFで話したのと同じ内容です
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 エミュレータで動きます→KOFで実機展示
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 変化点検証 地味作業①●リンカスクリプトの変更を戻すと起動する?●変更考慮漏れでカーネルエントリアドレスが変わってしまっていた→修正https://mail-index.netbsd.org/source-changes/2019/10/26/msg110277.html
7.2→8.1 変化点検証 地味作業②●zbsdmod.o の違いは gcc更新によるアドレスずれ?●各種比較検証の結果、カーネルジャンプ命令周辺をキャッシュラインに整列させたら起動 →修正https://mail-index.netbsd.org/source-changes/2019/10/26/msg110278.html
7.2→8.1 変化点検証 地味作業③●zbsdmod.o を直しても読めないカーネルがある?●コードをながめてみて、なんとなくダメっぽく見えたのでbssクリア処理を追加→ダメなカーネルもロードOKhttps://mail-index.netbsd.org/source-changes/2019/10/28/msg110352.html
7.2→8.1 変化点検証 地味作業④●GENERICカーネルを起動すると”Alignment Fault 3”と言われて落ちる●野生の勘でフレームバッファのrasops が怪しい? と調べて実装ミスを確認 →修正https://mail-index.netbsd.org/source-changes/2019/11/02/msg110512.html
さらに動作検証 地味作業⑤●disklabel(8) や fdisk(8) が動かない●MAKEDEV(8) スクリプトのRawパーティション判定が間違っている→send-pr して修正されましたhttps://mail-index.netbsd.org/source-changes/2019/11/03/msg110546.html
さらに動作検証 地味作業⑥●Xサーバーで画面回転設定時の表示がおかしくなる●検証未です(すいません)●7.2の Xorgサーバーバイナリを持ってくるととりあえず動きますhttps://gnats.netbsd.org/54167
さらに動作検証 地味作業⑦●9.0_BETA だとXサーバーでキーボード入力できない●必要なカーネルオプションが無効化されてしまっていたので戻す(ついでにコンパイルエラーも発覚したので修正)https://mail-index.netbsd.org/source-changes/2019/11/02/msg110531.htmlhttps://mail-index.netbsd.org/source-changes/2019/11/02/msg110532.html
さらに動作検証 地味作業⑧●9.0_BETA の audio 修正後もC760/C860だと認識されない●カーネル設定によっては動く?●散々調べて delay(9) 実装のバグと発覚→修正https://mail-index.netbsd.org/source-changes/2019/11/13/msg110797.htmlhttps://mail-index.netbsd.org/source-changes/2019/11/13/msg110798.html
ついでに改善 地味作業⑨●zbsdmod.o でのデバッガ用シンボルテーブル読み込みを動くようにしてカーネルサイズ削減●KOF後にコミットします→しましたhttps://mail-index.netbsd.org/source-changes/2019/11/13/msg110799.html
というわけで展示準備
カーネルが動いただけで満足↓もうひとがんばりしてみんなに見せびらかすことで満足度UP + 見た人も楽しいなぜ謎マシンを展示するのか
まずはペース配分 ダメな事例https://twitter.com/tsutsuii/status/1192443967230500864
どこに注力するか 臨機応変●とりあえず動かすのが優先?●構想はあったほうがいいかも●資料の目次くらいは考えておく●デモは安牌の既存ネタを用意そのネタが難しいんですが…
何をデモるのか 「OSを作っています」●たいていは「カーネルが動いたら満足」●普通(?)の人にはOSは見えない●ログインプロンプトを出す?●延々再起動画面を見せる?→どっちも意味不明
展示デモネタいろいろ
mikutter いつもお世話になっておりますhttps://www.youtube.com/watch?v=NytIaugKA8M
mikutter いいところ●ビルドさえできればタイムラインが勝手に出るのでコンテンツ準備が不要●その場でツイートしてもらって即時反映とか●謎マシンだとさらにウケる
mikutter 大変なところ●ネットワーク環境が必要●謎マシンだと有線が必要●Zaurusの wi(4) はなんか変…●ビルドも大変●m68kだと約2か月とか●ARMだと別マシンでビルド可●userstream廃止問題
スタンドアロンデモを考える
xnp2 nonakaさん移植のPC-9801エミュレータhttps://www.nonakap.org/np2/
xnp2 それなりにおすすめですが準備が大変かも•世代的に謎マシン層にウケる•フリーソフトも割とある•実機やMS-DOSを持っていないとFreeDOSでHDDのイメージを用意するのがちょっと大変•HDDイメージ操作 (ファイル転送)にも各種ツール準備が必要
xkanon / xclannad 古典的デモhttps://github.com/tsutsui/pkgsrc-wip-xkanonhttps://github.com/tsutsui/pkgsrc-wip-xclannad
xkanon / xclannad 全年齢対象版•ARMで動かないのを修正した過去•それなりに知名度があったりする•オートモードあり(選択肢もランダムで進む)•動くものが限られるのでソフトの準備が面倒かも
ここからは今回のOSCで準備したもの
onscripter これも息の長いソフトhttps://onscripter.osdn.jp/onscripter.html
onscripter フリーゲームもそこそこあります•過去各種市販ゲームでも採用されていた NScripter互換エンジン•音が鳴るマシンならひぐらしがないている デモ可• KOFで展示してたらなぜかシナリオ進められてました•pkgsrc にもあります最近更新サボってたので KOF後に更新しました
MPlayer 動画も当たり前の時代になってしまいましたhttps://twitter.com/tsutsuii/status/1197549410026024960
MPlayer 動画再生に必要なスペック•サイズが小さければわりとイケる•音も鳴るとインパクトUP!•ドリキャスでも実績あり• KOF2016では 320x240 10fpshttps://twitter.com/tsutsuii/status/1067439569077858306
MPlayer 設定とエンコードがキモ• “-vo x11” のオプションが重要• 謎マシンだとデフォルトの -vo xv が激重•音声は非圧縮 wav でチート• 今回はサウンドドライバデモも兼用なので•映像エンコードは試行錯誤必要• とりあえず MPEG-4 が軽そう?• いまどきの x264 とかはたぶんムリ
MPlayer SL-C1000/3x00 の場合• Zaurusは本来縦画面が正•横画面はS/Wで回転→横向きだと重いので縦画面設定がおすすめ•限界は 270x 12fps 500kbps?• 15fps はムリでした•エンコード例% mencoder -oac pcm -ovc lavc -lavcoptsvcodec=mpeg4:vbitrate=500:aspect=9/16 -vfscale=480:270,rotate=1 -ofps 12 sm32524381.mp4 -o out.mp4
MPlayer SL-C700/760/860 の場合•3桁ZaurusはH/W回転をサポート→横向き動画再生のままでもOK•SDが1bitモードなので遅いかも?•限界は 480x270 10fps 500kbps?• 800kpbsだと映像遅れ発生•エンコード例% mencoder -oac pcm -ovc lavc -lavcoptsvcodec=mpeg4:vbitrate=400:aspect=16/9 -vf scale=480:270-ofps 10 sm35937598 -o out.mp4
MPlayer 動画準備•ニコ動巡回で良さげな動画を探索•通しで動画をチェックする→キャラの大きさ、不適切(?)画像等々を確認•nicovideo-dl でダウンロード•CFで Zaurusに転送して再生テスト• 結構めんどいんですが、ちゃんと出るのが楽しくて本題を忘れてエンコに没頭する罠
PC6001VX 電源入れたら即BASIChttp://eighttails.seesaa.net/category/15101643-1.html
PC6001VX 詳しくはOSC2017大阪の資料をご覧ください•マルチプラットフォーム対応PC6001エミュレータ•pkgsrcに入れたので、NetBSDと組み合わせれば何でも動く!?•Version 3.2.0 から互換BASIC内蔵 →起動すればいきなりBASICが!https://speakerdeck.com/tsutsui/osc2017-osaka-pc-6001-emulator-on-netbsd-and-pkgsrc
PC6001VX ビルド•Android版もあるくらいなので、pkgsrc でもパッチ無しでビルド可•Debug option無効化で軽量化•Qt5のビルドがやや大変ですが、ARMなら armv6 なマシンでビルド• armv4,armv5 の libpthread に armv7で削除された命令が使われているという問題がhttp://mail-index.netbsd.org/port-arm/2019/04/20/msg005602.html
PC6001VX Zaurus対応https://twitter.com/tsutsuii/status/1197479130545053696
PC6001VX Zaurus対応https://twitter.com/eighttails/status/1197496821502767106
PC6001VXhttps://twitter.com/tsutsuii/status/1198015211602505728 Zaurus対応
PC6001VXhttps://twitter.com/tsutsuii/status/1198017632709906432 Zaurus対応
PC6001VXhttps://twitter.com/tsutsuii/status/1198026669958651904 Zaurus対応
PC6001VXhttps://twitter.com/eighttails/status/1198193346188959744 おまけ
カーネルいじりも楽しいですが展示デモも違った楽しみがあります 謎マシンでも動画再生できる時代 お世話になった動画・ソフトの紹介で相乗効果 準備はそれなりに計画的に、でも、楽しくやるのが一番ですまとめ