投稿

12月, 2015の投稿を表示しています

NetBSD/amd64 current on Toshiba dynabook R63/PS

はじめに Vaio Pro 11を使っていましたが、早々にキートップが外れる、SSDが外れる、SSDが遅いと言う問題に当たってしまいました。確かにDRMKMSにもちゃんと対応していて、良いマシンですが、結局東芝の直販サイトで安売りしているdynabook R63/PSに乗り換えることになってしまいました。 ここでは、dynabook R63/PSで、NetBSD/amd64 current (6.99.24)を使う方法について、書きたいと思います。 サポート状況 最初にdmesgを示します。これは、GENERICカーネルでdtraceサポートを有効化しただけのカーネルです。 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 7.99.24 (DTRACE7) #271: Mon Dec 14 23:27:23 JST 2015 ryo_on@brownie:/usr/world/7.99/amd64/obj/sys/arch/amd64/compile/DTRACE7 total memory = 8103 MB avail memory = 7849 MB rnd: seeded with 128 bits timecounter: Timecounters tick every 10.000 msec timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100 TOSHIBA dynabook R63/PS (PRB63PS-NDC) mainbus0 (root) ACPI: RSDP 0x0000…

Python psutilとsysctl(3)について

はじめに Let's Encryptのベータテストに応募したところ、テストユーザーになることができました。 そこで、証明書の取得方法を調べてみると、Pythonで書かれたクライアントを使って取得することが分かりました。 Pythonで書かれているのだから、クロスプラットフォームなのに違いないと最初は思ったのですが、psutilというモジュールを使っており、これが各プラットフォームに独自のCで書かれたコードをたくさん持っていました。 psutil 3.3.0をNetBSDでだいたい動くようにする中で分かった、NetBSD独自のシステム情報の取得の仕組みを紹介します。 psutilは、ごく最近OpenBSDのサポートが追加されました。また、FreeBSDのサポートは以前からされています。 NetBSDサポートの追加は、この2つのOS用のコードをうまく再利用しつつ進めました。 psutilは、Python System and process Utilitiesの略で、プロセスやシステムの情報をアーキテクチャーによらず統一した方法で呼び出せる仕組みです。
https://pythonhosted.org/psutil/
にドキュメントがあり、実行例も丁寧に記述されています。なので、動作確認も比較的容易です。 NetBSDで動くようにするためのパッチは、
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/sysutils/py-psutil/patches/
にあります。 こういう類いのプログラムを書く経験がほとんどないので、より良い実装方法がありましたら、教えていただければ助かります。 システムの情報を入手する仕組み システムの情報をユーザーランドのプログラムが入手するには、カーネルに問い合わせをして教えてもらわなくてはなりません。今回psutilでNetBSDをサポートするに当たって調べたところ、以下の2つの仕組みが用意されているようです。 sysctlライブラリー関数kvmライブラリーに定義されている関数類 今回は、sysctlライブラリー関数の方を使っているのですが、私の理解できた範囲で、両方について説明してみます。 sysctlライブラリー関数 sysctlについては、sysctl(3)とsysctl(7)のマニュア…