Linux on Inspiron 700m
はじめに
DELLの Inspiron 700m (テレビCMでやってる/やってたやつ)が生協で安かったので、 クラスメイトが買いました。 それにつられて、僕も買ってしまいました。
性能は申し分ないのですが、サイズと重さが微妙です。 A4ジャストサイズ・12.1インチディスプレイは据置くにはちょっと小さいです。 1.7kgはモバイルにはちょっと重いです。
まあ、とにかくDebian GNU/Linux (Sarge)を インストールしてみましたので、ノートしておきます。
カーネル
2.6.8を利用。 2.4(Knoppix3.4日本語版に入ってたやつ) だとNICドライバがうまく動かなかったため。
NICドライバ
b44を利用。前述のようにカーネルのバージョンによっては動きません。 Knoppix3.4日本語版に入ってる2.6カーネルでは動きます。
USB関連
usbcore, uhci_hcd, ehci_hcd, ohci_hcd, usbmouseモジュールを読み込みました。
KnoppixだとUSBメモリを差し込んだまま起動すれば自動で認識されます。
インストール手順のメモ
詳しくはKnoppixでDebianをインストールを参照してください。
- Knoppixで起動
- cfdisk /dev/hda
- mke2fs -j /dev/hda1 (例)
- mkreiserfs /dev/hda5 (例)
- mkswap /dev/hda6 (例)
- ファイルシステムのマウント
- /etc/resolv.confの設定
- debootstrap の最新版debを入手し、展開する(任意)
- debootstrap sarge /mnt/debroot http://www.t.ring.gr.jp/pub/linux/debian/debian 最新版を展開したところ/usr/lib/debootstrap/scripts/sarge
- エラーが出て止まっても、ここでは気にしない
- chroot /mnt/debroot /bin/bash
- chmod o+s /tmp /var/tmp
- /etc/apt/source.listの設定
- apt-get update
- apt-get -f install
- exim4の設定は後まわし
- base-config
debootstrapについてはDebian GNU/Linux on OpenBlockS266を参考にしました。
各種設定
詳しくはKnoppixでDebianをインストールを参照してください。
- /etc/fstab
- /debroot/etc/hostname
- /debroot/etc/hosts
- /debroot/etc/network/interfaces
- apt-get --reinstall dpkg
- rm /usr/sbin/sendmail && ln -s exim4 /usr/sbin/sendmail
- apt-get install kernel-image-2.6.8-1-686
- apt-get install grub
GRUBの設定
詳しくはKnoppixでDebianをインストールを参照してください。
- grub-install --root-directory=/boot /dev/hda (エラーで止まる)
- cd /boot && mv boot/grub . && rmdir boot
- cd /boot/grub && cp /lib/grub/i386/* .
- cp /usr/share/doc/grub/example/menu.lst .
- menu.lstの設定。timeout,default,fallbackの行だけあればよい
- update-grub
- grubを起動して設定 (root (hd0,0) ; setup(hd0))
- いよいよ再起動
XFree86の設定
Dell 700m with Debian Sargeを参考にします。 1280x800の解像度にするにはちょっと複雑なことをします。
- Home of Alain Poirierから 855resolutionを入手
- make && strip 855resolution && cp 855resolution /uer/local/sbin
- /usr/local/sbin/855resolution 5c 1280 800 (これは起動時に毎回実行)
それから /etc/X11/XF86Config-4 をこんな感じに
/etc/X11/XF86Config-4: Section "Monitor" Identifier "Generic Monitor" HorizSync 30-90 VertRefresh 50-160 Option "DPMS" Modeline "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync
タッチパッドを使うには psmouse, mousedev モジュールを読み込みます。
USBメモリ
十条電子株式会社の Disk Key J!というUSBメモリを使いました。 各種設定ファイルは次の通り。
/etc/usbmgr/vendor/0c45/1060/module: scsi_mod sd_mod usb-storage
/etc/mtools.conf: drive b: file="/dev/sda1"
fstab: /dev/sda1 /mnt/flash vfat user,noauto,showexec 0 0
パワーマネージメント
- apt-get install acpi acpid hdparm
- hdparm -S 120 /dev/hda (アクセスがなければ10分でHDDの回転を止めるという意味。起動時に毎回実行)
バッテリが空になりそうになったら、自動的に電源を切る設定もしました。 恐いので試してません。
/etc/acpi/events/battery: event=battery action=/etc/acpi/battery.sh
/etc/acpi/battery.sh: #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin STAT=/proc/acpi/battery/BAT0/state if grep "capacity state:.*critical" $STAT > /dev/null 2>&1; then shutdown -h +1 "Battery critical" fi
ついにサスペンドができるようになりました。 まず S3 resume: no video - Sony S1XP にある video_post tool from Venki をダウンロードし、インストールします。
/etc/acpi/powerbtn.sh: #!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin MODULES="usbmouse ehci_hcd uhci_hcd usb_strage" /etc/init.d/usbmgr stop for m in $MODULES; do rmmod $m done umount /proc/bus/usb rmmod usbcore sync; sync; sync; echo mem > /sys/power/state video_post modprobe usbcore mount -t usbfs usbfs /proc/bus/usb for m in $MODULES; do modprobe $m done /etc/init.d/usbmgr start
これで電源ボタンを押すとサスペンドします。 もう一度電源ボタンを押すと復帰します。 Xを立ち上げているときには表示が乱れますので、 予めコンソールに切り替えておきます。
復帰したときにUSBマウスや、そのほかのUSB機器を認識しないことがあります。
モニタの電源を切るには次のように入力します。
% xset dpms force off
サウンド
次のようにしてsnd_intel8x0モジュールを読み込みます。
- apt-get install alsa-utils
- alsaconf
Skype-1.0.0.7が動きました。音声入力・出力ともに問題ありません。 ちなみにSkypeで日本語入力を文字化けなしに行うには、次の設定が必要です。
~/.qt/qtrc: [General] XIMInputStyle=Over The Spot
フォント
画面が小さく、解像度が高いので字が小さくなります。 仮想端末では次のようにして大きな文字を表示できるようにしました。 krxvt -fn rk24 -fm kanji24
Emacsのためには次のように設定しました。 rxvtでも同様の設定ができます。
~/.Xresources: Emacs*font: -sony-fixed-medium-r-normal--24-* Emacs*mfont: -jis-fixed-medium-r-normal--24-*
キーボード
CAPSをCtrlにする定番の設定の他に、 アプリケーションキーをAltに割当てました。 右Altキーがないためです。
~/.Xmodmap: ! [Caps] -> [Ctrl] remove Lock = Caps_Lock remove Control = Control_L !keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add Lock = Caps_Lock add Control = Control_L ! [Kanji] -> [Esc] keycode 49 = Escape ![Henkan] -> [Space] keycode 120 = space keycode 129 = space keycode 131 = space ![Windows] -> [Space] keycode 115 = space keycode 116 = space keycode 117 = Alt_R add mod1 = Alt_R
外部ディスプレイ出力
キーボードに切り替えスイッチがありますが、利きません。 linux on VAIO TR2を 参考に設定します。
- i855crt を入手する。
- 設定ファイルが /usr/local/etc/i855crt.conf になるように書き換える。
- インストール
- Ctrl+Alt+テンキーの「+」などで解像度を切り替える
- i855crt on 640x480@60
画面左上にゴミが入りますが、ほぼ問題ありません。 プロジェクタに繋げば gv ohp.ps -spartan のようにしてプレゼンができると思います。
i810switchでもいいのかもしれませんが、画面がちらつきます。 ディスプレイやプロジェクタとの相性かもしれませんが、よくわかりません。
プレゼンで全画面表示をするならpspresentが便利です。 ただし左上のゴミを回避するならgvの方がよいでしょう。
ネットワークの違いに対応する
家と学校では動作を変えるとか、ネットワークの有無とか。
これが最初のやりかたです。現在は違います。
- Exim4については後述。
- ntpdate はサーバをIPアドレスで記述する。タイムアウトが利く。
- runlevel 3 をスタンドアローンモードとする。GRUBの設定。
- /etc/rc3.d から要らないサーバは削除。今回は該当するものはなし。
- runlevel コマンドの出力によって挙動を変化させる。
現在のやりかたです。
- ntpdate はサーバをIPアドレスで記述する。タイムアウトが利く。
- ntpdate はときどき実行する。
- LAN内部でDHCPサーバを動かす。
- /etc/network/interfaces では eth0 は auto にしない。
- 別に起動スクリプトを用意し、バックグラウンドでeth0を有効にする。
/etc/cron.d/ntpdate: # m h dom mon dow user command 49 */3 * * * root /etc/init.d/ntpdate start > /dev/null 2>&1
/etc/network/interfaces: auto lo iface lo inet loopback iface eth0 inet dhcp pre-up /sbin/iptables-restore < /etc/iptables/active
/etc/init.d/localnet: #!/bin/sh PATH=/sbin:/bin:/usr/bin IFACE=eth0 case "$1" in start) echo -n "bring up: " ifup $IFACE > /dev/null 2>&1 & echo "$IFACE." ;; stop) echo -n "take down: " ifdown $IFACE > /dev/null 2>&1 echo "$IFACE." ;; force-reload|restart|reload) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|reload|force-reload}" exit 1 esac exit 0
# update-rc.d localnet start 41 S . stop 32 0 1 6 .
Exim4をinetd経由で起動するための細工
LANなしで起動したり、 インターネット向けのメールサーバにしたりの切り替えのためです。
この設定は実はあまり意味がないことがわかりました。 eth0が有効なのにLANに繋がってない、というのが問題でした。 eth0が無効ならExim4は動きます。
実行するコマンドは次の通り。
- update-exim4defaults --queuerunner queueonly
設定ファイルは次の通り。
/etc/inetd.conf: smtp stream tcp nowait Debian-exim /usr/sbin/exim4 exim4 -bs
/etc/cron.d/exim4-local: # Run queue every 15 minutes 08,23,38,53 * * * * Debian-exim if [ -x /usr/sbin/exim4 ]; then /usr/sbin/exim4 -q ; fi # Tidy databases 13 16 * * * Debian-exim if [ -x /usr/sbin/exim_tidydb ]; then /usr/sbin/exim_tidydb /var/spool/exim4 retry >/dev/null; fi 17 16 * * * Debian-exim if [ -x /usr/sbin/exim_tidydb ]; then /usr/sbin/exim_tidydb /var/spool/exim4 wait-remote_smtp >/dev/null; fi