Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)

757 views

Published on

Recent OpenBSD/luna88k progress and brief explanation of OpenBSD's new feature KARL (Kernel Address Randomized Link).
This talk was held in Nagoya *BSD Users' Group session at Open Source Conference 2018 Nagoya.

Published in: Software
  • Be the first to comment

  • Be the first to like this

OpenBSD/luna88k yearly progress report (from May 2017 to May 2018)

  1. 1. OSC 2018 Nagoya OpenBSD/luna88kのご紹介 LUNA-88K この1年 Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ 健治 Twitter: @ao_kenji
  2. 2. 2 毎年のおさらい…LUNAとは? • LUNAシリーズ – オムロン株式会社が1980年代後半〜90年代 初めに販売していたワークステーション • LUNA, LUNA-II – CPU:モトローラ68030/68040(m68k) – NetBSD/luna68kが動きます • LUNA-88K, LUNA-88K2 – CPU:モトローラ88100(m88k) – OpenBSD/luna88kが動きます ⾒かけたら保護を!
  3. 3. 3 LUNA-88K{,2}:こんなマシンです 前面の 液晶パネル 個々のCPU動作 状況が分かる LEDマルチプロセッサ 対応 比較的 コンパクトな筐体 (ご家庭でもOK) CPU動作状況が 分かる電源ボタン Cバススロット (88K2のみ)
  4. 4. 4 要介護状態継続中 • またまた1台電源ユニット交換しました – 筒井さんいつもありがとうございます
  5. 5. 5 OpenBSDとは? • OpenBSD プロジェクトでは、フリーでマルチ プラットホーム対応の 4.4BSD ベースの UNIX 系 OS を提供しています。 • プロジェクトで特に⼒を⼊れているのは、 移植 性、標準化、正当性、積極的なセキュリティと 暗号機能の統合です。 • 半年に⼀度、定期的にリリースがあります。 • 最新リリース: OpenBSD 6.3 (2018年4月) • マスコットはフグ(ハリセンボン?)のPuffy。 http://www.openbsd.org/
  6. 6. 6 OpenBSD/luna88kとは? • OpenBSDのLUNA-88K{,2}への移植 • OpenBSD/mvme88kのコア部分+ NetBSD/luna68kのデバイス部分 • 歴史 – 2002年1月 移植開始 – 2004年4月 公式treeにcommit – 2007年8月〜2011年8月 電源ユニット故障により4年間進展なし – 2011年8月 電源ユニットを移植→復活 – 2013年6月 OSC名古屋で初展示
  7. 7. 7 コミット編:細々と続けております • シリアル周りのsoftint化 – NetBSD/luna68kの実装をほぼそのまま導⼊ – Xのマウスの動きがよくなったような? • KARL対応(後述)とld.soバグ対応 – Miodさんいつもありがとうございます • MPカーネルのMI_MPLOCK移⾏ • gcc3固有エラー対応 (gcc3はm88kだけ) OpenBSD/luna88k この1年を振り返って…
  8. 8. 8 リリース編:無事完了!! • OpenBSD 6.2 – Released October 9, 2017 • OpenBSD 6.3 – Released April 15, 2018 • 最近は tree locked からリリースまでの 期間が短くなりました – CD-ROM作らなくなったから? OpenBSD/luna88k この1年を振り返って…
  9. 9. 9 リリース編:遅マシンはつらいよ • リリースバイナリ作成に2週間弱かかります… 6.3の時はバイナリ作成 中にリリースアナウンス が先に出てしまいました … OpenBSD/luna88k この1年を振り返って…
  10. 10. 10 ちなみに… • ANNOUNCEMENTファイルより ---- THANKSTHANKSTHANKSTHANKS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Ports tree and package building by PierrePorts tree and package building by PierrePorts tree and package building by PierrePorts tree and package building by Pierre----Emmanuel Andre, LandryEmmanuel Andre, LandryEmmanuel Andre, LandryEmmanuel Andre, Landry BreuilBreuilBreuilBreuil,,,, VisaVisaVisaVisa HankalaHankalaHankalaHankala, Stuart Henderson, Peter, Stuart Henderson, Peter, Stuart Henderson, Peter, Stuart Henderson, Peter HesslerHesslerHesslerHessler, Paul, Paul, Paul, Paul IroftiIroftiIroftiIrofti, and, and, and, and ChristianChristianChristianChristian WeisgerberWeisgerberWeisgerberWeisgerber.... Base and X system builds by Kenji AoyamaBase and X system builds by Kenji AoyamaBase and X system builds by Kenji AoyamaBase and X system builds by Kenji Aoyama,,,, Theo deTheo deTheo deTheo de RaadtRaadtRaadtRaadt, and Visa, and Visa, and Visa, and Visa HankalaHankalaHankalaHankala.... OpenBSDはリリースバイナリをクロスビルドしない主義なので、 世界中で他にリリースバイナリ作れる人がいない… https://ftp.openbsd.org/pub/OpenBSD/6.3/ANNOUNCEMENT
  11. 11. 11 最近のOpenBSDの新機能:KARL • KARL: Kernel Address Randomized Link – a new “link-kit” allows the .o files of the kernel to be relinked in a random order, creating a unique kernel for each boot. (OpenBSD 6.2から導⼊) • カーネルのメモリ配置を毎回変えてセキュリ ティを高める • ちなみに 6.0 以降は、libc も起動時に毎回ラン ダムにリンクし直すようになっています (起動が遅くなるので自分のluna88kでは /etc/rc.conf.local でlibrary_aslr=NO 設定:-) Port maintainerから⾒た
  12. 12. 12 KARL:ざっくりと解説(1) • カーネルをmake installする時にオブジェクト ファイルとMakefile等⼀式を /usr/share/relink/${KERNEL}/ にコピー sayshell# pwd /usr/src/sys/arch/amd64/compile/GENERIC.MP sayshell# make install mkdir -p -m 700 /usr/share/relink/kernel rm -rf /usr/share/relink/kernel/GENERIC.MP /usr/share/relink/kernel.tgz mkdir /usr/share/relink/kernel/GENERIC.MP tar -chf - Makefile makegap.sh ld.script *.o | tar -C (→) /usr/share/relink/kernel/GENERIC.MP -xf - [[ ! -f /bsd ]] || cmp -s bsd /bsd || ln -f /bsd /obsd umask 077 && cp bsd /nbsd && mv /nbsd /bsd && (→) sha256 -h /var/db/kernel.SHA256 /bsd sayshell#
  13. 13. 13 KARL:ざっくりと解説(2) • 起動時、/etc/rc の最後で再度カーネルをリンク • 次回起動時はこのカーネルが使われる : # Re-link the kernel, placing the objects in a random order. # Replace current with relinked kernel and inform root about it. /usr/libexec/reorder_kernel & : cd $KERNEL_DIR/$KERNEL make newbsd make newinstall echo "¥nKernel has been relinked and is active on next reboot.¥n" cat $SHA256 /usr/libexec/reorder_kernel の最後 /etc/rc の最後 カーネルの .o ファイルがあるディレクトリで make && make install する … もう⼀度リンクすると何が変わるのか?
  14. 14. 14 KARL:ざっくりと解説(3) • 新しいカーネルをリンクするときに、オブジェ クトファイルをランダムな順番で配置する SYSTEM_LD= @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; ¥ umask 007; ¥ echo ${OBJS} param.o ioconf.o vers.o | tr " " "¥n" | ${SORTR} > lorder; ¥ ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} `cat lorder` (中略) newbsd: ${MAKE_GAP} ${SYSTEM_LD_HEAD} ${SYSTEM_LD} swapgeneric.o ${SYSTEM_LD_TAIL} mv -f newbsd bsd カーネル Makefile 抜粋 “sort –R”でランダム に並べ替え
  15. 15. 15 KARL:ざっくりと解説(4) 実際どうなってる? 起動したカーネルは /bsd.bootedとして保 存される その後、/bsdが再リン クされ、次回起動時に 使われるカーネルにな る MD5ハッシュ値を⾒る と、毎回違うカーネル が使われていることが 分かる sayshell# md5 /bsd* MD5 (/bsd) = a528c28a82914aa221165884611c7576 MD5 (/bsd.booted) = e9aaf15cd6e300ce67678a60b8933d8e MD5 (/bsd.rd) = 291d792b900547fcbf30d2b841e85f93 sayshell# sayshell# md5 /bsd* MD5 (/bsd) = 8cc8216d09260b1d2922993fcc1e31dc MD5 (/bsd.booted) = a528c28a82914aa221165884611c7576 MD5 (/bsd.rd) = 291d792b900547fcbf30d2b841e85f93 sayshell# sayshell# md5 /bsd* MD5 (/bsd) = 69cd8b711f384b63c219d96b894d0693 MD5 (/bsd.booted) = 8cc8216d09260b1d2922993fcc1e31dc MD5 (/bsd.rd) = 291d792b900547fcbf30d2b841e85f93 sayshell# 再起動1回目 再起動2回目 再起動3回目
  16. 16. 16 今回の展示について • PC-98用のPCMCIA増設アダプタを装着 • PCカード無線LANでインターネット接続 • フレームバッファ版mltermで256色表示 • sayakaちゃん(PHP版)でTwitter表示 vala版実⾏に必要なラ イブラリがm88kでは 作成途中でエラーとな り時間切れ orz
  17. 17. 17 まとめ(1) • 君は生き延びることができるか? – 今年もなんとか公式portとして生き延びまし た。 – コンパイラサポートの切れ目が縁の切れ目に なりそうな予感 – Miodさんのm88k gcc4に期待!? • これであと10年は戦える – と言ってから5年過ぎました:-)
  18. 18. 18 まとめ(2) 何が面白いのか? • メーカが想定していないことを実現する – 別のOSを動作させる – 非純正ハードを接続して動かす – 元の設計を超えた動作をさせる – そのために試⾏錯誤しながらソフトを書く – これが、もどかしい時もあるけれど楽しい • 最後は「愛」と「執着心」:-)
  19. 19. 19 謝辞 • 荒尾さん・蛯原さん・江富さん – LUNA-88Kを送付いただきました • 筒井さん – 何回もの電源修理 & LUNA用デバイスドライ バ & いつもアドバイスありがとうございます • Twitterで「いいね」くださる方 – 励みになります • 家族 – 怪しげな趣味に対する理解に感謝!
  20. 20. 20 あとはNBUGブースで… Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ 健治 Twitter: @ao_kenji お待ちしてま〜す︕

×