11を使っていましたが、早々にキートップが外れる、SSDが外れる、SSDが遅いと言う問題に当たってしまいました。R63/PSに乗り換えることになってしまいました。(6.99.24)を使う方法について、書きたいと思います。最初にdmesgを示します。これは、GENERICカーネルでdtraceサポートを有効化しただけのカーネルです。R63/PSに搭載されているIntelのチップセットでも、それを使用することができます。コンソール、XともにフルHDの解像度で使用することができます。Xにおけるアクセラレーションは有効化することができません。"PCI:0:2:0"EndSectionNoAccelオプションを指定する必要があると言うことです。Firefoxを起動すると、以下のようにエラーが発生しているようです。R63/PSのチップセットをNetBSDではサポートしていないためのようです。Intelチップセットの世代について理解していませんので、これ以上は言及しないことにします。外部ディスプレイ接続については、HDMIとVGAが用意されていますが、HDMI出力は使用することができません。11でもHDMI接続はできませんでしたので、まだサポートされていないのだと思います。VGA出力は、xrandrを使用しないでもミラーリングされる場合が多いです(詳細を探求できていません)。オーディオ内蔵スピーカーによるオーディオ再生については、問題はありません。マイク機能、ヘッドフォン機能については試していません。ポインティングデバイスアルプス電気製のトラックパッドとポインティングスティック(アキュポイントと言うらしい)が搭載されていますが、通常のPS/2マウスとしてしか認識されません。ポインティングスティックには、物理的に2つに分かれたボタンが用意されていますので、ポインティングスティックを使えば、右クリック、エミュレーションして中ボタンクリックも可能ですので、困ることはないと思います。Linuxには、アルプス電気製のデバイスのサポートもあるようですので、いずれNetBSDでも使えるようにできればと考えています。キーボードキーボードは普通のテンキーなしのJIS配列キーボードです。東芝独自のGHCI/SCIという仕組みでイベントが発行されます。FNキーとFn1キー等の組み合わせがWindowsでは使われますが、仕組みとしては、ほぼ全てのキーとFNキーの組み合わせに対してイベントを設定できるようになっています。内蔵ディスプレイのオンオフ、内蔵ポインティングデバイスのオンオフについては、valz(4)というデバイスドライバーを書いてサポートするようにしました。currentでは使用できます。本当は、内蔵ディスプレイの輝度の変更をしたかったのですが、これについてはACPIの一般的なコードがうまく働いていないようで、valz(4)からは操作できませんでした。acpivga(4)とかのコードをちゃんと理解しないといけないと考えています。有線LAN有線LANポートが内蔵されています。Vというもので、wm(4)として認識されます。非常に安定しています。MSI/MSI-Xを使うようです。b8:6b:23:86:df:bb無線LAN(WiFi)iwm(4)として認識されるのですが、すぐにエラーになって使えなくなってしまいます。11にもiwm(4)は搭載されていたのですが、どうだったのか...。エラーメッセージは以下の通りです。35821.11a/gのいずれでも同じ状況ですので、send-prくらいはしておこうと考えています。その他のデバイス他のデバイスについて、箇条書きにしておきます。SDカードスロットは一度しか試していませんが使えました。3/xhciは、搭載されていますが使えません。2/ehciが使えるので、とりあえずは困りません。内蔵のUSBカメラはuvideo(4)として使えます。ACPI接続のBluetoothコントローラーは認識できません。おわりにNetBSDを動かすために、新し目なマシンを用意するのは結構冒険だと思うのですが、ディスプレイ関係でアクセラレーションが効かない以外には、あまり問題はないマシンだと思います。Bluetoothコントローラー、ポインティングデバイスについては、改善を試みようと思っています。Encryptのベータテストに応募したところ、テストユーザーになることができました。そこで、証明書の取得方法を調べてみると、Pythonで書かれたクライアントを使って取得することが分かりました。Pythonで書かれているのだから、クロスプラットフォームなのに違いないと最初は思ったのですが、psutilというモジュールを使っており、これが各プラットフォームに独自のCで書かれたコードをたくさん持っていました。3.3.0をNetBSDでだいたい動くようにする中で分かった、NetBSD独自のシステム情報の取得の仕組みを紹介します。psutilは、ごく最近OpenBSDのサポートが追加されました。FreeBSDのサポートは以前からされています。NetBSDサポートの追加は、この2つのOS用のコードをうまく再利用しつつ進めました。Utilitiesの略で、プロセスやシステムの情報をアーキテクチャーによらず統一した方法で呼び出せる仕組みです。https://pythonhosted.org/psutil/にドキュメントがあり、実行例も丁寧に記述されています。動作確認も比較的容易です。NetBSDで動くようにするためのパッチは、http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/sysutils/py-psutil/patches/にあります。いう類いのプログラムを書く経験がほとんどないので、より良い実装方法がありましたら、教えていただければ助かります。システムの情報を入手する仕組みシステムの情報をユーザーランドのプログラムが入手するには、カーネルに問い合わせをして教えてもらわなくてはなりません。今回psutilでNetBSDをサポートするに当たって調べたところ、以下の2つの仕組みが用意されているようです。今回は、sysctlライブラリー関数の方を使っているのですが、私の理解できた範囲で、両方について説明してみます。sysctlライブラリー関数sysctlについては、sysctl(3)とsysctl(7)のマニュアルページを読みました。Base)と言うintの配列を使って欲しい情報を指定して、情報を入手する仕組みです。情報を設定することもできますが、今回はそのような使い方はしませんでした。sysctlと実行してみると、マニュアルページを読むことができます。sysctlを参照すると、いくぶんかは説明されています。MIBは、intの配列を定義して例えば以下のように手作業で作って使うこともできますが、sysctl(8)コマンドで使用するような文字列を使って、MIBを生成することもできます。&namelen)ほぼ、sysctl(8)コマンドで指定する文字列でMIBを作れるようです。kvmライブラリーに定義されている関数これらは、kvm(3)マニュアルページに解説されています。/dev/mem等を通じて情報にアクセスします。これも情報を設定することもできます。今回は、kvm(3)マニュアルページに解説されている関数は、結果的には使用しませんでした。実行中のカーネルだけでなく、core等から情報を取得することもできるようなので、役立つ場面もあるかもしれません。sysctl(3)での実例psutilにNetBSDサポートを追加するに当たって、sysctl(3)を使いましたが、sysctl(7)の解説だけでは、実例がなく良く分からないこともありました。NetBSDのsrcツリーの中の事例も参照しつつ進めました。以下には、sysctl(3)を使って、各種の情報を取得していく方法について、記していきたいと思います。なんとなく、NetBSDに特有なものを記載します。pkgsrc/sysutils/py-psutilだと、psutil/arch/bsd/以下の内容です。currentのみですが、以下のようにして取得できます。KERN_PROC_PATHNAME;mib[3]は、以下のように変えれば、他の情報を得られます。環境変数の数と、ここまで書いて気付きましたが、psutil_get_cmd_args()は書き方が最適ではないですね。KERN_PROC_NARGVを使えば良いでしょうね。psutilで使っている箇所は以下です。pathname);}プロセスの持つスレッド数を取得する各プロセスの情報は、kinfo_proc2構造体に格納できます。kinfo_proc2構造体にプロセスIDを指定して情報を格納するには、以下のようなMIBを用意します。pidにプロセスIDを指定します。PIDを指定して条件を絞ることを示しています。1;mib[2]は、以下のように変えれば、絞る条件を変更できます。ユーザーIDプロセスの持つスレッド数は、p_nlwpsに格納されています。psutilでの使用例は以下のようです。あるプロセスの開いているファイルディスクリプターの数を取得するには、以下のようなMIBを用意します。0;この結果として得られたkinfo_file構造体の配列の長さが、あるファイルの開いているファイルディスクリプターの数になります。Encryptは、psutilのnet_connectionsというメソッドを使っています。これは、netstat(1)やsockstat(1)のような機能で、システムの全てのソケット接続の状況をプロセスごとに取得するものです。NetBSDのsysctlでは、直接このような機能はないようです。そこで、sockstat(1)のソースコードを参考にして、kinfo_proc2とkinfo_fileの2種類の構造体を組み合わせることにしました。kinfo_porc2のki_sockaddrとlkinfo_fileのki_fdataが同じ内容を指しているので、その関係を使って結び付けました。おわりにpsutilのLinux用のコードは、多くがprocfsからの情報を使っています。BSDとの思想の違いは、こういう所にもあるのかもしれません。ある環境で仕事をせざるを得ない。Protectionのバージョンは14.0.xxxである。10.2というのがあって、まあ、企業で必要とするロギングはできるものなのであろう。Firefoxのアドオンを勝手に追加されるのは気に入らない。e10sとか阻害されても面白くないし。言うことで、試しに排除できるかやってみた。ExcelからVBAでアクセスしたい。個々の端末にODBCデータソースを設定するのはスクリプトで可能かもしれないが、面倒なのでADOとOLEDBの組み合わせでアクセスすることを考えている。