prism

2004-11-26

把 GNU/Debian 裝在 IBM X31 上


Debian


是非常好用的 Linux 版本, 在國外是相當受歡迎的 Linux, 您可以選擇跟隨不同的版本, 有 stable, testing, unstable, stable 適用於一般不需最新套件軟體, 只追求穩定的使用者, testing 的軟體版本則較新, unstable 則是更新的軟體版本, 我是裝 testing 的 Debian, 是由官方網站下載的 testing CD

每週都有新的光碟, 是 weekly build 的光碟, 我是選擇裝 i386 的第一片

前置作業


將原本 IBM 硬碟上的 HPA 備分起來, 預防萬一, 用 Debian 光碟開機後, 先利用 Debian 硬碟分割工具, 將原本的硬碟空間改變, 我原本是40G的 C 碟一顆, 扣掉 IBM 的隱藏區後大約還有 37 G 的空間, 將 C 碟的空間縮小(原本資料不會不見), 我是將 C 碟縮到 10 G, 在割一個 6 G 的 FAT 磁區, 準備要放 HPA 的備份, 請參考 IBM HPA BACPUP & RESTORE

開始安裝


先了解硬體是哪些, 我的 IBM X31有

  • CPU 1.6

  • INTEL gigabit 網路晶片

  • ATI 顯示晶片

  • BlueTooth

  • INTEL 2100 3B wireless

  • i810 audio


lspci的結果:

debian:~# lspci
0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03)
0000:00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
0000:00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
0000:00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
0000:00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01)
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81)
0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01)
0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY
0000:02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
0000:02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
0000:02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)
0000:02:01.0 Ethernet controller: Intel Corp. 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
0000:02:02.0 Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)

大概就這些了, 需要的大概也就這些了, 想到再加, 首先由光碟開機, 我是選擇 linux26 的開機方式, 我想用 2.6 Linux 核心了, 按照說明一步步安裝, 請參考 Debian Install (Debian 無痛起步法), 或是 , 圖解 Debian 桌面入門, 安裝好之後, 就會抓到聲音, 不過是用 OSS Sound system, 我想改成 ALSA 的聲音系統, Xfree86 也可以正確得設定, 電源管理是用 2.6 核心預設的 ACPI 的方式作管理, 將

/etc/apt/source.list

設定好吧, 我的內容是:

terry@debian:~$ cat /etc/apt/sources.list
deb ftp://debian.linux.org.tw/debian testing main non-free contrib
deb ftp://debian.linux.org.tw/debian-non-US testing/non-US main non-free contrib
deb-src ftp://debian.linux.org.tw/debian testing main non-free contrib
deb-src ftp://debian.linux.org.tw/debian-non-US testing/non-US main non-free contrib
deb http://security.debian.org/ testing/updates main contrib
# Mplayer
deb ftp://ftp.nerim.net/debian-marillat/ testing main
# K3b
deb http://www.planet-moll.de/debian sarge main

mount XP fat file system


把 XP 原本分割的 6 G 的 fat 磁區 mount 起來, 成為 Windows 和 Linux 共享的磁區, 在 /etc/fstab 中加入

/dev/hda2 /mnt/xpshare vfat user,noauto,iocharset-big5 0 0

下面是我的 fstab file 給大家參考:

terry@debian:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda3 / ext3 defaults,errors=remount-ro,noatime 0 1
/dev/hda5 none swap sw 0 0
/dev/scd0 /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
/dev/sda1 /mnt/pendrive vfat user,noauto 0 0
/dev/hda2 /mnt/xpshare vfat user,noauto,iocharset=big5 0 0

True Type 字型, 微軟細明體, 瑩火飛前輩的新宋體


除了, 原本有安裝的文鼎字型外, 將 xpshare mount 起來,mount xpshare 就可以將微軟細明體的字體復製到 Linux 下, 下載瑩火飛前輩的新宋體, Font, (真是要感恩前輩的奉獻) 將字體存放到一個通用的目錄下, 我是放在

/usr/share/fonts/truetype/mingliu

/usr/share/fonts/truetype/firefly 下

利用 KDE 的字型管理工具(kcontrol 下的字型管理), 將這兩的字型加入, 順便在字型設定中把anti alias及sub-pixel hinting 選起來就可以了, 字會更清楚, 看看

/etc/X11/XF86Config-4

檔案內的字型部分有無將字型的路徑加入, 如果沒有請自行加入

Wireless, INTEL 2100 3G


這一部分 intel 已經有發表在 Linux 上的驅動程式,網站是 http://ipw2100.sourceforge.net/

您可以去下載firmware, 在 Debian 下, 則是要安裝:

ipw2100-source
hotplug
wireless-tools
kernel-package
kernel-kbuild
kernel-headers
debhelper

等套件

參考一下, 我安裝的kernel package:

terry@debian:~$ dpkg -l "*kernel*" | grep ^i
ii kernel-headers 2.6.8-4 Header files related to Linux kernel version
ii kernel-headers 2.6.8-4 Linux kernel headers 2.6.8 on PPro/Celeron/P
ii kernel-image-2 2.6.8-4 Linux kernel image for version 2.6.8 on PPro
ii kernel-image-2 2.6.8-4 Linux kernel image for version 2.6.8 on PPro
ii kernel-kbuild- 2.6.8-1 Linux kernel 2.6 kbuild tools
ii linux-kernel-h 2.5.999-test7- Linux Kernel Headers for development

接著就請大家看一下 /usr/share/doc/ipw2100-source 的說明, 照著說明安裝, 看 doc 應該是用 Linux 必須的觀念, 讀簡單的英文就成了家常便飯, 最後再用 modprobe ipw2100, 就可以把 module 載入, 記得下載同版本的firmware這樣我們就有了 eth1 這個新的網路介面了

這是我的流程, 不過還是建議您要有看 doc 的習慣:

debian:~# cd /usr/src/
debian:/usr/src#
debian:/usr/src# tar zxvf ipw2100-source.tar.gz
debian:/usr/src# module-assistant a-i ipw2100

裝完了別忘了去下載版本符合的 firmware
在放入 /usr/lib/hotplug/firmware 這個資料夾, 並且解壓縮:

debian:/usr/lib/hotplug/firmware# tar zxvf ipw2100-fw-1.3.tgz

老話一句, 記得養成看 doc 的習慣

接下來 您可以先手動載入 ipw2100 這一個 kernel module:

debian:/usr/src#modprobe ipw2100

試試看有沒有問題:

debian:/etc# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11b ESSID:"test" Nickname:"ipw2100"
Mode:Managed Frequency:2.422 GHz Access Point: 00:02:6F:01:58:AA
Bit Rate=5.5 Mb/s Tx-Power=32 dBm
Retry:on RTS thr=2304 B Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=92/100 Signal level=-66 dBm Noise level=-98 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
eth2 no wireless extensions.
sit0 no wireless extensions.

ALSA Sound System


首先將 oss sound disable, Debian 的 testing 在安裝時是用discover 來偵測硬體, 將原本的 OSS SOUND 關閉, 在 /etc/discover.conf 最後一行加入

skip i810_audio

安裝 alsa-base 及 alsa-utils
參考:

debian:/etc# dpkg -l "*alsa*" | grep ^i
ii alsa-base 1.0.6a-5 ALSA configuration files
ii alsa-utils 1.0.6-3 Advanced Linux Sound Architecture (utilities
ii gstreamer0.8-a 0.8.5-1 ALSA plugin for GStreamer
ii libpt-plugins- 1.6.6.4-5 Portable Windows Library Audio Plugin for th

再用 alsaconf 來設定即可

ACPI Power Manage


安裝 acpi 及acpid , 在參考一下內附的doc , 及 x31.sh , 至於要不要安裝 ibm_acpi 就見仁見智了, 我是沒有裝

我的 x31.sh 是放在 /etc/acpi/ 下面,您必須在 /etc/acpi/events/default

這樣設定:

terry@debian:~$ cat /etc/acpi/events/default
# This is the ACPID default configuration, it takes all
# events and passes them to /etc/acpi/default.sh for further
# processing.
# event keeps a regular expression matching the event. To get
# power events only, just use something like "event=button power.*"
# to catch it.
# action keeps the command to be executed after an event occurs
# In case of the power event above, your entry may look this way:
#event=button power.*
#action=/sbin/init 0
# Optionally you can specify the placeholder %e. It will pass
# through the whole kernel event message to the program you've
# specified.
event=.*
action=/etc/acpi/x31.sh %e

按造 x31.sh 裡寫的, 我的 Fn+F4 會休眠, 可是大約 3, 4 秒 就又在文字模式下醒過來, 因為在 x31.sh 中fgconsole 路徑錯誤, 將/usr/bin/fgconsole 改成/bin/fgconcole, error 又 說 xxxxx1d.7 裝置不能 suspend, 這應該是, ehci_hcd 這一個 kernel module 造成的, 我把這個 module unload 後, 可以Fn+F4 (suspend), 可是醒不過來, 要按 power 才行,目前, 還有問題, 查了一下 Google 說是 2.6.8 kernel usb 部份的 bug 在 2.6.9 就有修正了, 等不及的就自己先編吧

Fn+F3 的部份, 因為在x31.sh 他抓的even 是在 /proc/acpi/ibm 下面,就一定要裝 ibm_acpi 這個 kernel modul 非常容易裝, 但是我裝了後, 不能正確捉到 Fn+F3, 我想還需要 debug 一下

Fn key


關於 Fn key 的功能, 可以安裝, tpb 這一個套件, 就可以像在 windows 裡一樣, 按 Fn+Home(螢幕變亮), Fn+End(螢幕變暗) , 及音量的升降,都有圖示, 也可以自行設定IBM按鍵

客制化 Xsession.d 下的服務


在登入時我是用 kdm 來作管理(太騷包了), 又一定都會需要中文輸入法, 也不想浪費 x31 鍵盤上 forward, 和 backward 這兩個鍵,加了兩個檔案在
/etc/X11/Xsession.d/ 目錄下, xcin 是參考 doc, xmodmap 則是參考 Xsession 的 man page

/etc/X11/Xsession.d/40custom_load-xmodmap 檔案內容:

debian:/etc/X11/Xsession.d# cat 40custom_load-xmodmap
SYSMODMAP="/etc/X11/Xmodmap"
USRMODMAP="$HOME/.Xmodmap"
if [ -x /usr/bin/X11/xmodmap ]; then
if [ -f "$SYSMODMAP" ]; then
xmodmap "$SYSMODMAP"
fi
fi
if [ -x /usr/bin/X11/xmodmap ]; then
if [ -f "$USRMODMAP" ]; then
xmodmap "$USRMODMAP"
fi
fi

/etc/X11/Xsession.d/70xcin 檔案內容:

debian:/etc/X11/Xsession.d# cat 70xcin
LC_CTYPE=zh_TW.Big5; export LC_CTYPE
XMODIFIERS="@im=xcin"; export XMODIFIERS
xcin &

這是我的 ~/.Xmodmap:

terry@debian:~$ cat ~/.Xmodmap
keycode 234 = Prior
keycode 233 = Nex

keycode 是用 xev 去抓的
這樣一來, 就可以把 x31 鍵盤上的 forward, backward 變成 "上一頁" 和 "下一頁"

SpeedStep


在 Linux 下, 有相當多的套件可以控制, 基本上您必須有載入
這些 kernel module, 或是有編入核心, 我是把
speedstep_centrino
cpufreq_userspace
加入 /etc/modules 中
然後我是安裝 powernowd, 是相當實用的套件, 可以設定cpu 每一個 step 的級距, 其他還有cpudyn, cpufreqd 或是其他的套件, 都有相似的功能, 能讓您得筆記型電腦適時的發揮效能, 也能省電

最後來一張快照吧:


快照

WindowMaker

相關資源:


中文:

英文:

NOTE:



  • 2004/11/03: 增加 Xmodmap, 及 Xsession.d 部分

沒有留言: