VirtualBoxと実マシンとでディスクI/Oの違いを確認

Windows上のVirtualBoxのLinuxが起動だけやたら遅いのはどうもBIOS経由のdisk I/Oが遅いんじゃなかろうか、と思って起動後の状態でベンチマークをとってみました。使ったのは、dbenchです。dbench 5で5並列でのアクセスをさせてみています。対象はraw diskを使ったVirtualBox環境とリアルブート環境です。 結果:VirtualBox Operation Count AvgLat MaxLat —————————————- NTCreateX 240151 0.576 482.564 Close 176257 0.051 28.976 Rename 10162 1.454 295.741 Unlink 48614 4.451 3611.593 Qpathinfo 217765 0.222 413.916 Qfileinfo 37911 0.055 32.303 Qfsinfo 39954 2.234 60.401 Sfileinfo 19542 0.550 388.175 Find 84199 0.672 1678.476 WriteX 118530 3.479 3651.417 ReadX 376109 0.185 1692.655 LockX… Continue reading VirtualBoxと実マシンとでディスクI/Oの違いを確認

Published
Categorized as 仮想化

Windons7のVirtualBoxでデュアルブート用のraw partitionにあるLinuxを起動させる

修理に出していたノートPCが帰ってきたので、せっかくだからと今までデュアルブートにしていたWinodws7/Linuxのうち、Linux側をWindows7のVirtualBoxからも起動できるようにしようと思い立ち、やってみました。 まず、raw diskを認識させるためのvmdkファイルを作成します。具体的な方法はVirtualBoxのマニュアルに記載されています。VMBoxManageコマンドを使い、サブコマンドinternalcommands createrawvmdkを発行します。ディスクに直接アクセスするため、管理者権限が必要です。スタートメニューのアクセサリからコマンドプロンプトを右クリックして、管理者として実行を選択して、コマンドプロンプトを開きます。 VirtualBoxの各種コマンドには通常パスが通っていません。そこをカレントディレクトリとし、下記のコマンドを実行します。 C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands createrawvmdk ^ -filename C:\VBox\rawdisk.vmdk -rawdisk \\.\PhysicalDrive0 ^ -partitions 3 -filenameには、vmdkファイルのパスを指定します。すでにファイルが存在しているとエラーになるので注意してください。-rawdiskには、Windows形式のデバイス指定を実行します。\\.は自分のコンピュータを意味し、PhysicalDrive0は0番目に接続されたディスクを意味します。どのディスクが何番目にあるかはdiskpart.exeで確認できます。必要なら、Linuxの入っているパーティション番号も確認します。-partitionsオプションを指定すると、そのパーティション以外にはアクセスできなくなるvmdkが生成されるので安心です。 C:\>diskpart Microsoft DiskPart バージョン 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. コンピューター: KARL DISKPART> list disk ディスク 状態 サイズ 空き ダイナ GPT ### ミック ———— ————- ——- ——- — — ディスク 0 オンライン 112 GB 0 B ディスク… Continue reading Windons7のVirtualBoxでデュアルブート用のraw partitionにあるLinuxを起動させる

Published
Categorized as その他

OpenPGPの鍵でOpenSSHと接続する(GnuPG2利用)

OpenPGPの鍵は、GnuPG2に付属のgpg-agantと組み合わせると、sshの鍵としても利用が可能です。しかし、これに関する日本語の情報がどうもなさそうなので、ちょっとまとめてみます。GnuPG 2.0系を対象とします。2.1系はもっと扱いが楽そうなのですが、そちらはまだ開発版なので使っていません。 まず、自分自身のOpenPGPの鍵を用意します。普段からGnuPGを使っているなら、その鍵を利用できます。ない場合は新規に作成しましょう。もちろん、すでにGnuPG 2.0がインストールされていることが前提です。また、.gnupg/gpg.confにuse-agentを追加しておきましょう。 GnuPG – The GNU Privacy Guard Version 1.2 README GnuPG 鍵の作り方 – keysignparty-ja 次に、monkeysphereをインストールします。Debian stableならパッケージがあるのでaptで入れましょう。そして、ssh用のsubkeyを次のコマンドで生成します。 # 鍵長2048bitのRSA鍵を生成 $ monkeysphere gen-subkey -l 2048 subkeyの生成には時間とエントロピーが必要です。バックグラウンドで何か複雑な処理やdisk IOなどを発生させましょう。私の場合は、2GBぐらいのVorbis/Theoraファイルを適当にgrepさせていました。 今度はgpg-agentを起動します。gpg-agentはGnuPG2の一部ですが、Debianだとgpg-agentパッケージとして分離されていますので、これもaptで入れましょう。また、pinentryという、途中でパスフレーズを入力させるためのプログラムも必要です。tty向けのpinentry-curses, gtk2向けのpinentry-gtk2, qt/4向けのpinentry-qt/qt4パッケージがあります。環境に合わせて必要な方をいれましょう。 gpg-agentの引数は設定ファイル~/.gnupg/gpg-agent.confに書くことができます。以下は設定例です。 1行目はpinentry用のプログラムの指定です。環境に合わせて適切なものを選んでください。5行目は、GnuPG2が参照するための環境変数をファイルにも出力させるための設定です。6行目の設定は必須で、これを指定することでgpg-agentがssh-agentと同じ機能を提供してくれます。 ここまで設定したら、以下のコマンドを実行します(bash, zshの場合)。 $ eval `gpg-agent –daemon` これでgpg-agentがdaemonとして起動します。次に鍵の登録をします。これは普通にssh-addを実行すればよいです。OpenSSHの鍵があれば、普通にそれについてのパスフレーズも聞いてきます。この段階でOpenPGPの鍵も登録されます。登録されていることは、ssh-add -lで確認できます。 ハイライトされた部分がGnuPGの鍵です。パスフレーズは、必要になるときまで聞かれません。 ssh-add -Lを実行して、公開鍵を確認しましょう。 コメント部分にOpenPGPのidが書かれているのが公開鍵です。これをリモートホストの.ssh/authorized_keysに追記します。 あとは対象のサイトにsshで接続すると、pinentryプログラムが起動し、パスフレーズを要求してきますので、入力してログインしましょう。 DebianのGNOME2環境では、デフォルトでgpg-agentとは異なるagentが走っています。Programmierecke.NET – The Source of Programming Informationを参考にgnome-keyringを止めてください。 参考サイト SSH… Continue reading OpenPGPの鍵でOpenSSHと接続する(GnuPG2利用)

Published
Categorized as その他

Android 2.x向けにL2TP/IPSecサーバ(openswan+xl2tpd)を設定する

前々から設定しかけてはうまくいかなかった、Android向けL2TP/IPSecがようやく動くようになったので、どんな設定をしたかをまとめてみます。対象はDebian squeezeです。 パッケージとして必要になるのは、openswanとxl2tpdです。これらをapt-get installします。 まずopenswanの設定をします。これはIPSecの実装の一つです。もともとFreeS/Wanというプロジェクトがあったのですが、その開発が止まったためforkしてできたのがOpenswanです。ほかにStrongswanという実装もあるようですが、ここでは触れません。 /etc/ipsec.confというファイルが存在しているので、それを編集します。冗長なコメントは消しています。 次に、L2TP向けの設定ファイル/etc/ipsec.d/l2tp-psk.confを新規に作成します。 次に、/etc/ipsec.secretsを編集します。ハイライトされた行を追加します。your-passwordを自分が設定したいパスワードにしてください。このパスワードがIPSec事前共有鍵になります。 次に、sysctl関連の設定をします。/etc/sysctl.d/for-ipsec.confファイルを作成し、以下のように設定します。自分はすべてのインターフェースに{accept,send}_redirectsを設定しています。各自のインターフェース名に合わせて設定してください。 ファイルを作成したら、sysctl -p /etc/sysctl.d/for-ipsec.confを実行してこのsysctl設定を有効化します。リブート時には/etc/init.d/procpsの中でこのファイルが自動的に読まれます。 ここで、一度ipsecを起動してみます。/etc/init.d/ipsec startして、ipsec verifyを実行してみてください。問題なければ以下のような出力が出ます。[NG]という出力があれば、何か設定に失敗していることになります。 ipsecはデフォルトでは自動起動になっていないので、insserv ipsecを実行して自動起動するようにしてください。 最後は、xl2tpdの設定です。/etc/xl2tp.confを以下のように設定します。 2行目で、ppp認証用のユーザー、パスワードを記述したファイル名を指定します。10,11行目でVPNに振るアドレスを指定します。各自にあったIPアドレスレンジを使ってください。16行目では、xl2tpdが起動するpppdの設定ファイル名を指定しています。うまく動かないときは、各種デバッグオプションを有効にしてみてください。 /etc/xl2tpd/l2tp-secretsは以下のように書きます。user, passwdは適切なものにしてください。 /etc/ppp/options.l2tpd.lnsの設定例は以下になります。 最初、MTU/MRUのサイズを指定しないで動かしていたら外部との通信がうまくいかなかったので、かなり小さめ(1280)にしています。16行目のネームサーバは適切なものに変更してください。 あとは/etc/init.d/xl2tpd restartを実行して、Android側の設定をしてゆきます。VPNのタイプはL2TP/IPSec PSK、VPNサーバ名とIPSec事前共有鍵(ipsec.secretsの値)を設定します。L2TPセキュリティ保護は無効にします。 あとは接続を実行し、l2tp-secretsに書いたユーザー名、パスワードを入力すれば接続できるはずです。設定がおかしいと、一瞬pppセッションが確立したあとすぐ切られる、というような状況が起きることがあるので気を付けてください。 知人から、これらに関していくつか助言をいただいています。 ICSとOpenswanの組み合わせでは動かないことがあるようです。 新しいkernelにはopenl2tpというin-kernel l2tpモジュールがあるそうです。ただし、まだuserlandはDebianパッケージが(sidにも)ありません。 参考: AndroidスマートフォンからLinuxサーバにVPN接続する – いろいろwiki@princo.org 追記(2012/8/24): MS-CHAP-v2の脆弱性と攻撃ツールの流通が報告されていますが、pppの設定を見ての通り、L2TP/IPSecでもMS-CHAP-v2を使っています。暗号化されたトンネルの下でpppを確立するため、直ちに危険というわけではありませんが、PSK共有鍵方式だと安全とはいえないようです。 セキュリティ アドバイザリ 2743314 カプセル化されていない MS-CHAP v2 認証により、情報漏えいが起こる を公開 【注意喚起】MS-CHAPv2プロトコルの破綻 証明書ベースの接続(CRT VPN)の設定を今後は調べてみようと思います。

川崎でSoftware Freedom Day 2012イベント

来る9/15に川崎の専修大学 サテライトキャンパスにてSoftware Freedom Day連動イベントをやります。概要はFSIJの案内ページをご覧ください。 私は「自由なデータ」について、議論できればと思っています。以前から自由に使えるデータに関しては自分も関心があり、Flashでプレゼンテーション資料を作るという試みもしていました。その時に、自由に流用できるパーツ的なものがないことを残念に思い、せめて自分が作ったパーツぐらいは、と公開しています。まあでも、Flash自体がこのまま入滅しそうな情勢になってしまいましたね。 Flashで資料を作っていた当時はまだOpenOffice.orgもなく、Unix系技術者のプレゼンテーションはたいていMagic Pointが使われていました。Magic Point自体はそんなに悪いソフトウェアでもないのですが、利用感覚としてはLaTeXに近く、サクサクとテキストベースでソースをかける反面、凝ったレイアウトを作るのはちょっと大変でした。 OpenOffice.org以降はImpressを使えばよいので楽になりましたが、商用ソフトにあるような豊富なクリップアート、ステンシルなどがないのが残念です。 最近はプレゼンテーションを作るのにGoogle Presentationを使うことが増えています。しかしWebアプリは自由ソフトウェアでないのが難点です。SFDでは、アウトラインだけGoogle Presentationで書いています。あとでLibreOffice Impressにて整形することになりそうです。

私立プログラミングキャンプ参加 #upcamp

帰省する直前に、私立プログラミングキャンプに参加しました。もともと私は2008年の公式なプログラミングキャンプ講師をやっていたのですが、その後都合により参加できず、今年はとうとうプログラミングキャンプ自体がなくなってしまいました(それまではセキュリティキャンプと同時開催、というか名称が「セキュリティ&プログラミングキャンプ)。 Webにもあるように、過去のセキュリティ(&プログラミング)キャンプの参加者が主催されています。会場の確保等ファシリティの用意が大変だったと思いますが、ありがとうございます。 しかし、参加人数が多すぎたので会場のキャパシティが厳しく、私はLTで軽く話しただけで、夜にはかえってしまいました。なので、実質何もできていません。申し訳ないとは思いつつ、場を若い人に任せた方がいいかななと思っての処置です。 LTの発表資料は公開しています。実際に喋ったのは7ページ目まででした。

Published
Categorized as その他

名古屋へ帰省しました

ぎりぎりまで家で寝てから、実家へ帰省しました。前回の帰省のときにVPNの設定をしたので、ルータが死なない限りはまあ自宅のほうもなんとかメンテナンスできます。 この帰省中に、daionet.gr.jpのサーバを更新しようと思っています。まあCore2Duoでも速度的に困らないわけではないのですが、メモリがDDR2でちょっと高いので、安いメモリの使える最近の世代に変えたいところです。  

Published
Categorized as その他

Android端末の修理

結構前から、E-MobileのGS-01(DELL Streak Pro)が充電時にタッチパネルの反応がおかしくなるという症状に見舞われていました。きちんと連続した入力ができないので、パターンロックも外せないという状況です。サポートに連絡したところ、故障の可能性があるということで修理におくりました。 そして昨日、「調べてみているけど、これ以上は一度リセットしないといけないのでリセットしてもよいか」という連絡が来ました。ちょっと悩んだものの、SDカード部は全てバックアップしたから、ということでリセットすることに承諾しました。 E-Mobileは修理に出すとき、代替機を送ってきてくれて、自分のSIMカードを刺してGoogle accountを設定しただけで本体側の情報は勝手にリストアしてくれたっぽいので、まあたぶん大丈夫だろうと思っています。 それより、いつからかGS-01の標準ブラウザの挙動がやたら遅くなったことが気になります。代替機の方は普通にサクサク動くので、なにか入れたアプリケーションに問題があったのかもしれません。それも一緒に治るとよいのですが… 追記(8/10): 代替機も挙動が同じだった。これって特定の個体の故障じゃないのでは…?

Published
Categorized as Android

LibreOfficeを使うのにMS Officeのマニュアルが便利

いやあ、こんなことじゃいけないんだろうとは思いつつも、LibreOfficeのCalcで「この計算はどうやるんだ」と思った時に、LibOのマニュアルではよくわからなかったので、結局Excelのマニュアルを見てしまいました。 こんな過去のことをちょっと思い出してしまいました。

今後のイベント予定

正確には、コメントspamすら来ないというべきか。一応英語版blogも用意してPlanet Debianに登録してあるんですが、なかなかの勢いでspamがやってきます。 もちろん普通のコメントも来ました。しかしこちらには何も来ない・・・まあいいんですけどね。というかあまりネタがないです。 直近のイベントとしては、私立・プログラミングキャンプ 2012 東京大会 – #upcamp が8/11-12にあります。もはやなくなってしまったプログラミングキャンプを有志で実現しようというものです。私立・プログラミングキャンプ 2012 京都大会 – #upcamp #upcampKansaiもあります。 他には、国際的なイベントとしてSoftware Freedom Dayが9/15にあります。FSIJとしてもイベントを実施する予定なのですが、いかんせんまだ詳細が決まっていません。とりあえずEkigaを使ってほかの拠点とビデオ会議をやりたい、という話は出ています。 Ustreamみたいなのを、自由ソフトウェアだけでやりたいですね。GNUstreamというか。