USBホストコントローラをPCIパススルー

KVMに直接USBデバイスを認識させようと思いまして、はじめにUSBパススルーが思い浮かびました。が、調べてみるとフルスピードモード(12Mbps)なら簡単にできるけど、ハイスピードモード(480Mbps/USB2.0)を使うのは込み入った設定が必要っぽいです。だったらUSB2.0ホストコントローラごとPCIパススルーしてあげれば簡単でいいかなと思いました。やってみたところ、ちゃんと動いているので今日はその方法をまとめます。
Continue reading →

エセSMTPサーバー

メールを自動送信するシステムのテストをしたいとか、ドメイン設定やSSL設定に必要な認証メールを受け取りたいとか、ありますよね。

こんなとき「届いたメッセージのアカウント確認もメッセージ転送も行わず、ひたすらOKステータスを返してメッセージの内容を出力する」というエセSMTPサーバーが欲しくなります。

Pythonに便利なワンライナーが用意されていました。

$ sudo python -m smtpd -n -c DebuggingServer 0.0.0.0:25

たったこれだけでエセSMTPサーバーが起動します。
オプションの詳細はこちら。 Continue reading →

2進数リテラルと2進数ダンプ

C++14では2進数リテラルが規格に加わりました。GCCやClangではCでも使えます。というか、もともとコンパイラの独自拡張機能として実装済みだったものが規格になったみたいです。使い方はこんな感じ。

#include <stdio.h>

int main()
{
    char c = 0b01000001;

    printf("0x%X\n", c);
    printf("%c\n", c);

    return 0;
}
$ ./a.out
0x41
A

Continue reading →

QEMUでPPCとかSPARCとかMIPSとか

一昔前はビッグエンディアン・マシンが秋葉原にたくさん転がってた。Apple PowerPC Mac、Sun Blade、SGI O2 等々。でも今どきは、IntelとARMばっかり。ビットフィールドのオーダーを確認したいとか、ビット演算が正しく動作するかとか、ただただ機械語を眺めたいとか、そういうときに手頃なビッグエンディアンの環境が欲しい。

よろしい、ならばエミュレーションだ。
Continue reading →