Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSC2015Kyoto NetBSD and old machines
Search
Izumi Tsutsui
August 07, 2015
Programming
0
2k
OSC2015Kyoto NetBSD and old machines
OSC2015 関西@京都 8/7(金) 15時〜の NetBSDセミナー枠で発表した
「20年前のマシンを NetBSDでメンテするということ」
のスライドです。
Izumi Tsutsui
August 07, 2015
Tweet
Share
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
18
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
140
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
250
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
260
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
130
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
210
GitHub Actionsを使ってNetBSDマイナー機種用のビルドテストCIを書いてみた話 / OSC2025Osaka
tsutsui
0
170
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
510
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
730
Other Decks in Programming
See All in Programming
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.6k
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
120
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
230
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
690
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
130
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
2
250
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
330
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
410
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
370
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
240
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
280
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
180
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Ruling the World: When Life Gets Gamed
codingconduct
0
160
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
950
Building Adaptive Systems
keathley
44
2.9k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
20年前のマシンを NetBSDでメンテするということ オープンソース カンファレンス2015関西@京都 なぜ謎マシンなのか ふたたび Izumi Tsutsui
[email protected]
LUNA@OSC京都 ご当地展示 since 2011
今年で 5年目
※OSC2014京都 mikutterセミナースライドより https://t.co/3jHbtyzIAe
おっさん まじやばい
LUNAとは よしだともこ先生のブロクより LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つオ ムロン株式会社が発売していた、UNIXワー クステーションの名前です (その当時、私はこの会社のUNIXワークス テーション開発部門で働いていました) http://notredameningen.kyo2.jp/e422862.html
初代LUNA: 1989年発売 LUNA-II: 1991年発売
来場者の方の感想 学生の方: 「同い年です」 「まだ生まれてません」 年配(?)の方: 「LUNA使ってました」 「どうやって液晶を つないでいるのか?」
VGA改造してます
NetBSDとは えびはらさん「NetBSDのご紹介」より NetBSDは、4.3/4.4BSD&386BSDベースの OSです。プロジェクトは1993年3月21日 から開始していて、現在も活発に開発が進 んでいます。60種類以上のハードウェア を、単一ソースツリーでサポートしていま す。 https://github.com/ebijun/NetBSD/blob/master/Guide/guide.rst
60種類以上? 2015年8月現在 acorn32 algor alpha amd64 amiga amigappc arc
atari bebox cats cesfic cobalt dreamcast emips epoc32 evbarm evbmips evbppc evbsh3 ews4800mips hp300 hpcarm hpcmips hpcsh i386 ibmnws hppa iyonix landisk luna68k mac68k macppc mipsco mmeye mvme68k mvmeppc netwinder news68k newsmips next68k ofppc pmax prep rs6000 sandpoint sbmips sgimips shark sparc sparc64 sun2 sun3 vax x68k zaurus http://www.NetBSD.org/ports/
最近は流行に乗って ラズベリーパイ等の ARM系サポートが 活発です (NetBSD/evbarm)
20年前のマシンとは HP 9000/300: 1985年〜 SONY NEWS: 1987年〜 OMRON LUNA: 1989年〜
・hp300 ・news68k ・luna68k いずれも4.4BSDでも サポート対象でした 4.4BSD (1992年) ※セミナー発表後訂正 完全に勘違いしてて発表時に気づいたのですが、 4.4BSDに入ってるのは
MIPSの news3400 で、 それを元にした NetBSD/newsmips を参考に NetBSD/news68k の移植したという流れでした…
今は私が面倒見てます( '−`) 1999年〜 2004年〜 2012年〜 http://www.NetBSD.org/people/port-maintainers.html
なぜ謎マシンで(略) 本末転倒 「そこに山があるから?」 http://www.ceres.dti.ne.jp/tsutsui/netbsd/port-news68k.html#19990410
自分で移植をトライして、 それで動くようになったら なんかすごくない? ……というくらいのきっかけ ちなみに移植始めるまで NEWS触ったことありませんでした (ゴメンナサイ)
NetBSDの移植性 ・各機種で共通な部分のソース ・各機種で固有の部分のソース ・それぞれをつなぐインターフェース これらが整理されていることが NetBSDの特徴であり移植性の源です
謎マシン移植とは OS共通部分 メモリ管理 タスク管理 ファイルシステム ネットワークプロトコル …… 共通 デバイス ドライバ
SCSI ATA Ethernet …… CPU 固有部 割り込み アドレス変換 …… 機種固有部 ←OSの全体の5%くらい?
謎マシン移植とは OS共通部分 メモリ管理 タスク管理 ファイルシステム ネットワークプロトコル …… 共通 デバイス ドライバ
SCSI ATA Ethernet …… CPU 固有部 割り込み アドレス変換 …… 機種固有部 ←OSの全体の5%くらい? この部分を書くのが 「移植」という作業
謎マシン移植とは https://twitter.com/tsutsuii/status/575350057462956032
https://twitter.com/tsutsuii/status/575350376796405761
https://twitter.com/yojiro/status/575350578982735872
◯| ̄|_
移植の次は 移植して最初に動いた時は 画面・ディスク・ネットワーク くらいしか動いてない まだ動いていないものを 動くようにする
作る
書く https://twitter.com/tsutsuii/status/10177412312
展示する
もらう https://twitter.com/MiodVallat/status/446550357272174593
書く https://twitter.com/tsutsuii/status/500724224693006336 https://twitter.com/tsutsuii/status/500728603546370051
展示する https://twitter.com/tsutsuii/status/503008453669822466
それでもそのうち ネタが切れてくるんですよね…… ぼちぼちやりましょう
新しいデバイスサポートを 書いたりしなくても、 メンテが必要なことは 実はそれなりにあります
OS構成 OS共通部分 メモリ管理 タスク管理 ファイルシステム ネットワークプロトコル …… 共通 デバイス ドライバ
SCSI ATA Ethernet …… CPU 固有部 割り込み アドレス変換 …… 機種固有部 ←OSの全体の5%くらい?
OS構成 OS共通部分 メモリ管理 タスク管理 ファイルシステム ネットワークプロトコル …… 共通 デバイス ドライバ
SCSI ATA Ethernet …… CPU 固有部 割り込み アドレス変換 …… 機種固有部 ←OSの全体の5%くらい? OS全体共通部分が変わった場合、 機種別の接続I/Fも書き直す必要がある
NetBSD 5.0 が出る前の SMP性能向上の大変更では 古いm68kマシンが 結構大変でした……
http://mail-index.NetBSD.org/port-luna68k/2007/03/03/msg000015.html
NetBSD/luna68k は 実機を持っていないのに いろいろメンテしてて、 OSC2011京都に向けて 実機を入手してテストしたら ほぼそのまま動いたのが うれしかったんですよ!!
OS構成 OS共通部分 メモリ管理 タスク管理 ファイルシステム ネットワークプロトコル …… 共通 デバイス ドライバ
SCSI ATA Ethernet …… CPU 固有部 割り込み アドレス変換 …… 機種固有部 ←OSの全体の5%くらい? 共通のドライバが書き換わっただけで、 ある日突然動かなくなった事例も
Eject で panic 事件 https://twitter.com/7n2jju/status/501658321330270208
前は動いてたはず… https://twitter.com/tsutsuii/status/501713998057046017
本当にパニクる (´・ω・`) https://gist.github.com/tsutsui/5e0df8c47bb1b85be99b
謎のドライバ記述 ここで構造体ポインタ fd が NULLになってるぽいんだけど… http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238
謎のドライバ記述 この初期化は何? (´・ω・`) http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238
謎のドライバ記述 ここの fd のアクセスでは 落ちないの? (´・ω・`) http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238
memset(lp, 0, sizeof(struct disklabel)); memset(lp, 0, sizeof(struct cpu_disklabel)); memset(lp, 0,
sizeof(struct disklabel)); memset(clp, 0, sizeof(struct cpu_disklabel)); これで直ったんだけど…
直ったのはいいけど、 最初にコミットされた 18年前のソースから 変わってないんだけど… しかもちょっと前まで動いてたし
とりあえず修正コミット http://mail-index.NetBSD.org/source-changes/2014/08/19/msg057893.html
某blogに取り上げられる http://cpplover.blogspot.jp/2014/08/sparcnetbsdeject.html
なぜかバズる あっきぃさん ごめんなさい
バグ発現の原因 2番目の memset() は最初から overrun しててはみ出していた (が、偶然後ろに何も無かった?) http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238
http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238 バグ発現の原因 NetBSD 6 → 7 の間で、 構造体 fd_softc に含まれる
機種共通部構造体サイズが変化 (約240バイト→約270バイト)
http://nxr.NetBSD.org/xref/src/sys/arch/sparc/dev/fd.c?r=1.154#2238 バグ発現の原因 256バイトを超えたことにより malloc() の割り当てが変わり、 fd が disklabel 構造体の後ろに 配置された
→結果上書き発生
これに限らず、 何もしてないのに ある日突然発動するバグ 結構あったりします 特にgccのバージョン上がった時とか
まとめ • 自分で書いて動くと楽しいです • ネタや気力が尽きてきたら OSC展示駆動がおすすめです • ソフトであっても放置してると 動かなくなるのでメンテ重要です