在Dell Inspiron 700m笔记本电脑上安装Slackware
从打算买笔记本电脑开始,就留意哪些牌子和型号对Linux的支持比较好,在网上搜索了一些文章,结合自己的喜好,最终选择了Dell Inspiron 700m。Dell采取的是直销模式,所以订购是在网上和电话上进行的。选好型号和配置,把钱转账到Dell的账号,把进帐回单和经过确认的定单传真给Dell,4天之后,机器就通过邮政快递送过来了。
我选择的主要配置是:Pentium M 1.6G CPU,512M内存,12.1" 1280x800宽屏LCD,40G硬盘,DVD/CD-RW Combo,支持802.11b/g的无线网卡。lspci的结果如下:
00:00.0 Host bridge: Intel Corp. 82852/855GM Host Bridge (rev 02)
00:00.1 System peripheral: Intel Corp. 855GM/GME GMCH Memory I/O Control Registers (rev 02)
00:00.3 System peripheral: Intel Corp. 855GM/GME GMCH Configuration Process Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02)
00:02.1 Display controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02)
00:1d.0 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #3 (rev 03)
00:1d.7 USB Controller: Intel Corp. 82801DB (ICH4) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Inte易做图ce Controller (rev 03)
00:1f.1 IDE inte易做图ce: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 03)
00:1f.3 SMBus: Intel Corp. 82801DB/DBM (ICH4) SMBus Controller (rev 03)
00:1f.5 Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corp. 82801DB (ICH4) AC'97 Modem Controller (rev 03)
02:01.0 Network controller: Intel Corp.: Unknown device 4220 (rev 05)
02:04.0 CardBus bridge: Texas Instruments: Unknown device ac8e
02:04.1 CardBus bridge: Texas Instruments: Unknown device ac8e
02:04.2 FireWire (IEEE 1394): Texas Instruments: Unknown device 802e
02:04.3 Unknown mass storage controller: Texas Instruments: Unknown device ac8f
02:05.0 Ethernet controller: Broadcom Corporation: Unknown device 170c (rev 02)
我购买时特地选择了不安装Windows的机型,所以机器来的时候硬盘里面什么也没有。我有现成的Slackware 10.0光盘,打算先安装10.0版,然后用swaret升级到10.1版。
- 系统安装
安装过程很简单也很顺利,用安装光盘启动,以root登录,运行cfdisk对硬盘进行分区。注意:假如希望使用suspend to disk功能,swap分区需要比内存大30%以上。分区之后用setup命令进行安装,不赘。
安装完重新启动,发现默认的2.4.26内核不支持机器上的Broadcom 4400网卡。从Broadcom网站下载了网卡的Linux驱动,用一个U盘做中介cp到700m的硬盘,按照说明文件进行编译,得到bcm4400.o文件,用make install命令安装。在/etc/rc.d/rc.modules 里面增加 /sbin/modprobe bcm4400 一行,再重新启动,系统顺利地认出了网卡。
接下来用swaret升级到10.1版,也很顺利。
- 安装无线网卡驱动
Intel提供了Intel® PRO/Wireless 2200BG 无线网卡的驱动程序和firmware,都可以在http://ipw2200.sourceforge.net/下载到。这个驱动要求2.6.x版内核,于是我从Slackware的下载站下载了2.6.10版内核、内核源码(kernel-source)和内核头文件(kernel-header),按README.initrd文件进行升级。
升级内核之后,发现内核提供的b44模块本身即支持Broadcom网卡并能自动加载,不必再另外编译安装网卡驱动。
无线网卡驱动的安装方法在下载的文件里说得很清楚。需要注意的是,根据 /etc/hotplug/firmware.agent 中的设置,FIRMWARE_DIR=/lib/firmware,因此下载的firmware文件(我下载的是ipw2200-fw-2.2.tgz)需要解压到 /lib/firmware/ 目录中。网卡驱动(我下载的是ipw2200-1.0.0.tgz)的编译安装也很简单,解开源码之后先make,然后用root权限make install即可。
- 无线网络参数设置
Slackware从10.0开始提供了启动无线网卡的脚本 /etc/rc.d/rc.wireless,而无线网卡的参数在 /etc/rc.d/rc.wireless.conf 文件里设置。我的rc.wireless.conf的内容是:
INFO="home network"
# ESSID (extended network name) : My Network, any
ESSID="myhome"
# NWID/Domain (cell identifier) : 89AB, 100, off
NWID=""
# Operation mode : Ad-Hoc, Managed, Master, Repeater, Secondary, auto
MODE="Managed"
# Frequency or channel : 1, 2, 3 (channel) ; 2.422G, 2.46G (frequency)
FREQ=""
CHANNEL="6"
# Sensitivity (cell size + roaming speed) : 1, 2, 3 ; -70 (dBm)
SENS=""
# Bit rate : auto, 1M, 11M
RATE=""
# Encryption key : 4567-89AB-CD, s:password
KEY="s:catch restricted"
# RTS threshold : off, 500
RTS=""
# Fragmentation threshold : off, 1000
FRAG=""
# Other iwconfig parameters : power off, ap 01:23:45:67:89:AB
IWCONFIG=""
# iwspy parameters : + 01:23:45:67:89:AB
IWSPY=""
# iwpriv parameters : set_port 2, set_histo 50 60
IWPRIV=""简单说明一下:
- INFO
- 对网络的描述,可以随便填
- ESSID
- 这是无线网络的名称,同一个无线网络中的设备必须有同样的名称才能相互通信。我这里的设置和无线路由器中的设置一致。
- MODE
- 无线连接方式,我选择的是Managed
- CHANNEL
- 设置无线连接的信道。我这里的“6”和无线路由器中的设置一致。
- KEY
- WEP方式的加密密钥,必须和无线路由器中的设置一致。“s:”表明密钥是字符串,我用的是“catch”,restricted指明使用加密模式
其它参数是否需要设置,要视每个网络的具体要求而定,我这里设置好上面几个参数就可以工作了。
如果想更深入了解各个参数的详情,请 man iwconfig 。 - xorg设置
从这里下载适用于2.6.10内核的Intel显卡驱动。按照这篇文档的说明安装。
然后,需要下载一个叫做855resolution的小工具来设置1280x800的分辨率。下载源码,根据README文件的说明编译安装,然后在 /etc/rc.d/rc.local 里面添加启动时运行855resolution的命令以及必要的参数,例如我加的是: /usr/sbin/855resolution 5c 1280 800
我用xorgconfig命令设置xorg.conf文件,设置时显卡驱动选择i810,鼠标用默认设备/dev/mouse,协议选PS/2,分辨率设置成1280x800。
完成后,微调一下 /etc/X11/xorg.conf文件,将 Load "dri" 前面的注释号去掉以加载dri,启动3D加速。触摸板用默认的鼠标驱动就能实现直接在板上的单击和双击功能。一些参考资料提到可以用synaptics驱动来实现在触摸板边缘拖动滚动条的功能,但是我没法实现,每次试图加载synaptics都无法进入X,而且鼠标和键盘都会锁死,最终只得放弃。[page_break]
- ACPI设置
使用ACPI功能,需要用到button和battery模块。button模块监视电源开关键(power button)、屏幕开合状态键(lid button)和休眠键(sleep button)的状态,并根据状态的变化运行设定的程序;battery则让用户可以监视电池的状态。Slackware启动时没有加载加载这两个模块,需要手工在 /etc/rc.d/rc.modules 里面增加 /sbin/modprobe/button 和 /sbin/modprobe battery 。
加载button之后,按照默认设定,可以实现按电源开关键自动关机的功能。
下面介绍一下通过屏幕开合状态键(lid button)实现suspend to RAM的做法(系统采用的是slackware 10.1 的testing目录中编译好的2.6.10版内核及内核模块):
首先,控制台(console)需要使用640x480的分辨率,即在lilo.conf里面不要设置 vga=xxx 这个选项,原因稍后再提。
第二,从suspend状态“醒来”的时候,需要一个叫做video_post的小