sw

unix time 2038年問題

https://ja.m.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C

Kernel/VM探検隊@東京 No17 15周年

  • connpass
  • 2024-08-10 13:00〜18:00
  • IIJ本社(飯田橋)

久しぶりのKernel/VM探検隊に物理参加。

中央線が荷物はさまりで5分遅れた。

P_20240810_124212

受付で番号が必要ってきいてないよ〜 なんとかスマホで表示できて受付突破した。

P_20240810_130124

[2024-08-10 13:09]

自作の半導体、作ってみませんか?--知識ゼロから一日で回路設計~レイアウト~テープアプト(製造)までのハンズオンセミナーのご案内-- / Noritsuna Imamura

  • ISHI会
  • 半導体をつくってみたい初心者向け
  • オープンソース半導体: google efabless
  • openMPW
  • なぜ?
    • 半導体設計教育の危機
    • ツールは昔からあったけどつかいものにならなかったところDARPAが金をつっこんだ
  • AIST OpenSUSI
  • https://ishi-kai.org
  • 600nm (pentium 1世代くら)
  • あしたハンズオンセミナーがある(満席だがkernel/vmのために1席用意したっ)

[2024-08-10 13:20]

[2024-08-10 13:21]

ハンディターミナルでLinuxを動かしてみる / pepepper

  • FortiGate 50E RAM2GBももっている → linuxがうごくのがわかってて買うのはどうか?
  • ハンディターミナル WinCE armがうごく
  • 某電子辞書(sharp brain)とおなじでは?
  • BrainLILO: WinCEからUBOOT
  • smc命令を実行するリセットされてしまう→kernelをかきかえてubootにする→メモリがかきかえられてしまう→SDカードからブート
  • linuxはブートしてつかえたけどデバイスがうごいてない。

[2024-08-10 13:31]

  • Q: デバイス候補は?
  • A: たまたま

[2024-08-10 13:33]

知育おもちゃ

[2024-08-10 13:35]

  • すみっコパッド8インチ
  • Android12
  • こどもモードと大人モードがある
  • UARTみつからないのでジャンクを買ってきて熱風でSoCを剥す
  • さがしてみたけどみつからず
  • ソースコードを請求→3ヶ月かかった

[2024-08-10 13:45]

  • Q: ヒーターの価格は?
  • A: あとで。

[2024-08-10 13:46]

[2024-08-10 13:47]

「この発表は半分フィクションで半分真実です」&「この発表は全てフィクションです」 / はすじょい (hsjoihs)

2倍系列と3倍系列がある→六進数

ジュナイユの計算棒 (物理デバイスだが手回し計算機が直後にでてきて流行らなかった)

シンタックスハイライトあがると気分があがる

循環小数リテラルは繰り返しの前に r をつける。

[2024-08-10 14:10]

異世界ボードゲーム

sRGB D65 高緯度地域での白がベース

[2024-08-10 14:22]

休憩

なぜかrisc-vが配布されてたのでゲット。

P_20240810_142503

[2024-08-10 14:33]

Pinを使ってコードカバレッジツールを作ってみた話 / simotin13

  • 動的バイナリ計装ツール
  • gdbでトレースするとどこでもつかえるが遅い
  • DBI: DynamicBinaryInstrumentation
  • Pin: intel ソースコードは非公開
  • カバレッジツールはトレーサと行番号と.textの対応がわかればできる。
  • Pin+DWARF
  • sqlite3 gdbでトレースすると30分まってもシェルが表示されなかった 遅い
  • 自作ツールだとふつうにつかえる
  • 終了時のレポート作成は時間がかかる(sqliteのソースコードが多いため)
  • 課題: C++やRustだとSEGVで落ちる。

[2024-08-10 14:45]

ライトたくさんReSTIRを実装しよう / Naomasa Matsubayashi (fadis_)

  • ReSTIR
  • レイトレーシングで点光源が増えても速度を維持する方法

[2024-08-10 14:58]

[2024-08-10 14:59]

ついに生産が終わったけどZ80でまだまだ遊びたい / KOBA789

  • アマゾンにいた
  • Z80
    • 5V pin38本 (当時DIPは40本が最大だった)
  • raspidでSRAMをエミュレートする。Z80はWAITでまたせる。
  • WASM経由でRustをZ80でうごかす

[2024-08-10 15:09]

[2024-08-10 15:11]

いかにして命令の入れ替わりについて心配するのをやめてメモリモデルを愛するようになったか / ぬるぽへ (nullpo_head)

  • XXX write back cache = L1 cache はちがうのでは? 用語としては write buffer がただしいとおもう。
  • C++のメモリモデルはふくさつだが、ハードウェアメモリモデルはそんなでもない。
  • TSO: x86の挙動がわからなからintelをつついたら仕様がでてきてそれを学者がまとめたらTSOになった。
  • XXX TSOのacquire/releaseはrisc-v、armにしかない?

[2024-08-10 15:32]

[2024-08-10 15:33]

Symbolic Model Checker from scratch in Rust / r1ru

  • CTL
  • AG() All Globally
  • M,s0 |= EX f s0のつぎの状態がfを満すものがある
  • M,s0 |= AG f s0のさきはすべてfを満すになる
  • M,s0 |= ??(f U g) s0のさきはfをみたしていつかgになる
  • OBDD: ordered binary decision diagram
  • BDT: binary decision tree
  • OBDDはBDTの無駄なところをまとめたものでOBDDは一意になる性質がある

[2024-08-10 15:52]

  • Q: モチベーションは?
  • A: 理論を勉強して作ってみたくなった。
  • Q: 著者: 不動点ではなくてシンボリックでどうなったか?
  • A: クリプトモデルが論理式でかけるのでメモリがちいさくなるメリット

[2024-08-10 15:55]

休憩

P_20240810_155720

[2024-08-10 16:09]

BareMetalで遊ぶRaspberry Pi 5 PCIe編 / tnishinaga

  • オチ: firm設定すればUARTつかえた

[2024-08-10 16:28]

[2024-08-10 16:30]

古ガジェットを復活させたい (wip) / orumin

  • 配信ではなくてかっこいいガジェットで音楽をききたい
  • rockbox
  • すなおなRTOS
  • deadline sched
  • sonyも入手しているが技術が日本すぎてだめかも
  • 基本iPod

[2024-08-10 16:39]

  • Q: あたらしいのは改造がむつかしいらしいが
  • A: classicはいけそう

[2024-08-10 16:41]

[2024-08-10 16:42]

Passkeyはフィッシング攻撃を受けない…本当に? / Yoshikazu Nojima

  • パスワード認証: フィッシング耐性がない リスト型攻撃の耐性がない
  • webauthn: パスキーのベース
  • passkey = webauthn + multi-device credential + hybrid transport
  • 認証デバイスが信頼できないクライアントにつながるとアウト
  • QRコードを別のものとして提示されてしまうと騙されやすい。
  • passkeyアサーション詐取
  • BLE advなので10m離れていても成立するが近接チェックはできる。

[2024-08-10 17:00]

  • Q: クラアイントサーバー間はインターネットでつながってなくてもokか
  • A: ok
  • Q: keypairは耐タンパ領域にはいっていたらこまるのでは?
  • A: level3になって実装はそうなってなさそう。
  • Q: QRコードにタイムスタンプをいれたらいいのでは?
  • A: QRコードにタイムスタンプ領域があるけど有効につかわれてない。

[2024-08-10 17:04]

[2024-08-10 17:05]

署名とゼロ知識証明の初歩 / herumi

  • d=pow(e,-1,(p-1)(q-1))
  • 電子署名はRSAのダメなやりかたで説明するのはまちがい
  • 基本4情報の一部だけ開示したい
  • BBS+署名
  • ペアリングライブラリをつかうと比較的簡単
  • ゼロ知識証明をつかうと18歳以上を証明できる
  • zkSNARK
  • 署名鍵もpublic
  • Circom: rustでかかれたzkSNARKコンパイラ
  • EVM: etherreumブロックチェーンでうごく仮想マシン スタックマシン

[2024-08-10 17:25]

[2024-08-10 17:27]

[2024-08-10 17:28]

自作 TCP/IP スタック / yasukata

  • 15倍速い
  • 簡単なのでns-3でうごく

[2024-08-10 17:31]

[2024-08-10 17:32]

GPUアーキテクチャから考えるComputeShaderのスレッド数 / あーさん (a3geek)

  • GPUメーカーはたくさんあるが用語が統一されていない
  • 結論: 最適なスレッド数は測るしかない。

[2024-08-10 17:35]

[2024-08-10 17:36]

計算物理学生、MN-Coreを知る / Kanade

  • 分子動力学でもつかえる
  • 命令制御ユニットをもたない VLIW命令をながしつづける
  • 神のように賢いコンパイラが必要だが非公開

[2024-08-10 17:39]

[2024-08-10 17:40]

低い志で、レトロCPUを使う / Shozo Takeoka (takeoka)

  • FPGAをつかわないのは、CPUいらなくなっちゃうから
  • SRAM 2個でメモリもりもり
  • 10x10cmの基盤にはFPGAはのらない

[2024-08-10 17:43]

[2024-08-10 17:43]

かわいいキャラクターとおしゃべりしようサービスの開発 / ふぇのまー

  • かわいいキャラ
  • 人がいないのでAIで話相手をつくった。

[2024-08-10 17:46]

[2024-08-10 17:47]

QEMUのHPETのバグを直した話 / だいみょーじん

  • 自作OSでHPETをつかえるようにした。
  • なぜかイベントがまえだおしでくる。
  • OS自作するとQEMUのバグがぼろぼろみつかる。

[2024-08-10 17:50]

席がとなりだったherumiさんにちょっと質問して、帰り際にのりつなさんにご挨拶して帰宅。

P_20240810_180006

メモ

  • 話者とマイクの距離が人それぞれだし声の多きさもバラバラなので、
  • マイクの音量はマイク側にレベルメーターのフィードバックがあるべきだな
  • or AGCでレベルを一定にするかだな

Nextbeat Tech Bar:第一回ライブラリ開発について考える会

久しぶりに恵比寿で降りたかも。

P_20240524_183214P_20240524_183246

オープニング / @kmizu

19:06

  • 趣旨
    • ライブラリ開発における苦労話を共有したい。
    • 大体が暗黙知のまま
    • 書籍になってない
    • #NextbeatTechBar
  • 会社紹介

19:13

Rubyの標準添付ライブラリを開発する / @soutaro

19:15 リモート発表

  • gem = ライブラリ
  • RubyGem = ツール or ホスティングサービス
  • Bundler = インストール管理ツール Gemfileをよんで
  • なぜツールが2つあるのか? → rubygemがすごく古いから 2004年 mavenがでたあたり
  • bundler 2010年 5年間で必要なことがわかった
  • ライブラリ分類
    • embedded: 必須 Cで書かれている
    • standard lib: gemになっていない 歴史的に標準添付
    • deefault gems: core-teamが管理 openssl yaml
    • buldled gem: rubyをインストールするとはいるがruby本体との関係は緩い (bundled_gems)
  • rbs gemの開発
    • ruby 3.0からbundled gemsになっている
  • rbs: プログラムの型を表現する
  • rbs gemの中には組み込みの型が定義されている
    • rbsの定義はそのときのrubyリリース版のもの
    • なのでruby開発版ではCIのrbsテストが失敗したりする。
    • なのでプルリクエストを出しにくくなっている。
  • rbsをリリースしなくても最新rbsをcommit+pushしておけばCIでテストできて、それからrbsをリリースできるようになった。
  • rbs_skip_testsに書いておくとテストをスキップできるようにできる。

19:31

  • embededはrubyで書かれてないのでそのための解析機をつくるのはめんどくさい。

19:33

趣味のBlenderアドオン/ライブラリ開発で、Pythonエコシステムが想定する開発プロセスを無理やり導入する / @saturday06

19:33

  • キャラの物理テクスチャを共有する共通規格がない。
  • poetry/pyproject.toml
  • mypy --strict
  • blenderは一般的な書き方とはちがっててうまくとおらない。
  • bar: intProperty(main=0,...)
  • pythonの文法は簡単だからregexでがんばって回避
  • __init__.py
    • そのフォルダがパッケージになる。
    • どこでgit cloneするかでパッケージ名がかわってしまう。
  • blenderの型定義を書いた
    • 3000行になった
  • 3Dデータを不用意に公開してしまわないように工夫が必要だった
  • 一般人はgithubのページをみてもわからない
    • ファイルをへらしたreadmeブランチをつくって "download" をみつけてもらう。
  • blenderはZIPファイルのままでインストールしないといけない。
    • でも無意識にunzipしてしまう。。。
  • pull requestもらってもコードのクセがちがってマージしにくい。
    • そのままマージしてからlinter/formatterをかける。
  • github issueがそのサポートスレッドになってしまう。
    • 1issue=1バグにしてほしい。
  • バグ報告をgithubにだしてくれなくてdiscordに書かれてしまう。

19:51

  • libreofficeのバグを2chであつめて直してて粘着するひとがいて、それにくらべたら楽。
  • jarファイルも同じ経緯で拡張子を変えてて、おなじようにしてみてはどうか?
    • いまのところ変わらなさそう。
    • webstoreから入れる方向になりそう。

19:56

個人開発OSSが世界に勝てなかった話 / @yukinarit

19:56

  • pyserde パイセルデ
  • Rustのserdeはpyserde にインスパイヤされている
  • 証券会社: transportが multicastつかったりでgRPCつかえず → 自前
  • pydantic: データバリデーションライブラリ
  • なぜ勝てなかったか?
    • 1. 一人 vs 企業 開発力の差は問題ではないとおもっている
    • 2. 広報活動
    • 3. Rust スクリプトもRustで書くようになって pythonをつかわなくなった キャッチアップしなくなってしまった dogfooding重要
  • ドキュメントは英語で readme, tutorial/guide, API.
  • とことん自動化している CHANGELOG 作成も自動化している
  • 全部自分でやらない
    • OSS活動をしたいひとがいて、簡単なissueをのこしておくとやってくる。
    • Good first issueラベルをつけておくとよい。
  • プロジェクトの方針に合わないプルリクは入れない。
  • おもいきって互換性は捨てる。
  • 機能ごとの超簡単なexampleを作る。テストにもなるしshowcaseにもなる。
  • 無理をしない。家族優先にして空いた時間に。

20:15

  • github sponsorはまだ早いかなぁとおもってやってない。

20:17

(休憩)

ライブラリをパブリッシュせずにすばやく試す方法 / @exoego

20:31

  • ライブラリ開発でよく困ること
    • プルリクおくってもマージしてもらえない。
    • マージされたけどpublishされない。
    • forkすると、つかっている他のライブラリも対応しないといけなくなる。
  • maven centrall, npm, pypi, rubygems なしにつかえるといいなぁ。
    • 1. local publishする。CIはうごかない。
    • 2. gitリポジトリを指定する(とつかえるようにしてくれるツールがある)
      • VMのようなソースコードだけで動く言語ではないと
  • gitpackというツールがあるよ

20:40

SRE領域におけるライブラリ開発の取り組み / @sre_yamakita

20:40

  • site reliability engineering
  • 属人化させない
  • トレンドにながされない
  • バージョン管理はしっかりと SREはAPIよびだしが多くてバグると被害がおおきい

バニラJS開発ライブラリー事情 / @piro_or

20:46

  • 昔のfirefoxはJS注入になってて、静的解析しにくい。名前汚染とかも。

20:54

セキュアなライブラリ開発〜OpenSSFの取り組みについて〜 / @kamiazya

20:54

  • ts-graphviz
  • 依存関係の脆弱性
  • OpenSSF linuxfundation サプライチェーンの安全化
    • 1. OpenSSFガイド 資料集
    • 2. OpenSSFベストプラクティス バッジ
    • 3. OpenSSFスコアカード CLIツール

21:00

クロージング

〜21:01

懇親会

JS,TS,Rustとかいまどきの話ばかりで話の輪にバリアが...

懇親会終了まぎわにC++でもりあがってるところがあって、やっと話に入れたわ...

P_20240524_221110

ACRiルーム・ハンズオン【対面】:初心者限定FPGA入門セミナー

FPGAは会社の勉強会でだれかボードを買ってたような気もしたり(10年くらい前か?)、派遣の仕事で大きなプロジェクトでFPGAをプログラムするスクリプトをたたくのはやったことがあるが、FPGA自体をさわったことはまだなかったので、体験セミナーに参加してみた。

ひさしぶりに東工大 大岡山へ来たような気がする。P2P SIPとかPlan9の勉強会とかでちょくちょく行ってたのは10年ほど前になるのか。駅前でなにかイベントやってたけどスルー。

P_20240323_143820

正門を入ってすぐのところにきれいな建物ができててびっくり。

P_20240323_143855P_20240323_172155P_20240323_144317

受付で名刺が必要とのことだったが1枚もいらなかったとか、ACRiのアカウントを開設するのにメールを読めないといけないとか、ちょっとトラップあり。

利用方法はちょっとめんどくさい。

  • webからユーザー登録する
  • メールが届いて、サーバーのパスワードとACRiルームのパスワードが書いてある。
  • ACRiルーム(FPGA利用環境)の空きをさがして予約する。
  • 踏み台サーバーにsshでログインしてリモートデスクトップのポートフォワーディングする。
  • リモートデスクトップのクライアントを起動してACRiルームのデスクトップ(ubuntu)を開く。
  • Vivado起動

端末はMacだったので操作になれてなくて緊張した。キーボードも日本語配列だし。

P_20240323_144707

VivadoをつかってAND回路を実装する。手元にFPGAボードはないので入出力はVIOというのをつかってGUIで入力信号を変化させると出力が表示されるという仕掛。2入力のAND回路だけならすぐ終わるらしいがVIOがあるのでちょっとした時間がかかる。

メモ

  • ACRiは「あくり」とよむ。
  • Artyは3万円くらいの入門用でちょうどいい。
  • 試行錯誤してるときにビルド(っていうんだろうか?)が短時間で終わったら、ミスしてて最適化でごっそり回路が消えた可能性が高い。
  • XDC制約ファイルはベンダーが配布してる。

P_20240323_172415

USBの接続規格を調べる方法

bluetoothとUBS3が干渉するという話があって、今回買ったbluetoothアダプタはちゃんとUSB2でつながってるのか気になったので調べてみた。

Windows SDKのインストーラーからDebugging Tools for Windowsだけをインストールする。

スクリーンショット 2023-07-04 202758

"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\usbview.exe" を実行。ちゃんとUSB2でつながってた。

スクリーンショット 2023-07-04 235013

RootHubが1つしかないのは意外だ。

Windows11でオーディオデバイス名についた「2- 」を消す

Bluetooth USBアダプタをあちこち差し替えてたらオーディオデバイス名の頭に 2- がつくようになったキモいのでデバイスマネージャから 2- がついているやつを消しまくったら再ペアリングできなくなって詰んだかとおもったがBluetoothアダプタを削除してから物理的に刺しなおしたらすべて解決した。

たぶんこの手順でいけるとおもう。

デバイスマネージャを開いて(めっちゃ自然言語はむづいなってかんじる)「非表示のデバイスの表示」にチェックをいれる。

スクリーンショット 2023-07-02 233221

オーディオ関係のデバイスがぶら下がってそうなところを開いていって

スクリーンショット 2023-07-02 233304

2- がついてるやつとついてないやつをひとつずつ「デバイスのアンインストール」(Alt-A Alt-U)する(上の画面キャプチャではもう消した後なので 2- のやつはなくなってしまってるけど)。ひとつ消すと画面が再描画されて選択位置が先頭に戻ってしまうのでかなりめんどくさい。範囲選択してまとめてアンインストールできるといいんだけど。

スクリーンショット 2023-07-02 233452

BluetoothにぶらさがっているオーディオデバイスをぜんぶアンインストールしたらタスクバーのBluetoothアイコンからBluetoothデバイスの表示を選択して

スクリーンショット 2023-07-02 235306

Bluetoothアダプタを「デバイスの削除」。

スクリーンショット 2023-07-02 233106

あとはBluetooth USBアダプタを刺しなおせば作業完了。ペアリング情報は残っているようですぐに使える。

AWS Summit 2023

AWS Summitが幕張メッセで開催されて大学時代の友人がくるというので行ってきた。五反田→海浜幕張まで1時間11分。そんなに遠くないな。東京駅での山手線→京葉線のりかえは速足で6分くらい?

P_20230421_123121P_20230421_124314

会場。片方のホールはなぜか煙い。

P_20230421_124837P_20230421_130615

ぐるっと一周して何か見たいものがあるわけでもないので外に出てベンチでプアな昼食。朝からくるとタダ弁がもらえたらしい。お店で食べると高いし。まぁAWSのエンジニアくらい金もらってたら屁でもないんだろうが。

P_20230421_131751

せっかくなのでabemaの動画配信のセミナーをきいた。予約しておかないとみれないのかとおもってたら、どうも席があいてれば自由にきけるようだ。ちょっと用語がわからんかったけどメインの映像は5nine(99.999%)の信頼性を確保してるとかいってた。もともとcodec以外は自前で作り込んでたけど変化に追従するのがつらくなってきたとかでAWSにのっかってしまったらしい。まとめ記事→ABEMAの「サッカーW杯配信」が安定していた理由、CTOが明かすインフラの舞台裏 ABEMA Developer Confenrence 2023くわしく話してたらしい。

P_20230421_135919

ほんと暇だ... 各ブースではいろんなノベルティを配ってるけどビール配れや。

P_20230421_160827

さいごにサイレントセミナーをきいた。ホールにずらっとスクリーンがならんで音声はワイヤレスレシーバーで聞くというスタイル。ここではじめて受付でもらったイヤホンをつかう。音が小さいなぁとおもってボリュームをMAXにしても小さくて接触不良かとおもってグイっとプラグを押し込んだらいきなり爆音になった。どうやらグラウンドが浮いてたっぽい。f*ck

P_20230421_162424P_20230421_165901

スクリーンに映し出された映像がちょっと遅れてるので音声と同期してなくて違和感ありで、詰めがあまいな。

P_20230421_162528

ホールが煙かったのはこの演出のためだな。アマゾンは顧客優先というポリシーらしいが、この煙はいらんやろ。

P_20230421_161237

撤退。ぞろぞろAWSから帰る人たちと入れ替わりで野球観戦の人たちが駅からでてくる。時間つぶしにアウトレットを一周した。平日なのでお客もまばら。

P_20230421_171305

駅前で大学時代の友達と合流して飲み会。1軒目は鶏肉メインの居酒屋。

P_20230421_180108P_20230421_195625P_20230421_182305P_20230421_184629P_20230421_190050

2軒目は名前がおもしろそうだってことで入ったが、どうも若者向け安さが売りの店で雰囲気がおっさん向けではなかった。蛇口からお酒がでてくるセルフ。

P_20230421_213810P_20230421_201626P_20230421_202258

終電になんとか乗って帰宅。海浜幕張→東京→茅ヶ崎→上溝で2時間41分1518円。

nested Tmux

tmuxを入れ子にするとプレフィックスキー操作が煩雑になるのでこれまでつかわないでいたが、1つのリモートサーバーに複数のシェルを立ち上げたいときにいちいちsshログインするのはやっぱメンドクサイ。リモートでtmuxがうごいていればnew-windowやsplit-windowでさっとシェルを立ち上げられるのに。

tmux公式としては内側のtmuxでprefix2を設定するかprefix連打で対応しろってことだとおもっている。

ちょっと調べてみたがnested tmuxのイケてる実装はなさそうで、でもアイデアはこのnested Tmuxからいただいて、ちょっと作ってみた。

bind-key -n F7 run-shell 'NESTED=$(tmux show-option -v @nested); tmux set-option @nested "X$NESTED"; tmux set-option prefix None; tmux set-option status-style bg=red; test "$NESTED" = "" || tmux send-keys F7'
bind-key -n F9 run-shell 'NESTED=$(tmux show-option -v @nested); tmux set-option @nested "${NESTED#X}"; if test "$NESTED" = "X"; then tmux set-option prefix C-l; tmux set-option status-style bg=white; else tmux send-keys F9; fi'
bind-key F7 send-key F7
bind-key F9 send-key F9

set-option -g status-left "[#S]#{?@nested, #{@nested},}"

使い方

  • F7とF9がホットキーになっている。なぜF7/F9なのかというと、HHKBだと押しやすいから。ちなみにHHKBのFnは左Altにしている。
  • F7をおすと外側のtmuxのprefixが無効化されてprefixキーが内側のtmuxに直接届くようになる。
  • F9を押すと外側のtmuxのprefixが有効になる。

問題点

  • prefixは外側と内側で同じになってる想定。ちがってても動くけど。
  • prefix,F7,F9,bg=が決め打ちなのはダサい。
  • F7連打すると最内側のシェルにF7が貫通する。
  • マウスでwindow/paneの移動をされると厄介。

Kernel/VM探検隊online part6

オープニング / nekomatu(主催者)

スクリーンショット (564)

FPGA Subsystem in Linux Kernel / Masanori Ogino

  • FPGAのくみあわせ: CPUとバス接続、FPGA上にCPU(ソフトコア)、パッケージ(SoC)
  • drivers/fpga 12000行
  • fpga manager: プログラムの抽象化
  • fpga bridge: プログラム中の安全をまもる仕組み
  • fgpa regeon: フレームワーク
  • Q: partial reconfigはできるか?
  • A: partialはむつかしい→ライブでソースコード探検→デバイスによるが管理できそう
  • tokei: https://t.co/bAmHhEuR6k
  • Q: fpgaデバイスはcpuからどうみえる?
  • A: デバイスドライバしだい。pciのレジスタだったりgpuっぽくみえたり。
  • Q: fpga subsystemはどうつかわれている?
  • A: pciのようにprobeするのではなくてdevice treeの機能の提供とか、reconfigの統一(それまではベンダー固有のツールが必要)(でもまだメジャーなdistributionには入ってない)
  • u-dma-bufとudmabufはデータのながれる向きが逆
  • 低位合成: レジスタ、配線、ロジックを書くとFPGAの回路が出てくる
  • 高位合成: circt.llvm.org: PyTorch→ MLIR→systemc, systemverilogが出てくる

Ethernetのお話 / Hiroki Mori (yamori813)

  • XEROXが原型をつくってIEEEが承認したかたち
  • MAC,PHY,Trans,RJ45で構成される
  • etherヘッダは14バイトなのでIPヘッダが4バイトバウンダリにならないのでこまる。
  • switch接続の形: スイッチのPHYを本体のMACでつなぐものや、スイッチのMACと本体のMACをつなぐものも。
  • FreeBSDにはetherswtichがある。

「QEMUのバグを見つけてパッチを送った話」 / だいみょーじん

  • 自作OSをQEMUでうごかしていたらGDBをアタッチしてレジスタをみると値がおかしい逆ハイゼンバグに遭遇。
  • gdbにgdbをアタッチして調査
  • gパケットがqemuからgdbに送られてくる。
  • gパケットの構想はXMLで記述されていてqemu→gdbに送られている。
  • XMLの記述が矛盾していた。
  • gパケットの仕様ではレジスタの相対指定が正しいがqemuは絶対位置指定で送っていた。

休憩 10分

「低レイヤーから始めるGUI」 / Fadis

  • GPUの2つの機能: メモリの内容をディスプレイに送るののと計算。
  • RRM/KMS: 複数のレンダーノードが計算できるが表示はプライマリノードしかできない(Xサーバはプライマリノード)。
  • アプリが1つならプライマリノードで描画できる。
  • サーフェスは2画面以上用意されている(ダブルバッファリング用)
  • UIの基本形: 長方形、画像(長方形にテクスチャをはっただけ)、文字、記号(ベクトル)
  • インスタンシング: こまかい要求をなげるとGPUがひまCPUはいそがしくなるので、メモリにまとめてかいとく。
  • GPUでベクタ画像をレンダリングするのはなかなかむつかしい。
  • でも極端なサイズで描画されることはすくないので三角形に事前に分割してしまう。
  • 生成したglTF(json)の確認にはblenderがつかえる。
  • フォントはトポロジがちがうのでインスタンシングはつかえない→インダイレクトドローをつかう。
  • HarfBuzz: 文字列からグリフの置き場所をおしえてくれるライブラリ.
  • ICU: UBIDI: 文字の向き(LTR, RTL)を判断するライブラリ
  • ICU: UBRK: 折り返しできる文字列を返してくれる。
  • ubidi→ubrk→harfbuzz→折り返し処理
  • 文字: 1em, offset(カーソルから描画する位置の指定), advance(カーソルの移動量)
  • 入力はlibinput
  • xkbcommon: キーボードレイヤを指定するとキーの位置から文字がわかる。
  • 日本語はdbusでfcitx(ファイテックス)で。
  • 未実装: 半透明、縦書き、アンチエイリアス、OpenType、sdbus(LGPL)、RaspberryPiでクラッシュ
  • 2ヶ月でつくった。
  • VulkanはGPUを直たたきできるAPI。
  • VulkanはOpenGLの下半分という認識。OpenGLは古いので上半分はエミュレーションレイヤになっている。
  • VulkanはむつかしいAPIなので簡単につかうにはOpenGLが今でも便利。
  • アラビア文字ではコードポイントの置き換えが必要になってくる。どこかで処理が必要...

「Zigはうっかりコーディングミスを絶対に許さない!」 / @tetsu_koba (小林哲之)

  • Zig言語: 静的型付きのコンパイル言語。C言語に今までの知見で再構成したもの。
  • 5分でざっと理解するZig言語: https://zenn.dev/tetsu_koba/articles/2da58bd66586aa
  • うっかりミスをふせぐ: 自動チェック & アノテーション
  • a +% b とかくとオーバーフロしたときにエラーにならずwraparound。飽和演算もある。
  • 関数引数はimmutable。
  • グローバル変数をローカル変数でshadowingは禁止。
  • 未使用引数は明示的にすてないとだダメ。
  • zigはひよったりしない。
  • 夏ごろに流行った。

「機械語で書くRuby処理系のその後」 / monochrome

  • monoruby: rubyのrust実装
ruby->ast->bytecode->interpreter
                   ->JITcompilier
  • クロージャをつくるとローカル変数がスタックからヒープに移動してフレームからのポインタがつけかわる。
  • ループはLOOP_START,LOOP_ENDというバイトコードでかこまれている。
  • 再コンパイル: JITコンパイルするときに実行されてないブロックがあると型情報がないのでコンパイルできず単にインタプリタを呼ぶだけのコードを入れる。数回通るとJITコンパイルが再実行される。
  • CRuby 3.2.0-yjit デフォルトでJITはオフになっている。
  • 再コンパイルで枝だけをコンパイルするのは難しいのでメソッド全体をコンパイルしなおしている。
  • rubyのスタックとCPUのスタックを両方ハンドリングするのはむつかしいのでCPUスタックに統一している。
  • JITコンパイル: いらなくなったコードを消す部分が本来は必要。
  • JITに対する攻撃 jit spraying

休憩 10分

「異世界人のためのOSを作っていく(long version)」 / hsjoihs

  • 架空世界創作をやっている
  • 文字、発音、ゲームがある。
  • 低レイヤからアセンブラとかつくっていたが他人の関心をひけないので高レイヤからせめてみる。
  • グラフィカルシェルをMikanOSの上に移植したというかたち。
  • デスクトップのアスペクト比を1:√2に
  • デバッグビルドすると表示はasciiになる。
  • 時刻の異世界設定はある。物理法則はおなじ設定。
  • Rui Ueyama compilerbook any% 縛り実況
  • 縛り実況: 設定を追加してゲームをむつかしくする
  • 初見実況: はじめてのゲームを前提知識なしに。
  • 「低レイヤを知りたい人のためのCコンパイラ作成入門」をゲームにする。
  • 縛り: アセンブリではなくてELFを出力する、フォーマットを調べすぎてはいけない、ふたりで交互に実装することで可読性を担保
  • アセンブリでコードを書いてコンパイルしてstipしてcmpして吐くELFのテンプレートにする。
  • アセンブラ・リンカがいかに複雑な仕事をしていたかわかった。
  • ふたりでやるとやりすぎて学業がおろそかになるのを回避できる。
  • 異世界OSの実演
  • 異世界ボードゲームの実演

「俺ASICと俺CPU "松竹V(しょうちくぶい)"」 / takeoka

  • OpenEDA, OpenLANE
  • ロジック部の開発フローはかなりOSSがある
  • PDK(半導体プロセスの制約条件)
  • GAFAはFPGAは遅くて電気をくうのでデータセンター利用は避けがち。
  • エッジコンピューティングのアナログ混載も視野か?
  • GNU Prologは論理推論で必要(世界でこっそりつかわれている?)
  • ハードウェアマルチスレッド (OS不要)
  • ハードウェアセマフォ
  • LR/SC もある
  • ROS2もハードウェア実装 (かなり小さな資源で実現できる)

音をアレする / KOBA789

  • ミキサーは世紀末半導体不足のため金で解決しない(しかも高い)
  • デジタルミキサーをつくるのはたいへん
  • USB Device Classes: 汎用デバイスの規格群
  • USB Audio Class:
    • terminalという概念がある
  • I2S: デジタル音声規格
  • サポートターゲット 13種類
  • apt-get install gcc-aarch64-linux-gnu でクロスコンパイラがふつうにはいる
  • gdb-multiarch でリモートデバッグ
  • PC相対で飛べないとき: range extension thunkを生成して経由する。 ベニアとかいってり
  • ARM32: ARMとThumbモードの切り替えはjumpのついでにやる。アドレスのLSBがThumbの区別になっている。リンク時にモードきりかえあり/なし命令が決まる。
  • SPARC64はCALL はMSB 01 でアドレスに30bitもつかえる。アドレスLSB2bitはアラインされていて00なので実質どこでもとべるが、命令の1/4の空間をcallにつぶしてしまったのは良いトレードオフだったかは不明。
  • RISC-Vは移植難易度が高い。range extension thunkとは逆のやりかたで近いときはリンカがjump命令を短かくする。
  • 64bit PowerPC ELFv1: では関数ポインタは関数のアドレスと%r2(GOT)のタプルになっている。
  • SH-4: ドキュメントが貧弱でまちがいもおおい
  • リンカ移植はCPUに詳しい人にまかせるよりリンカの作者がちょっと勉強して移植するのが速い。
  • MIPS, PA-RISCは標準から逸脱していて移植がむつかしいが。
  • 要望: PC相対load/store命令は必ず必要。
  • moldのプログラムはテンプレートになっているのでターゲットごとにインスタンス化される。
  • C++20の機能をつかってエレガントに移植できるようになっている。
  • ほかのリンカが複雑なのはベンダーが個別に移植しているのでどうしてもコードが増える。
  • ubuntu,suseがサポートしているarchはmoldでもサポートしたい。どのarchもサポートしていると(自動ビルドの関係から)採用してもらいやすい。
  • moldの移植コード400行が資料としての価値がでてくる。
  • 有償版: sold
  • modl: githubスポンサー $3500/月

クロージング

  • 次回4月中頃の予定

BitVisor Summit 11

東大柏キャンパスはまだ行ったことなかったので、せっかく現地参加ありなので行ってみることに。しかし遠いな。上溝から東大柏キャンパスまで片道2.5時間。交通費も片道1500円弱。(産総研つくばだと東京駅から産総研前まで高速バス一本でいけるので便利がいいんだが)

P_20221207_111132

柏の葉キャンパスから東大まではシャトルバスで。「図書館に行きます」と行ったら乗れた。

P_20221207_112702P_20221207_113820

P_20221207_114905P_20221207_115049

1時間前に着いたので食堂「プラザ憩い」で日替わりランチ(590円)。混雑してるかとおもったら案外空いてた。食べおわったあと、となりの食堂「カフェテリア」をみにいってみたらこっちは行列ができるくらい混んでた。ぱっとメニューをみたかんじこっちの方がボリュームがあるからかな。

P_20221207_120923

現地参加7人。

[2022-12-07 13:00]

開会挨拶 / 品川 高廣

  • armがでてきたのは時代のながれ
  • bitvisor論文(VEE'09)は参照数がここ1,2年で増えてきた。セキュリティ関係か。

P_20221207_130430

[2022-12-07 13:09]

BitVisor 2022年の主な変更点 / 榮樂 英樹(株式会社イーゲル)

  • nobody cared問題の対応
  • intel nic e1000e
  • broadcom nic
  • PKRU state
  • moveabs
  • DMA_...
  • earlyprintk
  • msgregister
  • NVMe ANS2
  • NVMe namespace
  • SQLiteの時刻
  • https://bitvisor.sf.net
  • 新機能としてはearlyprintkくらい。
  • TEEとかSGXとかSEVとかVMMでは対応が必要?
    • VMMがなにかしようとしない限りはなにもしなくてよいはず。
    • いまのところ用途がおもいつかない。
    • メモリがどうつかわれるかはbitvisorからはわからないし。
    • single vmなら暗号化するのありかなぁ。(考えてないわけではない by 品川)

[2022-12-07 13:38]

[2022-12-07 13:40]

BitVisor on Aarch64 / Ake Koomsin(株式会社イーゲル)

英語リスニング能力ゼロなので雰囲気だけ感じた

  • demoあり

[2022-12-07 14:16]

  • QA

[2022-12-07 14:22]

休憩

[2022-12-07 14:32]

Thin Hypervisor on AArch64 / 森 真誠(産業技術総合研究所)

MilvusVisor 今年の進捗

[2022-12-07 14:51]

  • 高速リストアでPOSTとUEFI初期化がなくなってFX70ではブート時間が半分になった。
  • 性能としては高速リストア(カーネルの入れ替えはできない)とkexecとの比較
    • 高速リストアの目的としてはユーザがkexecでカーネル入れ替えても元にもどせる。
  • SIGOS 9月 http://id.nii.ac.jp/1001/00220014

[2022-12-07 15:00]

[2022-12-07 15:01]

BitVisorであやつるコンテナネットワーク / 中田 裕貴(さくらインターネット株式会社)

  • スライド
  • sandbox
    • kata: 起動が遅くなる
    • gvisor: アプリがおそくなる
  • sandbox tailoring
    • アプリにあわせて隔離する(過剰にならないように)
  • subaco: ネットワーク隔離
  • TCPは性能が落ちないがUDPはけっこう落ちる
  • nginx,memcachedはsubacoで速くなる(隔離の範囲が狭いから当然ともいえる)
  • virtio-netがスケールしないとコンテナ隔離でつかえない

[2022-12-07 15:31]

  • busをふやすのはpci bridgeをつくる時間がなかった
  • 基盤系の研究は有用性を示すのはけっこむつかしい
  • bitvisorのvirtio-netはメモリコピーを盛大にやっているが、subacoではいろいろコピーを削除している。

[2022-12-07 15:39]

[2022-12-07 15:40]

閉会

トイレにいったら帰りシャトルバスがちょうど行ってしまったあとだったので1時間弱ちんたら仕事して時間つぶしするなど。

P_20221207_160913P_20221207_163954

帰りのシャトルバで 先を告げよう と「駅に行きます」といったらハァって顔されたので「図書館です」っていったら何とか通じた。シャトルバス運行案内シャトルバス時刻表にちゃんと帰り方を書いておいてほしい。

P_20221207_170049

P_20221207_170152

記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索
    ギャラリー
    • 今日の練習 2025-01-10
    • エディオン オリジナルLEDライト
    • エディオン オリジナルLEDライト
    • エディオン オリジナルLEDライト
    • エディオン オリジナルLEDライト
    • 今日の練習 2025-01-07
    Amazon
    楽天市場
    adby google
    LINE読者登録QRコード
    LINE読者登録QRコード