彷徨えるフジワラ

年がら年中さまよってます

solaris

絶版

O'Reilly から刊行されていた「Solarisデバイスドライバ」が何時の間にやら絶版になっていた.....つい先日(一ヶ月未満)、ジュンク堂に行った時には棚にあったのに!っつーか、絶版になると回収の動きは素早くて、オンライン書店は軒並み取り扱い停止だし、件…

Python Hack-a-thon 2010.07 & 東京 OpenSolaris 勉強会 2010.07

Oracle の SUN 買収の余波を受けて、OpenSolaris 勉強会も 2010.07からは開催場所が用賀から Oracle 青山ビルへと変更されることに。7月は丁度 Python Hack-a-thon と同日開催だったので、両勉強会をハシゴで。

ビルドはモジュール別ディレクトリで

solaris タグだと他のに紛れて後から見付けづらいので、ソースビルドに関するエントリは onbld タグで分類することに。Solaris 10 の dtrace モジュールを、OpenSolaris ソースからビルドしたモジュールで差し替える場合、ひょっとしたら fbt とかのプロバイ…

OpenSolaris 勉強会 2010.05

東京 OpenSolaris 勉強会 2010.05 に参加してきた。"Solaris Internals" の "Chapter 14: File System Framework" に関する発表は前回でひと段落着いたので、今回は気楽な参加。話す側の時も気楽だったんじゃねぇの?という突っ込みは無しの方向で。IPv6 の…

DTrace で const 指定が無視される件 - その3

さて、const の文法的解釈もわかったことで、早速 const 対応修正を入れて動作確認をしてみるものの、どうにも思ったように動かない。挙動を細かく調べて見ると、どうやら構文解析の際に、問答無用で const 修飾に伴う dt_decl_attr(DT_DA_CONST) 発行が先行…

DTrace で const 指定が無視される件 - その2

色々弄繰り回しているうちに、はて const 修飾って言語仕様上どうなってたっけ?という根源的な問題に突き当たる。 hoge(const char* v1[], char const* v2[], char* const v3[]) 上記の様に宣言された場合、コンパイラによって禁止される各引数へのアクセス…

DTrace で const 指定が無視される件 - その1

DTrace でユーザ定義プロバイダを作成する際に、プローブ引数の型宣言を const 修飾した場合: provider foo { probe bar(const char *a); };このプロバイダ定義を元に、C/C++ 向けヘッダファイルを生成すると: extern void __dtrace_foo___bar(char *); こん…

DTrace と関数宣言の名前無し引数と typedef 型

DTrace の ML に 以下のような投函が。 バグ 6494528 で困ってるんだけど、誰か修正した人居ねぇ?(意訳) バグ 6494528 ってのは、typedef した型の配列を引数に持つ関数の宣言において、引数名記述を省略すると文法エラーとみなされる、というもの。つまり:…

Solaris10 のソース状態構築 - その1

DTrace Day 2010.03 で発表した Unlimited DTrace を、Solaris10 上で稼動させるには、Solaris10 向けに DTrace をビルドする必要が。とりあえず DTrace の部分限定で良いので、OpenSolaris のソースを元に特定の版の Solaris10 相当のソースを構築できない…

DTrace の sizeof() 問題を調べる

以前から気になっていた DTrace の sizeof() 問題の原因を調査することに。自分のバグと言うわけではないけれど、ちょっと入り組んだ構造の受け渡しをする関数を監視しようとすると、途端にこの問題に足をすくわれかねないので、このまま放置しておくと眠れ…

OpenSolaris 勉強会 2010.04

東京 OpenSolaris 勉強会 2010.04 に参加してきた。先月は DTrace Day 2010.03 と題して DTrace 特集だったため、通常勉強会としては一ヶ月振り。今回は for Admin(仮) との同時開催だったのだけど、COMSTAR の話とかは僕も聞きたかったなぁ。とりあえず、資…

MSB first マシンがやってきた

ヤァヤァヤァ。年頭に、余計なものはなるべく買わない、という誓いを立てたにも関わらず、気が付いたら Sun Fire V210 (Oracle との合併により該当ページが無くなってしまったので、リンク先はパートナー提携先の富士通) が自宅に鎮座している状況に。だって…

DTrace Day 2010.03

今日は OpenSolaris 勉強会の特別企画である DTrace Day 2010.03 に参加。

printf アクション実装の特定

VM 内部コードの解析で、printf() 系の処理がおそらくユーザ空間で実施されているだろうことは見当が付いたけど、本当にユーザ空間で処理されているか確認をしてみる。dtrace コマンドのソースが usr/src/cmd/dtrace/dtrace.c にあることはすぐに見当が付く…

DTrace VM 内部コード

DTrace は実際の情報採取処理がカーネルモジュールで実施されていて、その際の処理は一種の VM 上で稼動するイメージとなっている。で、DTrace の内部処理に関して調べるついでに、内部コードに関して色々試してみた。とりあえず、vn_open(= open(2) システ…

OpenSolaris ソースビルドに関する覚え書き

モジュールの個別ビルドをやりたくなったので、久々に OpenSolaris をソースからビルドしてみることに。ソースツリーを丸々ビルドする場合は、「やっぱり Sun がスキ!」の「OpenSolaris をビルドしてみよう」エントリや、「Building and Installing OpenSol…

DTrace の sdt プロバイダ実装を調べる

ふと思いついたカーネルモジュールのアイディアが、DTrace を使えば良い感じに実現できるのではないか?と思って、DTrace の内部実装を調べてみる。ちなみに、このエントリには有用な情報はおそらく全く含まれていません。単に「カーネルソースを読んでいた…

DTrace Day 2010.03

先日、DTrace の独自プロバイダの作成があまりにも簡単なことを知って、「これまでの苦労は何だったんだ!?」と絶望のどん底へ突き落とされる。自分ひとりだけ絶望するのはしゃくなので、1人でも多くこの絶望の道連れにしてやろう、ということで、OpenSolar…

OpenSolaris 勉強会

昨日は 東京OpenSolaris勉強会 2010.01に参加してきた。ちなみに今回から、受付の際に "Oracle 万歳!" と言わないと入室できないことに(嘘)。Python Hack-a-thon #2 での会場提供とかを知っているので、個人的には巷間で言われているほどには Oracle に悪印…

"zpool status" の core dump 問題

折角新規ゾーンを作成したので、非 global ゾーン側での "zpool status" 実行で core dump してしまう件に関して確認してみる。…………うーむ、何の問題も無く動くなぁ > "zpool status"@非 global ゾーンassert 行番号から見て zpool_main.c は 2009.06 == on…

ゾーンに手を出してみる

設定とかで実験的なことを試してみる場合、新たに起こしたゾーン(っていうか、最近は「コンテナ」という名称で統一しているのかな?)で作業したほうが影響範囲を絞り込めて便利そうなので、そろそろゾーンに手を出してみることに。ゾーン作成の手順に関して…

OpenSolaris 2009.06 向け入門ドキュメント

以前 OpenSolaris 勉強会でもらってきた 2008.11 向けの小冊子は、http://dlc.sun.com/osol/g11n/content/2008.11/ 配下から入手可能なドキュメントを再構成したものっぽいのだが、2009.06 向けのドキュメントも http://dlc.sun.com/osol/g11n/content/2009.…

ZFS プールのデグレード解消

何気なしに "zpool status" してみたら、ブート用プール(rpool)のミラーリングが片肺状態に。2本の RAID-1 構成で、1本が "can't open" なる状態になっているらしく、DEGRADE しているとの警告が。初期不良にしては(ほぼ連続稼動で)一月以上経過していて遅過…

/etc/networks + netstat 問題を掘り下げる

実装屋魂がうずくので、netstat の問題について更に突っ込んだ調査をしてみる。OpenSolaris の Bug Database で検索を掛けてみたら、"netstat -r on x86 calls gethostbyaddr() with byte-swapped IP address" とかは、まんま今回の障害の相似形だ。solaris_…

Solaris で cp932 なファイル名を CD-ROM に焼く

Solaris 環境でデータ CD/DVD を焼く場合、GUI 経由なら GNOME デスクトップの "CD/DVD Creator"(「場所」(Places)⇒「CD/DVD」で起動)を使用して、CUI ベースなら「CD/DVD の作成方法」を参考にコマンドをあれやこれやすれば、特に問題無く作業は完了する筈…

Emacs@Solaris で仮名漢字変換

OpenSolaris のデフォルトの日本語入力方法である Anthy とやらを Emacs から 使ってみる。いきなり怒られた。 Loading /usr/share/emacs/site-lisp/anthy/anthy.el (source)... eval-buffer: File `..../anthy/anthy-dic.elc' was not compiled in Emacs は…

/etc/networks 設定でハマる

ソフトウェア界隈で 10 年以上も飯を食っていれば、"-n" 指定無しの "netstat -r" 応答が遅い原因として、ホスト名/ネットワーク名解決のコストぐらいは思い付く様になる。では、/etc/nsswitch.conf や /etc/networks を設定した上で応答が遅い場合は?当然…

端末の文字コード

OpenSolaris デスクトップでは、ターミナルソフトとして gnome-terminal を使うのだけれど、どういうわけか gnome-terminal が対応している文字コードは基本 UTF-8 一択。標準テキストエディタの gedit は相当数の文字コードに対応しているのに…。仕事/環境…

Host-Only アダプタ込みで OpenSolaris@VritualBox を組む

Host-Only アダプタが使えるようになったので、気分一新、最新の VirtualBox(3.1.0) 上に OpenSolaris(2009.06) をマッサラな状態で入れることに。ネットワーク構成に関しては: 外部(e.g.: ISP リポジトリ)への接続は NAT 構成のアダプタ ホスト/ゲスト間の…

VMODSORT on ZFS

現行 Solaris のファイルシステムフレームワークでは、ファイル内容をキャッシュするためのメモリページ一覧を、vnode_t 毎に管理している。但し、キャッシュページのデフォルトサイズが 8K(2^13) バイトであるため、例えば 1G(2^30) バイトのファイルの場合…