2012-10-19 曇のち雨 [長年日記]
!!!new!!!_1 emacs-nox
emacsをインストールしようとしたら依存関係で一緒にインストールされるパッケージが非常に多かったのでnoxにしてみた.どうせXの上で開かないし.
そしたらこれまで使ってきた.emacsファイルでエラーが出てあれこれ困る.
Symbol's function definition is void: mouse-wheel-mode Symbol's function definition is void: iswitchb-default-keybindings Symbol's function definition is void: tool-bar-mode Symbol's function definition is void: scroll-bar-mode
とりあえずemacs-noxを消してemacsに変えたらエラーはほとんど消えたけどなんかス ゴい敗北感あり.これらの設定はXの上でウィンドウサイズを変更するところで明示的に消すようにしているからいらないのかもと思い直す.emacsを消して再度emacs-noxにしてこれらをコメントアウトすると起動するようになった.
ただ他の環境ではまだ古いバージョンを使っていたりするのでEmacs24以上の場合のみ使うという風にしておいた.
あと期せずしてEmacs24になったのだがこれまでマイナーモードを無効化しようと引数にnilを指定できたのだがこれは期待どおりに動かなくなったらしい.ちゃんと-1と書けと.nilと書いたらenableになると書かれてた.
知らなかったのだがFedora17 の時点でもうEmacs24になってるみたい.やっぱり開発するんならちゃんとバージョンアップに付いて行かないと.毎回少しずつならすぐに対応できそうだが,あれもこれもいっぺんにやらないととなると大変だしね.
!!!new!!!_2 chsh: setpwnam failed
デフォルトのシェルをzshに変更しようとしたら以下のエラーが発生してうまく行かず.
$ chsh -s /bin/zsh tmuneda Changing shell for tmuneda. Password: chsh: setpwnam failed Shell *NOT* changed. Try again later.: Permission denied
ググったらすぐに原因が出てきた.
環境はKVMゲストなんだが,ホストはSELinuxを使えるようにと意図的に有効にしてあるのでゲストはなしでもいいかな.ということでさっくりとSELinux無効にして再チャレンジ.
$ chsh -s /bin/zsh tmuneda Changing shell for tmuneda. Password: Shell changed.
さっくりと完了.
!!!new!!!_3 CONFIG_NF_NAT_IPV4
なんかの拍子でKVMホストを再起動したらゲストが起動できなくなってしまった.
# virsh start guest-1 error: Failed to start domain guest-1 error: internal error Network 'default' is not active
どうもNetworkが有効になっていないらしいので確認する.
# virsh net-list --all Name State Autostart ----------------------------------------- default inactive yes
あら本当.
# virsh net-info default Name default UUID 166cd5e6-22e2-4e08-b6c5-7f255b9e3de8 Active: no Persistent: yes Autostart: yes Bridge: virbr0
デバイスはvirbr0らしいのでこれに関するエラーメッセージが出てないか確認してみたところ
# dmesg|grep virbr0 device virbr0-nic entered promiscuous mode device virbr0-nic left promiscuous mode virbr0: port 1(virbr0-nic) entered disabled state
なんかこんなメッセージが.ググってみたが本メッセージに関する有効な内容は見つけられず.追加であれこれコマンドを叩いていると
# virsh net-start default error: Failed to start network default error: failed to add iptables rule to enable masquerading
新しいキーワード発見.libvirtのログを見ると
17:24:23.114: 18940: error : virCommandWait:2178 : internal error Child process (/sbin/iptables --table nat --insert POSTROUTING --source 192.168.122.0/24 ! --destination 192.168.122.0/24 --jump MASQUERADE) status unexpected: exit status 3 (ここまで本当は一行) 17:24:23.114: 18940: error : networkAddMasqueradingIptablesRules:971 : failed to add iptables rule to enable masquerading (ここまで本当は一行)
という文字列を発見.どうもNATがうまく動いてない?でしばらくあれこれしているうちにさっきとはカーネルバージョンが違っていたことを思い出す.さっきまではRHEL6のどれかだったけど,今動いているのは自分でビルドした3.6.0+(3.6と3.7-rc1の間).NATをキーに.configを見ていくと3.6.0+にCONFIG_NF_NAT_IPV4というのがあり有効になってないことが発覚.これか!
author Patrick McHardy <kaber@trash.net> Sun, 26 Aug 2012 17:14:06 +0000 (19:14 +0200) committer Pablo Neira Ayuso <pablo@netfilter.org> Thu, 30 Aug 2012 01:00:14 +0000 (03:00 +0200) commit c7232c9979cba684c50b64c513c4a83c9aa70563 netfilter: add protocol independent NAT core Convert the IPv4 NAT implementation to a protocol independent core and address family specific modules. Signed-off-by: Patrick McHardy <kaber@trash.net>
これによりCONFIG_NF_NATはIPv4, IPv6共通のコア部品となり,IPv4 NATを使うには明にCONFIG_NF_NAT_IPV4が設定されなければなくなった.
基本的に現在のマシンで動くconfigファイルを一回作るとあとはそれを使いまわすから,今回みたいにCONFIGの意味が変わった時に意図せず機能が使えなくなってしまう.これまでは自分には必要のない機能だったが,必要でもうまいこと動いてたらしい.全部の変更を追うなんて現実的ではないのだが,実際みんなどうやってるんだろうか.個人的にはいつもgit pullしたあとの初回make時にはmake menuconfigして全て見ないことにしている.
emacs-noxでググってら、こんな所でドンピシャHIT!<br>実は密かに長年日記の長年読者だったりしますww
マジすかw