中指定的第一个执行脚本应该是/etc/init.d/rcS。 接下来将要发生要看是否安装了sysv-rc软件包或file-rc软件包。下面假设安装了 sysv-rc软件包。(file-rc含有它自己的/etc/init.d/reS脚本,在re目录里使用文 件代替符号链接来控制哪个服务在哪个运行级别启动。) sysv-rc软件包里面的/ete/init.d/rcS运行/etc/rcS.d/目录下的所有脚本来执行初 始化,如:检査并挂载文件系统、装载内核模块、启动网络服务、设定时钟等。接着,为 了兼容性考虑,它运行/etc/rc.boot/目录下的文件(除了那些文件名中包含“.”的文件) 该目录中的脚本是保留给系统管理员使用,不赞成使用该目录。更多信息参见系统初始 化,第9.1节和 Debian Policy Manual中的 System run levels and init, d scripts Ubuntu没有使用BSD风格的rc. local文件。 24.2运行级别 完成系统启动进程後,init启动所有在默认运行级别配置为启动的服务。默认运行级别由 /etc/ inittab中的id给出。 Ubuntu使用id=2。 Ubuntu使用下列的运行级别 1(单用户模式 single- user mode) 2到5(多用户模式 0(关闭系统), 6(重启系统)。 运行级7、8和9也能够使用,但是它们的rc目录在软件包安装的时候没有。 使用 telinit命令来转换运行级别。 当进入一个运行级别时,所有在/etc/ rcrunlevel.d/目录下的脚本将被执行。脚本名的 第一个字母决定了该脚本的运行方式:使用K开头的脚本,使用stop参数来运行。使 用S开头的脚本,使用 start参数来运行。这些脚本按照它们名字的字母顺序运行;因 此,“stop”脚本比“ start”脚本先运行。在K或S之後的两个数字决定了脚本运行的 先後次序,数字小的脚本先运行。 实际上,目录/etc/ runlevel.d/中的脚本都是指向/etc/init.d/的符号链接。这些脚本接 受“ restart”和“ force- reload”作为参数:“ force- reload”的方式可以用来在系统启 动後,重新启动服务或者强迫它们重新装载它们的配置文件。 例如 #/etc/init. d/exim4 reload 2.4.3自定义运行级别 自定义运行级别是一个高级的系统管理任务。下面的指示面向大部分服务 在运行级R启动 service服务,创建一个符号链接/etc/rcR.d/ Sxyservice到目标文件 /init.d/ service。xy是序列号,是由软件包在安装的时候分配给服务的。 16
16 中指定的第一个执行脚本应该是 /etc/init.d/rcS。 接下来将要发生要看是否安装了 sysv-rc 软件包或 file-rc 软件包。下面假设安装了 sysv-rc 软件包。 (file-rc 含有它自己的 /etc/init.d/rcS 脚本,在 rc 目录里使用文 件代替符号链接来控制哪个服务在哪个运行级别启动。) sysv-rc 软件包里面的 /etc/init.d/rcS 运行 /etc/rcS.d/ 目录下的所有脚本来执行初 始化,如: 检查并挂载文件系统、装载内核模块、启动网络服务、设定时钟等。 接着,为 了兼容性考虑,它运行/etc/rc.boot/目录下的文件(除了那些文件名中包含“.”的文件), 该目录中的脚本是保留给系统管理员使用,不 赞成使用该目录。 更多信息参见 系统初始 化, 第 9.1 节 和 Debian Policy Manual 中的 System run levels and init.d scripts Ubuntu 没有使用 BSD 风格的 rc.local 文件。 2.4.2 运行级别 完成系统启动进程後,init 启动所有在默认运行级别配置为启动的服务。 默认运行级别由 /etc/inittab 中的 id 给出。 Ubuntu 使用 id=2。 Ubuntu 使用下列的运行级别: · 1(单用户模式 single-user mode), · 2 到 5(多用户模式 multi-user modes), · 0(关闭系统), · 6(重启系统)。 运行级 7、8 和 9 也能够使用,但是它们的 rc 目录在软件包安装的时候没有。 使用 telinit 命令来转换运行级别。 当进入一个运行级别时,所有在 /etc/rcrunlevel.d/ 目录下的脚本将被执行。 脚本名的 第一个字母决定了该脚本的运行方式: 使用 K 开头的脚本,使用 stop 参数来运行。 使 用 S 开头的脚本,使用 start 参数来运行。 这些脚本按照它们名字的字母顺序运行;因 此 ,“stop”脚本比“start”脚本先运行。 在 K 或 S 之後的两个数字决定了脚本运行的 先後次序,数字小的脚本先运行。 实际上,目录/etc/rcrunlevel.d/中的脚本都是指向/etc/init.d/的符号链接。这些脚本接 受 “restart”和“force-reload”作为参数:“force-reload”的方式可以用来在系统启 动後,重新启动服务或者强迫它们重新装 载它们的配置文件。 例如: # /etc/init.d/exim4 reload 2.4.3 自定义运行级别 自定义运行级别是一个高级的系统管理任务。 下面的指示面向大部分服务。 在运行级 R 启动 service 服务,创建一个符号链接 /etc/rcR.d/Sxyservice 到目标文件 ../init.d/service。 xy 是序列号,是由软件包在安装的时候分配给服务的
停止服务,重命名符号链接,将它的名字用K开头来代替S,它的序列号是100减xy。可 以使用象sysv-rc-conf或 ksysv这样的运行级别编辑器来方便的修改服务。 在一个特定的运行级别目录,可以将某个服务的S符号链接删除来代替重新命名它。这种 作法不停止该服务,但将把该服务留在一种sysv-re初始化系统认为的“漂浮”状态:当 运行级别改变时,该服务即不会启动,也不会停止,它将保留它原有的状态,不管它是在 运行或者没有运行。注意,处于这种漂浮状态的服务,如果它所属的软件包升级了,这个 服务将启动,不管它在升级前是否运行。这是当前 Debian系统一个已知的缺点。注意 还需要在运行级0和6之间保留服务的K符号链接。如果删除了一个服务的所有符号链 接,在升级该服务的软件包时,所有的符号链接将恢复到它们的出厂默认模式 不建议对/etc/rcS.d/目录里的符号链接做任何改变。 2.5多样性支持 Ubuntu提供几种途径,在不破坏系统的前提下满足系统管理员各种要求。 dpkg- divert,参阅dpkg- divert命令,第6.5.1节。 equis,参阅 equips软件包,第6.5.2节。 update- alternative,参阅 Alternative命令,第6.5.3节 make-kpkg可以支持多启动引导。参阅make-kpkg(1)和 Ubuntu标准方式,第 /usr/1oca1/目录下的所有文件均属于系统管理员, Ubuntu不会改动它们。/etc下的大部分 文件属于 conffiles, Ubuntu不会在升级後复盖它们,除非系统管理员明确要求复盖。 2.6国际化 Ubuntu系统是国际化产品,不论是在控制台下还是在X下,它都提供多种语言的字符显示 和输入支持。许多文档、帮助页面以及系统消息都被翻译成各种语言。在安装过程中, Ubuntu 提示用户选择安装语言(有时是当地语言变量)。 如果你安装的系统提供的语言特性支持不能满足你的需要,或者你要改变当前语言或安装别 的键盘方案以适应你的语言,参阅本地化( localization),第9.7节。 27 Ubuntu和系统内核 参见 Ubuntu下的 Linux内核,第7章 2.7.1编译非 Ubuntu源码包内核代码 首先你必须了解 Ubuntu policy有关头文件的规定 Ubuntu c libraries是依据内核头文件最新 stable发布版创建的。 跟随内核源码发布的内核头文件位于/usr/ include/ linux/ include/ 如果你编译某个程序所用的内核头文件比1ibc6-dev提供的头文件还新,在编译时你必须在 命令行中加上-I/usr/src/ linux/ include/。这些情况是存在的,例如,对于 automounter daemon(amd)软件包而言,当新内核改变了对NFS的内部操作方式,amd需要知道这些改 变。这时就需要引用新的内核头文件
17 停止服务,重命名符号链接,将它的名字用 K 开头来代替 S, 它的序列号是 100 减 xy。 可 以使用象 sysv-rc-conf 或 ksysv 这样的运行级别编辑器来方便的修改服务。 在一个特定的运行级别目录,可以将某个服务的 S 符号链接删除来代替重新命名它。 这种 作法不停止该服务,但将把该服务留在一种 sysv-rc 初始化系统认为的“漂浮”状态: 当 运行级别改变时,该服务即不会启动,也不会停止, 它将保留它原有的状态,不管它是在 运行或者没有运行。 注意,处于这种漂浮状态的服务,如果它所属的软件包升级了, 这个 服务将启动,不管它在升级前是否运行。 这是当前 Debian 系统一个已知的缺点。 注 意 : 还需要在运行级 0 和 6 之间保留服务的 K 符号链接。如果删除了一个服务的所有符号链 接,在升级该服务的软件包时, 所有的符号链接将恢复到它们的出厂默认模式。 不建议对 /etc/rcS.d/ 目录里的符号链接做任何改变。 2.5 多样性支持 Ubuntu 提供几种途径,在不破坏系统的前提下满足系统管理员各种要求。 · dpkg-divert,参阅 dpkg-divert 命令, 第 6.5.1 节。 · equivs,参阅 equivs 软件包, 第 6.5.2 节。 · update-alternative,参阅 Alternative 命令, 第 6.5.3 节。 · make-kpkg 可以支持多启动引导。参阅 make-kpkg(1)和 Ubuntu 标准方式, 第 7.1.1 节。 /usr/local/目录下的所有文件均属于系统管理员,Ubuntu 不会改动它们。/etc 下的大部分 文件属于 conffiles,Ubuntu 不会在升级後复盖它们,除非系统管理员明确要求复盖。 2.6 国际化 Ubuntu 系统是国际化产品,不论是在控制台下还是在 X 下,它都提供多种语言的字符显示 和输入支持。许多文档、帮助页面以及系统消息都被翻译成各种语言。在安装过程中,Ubuntu 提示用户选择安装语言(有时是当地语言变量)。 如果你安装的系统提供的语言特性支持不能满足你的需要,或者你要改变当前语言或安装别 的键盘方案以适应你的语言,参阅 本地化(localization), 第 9.7 节。 2.7 Ubuntu 和系统内核 参见 Ubuntu 下的 Linux 内核, 第 7 章。 2.7.1 编译非 Ubuntu 源码包内核代码 首先你必须了解 Ubuntu policy 有关头文件的规定。 Ubuntu C libraries 是依据内核头文件最新 stable 发布版创建的。 跟随内核源码发布的内核头文件位于/usr/include/linux/include/。 如果你编译某个程序所用的内核头文件比 libc6-dev 提供的头文件还新,在编译时你必须在 命令行中加上- I/usr/src/linux/include/。这些情况是存在的,例如,对于 automounter daemon(amd)软件包而言,当新内核改变了对 NFS 的内部操作方式,amd 需要知道这些改 变。这时就需要引用新的内核头文件
27.2自定义内核创建工具 对于希望(或必须)使用自定义内核的用户,推荐下载 kernel- package软件包。该软件包 包含了创建内核包的脚本。有了它,新建 Ubuntu内核镜像包只需在内核源码目录的一级目 录运行 make-kpkg kernel image 在内核源码所在目录的顶层,执行下述命令可获得有关帮助 或阅读make-kpkg(8)帮助页面以及 Ubuntu下的 Linux内核,第7章。 如果所需的 kernel- source- verslon( version代表内核版本号)包不存在,用户就得从 Linux 文件站点分别下载最新的(或需要的)内核源码 有关 kernel- package包的用法详述见于/usr/doc/ kernel- package/ README 2.7.3多系统引导器 要使用多系统引导器如grub或 loadlin,请将编译好的 Linux内核 bzimage拷贝到相应的 地方(例如/boot/grub或MS-D0S分区)。 2.74制做引导软盘 Ubuntu的 mkrboot软件包可以帮你制作一张自定义启动软盘,软件包中的Shel1脚本按 syslinux格式制作启动软盘。对于那些使用MS-D0S格式化的软盘,其主引导扇区的记录 将被修改为直接引导 Linux(或是其它在盘中 syslinux.cfg文件里的操作系统)。该软件包 中的其它脚本可制作急救盘甚至重建基本系统 2.7.5模块加载规定 Ubuntu的 modconf软件包提供了一个 shell脚本(/usr/sbin/ modconf),它可以用来自定 义内核模块配置。该脚本使用菜单界面,用户通过它给出系统中可挂载设备驱动的有关细 节,它再将这些细节信息生成/etc/ modules.conf文件(其中列出了别名 aliases和其它参 数,用于连接各种模块),该配置文件用来加载/etc/ modutils/目录下和/etc/ modules(其 中列出了需要在系统启动时加载的模块)目录的相关模块。 新版的配置帮助文件( onfigure.help可为构造自定义内核提供帮助,同样, modconf软件 包中也有一系列帮助文件(位于/usr/ share/ modconf/目录下),告诉你如何对模块设定合 适的参数。参阅模块化的2.4内核,第7.2节中的例子。 27.6卸载旧内核 uname-ra可用来检查当前运行的内核版本,以确定是否与你打算卸载的内核版本相同。因 此你可以使用如下命令删除不想要的内核镜像包: dpkg --purge --force-remove-essential linux-image-NNN (当然,要将NN替换成你的内核版本号和修订版号。)
18 2.7.2 自定义内核创建工具 对于希望(或必须)使用自定义内核的用户,推荐下载 kernel-package 软件包。该软件包 包含了创建内核包的脚本。有了它,新建 Ubuntu 内核镜像包只需在内核源码目录的一级目 录运行 # make-kpkg kernel_image 在内核源码所在目录的顶层,执行下述命令可获得有关帮助 # make-kpkg --help 或阅读 make-kpkg(8)帮助页面以及 Ubuntu 下的 Linux 内核, 第 7 章。 如果所需的 kernel-source-version(version 代表内核版本号)包不存在,用户就得从Linux 文件站点分别下载最新的(或需要的)内核源码。 有关 kernel-package 包的用法详述见于/usr/doc/kernel-package/README。 2.7.3 多系统引导器 要使用多系统引导器如 grub 或 loadlin,请将编译好的 Linux 内核 bzimage 拷贝到相应的 地方(例如/boot/grub 或 MS-DOS 分区)。 2.7.4 制做引导软盘 Ubuntu 的 mkrboot 软件包可以帮你制作一张自定义启动软盘,软件包中的 Shell 脚本按 syslinux 格式制作启动软盘。对于那些使用 MS-DOS 格式化的软盘,其主引导 扇区的记录 将被修改为直接引导 Linux(或是其它在盘中 syslinux.cfg 文件里的操作系统)。该软件包 中的其它脚本可制作急救盘甚至重建基本系 统。 2.7.5 模块加载规定 Ubuntu 的 modconf 软件包提供了一个 shell 脚本(/usr/sbin/modconf),它可以用来自定 义内核模块配置。该脚本使用菜单界面,用户通过 它给出系统中可挂载设备驱动的有关细 节,它再将这些细节信息生成/etc/modules.conf 文件(其中列出了别名 aliases 和其它参 数,用于 连接各种模块),该配置文件用来加载/etc/modutils/目录下和/etc/modules(其 中列出了需要在系统启动时加载的模块)目录的相关 模块。 新版的配置帮助文件 Configure.help 可为构造自定义内核提供帮助,同样,modconf 软件 包中也有一系列帮助文件(位于/usr/share/modconf/目录下),告诉你如何对模块 设定合 适的参数。参阅 模块化的 2.4 内核, 第 7.2 节中的例子。 2.7.6 卸载旧内核 uname -ra 可用来检查当前运行的内核版本,以确定是否与你打算卸载的内核版本相同。因 此你可以使用如下命令删除不想要的内核镜像包: # dpkg --purge --force-remove-essential linux-image-NNN (当然,要将 NNN 替换成你的内核版本号和修订版号。)
第3章- Ubuntu系统安装提示 Ubuntu的官方安装文档位于http://doc.ubuntucom/ubuntu/install/里面包含了 anmd64、hppa、i386、ia64、 powerpc和 sparc的安装文档。中文翻译在 http://wiki.ubuntuorgcn/ubuntu/installl 3.1常规 Linux安装提示 如果你在寻找精简的 Ubuntu安装光盘,请别忘记检查 http://archive.ubuntucom/ubuntu/dists/发行版/main/installer架 Nal/current/images/netboot/o 使用最新的开发版的 Ubuntu会增加遇到严重软件错误的风险。在机器上安装一个稳定版本 的 Ubuntu然后使用多重启动方案可有效控制风险。或者使用更安全的 chroot技巧,参阅 chroot,第8.6.35节。后者可实现同时在不同的控制台运行多种版本的 Ubuntu 311硬件兼容性 Linux兼容绝大多数PC硬件,而且几乎可以安装在任何系统架构上。对我而言它的安装过 程和 Windwos95/98/Me一样简单。可兼容的硬件列表也在不断增加。 如果你有一部笔记本电脑,可以去 Linux on Laptops查找对应品牌和型号的安装指导。 我推荐的台式机硬件通常“比较保守 用于工作目的时最好选SCSI而不是IDE,IDE/ ATAPI H适于个人使用。 IDE/ATAPI CD-ROM(EX CD-RW) 最好选PCI而不是ISA,特别是网卡(NIC)。 选用便宜的NIC。 Tulip for pCi、NE2000 for ISA都不错。 初学 Linux安装时避免使用 PCMCIA(笔记本电脑)。 别使用USB键盘、鼠标.除非你想证明自己的实力 如果你的机器特别慢,最好把硬盘插到另一个速度快些的机器上安装。 3.1.2确定PC硬件和芯片组 在安装过程中,可能会要你确定电脑的硬件或芯片组等。有时了解这些信息并非易事,这儿 有个方法 打开机箱亲自看看 记下显卡芯片、网卡芯片、串口和IDE端口周围的芯片上印的数字。 记下印在PCI和ISA插卡背面的名称。 3.1.3在 Ubuntu下确定PC硬件 在 Linux系统中使用下列命令,可获得机器当前使用的硬件及配置的相关信息。 s pager /proc/pci s pager/proc/interrupts s pager /proc/ioports
19 第 3 章 - Ubuntu 系统安装提示 Ubuntu 的官方安装文档位于 http://doc.ubuntu.com/ubuntu/install/ ,里面包含了 amd64、hppa、i386、ia64、powerpc 和 sparc 的安装文档。中文翻译在 http://wiki.ubuntu.org.cn/ubuntu/install/ 3.1 常规 Linux 安装提示 如果你在寻找精简的 Ubuntu 安装光盘,请别忘记检查 http://archive.ubuntu.com/ubuntu/dists/{发行版}/main/installer 架 构}/current/images/netboot/。 使用最新的开发版的 Ubuntu 会增加遇到严重软件错误的风险。在机器上安装一个稳定版本 的 Ubuntu 然后使用多重启动方案可有效控制风险。或者使用更安全的 chroot 技巧,参阅 chroot, 第 8.6.35 节。后者可实现同时在不同的控制台运行多种版本的 Ubuntu 3.1.1 硬件兼容性 Linux 兼容绝大多数 PC 硬件,而且几乎可以安装在任何系统架构上。对我而言它的安装过 程和 Windwos 95/98/Me 一样简单。可兼容的硬件列表也在不断增加。 如果你有一部笔记本电脑,可以去 Linux on Laptops 查找对应品牌和型号的安装指导。 我推荐的台式机硬件通常“比较保守”: · 用于工作目的时最好选 SCSI 而不是 IDE,IDE/ATAPI HD 适于个人使用。 · IDE/ATAPI CD-ROM(或 CD-RW)。 · 最好选 PCI 而不是 ISA, 特别是网卡(NIC)。 · 选用便宜的 NIC。Tulip for PCI、NE2000 for ISA 都不错。 · 初学 Linux 安装时避免使用 PCMCIA (笔记本电脑)。 · 别使用 USB 键盘、鼠标......除非你想证明自己的实力。 如果你的机器特别慢,最好把硬盘插到另一个速度快些的机器上安装。 3.1.2 确定 PC 硬件和芯片组 在安装过程中,可能会要你确定电脑的硬件或芯片组等。有时了解这些信息并非易事,这儿 有个方法: · 打开机箱亲自看看。 · 记下显卡芯片、网卡芯片、串口和 IDE 端口周围的芯片上印的数字。 · 记下印在 PCI 和 ISA 插卡背面的名称。 3.1.3 在 Ubuntu 下确定 PC 硬件 在 Linux 系统中使用下列命令,可获得机器当前使用的硬件及配置的相关信息。 $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports
s pager/proc/bus/usb/devices 在安装过程中按Alt-F2进入控制台,可运行这些命令获得帮助。 在最初的安装结束之后,通过安装可选的软件包,比如 pciutils、 usbutils和1shw,你 就可以获得更多的系统信息。 31s -v pager 典型的中断用途 k IRQ0: timer output (8254) irQl: keyboard controller IRQ2 cascade to IrQ8-IrQ15 on PC-At IRQ3: secondary serial port (io-port=0x2F8)(/dev/ttyS1) IRQ4: primary serial port (io-port=0x 3F8)(/dev/ttySo) IRQ5: free [sound card(SB16: io-port=0x220, DMA-low=l, DMA-high=5) *k IRQ6: floppy disk controller (io-port=0x3F0)(/dev/fdo, /dev/fd1) Q7: parport (io-port=0x378)(/dev/lpO) *k IRQ9: software interrupt (int 0x0A), redirect to IRQ2 [RQ10: free [network interface card (NE2000: io-port=0x300)] k IRQ11: free [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=OxlE8, 0x3EE) k IRQ12: PS/2 Mouse *k IRQ13: free (was 80287 math coprocessor) primary IDE controller (/dev/hda, /dev/hdb) IRQ15: secondary IDE controller (/dev/hdc, /dev/hdd) 对于旧的非 PnP Isa卡,你可能需要在BI0S中设定IRQ5,IRQ10和IRQ1l为非PnP设 备 对于USB设备,它们在/proc/bus/usb/ devices中以Cls=nn的形式列出 Cls=00: Unused Cls=01: Audio(speaker etc. Cls=02: Communication (MODEM, NIC, .. k Cls03: HID(Human Interface Device: KB, mouse, joystick) Cls=07: Printer Cls=08: Mass storage(FDd, CD/dvd drive, HDD, Flash,..) k Cls=09: Hub(USB hub) *k Cls=255 Vendor specific 如果设备类别( device class)不是255,则 Linux可支持该设备。 3.1.4在其它0s下确定PC硬件 还可从其它操作系统中获取硬件信息。 安装其它商业版 Linux,当前它们在硬件侦测方面做得比 Debian好 20
20 $ pager /proc/bus/usb/devices 在安装过程中按 Alt-F2 进入控制台,可运行这些命令获得帮助。 在最初的安装结束之后,通过安装可选的软件包,比如 pciutils、usbutils 和 lshw,你 就可以获得更多的系统信息。 $ lspci -v |pager $ lsusb -v |pager 典型的中断用途 * IRQ0: timer output (8254) * IRQ1: keyboard controller * IRQ2: cascade to IRQ8–IRQ15 on PC-AT * IRQ3: secondary serial port (io-port=0x2F8) (/dev/ttyS1) * IRQ4: primary serial port (io-port=0x3F8) (/dev/ttyS0) * IRQ5: free [sound card (SB16: io-port=0x220, DMA-low=1, DMA-high=5)] * IRQ6: floppy disk controller (io-port=0x3F0) (/dev/fd0, /dev/fd1) * IRQ7: parport (io-port=0x378) (/dev/lp0) * IRQ8: rtc * IRQ9: software interrupt (int 0x0A), redirect to IRQ2 * IRQ10: free [network interface card (NE2000: io-port=0x300)] * IRQ11: free [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)] * IRQ12: PS/2 Mouse * IRQ13: free (was 80287 math coprocessor) * IRQ14: primary IDE controller (/dev/hda, /dev/hdb) * IRQ15: secondary IDE controller (/dev/hdc, /dev/hdd) 对于旧的非 PnP ISA 卡,你可能需要在 BIOS 中设定 IRQ5,IRQ10 和 IRQ11 为非 PnP 设 备。 对于 USB 设备,它们在 /proc/bus/usb/devices 中以 Cls=nn 的形式列出: * Cls=00 : Unused * Cls=01 : Audio (speaker etc.) * Cls=02 : Communication (MODEM, NIC, ...) * Cls=03 : HID (Human Interface Device: KB, mouse, joystick) * Cls=07 : Printer * Cls=08 : Mass storage (FDD, CD/DVD drive, HDD, Flash, ...) * Cls=09 : Hub (USB hub) * Cls=255 : Vendor specific 如果设备类别(device class)不是 255,则 Linux 可支持该设备。 3.1.4 在其它 OS 下确定 PC 硬件 还可从其它操作系统中获取硬件信息。 安装其它商业版 Linux,当前它们在硬件侦测方面做得比 Debian 好