2012-02-03
■[linux][optimization] Userspace RCU 
UserspaceのRCUアルゴリズム実装。
半日ぐらいコード眺めてたけど、synchronize_rcu()でparityをなぜ2回パリティフリップ/同期してるのかわからん。
Preemptive2-staged RCUの実装ぽいのでLWNの記事をもっとよみこむ。
http://lwn.net/Articles/253651/
現在の理解だと、rcu_read_lock()はメモリバリアを含まないので、同期->MB強制->同期するので2回必要という理由。しかしあってるのか自信ない。
2012-02-02
■[osx] OSX上で「インターネット共有」を使わずにNAT環境を構築する 
OSXの「インターネット共有」機能はDHCPサーバを含むので、DHCPが別サーバにより提供されてる環境上では使うのが面倒。
単純にIP forwarding + NATをOSXさんに提供させる。
IP forwarding有効に:
# sysctl -w net.inet.ip.forwarding = 1
natd設定(en3にWAN回線):
# natd -p 8668 -n en3 -s yes -m yes # ipfw add 1000 divert 8668 ip from any to any via en3
2012-01-14
■[linux] Arch Linuxを入れてみる 
DebianをX環境でつかうのがいやになってきたので、Arch Linuxを試してみる。
debianなれててとても使いやすいんだけど、gnomeなりなんなりを入れたとたん使わないろくに使わないパッケージが大量にはいってげんなり。
Arch Linuxだと最小限パッケージセットで使うのがdebianより徹底できそう。x86/x86_64以外の環境がサポートされてないのがちょっと気にかかるけど...
とりあえずbootableに
https://wiki.archlinux.org/index.php/Beginners%27_Guide#Select_an_installation_source
isoをusbメモリにddするだけなので楽。pppとかwpa_supplicantとかいらなさげなので勝手に選択をはずす。ファイルシステムはxfsにしてみる。
設定
再起動するとすんなり起動する、がroot以外ユーザがないことに気づく。
adduser/passwd
pacman遊び
pacman -Syu # repos sync+dist-upg相当らしい pacman -Qdt # query deps unneeded (apt-get autoremoveリスト相当) pacman -S sudo # とりあえずsudoいれてみる
https://wiki.archlinux.org/index.php/Pacman_Rosetta
apt-file相当
pacman -S pkgfile pkgfile --update pkgfile lsmod # -> module-init-tools
xorg xfceをいれてみる
pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils pacman -S nvidia nvidia-utils reboot pacman -S xfce4 # group全選択 cp /mnt/oldroot/etc/X11/xorg.conf /etc/X11/xorg.conf startxfce4 pacman -S ttf-dejavu
適当にpanelなど設定。
AUR
mozcとかそういうのはユーザレポジトリにはいってるらしい。
yaourtのインストール。pacman経由でいれる。http://archlinux.fr/yaourt-en#get_it
locale
sudo vim /etc/locale.gen sudo locale-gen
/etc/rc.conf:
LOCALE="en_US.UTF-8"
日本語Font
mv *.ttf /usr/share/fonts/TTF sudo -s cd /usr/share/fonts/TTF mkfontscale && mkfontdir && fc-cache
mozc
yaourt -S mozc
.xinitrc:
export XIM=ibus export XIM_PROGRAM=/usr/bin/ibus-daemon export XIM_ARGS="--xim" export XMODIFIERS="@im=ibus" export GTK_IM_MODULE="ibus" export QT_IM_MODULE="ibus" ibus-daemon -x -d
slim: login manager
yaourt -S slim /etc/rc.confのDAEMONSにslim追加 cp /etc/skel/.xinitrc .
kupfer
yaourt -S kupfer
chromium
yaourt -S chromium flashplugin # libvdpauはうまく動かない(ニコニコ動画が再生できない)ので無効化
sshd
pacman -S openssh vi /etc/ssh/sshd_config
vmware
https://wiki.archlinux.org/index.php/VMware
を参照。pacmonにはなく、vmware公式からいれる。
Linux 3.1.9-1-ARCHではばぐってるぽいのでLinux 3.1.8におとしてみる。downgradeというツールがあるらしい。
# Linux 3.1パッチ適用 yaourt -S downgrade downgrade linux # Linux 3.1.8(core)選択 reboot sudo vmware-modconfig --console --install-all
synergyc
yaourt -S synergy echo "synergyc persian-win" >> .xinitrc #実際にはexec startxfce4の前に
サウンド(paoip)
yaourt -S alsa-utils sudo modprobe snd_aloop # /etc/rc.confにも追加
DAEMONSにalsa追加 (mixerのsave/restore)
groupにvideo/audio追加
kouhei@bengal:~$ aplay -l
カード 2: Loopback [Loopback], デバイス 0: Loopback PCM [Loopback PCM]
サブデバイス: 8/8
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
(...snip...)
カード 2: Loopback [Loopback], デバイス 1: Loopback PCM [Loopback PCM]
サブデバイス: 8/8
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
(...snip...)
kouhei@bengal:~$ cat .asoundrc
pcm.!default {
type hw
card 2
}
nohup ./paoip -d XX -t
compiz
yaourt -S compiz-fusion # ccsm emerald emerald-themes compiz compiz-core compiz-fusion-plugins-main fusion-icon
emerald-themes-managerで適当にテーマ設定
自動起動にfusion-iconを追加
ccsmで設定。なんか<Control>を含むキー設定はうまく行かないので、~/.config/compiz/compizconfig/Default.iniを適宜編集。
余計なパッケージ削除
pacman -Qdt # apt-get autoremove 相当 pacman -D --asexplicit gtest ruby # explicitly installed扱いにする
■[arch][linux] ArchLinux感想 
debian testingの不満点だった:
- stable release直後にsidが降りてきて不安定になる
- デスクトップ環境(gnome/xfce/kde他)を部分的にインストールすることができない
- 設定ファイルまわりの謎カスタマイズ。ファイル細分化とか
- distribution独自のpatchがはいる (いやstableでは必要なのわかるけど...)
は解決してる。
その他の利点として:
ただ、不満点としては:
- hoge-devがない。ヘッダが確実に入るのは利点ではあるけど、qtをインストールするといらないqt-designerついてくる。うええ
- testingじゃない方も十分不安定...
- testingではfixされてるよ!っていわれてもapt-pinning相当がないのでシステム全体をtestingにするか、downgradeするかの2択。
- AURにあるパッケージだとコンパイル必要で、いれるまでに時間がかかる。どうせ毎回コンパイルするぐらいならいっそのことgentooでもいいよな…
cf. http://unix.stackexchange.com/questions/10103/differences-in-package-management-between-debian-and-arch

