PLAN9

Plan 9/9grid勉強会

Plan 9/9grid勉強会に参加。

http://groups.google.co.jp/group/kernelvm/web/plan-9

http://www.ustream.tv/channel/3298834#utm_campaign=unknown&utm_source=3298834&utm_medium=social

あらかじめ実機3台は確保していたのだが、plan9.isoをCDに焼くのに失敗したり、リモートからいじる方法を確保してなかったり、VirtualBox/FreeBSD/amd64で動かそうとしてもグラフィック画面に移ったとたんハングしたりで、せっかくの勉強会の楽しさが半減だった。準備不足。遅くてもQEMUでやるのがよかったようだ。

終わって外に出てみたら吹雪になっててびっくり。

第三回カーネル/VM探検隊 にいってきました

http://groups.google.co.jp/group/kernelvm

仕事はいそがしくても15時に抜けて、懇親会直前まで参加した。場所はIIJ神保町。低レベルレイヤの知識不足を痛感。

  • npppd/pipexの話
    • IPのハンドリングをカーネル内に入れてppp daemon と tun device の無駄をなくそうという話。→ 代わりにpipex
    • IIJはISPなのでpppはつくりつづけいている。npppdは4代目。
    • とりあえずopenbsdにマージされた。
    • 128MBのMIPSマシン(SEIL)で5000クライアントを相手にできる。1セッションあたり4〜10KBしか消費しないのが特徴。
    • FreeBSDにもmpdというのがあるが、これはnpppdよりも複雑な作り。
    • IPパケットだけをカーネル内に閉じて処理してLCPなどの制御パケットはユーザ空間のnpppdで処理するので、GREのシーケンス番号どおりに処理されない問題があって、それはpipexでゴニョゴニョすることで解決しているそう。細いことは分からなかった。(前提知識がないのでたぶん理解できない orz)
    • もっともemobileなんかはパケット順序がよく入れ替るので、そんなに順序に神経質になる必要はないが
    • 遅れてきたパケットは単純に破棄するppp実装が多いので、毎回LCP ECHOが遅れてくるようだと、相手がtimeoutしてしまうので、そのくらいは注意する必要がある。
  • 軽快なplan9
    • 特権命令: 実行をトラップできる命令
    • センシティブ命令: 実行をトラップできないと「まずい」命令
    • vmcall: non-root modeからroot modeになる。
    • VMRPC: ゲストOSからホストOSを呼べる。ホストOSのカーネルモードもいける。
    • iperfで測ってみると、10GbEを使い切れている。これはすごい。完全仮想化や準仮想化では20%くらいしかでていない。
    • [Q]VMRPCをつかうとゲストOSのアンチウィルスソフトを回避できてしまうが?→[A]ホストOSでやってください。
  • 脆弱性に関する技術的な何か
    • キジャクセイ ではなくて ゼイジャクセイ
    • でも cat は カット
      • 3大防御方法
    • ASLR: address space layout randomization (ただしheap splayでコードをあちこちに置くことで回避可能)
    • DEP: data execution prevention
    • UAC (役に立ってないけど)
    • plan9にはこれらのどれもない。
    • plan9はユーザ毎が独立していて、スーパーユーザというのもないので、被害は最小限に留められる(はず)
      • もちろんカーネルがやられればダメだけど
  • SEXYHOOK
    • たとえば時刻に関するテストをしたいときにシステム時計をいじるのはイヤだ。
    • 一時的に time() の実装をテスト用の関数に置き換えたらいい
    • でも、ふつうは time() 関数は直に呼んでるので置き換えは大変。
  • YUREX
    • びんぼうゆすりカウンターがある。
    • openbsdに実装してみた。
    • USBプロトコルアナライザで解析して、なんとなくプロトコルがわかった。
    • すでにsensorsフレームワークがあるので、それを利用。
    • 今後の展開
      • ゆれがとまったのを検出してPCを止める
      • テンションがあがりすぎたのを検出して rm できないようにとかメールで知らせてくれるとか。
  • UNIX/32V on SIMH
    • 昔のコードを動く状態で保存することが大事 (動態保存)
    • ブートローダが動かない
    • 原因はテープデバイスにコマンド投入したあとにDMAが終わるのをhaltして待つところで、haltするとVAXシミュレータが止まってしまいDMAが行われない...
    • ほかにもマイクロコードのバグもエミュレーションしなければいけないなどたいへん。

plan9gree

35fbf07b.jpg

第20回オープンソーステクノロジー勉強会
というのに行ってきた。
意外と人があつまっていたので関心は高いんだなぁとおもいつつ、
インストールしたことがある人は5人くらいだったか予想通りの少なさ。
もちろん私もインストールしたことがない。
1時間の予定だったが当然のようにその枠に納まるわけもなく30分オーバー。
でもプレゼンがふつうにMacで行なわれたのは残念。Plan9にプレゼンソフトはないの?


肝心の内容だが、前半の高野さんはPlan9の歴史とか概要とか。いくつか新鮮におもったのは、
プロセス生成がファイルではないというのは、いわれてみれば意外だ。
/procがあるんだからやれるのに、面倒だからやらないというはいかがなものか。
あと共有メモリもファイルになっていないということだった。mmapがないのとつながりはあるのだろうか?
ネットワークアドレスもファイルになってないということだった。もしアドレスがファイルになっていれば
echo "foo" >/net/udp/8.8.8.8 みたいなことができるんだろうけど、うまくセマンティックが合わせられなかったか?

プログラミングの話では、ヘッダファイルに#pragmaが埋め込んであってリンクするライブラリが書いてあり、
リンカがそれを参照するのでリンク時に-lxxxを指定する必要がないといってた。うまいなぁ。

プログラムがSEGVなんかで落ちるとUNIXならcoredumpされるが、
plan9ではbroken状態でストップしてデバッガでattachするんだそうな。
brokenプロセスの数は上限があるそうで、そういう意味ではcoreだらけでファイルシステムがあふれる心配がなくてよいかも。

unixカーネルはI/Oの多重化をしたが 、plan9カーネルはサービスを多重化しているというのは
RESTにつながってるよね、といってた。

後半の齊藤さんはKVM上でplan9を動かすという話。
コミケで「軽快なplan9」という冊子を50部さばいた(しかも頼まれて買いに来た人までいた)話から入って、
仮想化の概要の説明。で話の核心は「plan9の設定をplan9からしたくない(不馴れなのでできない)のでホストOSからできるようにする仕掛→VMの底抜き」
ゲストOSからVMCALLとかいう命令を発行するとホストに制御が移せるので、ネットワークをホストにやらせちゃえ
ということらしい。よくわからんが、カーネルデバッグするときにふつうはコンソールに出すが、コンソールドライバが初期化するまでどーすんの問題は、VMCALLをつかえはホストにログを送りつけられるので便利っす、とのこと。
たしかに便利そうだ。

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

    タグ絞り込み検索
    ギャラリー
    • 今日の練習 2018-11-15
    • 今日の練習 2018-11-15
    • 今日の練習 2018-11-13
    • 今日の練習 2018-11-11
    • 今日の練習 2018-11-11
    • 今日の練習 2018-11-10
    Amazon
    楽天市場
    adby google
    LINE読者登録QRコード
    LINE読者登録QRコード
    • ライブドアブログ