Let's Note W2 (CF-W2BW1AXS)を入手しました。 これにLinuxをインストールしてみます。
内蔵有線LAN | Intel | 8139tooと自動設定 |
内蔵無線LAN | Intel PRO/Wireless LAN 2100 3B Mini PCI | Intelがドライバをリリースしていませんが、 NdisWrapperが使用できます |
ビデオ | Intel 82852 グラフィック・コントローラ | 1024x768 16bppで表示可能 |
サウンド | Intel i810 | sndconfigでi810_audioと設定される |
Linuxでは内蔵無線LANが使用できません。 メルコの無線LANカードは使用できました。
Linux上では Fnキーを押して、音量を調節したり、 画面の明るさを調整したりできませんでした。
Linuxをインストールするために、Windows領域になっているHDDを
パーティションを切ってLinux領域を作成します。
Windowsを削除しちゃう場合は関係ありません。
標準的な設定や内蔵機器の設定を紹介します。
標準外の設定を試した結果を紹介します。
バックアップを取る
ハードディスクをいじるため、Windowsのバックアップを取っておきましょう。 W2はリカバリCDが付いていたので、特に何もソフトを入れていなかったり、 データがなければバックアップは要らないかも知れません。
KNOPPIX 3.3日本語版で起動
1 CD Linuxで知られるKNOPPIX 3.3日本語版を使ってみます。 HDDにインストールせずに使えるので便利ですね。
Vine Linux 2.6r3をインストールします。 さらに細かくパーティションを分割します。 Disk Druidで以下のようになりました。
hda1 | 19GB | Windows領域 | 7 | |
hda2 | 19GB | 拡張領域 | f | |
hda5 | 128MB | /boot | 83 | |
hda6 | 9.5GB | /home | 83 | |
hda7 | 5GB | / | 83 | |
hda8 | 4GB | /usr/local | 83 | |
hda9 | 512MB | SWAP | 82 |
インストール時は、グラフィックインストールできました。 Xの設定は今回はスキップしましたが、1024x768 16bppならできるかも知れません。 LILOはMBRにインストールします。
再起動すると、WindowsもLinuxも起動できました。
システムをアップグレードするにしてもLANが使えないと話になりません。 そこで、まずはじめにLANを設定します。kudzuで自動認識しました。 /etc/modules.conf は以下のようのなりました。
/etc/modules.confの内容 (以下を追加)
alias eth0 8139too
ネットワークの設定 (DHCPを利用)
netconfigコマンドを用いて、DHCPを使用するようにチェックを入れると、 /etc/sysconfig/network-scripts/ifcfg-eth0 が作成されます。 内容は以下の通り。
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp
networkの再起動
# /sbin/service network restart
ネットワークが接続できたら、aptでアップグレードしておきます。
# apt-get update # apt-get dist-upgrade # apt-get install kernel#2.4.22-0vl2.10 kernel-headers kernel-source kernel-doc
/etc/lilo.confに新しいカーネルの設定を加え、liloを実行し再起動します。
image=/boot/vmlinuz-2.4.22-0vl2.10 label=linux.new read-only root=/dev/hda7 other=/dev/hda1 optional label=WinXP
sndconfigを使ってサウンドの設定がすぐにできました。i810_audioドライバ が使用されます。
Xconfiguratorで1024x768 16bppを選択したら設定できました。
外部モニタに表示するときは、Fnキーは使えません。 i810switch を/usr/local/binにインストールして、コマンドラインで切替えます。 /usr/local/bin/ext_monitor.sh と言うシェルスクリプトを作成して、外部モニタを制御することにしました。
$ ext_monitor.sh on $ ext_monitor.sh off
NdisWrapper でなんとか動かしてみようと思います。 まず、カーネルを2.4.23以上にしないといけません。VineSeedから2.4.24の src.rpmを持ってきて、リビルドしてインストールします。
Windows側から、\WINDOWS\inf\oem27.inf と \WINDOWS\system32\drivers\w70n51.sysをコピーして置いてきます。 oem27.infの方は隠しフォルダにあり、また27と言う数字は製品の時期によって 変わりそうです。ファイルを開いて、それらしいものを見つけます。
または、Supported Chipsets からドライバをダウンロードして使用します。
# tar zxvf ndiswrapper-0.4.tar.gz # cd ndiswrapper # ./install.sh Give the full path to .inf file of windows driver? oem27.inf Give the full path to .sys file of the windows driver? (oem27.sys) w70n51.sys Executing make install to build the module and loadndisdriver. make -C driver install ... make[1]: 出ます ディレクトリ `/root/src/ndiswrapper/utils' Which directory should the loadndisdriver be installed in? (/usr/sbin) /usr/local/sbin What interface name should ndiswrapper configure? (wlan0) Where should module directives be placed? (/etc/modules.conf)
# tar zxvf ndiswrapper-0.5.tar.gz # cd ndiswrapper # make install # ndiswrapper -i w70n51.inf (パスはドライバの置いてあるところに変更する) # ndiswrapper -l (確認) Installed ndis drivers: w70n51 present,fuzzy # modprove ndiswrapper (ドライバの読み込み)
ここで、/var/log/messageにエラーが出ず、次のようにMACアドレスが表示され れば問題ありません。
wlan0: ndiswrapper ethernet device xx:xx:xx:xx:xx:xx using driver w70n51.sys
エラーが出ていなければ、次のようにすれば/etc/modules.confに設定が加え られます。
# ndiswrapper -m
設定ができたら、/etc/sysconfig/network-scripts/ifcfg-wlan0 にネットワー クに関する設定をします。 <ESSID>にはアクセスポイント(AP)に設定したESSIDを書きます。
DEVICE=wlan0 ONBOOT=no BOOTPROTO=dhcp USERCTL=yes ESSID=<ESSID>
次のようにしてネットワークインターフェイスwlan0を有効にします。
# ifup wlan0
現状では、AP経由でDHCPでIPアドレスが振られるところまでできました。 しかし、その後の通信ができていません。
されたようです。 詳細はhttp://ipw2100.sf.net/より。
内蔵の無線LANが使えないので、メルコ(BUFFALO)の無線LANカードを使えるようにしました。
カード自体はすぐに認識されたのですが、IRQがうまく取れないらしく、
失敗してしまいました。
有線も無線もDHCPでIPアドレスを取得するとします。起動時は有線LANが eth0として設定されます。無線LANはeth1としますが、起動時はoffにします。
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp
DEVICE=eth1 ONBOOT=no BOOTPROTO=dhcp USERCTL=yes
/etc/pcmcia/config.optsを次のように修正します。
#exclude irq 4 ※ この行をコメントアウトするservice pcmcia restratで設定を有効にできます。
無線LANカードをスロットに差したときには、有線LANのeth0をdownにし、 無線LANのeth1をupにします。また、ルーティングも変更します。 これらの設定は /etc/pcmcia/network に記述します(以下は抜粋)。
#! /bin/sh action=$1 device=$2 case "${action:?}" in 'start') ### ここから設定を追加 if [ -f /etc/sysconfig/network-scripts/ifcfg-${device} ]; then active=`/sbin/ifconfig | grep eth0` if [ ${#active} -gt 0 ]; then /sbin/ifconfig eth0 down # eth0を使用中ならば停止 fi /etc/sysconfig/network-scripts/ifup ifcfg-${device} # eth1の起動 #/sbin/route add default gw 192.168.1.1 # ルーティング変更 fi ### ここまで ;; 'stop') # [ -f /etc/sysconfig/network-scripts/ifcfg-${device} ] && \ /etc/sysconfig/network-scripts/ifdown ifcfg-${device} ### ここから設定を追加 /sbin/service network restart # eth0を再起動 ### ここまで ;; 'restart') /sbin/ifconfig ${device:?} down up ;; esac
/proc/cpufreq で現在の動作周波数を変更できます。
$ cat /proc/cpufreq minimum CPU frequency - maximum CPU frequency - policy CPU 0 124689 kHz ( 12 %) - 997517 kHz (100 %) - performance
/usr/local/sbin/cpufreqと言うシェルスクリプトを用意すれば、 powersaveとperformanceで動作周波数を変えることができます。 powersaveを選択すると、12%に落とすことができます。/proc/cpuinfo で確認すると、124.602 MHz になっています。 performanceを選択すると、100%まで使用します。
# /usr/local/sbin/cpufreq powersave [root@nerve kawamura]# /usr/local/sbin/cpufreq status minimum CPU frequency - maximum CPU frequency - policy CPU 0 124689 kHz ( 12 %) - 500000 kHz ( 50 %) - powersave # /usr/local/sbin/cpufreq performance # /usr/local/sbin/cpufreq status minimum CPU frequency - maximum CPU frequency - policy CPU 0 124689 kHz ( 12 %) - 997517 kHz (100 %) - performance
acpiが利用できるので、「電源ボタンで停止(halt -p)」を実行するようにしてみました。 acpidというパッケージがあるので、これをダウンロードします。 設定は /etc/acpi/events/の下にイベントに対応した設定を書いたファイルを用意すればよいです。
電源ボタンを押した際に halt -p を実行するには、例えば /etc/acpi/events/power_off と言うファイルに以下のように書きます。
event=button/power * action=/sbin/halt -p
event=行は/var/log/acpid に表示される内容をみながら決めます。 action=行は実行するコマンドか、スクリプトのファイル名を指定します。
cpufreqとacpidを組み合わせると、ふたを閉じた際にpowersaveにすることができます。 また、ふたを開けた際にperformanceに戻すこともできます。 /etc/acpi/actions/lid_down.shと言うシェルスクリプを用意し、 /etc/acpi/events/lid_down に以下のように記述します。
event=button/lid action=/etc/acpi/actions/lid_down.sh %e
ふたの開け閉めの判定はbutton/lidが呼ばれた回数が偶数か奇数かで判定しています。 何かの拍子にずれた場合、誤動作するかも知れません。
同様に、ACアダプタが接続されているかどうかで、切り替えることもできます。 /var/log/acpidのイベントの第4引数が 00000000 ならばACアダプタ無しで、 00000001ならばACアダプタ有りと言うことがわかります。
/etc/acpi/actions/ac_adapter.shを用意し、 /etc/acpi/events/ac_adapter に以下のように書きます。
event=ac_adapter action=/etc/acpi/actions/ac_adapter.sh %e
注! ふたの開閉とACアダプタは互いに連動していません。 従って、ふたを閉めてからACアダプタを刺すと、performanceになります。 イベント駆動式ですから、最後に発生したイベントに依存します。
Vine Linux 2.6r3より、ソフトウェア・サスペンドが可能になりました。 hibernationと言うコマンドを実行すると、現在の状態をスワップ領域に 保存して、停止します。次に、電源を入れると、保存してあった元の状態に 戻ってくれます。acpiで「ふた閉じ」を検知して、サスペンドさせてもよいかも 知れません。
ただし、サスペンドに失敗したり、復帰した際に一部のドライバモジュールが 戻らないこともあるようです。使用に際しては、何度かテストを繰り返した方が よいでしょう。復帰の際に、サービスを再起動させることもできるので、設定を ちゃんとすれば使えるはず。
カーネルオプションを設定する (/etc/lilo.conf)
スワップ・パーティションをデータの保存領域にするので、 カーネルオプションを追加します。/etc/lilo.confに以下のように記述し ます。
image=/boot/vmlinuz-2.4.22-0vl2.8 label=linux initrd=/boot/initrd-2.4.22-0vl2.8.img read-only append="resume=/dev/hda8" root=/dev/hda6
この設定で、ソフトウェア・サスペンドが有効になります。
ソフトウェア・サスペンド用のソフトウェアをインストールする
ソフトウェアは http://sourceforge.net/projects/swsusp からダウンロードします。suspend-script を選択してください。ここから、 suspend.shをダウンロードします。
rootユーザで、suspend.shを実行すると、 /usr/local/sbin/hibernate と言うコマンドがインストールされます。
/etc/suspend.confを確認
設定ファイルは /etc/suspend.conf です。 特に設定を変更しなくても、使えると思いますが、モジュールが復帰しな い場合などは、このファイルをいじればよいはずです。
rootユーザで、/usr/local/sbin/hibernate を実行すると、モジュールの削 除やサービスの停止などを行い、現状を保存します。そして、停止しました。
注!: 再起動するときは、同じカーネルで起動しないと、 壊れるとどこかに載っていましたので、間違っても違うカーネルで起動しないよ うに。私は実験したくはありません。
電源を入れると、一応復帰しました。しかし、USBのモジュールが戻っていなかっ たので、手動で murasakiを再起動しました。これは/etc/suspend.conf をうま く書けば、自動化できるかも。
注!: はじめてサスペンドさせたとき、"-"がいっぱいでて 停止しないことがありました。2回目からはうまく行っています。まだ、失敗す る場合があるようです。