【操作系统】Windows综合Win98/DosWin2000/NTWindowsXPWindows2003VistaLinuxUnix注册表Mac

您现在的位置:首页 > 网络学院 > 操作系统 > Linux > 在Dell Inspiron 700m笔记本电脑上安装Slackware

在Dell Inspiron 700m笔记本电脑上安装Slackware

来源: 作者: 日期:2007-02-25

【聚杰网Linux】在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 Interface Controller
(rev 03)
00:1f.1 IDE interface: 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版。

  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版,也很顺利。

  2. 安装无线网卡驱动

    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即可。

  3. 无线网络参数设置

    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 。

  4. 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,而且鼠标和键盘都会锁死,最终只得放弃。

  5. 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的小工具来“唤醒”屏幕显示。

    浏览器访问这个页面,点击video_post tool from Venki,会下载一个attachment.cgi文件,这实际上是个tar.gz文件,mv attachment.cgi video_post.tar.gz,解开它并用make命令编译,将得到 video_post,然后 cp video_post /etc/acpi

    第三,建立一个脚本文件lidbtn.sh,并cp到 /etc/acpi/,内容是:

    #!/bin/bash

    #查看lid button的状态
    lid_state=/proc/acpi/button/lid/LID0/state

    #状态没有变化则退出
    test -e $lid_state || exit 0

    #若测试到屏幕合上,则开始suspend to RAM的操作
    if cat $lid_state | grep closed > /dev/null
      then echo "lid closed -> suspending"
      /etc/rc.d/rc.inet1 stop #停止网络连接
      rmmod ipw2200 #卸载无线网卡驱动
      rmmod b44 #卸载有线网卡驱动
      rmmod uhci_hcd
      echo "mem" > /sys/power/state #suspend to RAM
      /etc/acpi/video_post #唤醒屏幕显示
      modprobe uhci_hcd #唤醒外接usb鼠标
      modprobe ipw2200 #重新加载网卡驱动
      modprobe b44
      /etc/rc.d/rc.inet1 restart #重新启动网络连接

    else echo "lid opened -> resuming"
    fi

    第四,设置acpi事件,当发现lid switch被按下时执行lidbtn.sh脚本

    编辑 /etc/acpi/acpi_handler.sh,内容为:

    #!/bin/sh
    # Default acpi script that takes an entry for all actions

    IFS=${IFS}/
    set $@

    case "$1" in
      button)
        case "$2" in
          power) /sbin/init 0
             ;;
          lid) /etc/acpi/lidbtn.sh #新添加
             ;; #新添加
          *) logger "ACPI action $2 is not defined"
             ;;
        esac
        ;;
      *)
        logger "ACPI group $1 / action $2 is not defined"
        ;;
    esac

    回过头来说说为什么console要保持640x480的分辨率。假如不用video_post的话,系统“醒来”的时候,屏幕上没有显示,这是内核还没有解决的一个bug。使用video_post之后,它只能在console设成640x480时才比较正常。如果在X状态下进入休眠,“醒来”时图形界面可能会显示混乱,此时用 ctrl+alt+f1 切换到控制台再用 ctrl+alt+f7 切换回来,显示就正常了。如果console用其它分辨率,X的鼠标指针会消失,但鼠标的功能还能正常使用,非常奇怪。

  6. 未测试或待解决的问题
    • ieee1394接口,没有相应的设备,无法测试其是否能在Linux中正常使用。
    • PCMCIA接口,没有相应设备,无法测试。
    • 机器上的SD读卡器,系统默认不能识别,经上网搜索没有找到相应的驱动,无法使用。
    • ACPI的其它功能的使用尚需进一步学习和测试。

参考资料:
[1]Dell 700m with Debian Sarge,http://www.celifornia.com/documents/dell700m.html
[2]gentoo install on dell inspiron 700m,http://alien.dowling.edu/~petko/my_how-tos/dell_inspiron_700m.html

补充资料:
[1]Slackware and a Dell 700m,http://decompiled.org/howto/slackware700m.html
[2]Slackware 10.1 on a Dell 700m Laptop,http://www.rippleweb.org/index/site/projects/slack-on-700m

Linux联盟收集整理

评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: