■
gem update したらearthquake が動かなくなったのでエラーメッセージで調べたらコレだった
https://github.com/jugyo/earthquake/pull/152
ここに書いてあるworkaround を /var/lib/gems/2.0.0/gems/earthquake-1.0.0/lib/earthquake.rb に書いたら直った。
BHyVe hackathon やってきました
この土日、埼玉県某所でBHyVe Hackathon が開催されました。
BHyVe ? という方はこちらをご覧ください
http://www.slideshare.net/AsadaTakuya/bhyve
このスライド書いた id:syuu1228 に「腕の立つ若いの集めてくれ」って言われたので心当たりに声掛けたら主催者って事になったり。そのわりに重役出勤だったり。
事前の動作検証で VMware Player を使ったNested VMMでの動作を確認していたのでてっきりそれを使うもんだと思って何も準備していかなかったのですが、当日実機を渡されたので、初日は環境を構築するので終わりました。
二日目でのっけに配布されているイメージを起動させることは出来たのですが、とりあえず何をするにしても自前のゲストを動かせないと駄目だよねーと思ってダウンロードしてきたソースツリーからゲスト用カーネルを作ったら何故かこいつがログインプロンプトまでいきません。
あーでもないこーでもないと試行錯誤してるうちにどんどん日が陰ってきてしまい、結局bhyve がどんなものかって弄くってるだけで終わってしまいました。後で聞いたらみんな嵌ったみたいなので、きっとチェックアウトしたバージョンのソースが悪いに違いないとは思ったけれど、時間切れ。
合間合間に、こうやったらどうなるかな?という異常系の操作の話が参加者からポツポツ出てきていたので、その異常系の操作を検証したりもしていました。
たとえば、BHyVeゲストが稼働中に/dev/vmm/{vmname} を削除したら?→ホストがpanic します
とか。
具体的には、以下のコマンドを実行します
# vmmctl --vm={vmname} --destroy
環境の構築は以下の手順書どおりに作業を行ったのですが
Building BHyVe HOWTO
http://d.hatena.ne.jp/syuu1228/20120625/1340655759
これでダウンロードしてくるゲストイメージには、起動用のシェルスクリプトが同梱されています。手順書の最後に言及されているvmrun.sh ですが、これはまず最初に何も考えずに上記のコマンドを実行します。
echo "Wait until 20 seconds after boot for networking to work" /usr/sbin/vmmctl --vm=myguest --destroy; /usr/sbin/bhyveload -m 768 -M 2048 -h . myguest && /usr/sbin/bhyve -c 2 -m 768 -M 2048 -g 0 -P -H -s 1,virtio-net,tap0 -s 2,virtio-blk,diskdev myguest && sleep 20 && ifconfig tap0 up
ゲストを終了させてもカーネル内のゲスト定義が残ってて掃除してくれないためにこうしているのだと思いますが、同じ名前のゲストが走っていると、ホストがpanicします。ていうかやりました。てへぺろ
なのでpsで見て同じ名前のゲスト動かしてないかチェックするルーチンを追記しました。
同じ名前のゲストが動いてたら終了します。こんな感じ。
あ、ついでに引数とってその名前でゲスト作るようにもしました。
echo "Wait until 20 seconds after boot for networking to work" if [ $1 ]; then GUEST=$1 else GUEST="myguest" fi RET=`ps ax |grep bhyve|grep $GUEST|grep -v grep|wc -l ` if [ $RET -ne 0 ]; then echo "$GUEST already run. exiting..." exit fi /usr/sbin/vmmctl --vm=$GUEST --destroy;/usr/sbin/bhyveload -m 768 -M 2048 -h . $GUEST && /usr/sbin/bhyve -c 2 -m 768 -M 2048 -g 0 -P -H -s 1,virtio-net,tap0 -s 2,virtio-blk,diskdev $GUEST && sleep 20 && ifconfig tap0 up
結局成果といえるのはこれだけ。とほほ
Debian でgit-emailでGmail経由でメール送信する方法
5月に某社の勉強会でLKMLにパッチ投げた話を発表したんですが
発表資料: https://docs.google.com/presentation/d/1Z2bk68VIYslvY9FrouKaw4P3qpQMR4h7at8nhm6d-C4/edit
PC入れ替えて再び環境構築したので、資料に書かなかった事をまとめとこうかと。
ホストのArchだとなんかSSL周りがあやしくてGmail に繋ぐのがよく分からんかったのでDebianのゲストを作ってもっぱらそっちで作業なうなんですが。
当日聞かれた意見:
Q: Linuxカーネルがコンパイル出来る環境って難しくないですか?
A: gcc があればいいです。他は何もいりません
カーネルは単体で動作するので、他のライブラリには依存してないんですよね。
必要なものはカーネルソースの中に全部入っててライブラリとかも自前で用意してあります。すごい。
msmtpの環境設定
以下のURLを参考に、~/.msmtprc を作成します
http://d.hatena.ne.jp/janus_wel/20090120/1232481948
# Example for a user configuration file # Set default values for all following accounts. defaults tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.log # My email service account gmail host smtp.gmail.com port 587 from some.user.name@gmail.com auth on user some.user.name@gmail.com password my-secret # Set a default account account default : gmail
from,user,password を自分のgmail アカウントに変更。しかるのち chmod 0600 ~/.msmtprc
git の環境設定
git-send-email はデフォルトではlocalhost で動作するSMTPサーバに接続しようとします。
最近のディストリビューションでは動いてない事が多いので嵌ります。嵌りましたてへぺろ
それをmsmtp に変更するには以下のコマンドを実行します。
git config --global sendemail.smtpserver /usr/bin/msmtp
すると、~/.gitconfig に以下の設定が追加されます。
[sendemail] smtpserver = /usr/bin/msmtp
後は適当にgit send-email --to 自分
届けば成功です
スマホ
iPhone3GSの二年縛りが解けて速攻HTC J にしたのですが、それから2週間気がついたことをかいてみる。
残念な事
- 微妙にでかい
AKBみたいなアイドルがCMしてますが、女性の手には余ると思います。
男でも片手で操作するのはコツがいります。まだコツつかめてません
買った次の日にギックリ腰してしまって毎日整体行ってるんですが
うつ伏せ状態で片手で操作するのが難しくていらいらします。
- メモリが少ない
メモリ1GBと聞いてこれにしたのに、システムだけで400MB以上使っているのでアプリが使える領域が少ない。
しかも表示されるのは800MBくらいしかないことになってます。
Android3.0のXOOMだと色々動かしても256MBも使わなかったのに。
ICSデブですね。3GとWiMAXのスタックでしょうか?
そこにauがアホみたいに常駐アプリインストールしまくるもんだから(ry
とりあえず片っ端から殺してメモリ確認したら半分消えてたのを見たときの残念さといったら…
- 日本語変換が残念
デフォルトの残念さではことえりに匹敵します。選択肢があるからいいんですけど
Arch Linux でデフォルトのリポジトリにないパッケージを追加する
- AUR のページからsearch する
- AUR からtar ball をダウンロード
- 展開
- makepkg -s
- pacman -U <出来上がったパッケージ>
参考
emacs-w3m でクッキーを有効にする
(setq w3m-use-cookies t)
Arch Linux でlibvirt サーバを作る
要求は以下
- eth0 をホストとゲストで共有する
- 外部からホストにもssh ログイン出来るようにする。
NIC共有の設定
$ more /etc/network.d/br0 INTERFACE="br0" CONNECTION="bridge" DESCRIPTION="bridge br0 static" BRIDGE_INTERFACES="eth0" IP='static' ADDR='192.168.1.6' GATEWAY='192.168.1.1' DNS='192.168.1.1'
$ more conf.d/netcfg NETWORKS=(br0) ## Specify the name of your wired interface for net-auto-wired WIRED_INTERFACE="eth0" ## Specify the name of your wireless interface for net-auto-wireless WIRELESS_INTERFACE="wlan0"
多分これで起動時にbr0 とeth0 がつながって、br0 に192.168.1.6が割り当てられる筈。
駄目なら /etc/rc.conf のDAEMON配列に net-profiles を追記。
RedHatのlibvirtの文書読んだだけだと共有専用のインターフェースを用意しないとホストは外からつながらなくなるんじゃないかと思ってたんだけど(だから拡張できるマザーボード買ってきたのに)、ホストのsshdはこれでちゃんとbr0で待ち受けてくれるようです。内部どうなってるかよく分かってないけど
ゲスト側の設定
その1
virsh edit
その2
virt-install に以下のオプションを加える
--network bridge=br0
その3
virt-manager の新規ゲスト作成画面でネットワークの設定をブリッジbr0 にする
どれかやっとけば、DHCPで自宅内ネットワークのIPがもらえました。結構簡単ですな。
前はvirt-manager が作ったホストオンリーネットワークのアドレスしかもらえなくてWebサービスとか作るのめんどくさかったんですが、これで夢がひろがりんぐ