2009年8月5日水曜日

Centos5.3をノートPCにインストールしてみました。

ひさしぶりに自宅のPCをいじる気になったので、開発環境を準備するつもりで、マルチブートにすることに。

以下、備忘録です。

とはいえ、手持ちのマシンはSharp PC-AE30Jという4年目のAMDSempron搭載のノートPCなので不安も多い。とりあえず、さらっとマシンのことを調べてみると、やはりLinuxとの相性は非常に悪いようで、かろうじてUbuntuは使えそうだという評判。

しかし、ここは仕事で使うことになりそうなCentosにしようと決心する。

とりあえず、USB起動でインストールしようとBIOSを調べるも、USB起動はできませんでした。あーあ。大人しくCDにネットワークインストール用のイメージを焼いて、インストールを開始。

CDを焼いて、ネットワークの設定して、リポジトリのURLを設定して、パーティションは自動で切ってもらって、ユーザー作って、ブートローダ(GRUB)選んで、パッケージを選びました。この辺の順番はよく覚えてないっす。この段階では、最低限必要な環境だけインストールして、あとは、オンデマンドでインストールすることにする。ビデオカードに不安があるのでX関連もインストールしないでおく。

インストールが完了したら、CDを取り出して再起動したら、おお、動きました。

さて、ここからは、必要に応じてパッケージを増設していくことになりました。

1)XとGNOME

XとGNOMEは、


# yum groupinstall "X Window System" "GNOME Desktop Environment"


で、ちゃっちゃとインストールできたわけですが、いざ


# setup


でディスプレイの設定をしようとすると、案の定ブラックスクリーンで動きません。
で、いろいろ調べてみたところ、VIAのオンボードのビデオカードのドライバは結構長いことオープンソースで作られているらしいということがわかる。

例にyumで探してみると、epelのリポジトリにはあるようなので、yumのリポジトリにEPELを追加する。


# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm


リポジトリが追加されて、


# yum install xorg-x11-drv-openchrome.i386


インストールはできました。。。
次は設定です。


# vi /etc/X11/xorg.conf


で設定ファイルを開いて、Deviceセクションを変更します。


Section "Device"
Identifier "Videocard0"
Driver "openchrome"
Option "ForcePanel" "True"
EndSection


"ForcePanel"は、EPELで公開されているバイナリパッケージには、このPCで使用されているpciバスのIDが登録されていないようで。このオプションを使うとこの問題は回避できるそうです。

再度、setupを実行すると。どうやらうまくいきました。
3Dのサポートやらなんやらとまだできることはありそうなんですが、とりあえず動くので、ビデオカード回りはとりあえず終了。

2)フォント

フォントを入れなければ、日本語読めません。ということで、日本語フォントをいれました。
IPAフォントと言うのが綺麗だというので、それにしてみました。んー。なれれば読みづらいことはないですね。(参考サイト)

3)日本語入力

日本語入力はANTHYとSCIMを使用。(参考サイト)

4)WMV

MPLAYERを使います。(参考サイト)

5)無線LAN

いままでは、有線で作業してきたわけですが、やっぱりWindowsと同じように無線環境を使いたいと思ってしまうわけです。

わたしの使っている無線LANアダプタは、BuffaloのWLI-CB-AGというカードバススロットに差し込む形式のものですが、このアダプタにはAtheros製のチップセットが使用されているようで、差し込んだ段階で、カードのLEDが点灯しました。しかし、IPアドレスは取得できず、ルータとの通信もうまくいきません。

そこで、ndiswrapperというWindowsのドライバをラップしてLinux上で動作させるモジュールを利用して、Buffaloが提供するドライバを使用することにしました。

ndiswrapperはdkmsパッケージ(dkms-ndiswrapper)が配布されているので、それを使ってみたものの、うまく動作しないので、ソースからコンパイルすることに。(参考サイト)

コンパイルのために、カーネルのソースからコンパイル。

# cd ~
# mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
# echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros
# rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-128.4.1.el5.src.rpm 2> /dev/null


rpmbuild以下にソースがダウンロードされるので、環境に併せて設定を変更し、パッチを当てる。


# cd rpmbuild/SPECS
# rpmbuild -bp --target=`uname -m` kernel-2.6.spec 2> prep-err.log | tee prep-out.log



コンパイルパラメータを変更する。


# cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i686/
# make menuconfig

Kernel hacking ---> Use 4Kb for kernel stacks instead of 8Kb >> offにする
Device Drivers ---> Network device support ---> Atheros 5xxx wireless cards support >> offにする


スタックサイズを4Kbに設定するとウィンドウズのドライバはまず動かないということで、OFF。
(AtherosのドライバはNdiswrapperを使用する場合には必要ないので、OFF。入ってても良さそうな気がしますが、わたしの場合は、はずさずにコンパイルすると、システム再起動やシャットダウンの際にデバイス終了できず、フリーズするという事態に陥りました。)

コンパイルしてインストールする。



# make prepare
# make modules_prepare
# make
# make modules
# make install
# make modules_install


これで一端再起動しました。

続いて、ndiswrapperのインストール。

http://sourceforge.net/projects/ndiswrapper/files/stable/1.55/ndiswrapper-1.55.tar.gz/download

をダウンロードして、解凍。


# tar zxvf ndiswrapper-1.55.tar.gz


展開されたディレクトリに移動して、コンパイルとインストール。


# cd ndiswrapper-1.55
# make clean
# make
# make install


Buffaloのサイトからドライバファイルをダウンロード。実行可能な圧縮ファイルの形で提供されているので、これをlhaを使って解凍します。


# lha x wdrv-1052.exe


そして、ndiswrapperにドライバを登録、さらにコンフィギュレーションファイルを作成して、ndiswrapperをモジュールとして登録する。


# ndiswrapper -i wdrv-1052/cbaghp/winxp/netaghp.inf
# ndiswrapper -m
# modprobe ndiswrapper


ここまでで、問題がないかどうか確認する。


# ndiswrapper -l
netaghp : driver installed
device (168C:001B) present

# modprobe -l | grep ndiswrapper
/lib/modules/2.6.18-128.2.1.el5/misc/ndiswrapper.ko


ということで、問題なさそうなので、次に進む。

ルータ側の設定では、タイプはIEEE802aで、チャンネルは36、認証方法はWPA-PSK/AESを選択しているので、それに併せて、wpa_supplicantのインストールを行う。これはWPA認証をサポートするためのデーモンだそうです。


# wget http://w1.fi/releases/wpa_supplicant-0.6.9.tar.gz
# tar zxvf wpa_supplicant-0.6.9.tar.gz
# cd wpa_supplicant-0.6.9
# make
# make install


そして、設定ファイルを変更します。


# vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

network={
ssid="ルータ側で設定したSSID"
proto=WPA
key_mgmt=WPA-PSK
psk="パスワード"
pairwise=CCMP ...AES
group=CCMP ...AES
}


wpa_supplicantを起動します。


# service wpa_supplicant start


そして、ネットワークの設定を変更します。


# vi /etc/sysconfig/network-scripts/ifcfg-wlan0

TYPE=Wireless
DEVICE=wlan0
HWADDR=カードのMACアドレス
BOOTPROTO=dhcp
ONBOOT=yes
IPV6INIT=no
ESSID="SSID"
CHANNEL=36
MODE=Managed
SECURITYMODE=off
RATE=auto
IWPRIV="network_type a"



デバイスを有効にします。


# ifup wlan0


接続確認します。


# ifconfig wlan ...これでIPアドレスとれてたらOK
# ping www.google.co.jp ...これでping帰ってきたら最高。


ここまでで、ネットワークへの接続は完了しましたが、PC起動時に必要なモジュールの起動はやってしまいたいということで、起動用のエイリアスをいじったり、設定をいじったりしました。

まず、wpa_supplicantのランレベルを345に設定します。


# chkconfig --level 345 wpa_supplicant on


それから、関連する起動スクリプトの名前を変更して、起動順を正しくします。(参考サイト)関連するスクリプトは、network、wpa_supplicant、messagebusの三つですが、これを、起動自は、messagebus -> supplicant -> networkに、終了時と再起動時には、network -> wpa_supplicant -> messagebusにします。

ついでに、グラフィカルログオンできるようにしておきます。


# vi /etc/inittab

- id:3:initdefault:
+ id:5:initdefault:

これで再起動して、無線LANの起動は成功しました。

こんな感じで、無線LANのことばっかりになってしまいましたが、なんとか使える環境になったんじゃないかと思われます。これからの課題としては、FlashPlayerを入れるとか、あと、通信のパケットロスをなんとか減らせないかとか、ウィンドウの描画をもう少し速くできないかとか、そのあたりを調べていこうかなと思ってます。


0 件のコメント: