2011年7月31日日曜日

Debianを使ってみたです

すっかり気に入ったCrunchBang Linuxのご先祖はDebian GNU/Linuxということで、Debian 6.0.2(squeeze amd64)を使ってみたです。
Debianのホームページから「小型のCD」版をダウンロード、CD-RWに焼いて、これを実験機Gateway EC19C-N52C/Sでブート、Localeは英語にして
4GBのSDHCカードにインストールしたです。
インストール後、rootで

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -

とコマンド叩いて、/etc/apt/source.listを下記のように編集

---- ここから ----
# deb http://ftp.jp.debian.org/debian/ squeeze main

deb http://ftp.jp.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ squeeze-updates main contrib non-free

deb http://dl.google.com/linux/deb/ stable main non-free
---- ここまで ----

して、

xorg xfce4 xfce4-goodies slim ttf-vlgothic scim scim-anthy google-chrome-stable conky network-manager-gnome firmware-brcm80211 wireless-tools
(2011/08/27 追記) ~/.xsession-errorsがメッセージで膨れていくので、gtk2-engines-pixbufを追加したです。

といったパッケージをインストール、最後に

dpkg-reconfigure locales

で言語を ja_JP.UTF-8に変更してreboot。
この後、無線LANの設定をして、これでOKかと思ったのですが... ハマりました... いや、こうでないと個人的には楽しくないんだけど、えらく時間を費やしてしまったです。

まず、「ログインの度に無線LANの暗号化キーを入力するようダイアログが表示される」ということです。我が家の無線LANはWPA2-PSK(AES)ですが、ログインする度にNetworkManager(nm-applet)がパスワード(暗号化キー)の入力ボックスを空にしてパスワードを訊いてくるです。CrunchBang Linuxは訊いてこなかったですが... ネットで調べたところ、どうも
  ESSIDや暗号化キーは ~/.gnome2/keyringsディレクトリ下に保存されているらしい
  Localeの設定のせいかもしれない
ということっぽいです。で、~/.gnome2/keyrings下を見て見ると
  default
  デフォルト.keyring
という2つのファイルがあって、defaultというファイルの中は「デフォルト」と書かれていたです。「これって、Localeをen_US.UTF-8とかに設定してれば、当然英語だよねぇ」とか思って、

echo -n 'default' > default
mv デフォルト.keyring default.keyring

とコマンド叩いてreboot。これで、nm-appletが暗号化キーを忘れてしまう現象は発生しなくなったです。
次に、「ログインの度に"キーリングのロック解除"ダイアログが表示される」ということです。この現象もCrunchBnag Linuxでは発生してなかったです。CrunchBang LinuxのログインマネージャはGDMでしたが、今回DebianではSLiMを採用したです。今思うと、これがハマった最大の原因なのかも? GDMはPAMを使ってgnome-keyringに認証情報を渡してロック解除しているようですが、SLiMはそうなっていないみたいです。SLiMでPAMを使うにはlibpam-gnome-keyringが要るんじゃなかろうかと思って、dpkgコマンドを叩いて確認するとインストール済みだったので、rootで

aptitude install gdm
cd /etc/pam.d
cp gdm slim
aptitude purge gdm
cd ~ログインユーザ名
rm -rf .gnome2

とコマンドを叩いてreboot、無線LAN設定をやり直して、も一度reboot。これで、
"キーリングのロック解除"ダイアログは表示されなくなったです。~/.gnome2/keyrings下は、
  login.keyring
  user.keystore
という2つのファイルができていたです。
最後に、「/var/log/kern.log他に"Short CCK"というメッセージが大量に出力される」という現象です。特に、EAP-TTLSな無線APに接続中には、1秒間に100行以上出力されたです。CrunchBang Linuxでも少量でしたが出力されてたです。どうもbrcm80211が原因っぽいので、Broadcomのページからドライバをダウンロードして展開して、rootで
aptitude -y install make gcc linux-headers-2.6.32-5-amd64
make
make install
echo blacklist brcm80211 >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
modprobe -r brcm80211
depmod
modprobe wl
reboot

とコマンドを叩くと、
ログファイルに"Short CCK"は出力されなくなったです。また、EC19C-N52Cの無線LANアクセスLEDも点灯するようになったです。
Debianは、メジャーなディストロで情報もたくさんあって、これは良さそう、とか思ったです。

2011年7月2日土曜日

CrunchBang Linuxで無線LAN、なのです

CrunchBang Linux(Statler)を持ち歩いて使ってみたいな、となると無線LAN接続できなきゃなあ、というわけでやってみたです。実験機と外出専用機のGateway EC19C-N52C/Sの無線NICはBroadcom BCM43225。有線(Atheros AR8151)で接続して設定を進めるです。設定はsudoでrootになって行うです。
CrunchBang Linuxを再インストールして日本語化した後、コマンドを実行して状態を見てみると、
lspci : BCM43225を認識している
lsmod : brcm80211はある
iwconfig : 無線のインタフェイスは無い(当然、ifconfigでも無線インタフェイスは表示されない)
だったです。で、次にdmesgを実行してbrcm80211関係を見てみると、

[ 9.950770] brcm80211 0000:02:00.0: firmware: requesting brcm/bcm43xx-0.fw
[ 9.993731] brcm80211: fail to load firmware brcm/bcm43xx-0.fw
[ 9.993736] brcm80211: Failed to find firmware usually in /lib/firmware/brcm
[ 9.993781] brcm80211 0000:02:00.0: PCI INT A disabled
[ 9.993797] brcm80211: wl_pci_probe: wl_attach failed!

となってたです。ファームウェアが合わないっぽいので、こちらを見て

aptitude update
aptitude install firmware-brcm80211 wireless-tools

を実行してrebootしてみたです。結果は、
lspci : BCM43225を認識している
lsmod : brcm80211はある
iwconfig : wlan0がある(ifconfigでもwlan0が表示される)

だったです。dmesgを実行してみると、

[ 9.629661] brcm80211 0000:02:00.0: firmware: requesting brcm/bcm43xx-0.fw
[ 9.905017] brcm80211 0000:02:00.0: firmware: requesting brcm/bcm43xx_hdr-0.fw
[ 9.996176] wlc_bmac_attach:: deviceid 0x4357 nbands 1 board 0xe021 macaddr: ~
[ 10.082077] wl_set_hint: Sending country code US to MAC80211
[ 10.082087] wl0: Broadcom BCM43xx 802.11 MAC80211 Driver 5.75.11 (1.82.8.0) (Compiled in . at 15:29:02 on Dec 10 2010)

ということで、うまくいったようです。
とりあえず、NetworkManagerを使わずに無線LANの設定をしてみるです。まず、runlevelコマンドを実行すると「N 2」と表示されるので、

cd /etc/rc2.d
mv S03network-manager s03network-manager
sh ./s03network-manager stop

でNetworkManagerを停止、無効化させたです。
我が家の無線ルータは
NECアクセステクニカのAterm WR8700Nで、WPA2/PSK(AES)、ESSIDステルスを有効にしてるです。

cd /etc/network
mv
interfaces interfaces.orig
cp
interfaces.orig interfaces
chmod 600
interfaces

を実行して、
/etc/network/interfacesを

---- ここから ----
# The loopback network interface
auto lo
iface lo inet loopback

# Atheros AR8151 Gigabit Ethernet
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp

# Broadcom BCM43225 wireless network
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid 無線ルータのESSID
wpa-psk 「wpa_passphrase ESSID
暗号化キー」を実行して作った長い文字列
wpa-key-mgmt WPA-PSK
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-scan-ssid 1
wpa-ap-scan 2
---- ここまで ----

と書き換えてrebootすると、あっさり無線LAN接続できたです。
でも、これってもしかして、別の無線ルータを使う時は、その都度書き換えるってことになる?とか思って、wpa_supplicantを使ってみることにしたです。ifdown wlan0を実行してインタフェイスを停止させて、/etc/network/interfacesを

---- ここから ----
# The loopback network interface
auto lo
iface lo inet loopback

# Atheros AR8151 Gigabit Ethernet
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp

# Broadcom BCM43225 wireless network
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
---- ここまで ----

と書き換えて、/etc/wpa_supplicant/wpa_supplicant.confを新規作成し、これに、

---- ここから ----
ctrl_interface=/var/run/wpa_supplicant
ap_scan=2
network={
ssid="無線ルータAのESSID"
psk=
「wpa_passphrase 無線ルータAのESSID 暗号化キー」を実行して作った長い文字列
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
group=CCMP
scan_ssid=1
}
network={
ssid="
無線ルータBのESSID"
psk=
「wpa_passphrase 無線ルータBのESSID 暗号化キー」を実行して作った長い文字列
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
group=CCMP
scan_ssid=1
}
---- ここまで ----

と書いて chmod 600 /etc/wpa_supplicant/wpa_supplicant.confを実行してreboot。こちらも正常に無線接続できたです。WR8700Nを停止して、NEC Aterm WM3500Rの電源を入れ、CrunchBang Linuxをrebootさせると、DHCPでIPアドレス他が割り当てられるまで結構待たされたですが、WM3500Rに接続できたです。
ちなみに、出先でちょくちょく使うのは EAP-TTLSな無線LANなのですが、/etc/network/interfacesを

---- ここから ----
# The loopback network interface
auto lo
iface lo inet loopback

# Atheros AR8151 Gigabit Ethernet
allow-hotplug eth1
auto eth1
iface eth1 inet dhcp

# Broadcom BCM43225 wireless network
allow-hotplug wlan1
auto wlan1
iface wlan1 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
---- ここまで ----

に書き換え(インタフェイス名が変わるので)、/etc/wpa_supplicant/wpa_supplicant.confを

---- ここから ----
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="ほげほげ"
key_mgmt=WPA-EAP
eap=TTLS
identity="ユーザ名@ほげほげ"
password="パスワード"
phase2="auth=PAP"
}
---- ここまで ----

と書いてrebootすると、これも正常に接続できたです。
これで一瞬満足したですが、デスクトップに接続状態が表示されず、コマンド叩いたりブラウザを起動したりしないと無線接続できているのかわからない、というのはイマイチ(
EC19C-N52C前面左側の無線アクセスLEDも点灯してくれないし)なので、やっぱりNetworkManagerを使うことにしたです。wicdの方が良いよって話もあるけど。

ifdown wlan0
cd /etc/network
mv interfaces interfaces.test
mv interfaces.orig interfaces
cd /etc/rc2.d
mv s03network-manager S03network-manager

を実行して元通りに戻してreboot。後は、タスクバーのNetworkManagerのアイコンを右クリック、「接続を編集する」>「無線」タブで「追加」をクリック>「無線接続~の編集」ウインドウの「無線」タブ内を入力
SSID : 無線LANルータのESSID
モード : インフラストラクチャ
BSSID : 入力しなかった
MACアドレス : iwconfigで表示される無線インタフェイスのMACアドレス
MTU : 自動
続いて、「無線接続~の編集」ウインドウの「無線セキュリティ」タブ内を入力
セキュリティ : WPAとWPA2のパーソナル
パスワード : 無線LANルータのESSIDの暗号化キー

そして、「適用」をクリックして「閉じる」をクリック。これでOK。出先のEAP-TTLSな無線LANの場合、
「無線接続~の編集」ウインドウの「無線セキュリティ」タブで、
セキュリティ : WPAとWPA2のエンタープライズ
認証 : トンネル化TLS
匿名の識別子 : 入力しなかった
CA証明書 : (なし)
内部認証 : PAP
ユーザ名 : ユーザ名@ほげほげ
パスワード : パスワード
とすればOKだったです。

あ、忘れてた。日本語入力。これは、
aptitude update
aptitude install scim scim-anthy
reboot

して一発でうまくいったです。日本語入力の開始/終了は、Control+Spaceキーがデフォルト設定ですが、半角/全角キーでも可能にしたい場合は、デスクトップの何もない部分を右クリック >「SCIM入力メソッドの設定」>「フロントエンド」内の「全体設定」にある「開始/終了」右端の「...」をクリック>「開始/終了キーの設定」ウインドウの「キーコード」右端の「...」をクリック>半角/全角キーを押す>「追加」をクリックして、ウインドウ上部の「設定済のキー」にZenkaku_Hankakuが入ったことを確認>「OK」をクリック>「OK」をクリック、で
半角/全角キーで日本語入力のオン/オフができるようになるです







外出専用EC19C-N52CのWindows 7とほぼ同等のことがCrunchBang Linuxでできていることになり、何も困らなさそう。しかも、個人的にはなんだかWindowsより使い易い(SPARC-Sun-Solaris2.x+X11+Enlightenment or Blackboxで育ったせい?)。外出専用機のHDDを取り外して、SDHCカードにインストールしたCrunchBang Linuxを使えば満足できそうな気がしてきたです。