Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話 / OSC2019Tokyo-Fall

NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話 / OSC2019Tokyo-Fall

OSC2019 東京 Fall の NetBSDセミナー BSDなひととき で発表した『NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話』のスライドです。なお、スライド前半の内容はKOF2019で公開しているものと同じです。

Izumi Tsutsui

November 24, 2019
Tweet

More Decks by Izumi Tsutsui

Other Decks in Programming

Transcript

  1. NetBSD/zaurus 8.1 を直したあと
    ブース展示デモ内容を作った話
    オープンソースカンファレンス 2019 東京 Fall
    NetBSD/zaurus 発祥の地で Zaurus増殖デモ
    Izumi Tsutsui
    [email protected]
    Twitter: @tsutsuii
    Mastodon: @[email protected]

    View Slide

  2. ※このスライドの
    前半のカーネル話は
    KOFで話したのと
    同じ内容です

    View Slide

  3. NetBSDと
    SHARP
    マシン

    View Slide

  4. これだけ動きます
     目のつけどころが?

    X68030 (X68000+030アクセラレータも可)

    SL Zaurus (いわゆる リナザウ)

    W-ZERO3

    NetWalker

    あとTelios (WindowsCE MIPS機)とか

    View Slide

  5. 今でも
    動くの?

    View Slide

  6. 二十年ふた昔
     各マシンの発売年

    X68030 1993年

    SL Zaurus 2002年

    W-ZERO3 2005年

    NetWalker 2009年

    Telios 2000年?

    View Slide

  7. NetBSD 最新リリース
     9.0_BETA も進行中

    NetBSD 8.0: 2018/ 7/ 4

    NetBSD 8.1: 2019/ 5/31

    netbsd-9 : 2019/ 7/30 ブランチ作成
    NetBSD 9.0 は来年春までには出る??

    View Slide

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

    View Slide

  9. NetBSD/zaurus
     もともと Linuxなので

    OpenBSD/zaurus (2004年) がベース
    OpenBSD/zaurus は 6.0 で終了

    NetBSD/zaurus: 2006/12/17 コミット

    2011年? に SL-C1000サポート
    (このころに実機をジャンクで入手)

    2012年に SL-C7x0/860サポート

    View Slide

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

    View Slide

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

    View Slide

  12. https://togetter.com/li/242873

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. NetBSD/zaurus 起動方法
     ちょっと面倒

    Zaurus純正 Linux を起動

    BSDカーネルロード用のLinuxカーネル
    モジュール (zbsdmod.o) を組み込み

    /proc/zboot に NetBSDカーネルを
    書き込むとカーネルが起動する

    zboot という NetBSD FFSからロード
    するツールもあり
    ⇒これらの組み合わせ検証が面倒だったり

    View Slide

  21. 7.2→8.1 変化点検証
     地味作業①

    リンカスクリプトの変更を
    戻すと起動する?

    変更考慮漏れでカーネルエント
    リアドレスが変わってしまって
    いた
    →修正
    https://mail-index.netbsd.org/source-changes/2019/10/26/msg110277.html

    View Slide

  22. 7.2→8.1 変化点検証
     地味作業②

    zbsdmod.o の違いは gcc更新に
    よるアドレスずれ?

    各種比較検証の結果、
    カーネルジャンプ命令周辺を
    キャッシュラインに整列させた
    ら起動 →修正
    https://mail-index.netbsd.org/source-changes/2019/10/26/msg110278.html

    View Slide

  23. 7.2→8.1 変化点検証
     地味作業③

    zbsdmod.o を直しても読めない
    カーネルがある?

    コードをながめてみて、なんと
    なくダメっぽく見えたので
    bssクリア処理を追加
    →ダメなカーネルもロードOK
    https://mail-index.netbsd.org/source-changes/2019/10/28/msg110352.html

    View Slide

  24. 7.2→8.1 変化点検証
     地味作業④

    GENERICカーネルを起動すると
    ”Alignment Fault 3”
    と言われて落ちる

    野生の勘でフレームバッファの
    rasops が怪しい? と調べて
    実装ミスを確認 →修正
    https://mail-index.netbsd.org/source-changes/2019/11/02/msg110512.html

    View Slide

  25. さらに動作検証
     地味作業⑤

    disklabel(8) や fdisk(8) が
    動かない

    MAKEDEV(8) スクリプトの
    Rawパーティション判定が
    間違っている
    →send-pr して修正されました
    https://mail-index.netbsd.org/source-changes/2019/11/03/msg110546.html

    View Slide

  26. さらに動作検証
     地味作業⑥

    Xサーバーで画面回転設定時の
    表示がおかしくなる

    検証未です(すいません)

    7.2の Xorgサーバーバイナリを
    持ってくるととりあえず
    動きます
    https://gnats.netbsd.org/54167

    View Slide

  27. さらに動作検証
     地味作業⑦

    9.0_BETA だとXサーバーで
    キーボード入力できない

    必要なカーネルオプションが
    無効化されてしまっていたので
    戻す(ついでにコンパイルエ
    ラーも発覚したので修正)
    https://mail-index.netbsd.org/source-changes/2019/11/02/msg110531.html
    https://mail-index.netbsd.org/source-changes/2019/11/02/msg110532.html

    View Slide

  28. さらに動作検証
     地味作業⑧

    9.0_BETA の audio 修正後も
    C760/C860だと認識されない

    カーネル設定によっては動く?

    散々調べて delay(9) 実装のバグ
    と発覚
    →修正
    https://mail-index.netbsd.org/source-changes/2019/11/13/msg110797.html
    https://mail-index.netbsd.org/source-changes/2019/11/13/msg110798.html

    View Slide

  29. ついでに改善
     地味作業⑨

    zbsdmod.o でのデバッガ用
    シンボルテーブル読み込みを
    動くようにしてカーネルサイズ
    削減

    KOF後にコミットします
    →しました
    https://mail-index.netbsd.org/source-changes/2019/11/13/msg110799.html

    View Slide

  30. というわけで展示準備

    View Slide

  31. カーネルが動いただけで満足

    もうひとがんばりして
    みんなに見せびらかすことで
    満足度UP + 見た人も楽しい
    なぜ謎マシンを展示するのか

    View Slide

  32. まずはペース配分
     ダメな事例
    https://twitter.com/tsutsuii/status/1192443967230500864

    View Slide

  33. どこに注力するか
     臨機応変

    とりあえず動かすのが優先?

    構想はあったほうがいいかも

    資料の目次くらいは考えておく

    デモは安牌の既存ネタを用意
    そのネタが難しいんですが…

    View Slide

  34. 何をデモるのか
     「OSを作っています」

    たいていは
    「カーネルが動いたら満足」

    普通(?)の人にはOSは見えない

    ログインプロンプトを出す?

    延々再起動画面を見せる?
    →どっちも意味不明

    View Slide

  35. 展示デモネタ
    いろいろ

    View Slide

  36. mikutter
     いつもお世話になっております
    https://www.youtube.com/watch?v=NytIaugKA8M

    View Slide

  37. mikutter
     いいところ

    ビルドさえできれば
    タイムラインが勝手に出るので
    コンテンツ準備が不要

    その場でツイートしてもらって
    即時反映とか

    謎マシンだとさらにウケる

    View Slide

  38. mikutter
     大変なところ

    ネットワーク環境が必要

    謎マシンだと有線が必要

    Zaurusの wi(4) はなんか変…

    ビルドも大変

    m68kだと約2か月とか

    ARMだと別マシンでビルド可

    userstream廃止問題

    View Slide

  39. スタンドアロン
    デモを考える

    View Slide

  40. xnp2
     nonakaさん移植のPC-9801エミュレータ
    https://www.nonakap.org/np2/

    View Slide

  41. xnp2
     それなりにおすすめですが準備が大変かも
    •世代的に謎マシン層にウケる
    •フリーソフトも割とある
    •実機やMS-DOSを持っていないと
    FreeDOSでHDDのイメージを
    用意するのがちょっと大変
    •HDDイメージ操作 (ファイル転送)
    にも各種ツール準備が必要

    View Slide

  42. xkanon / xclannad
     古典的デモ
    https://github.com/tsutsui/pkgsrc-wip-xkanon
    https://github.com/tsutsui/pkgsrc-wip-xclannad

    View Slide

  43. xkanon / xclannad
     全年齢対象版
    •ARMで動かないのを修正した過去
    •それなりに知名度があったりする
    •オートモードあり
    (選択肢もランダムで進む)
    •動くものが限られるので
    ソフトの準備が面倒かも

    View Slide

  44. ここからは
    今回のOSCで
    準備したもの

    View Slide

  45. onscripter
     これも息の長いソフト
    https://onscripter.osdn.jp/onscripter.html

    View Slide

  46. onscripter
     フリーゲームもそこそこあります
    •過去各種市販ゲームでも採用され
    ていた NScripter互換エンジン
    •音が鳴るマシンなら
    ひぐらしがないている デモ可
    • KOFで展示してたらなぜかシナリオ
    進められてました
    •pkgsrc にもあります
    最近更新サボってたので KOF後に更新しました

    View Slide

  47. MPlayer
     動画も当たり前の時代になってしまいました
    https://twitter.com/tsutsuii/status/1197549410026024960

    View Slide

  48. MPlayer
     動画再生に必要なスペック
    •サイズが小さければわりとイケる
    •音も鳴るとインパクトUP!
    •ドリキャスでも実績あり
    • KOF2016では 320x240 10fps
    https://twitter.com/tsutsuii/status/1067439569077858306

    View Slide

  49. MPlayer
     設定とエンコードがキモ
    • “-vo x11” のオプションが重要
    • 謎マシンだとデフォルトの -vo xv が激重
    •音声は非圧縮 wav でチート
    • 今回はサウンドドライバデモも兼用なので
    •映像エンコードは試行錯誤必要
    • とりあえず MPEG-4 が軽そう?
    • いまどきの x264 とかはたぶんムリ

    View Slide

  50. MPlayer
     SL-C1000/3x00 の場合
    • Zaurusは本来縦画面が正
    •横画面はS/Wで回転
    →横向きだと重いので縦画面設定がおすすめ
    •限界は 270x 12fps 500kbps?
    • 15fps はムリでした
    •エンコード例
    % mencoder -oac pcm -ovc lavc -lavcopts
    vcodec=mpeg4:vbitrate=500:aspect=9/16 -vf
    scale=480:270,rotate=1 -ofps 12 sm32524381.mp4 -o out.mp4

    View Slide

  51. MPlayer
     SL-C700/760/860 の場合
    •3桁ZaurusはH/W回転をサポート
    →横向き動画再生のままでもOK
    •SDが1bitモードなので遅いかも?
    •限界は 480x270 10fps 500kbps?
    • 800kpbsだと映像遅れ発生
    •エンコード例
    % mencoder -oac pcm -ovc lavc -lavcopts
    vcodec=mpeg4:vbitrate=400:aspect=16/9 -vf scale=480:270
    -ofps 10 sm35937598 -o out.mp4

    View Slide

  52. MPlayer
     動画準備
    •ニコ動巡回で良さげな動画を探索
    •通しで動画をチェックする
    →キャラの大きさ、不適切(?)画像等々を確認
    •nicovideo-dl でダウンロード
    •CFで Zaurusに転送して再生テスト
    • 結構めんどいんですが、ちゃんと出るのが
    楽しくて本題を忘れてエンコに没頭する罠

    View Slide

  53. PC6001VX
     電源入れたら即BASIC
    http://eighttails.seesaa.net/category/15101643-1.html

    View Slide

  54. PC6001VX
     詳しくはOSC2017大阪の資料をご覧ください
    •マルチプラットフォーム対応
    PC6001エミュレータ
    •pkgsrcに入れたので、NetBSDと
    組み合わせれば何でも動く!?
    •Version 3.2.0 から互換BASIC内蔵
     →起動すればいきなりBASICが!
    https://speakerdeck.com/tsutsui/osc2017-osaka-pc-6001-emulator-on-netbsd-and-pkgsrc

    View Slide

  55. PC6001VX
     ビルド
    •Android版もあるくらいなので、
    pkgsrc でもパッチ無しでビルド可
    •Debug option無効化で軽量化
    •Qt5のビルドがやや大変ですが、
    ARMなら armv6 なマシンでビルド
    • armv4,armv5 の libpthread に armv7で
    削除された命令が使われているという問題が
    http://mail-index.netbsd.org/port-arm/2019/04/20/msg005602.html

    View Slide

  56. PC6001VX
     Zaurus対応
    https://twitter.com/tsutsuii/status/1197479130545053696

    View Slide

  57. PC6001VX
     Zaurus対応
    https://twitter.com/eighttails/status/1197496821502767106

    View Slide

  58. PC6001VX
    https://twitter.com/tsutsuii/status/1198015211602505728
     Zaurus対応

    View Slide

  59. PC6001VX
    https://twitter.com/tsutsuii/status/1198017632709906432
     Zaurus対応

    View Slide

  60. PC6001VX
    https://twitter.com/tsutsuii/status/1198026669958651904
     Zaurus対応

    View Slide

  61. PC6001VX
    https://twitter.com/eighttails/status/1198193346188959744
     おまけ

    View Slide

  62.  カーネルいじりも楽しいですが
    展示デモも違った楽しみがあります
     謎マシンでも動画再生できる時代
     お世話になった動画・ソフトの紹介
    で相乗効果
     準備はそれなりに計画的に、
    でも、楽しくやるのが一番です
    まとめ

    View Slide