LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: iamqk

Slackware官方文档翻译

 关闭 [复制链接]
发表于 2005-9-17 20:56:24 | 显示全部楼层
第16章 Vi

vi(1) 是标准 Unix 系统的文本编辑程序,虽然如今掌握它已不像从前那样必要
了,但是仍然是一个很有益的目标。vi 有好几个版本(或者说是克隆),包括
vi,elvis,vile,和 vim。它们中的任何一个都可以在各种版本的 Unix 上获得,
在 Linux 上也一样。所有的这些版本包括同样的基本特性设置和命令,所以学好
一个版本后将很容易学会其他。如今各种 Linux 发行版和类 Unix 系统拥有多种
多样的文本编辑器,许多人已经不再使用 vi。但 vi 仍然是 Unix 和类 Unix 系
统最普遍的文本编辑器。掌握 vi 意味着(当你)只有一个强大的文本编辑器时
处于 Unix 环境不会感到不适。

vi 拥有包括语法高亮,格式代码,强大的搜索代换工具,宏,等等一系列强大
的功能。这些功能使得它对编程者,网站开发者,等等相似工作的人们具有
特殊的吸引力。系统管理员会欣赏(vi)与 shell 完美的集成和自动化作业。

在 Slackware Linux 里,缺省的 vi 版本是 elivis。其他的版本 —— 包括 vim
和 gvim —— 在你装了相应的包后都可以得到。gvim 是 vim 在 X 窗口下的版本,
包括工具栏,弹出菜单,和对话框。



16.1 启动 vi

vi 可以以多种方式从命令行启动。最简单的格式就是:


  1. % vi
复制代码


图 16-1.一个 vi 的进程。




这样会使 vi 以一个空的缓冲区启动。此时,你会看到一个屏幕的空格。现在正
处于命令模式,等待你去做什么东西。16.2 节将讨论 vi 的各种模式。为了退
出 vi,如下输入:


  1. :q
复制代码


假设没有对文件作任何改动,这个命令会让 vi 退出。如果文件已经有了改动,
它会警告你已经做了改动同时告诉你如何忽视它们。放弃改动意味着在"q"的后面
加个感叹号就像这样:


  1. :q!
复制代码


感叹号通常意味着强制执行。我们过会儿将会讨论它和其他的按键组合更多的细
节。

你还可以用打开一个已经存在文件的方式打开 vi。比如,如下打开
/etc/resolv.conf 文件:


  1. % vi /etc/resolv.conf
复制代码


最后,可以让 vi 从文件的某一行启动。这对编程人员特别有用,当出错信息显
示他们程序的某一行发生了错误时。比如,你可以如下启动 vi 定位于
/usr/src/linux/init/main.c 第 47 行:


  1. % vi +47 /usr/src/linux/init/main.c
复制代码


vi 会显示打开的文件并将光标定位在指定的行。如果你指定的行数超出了文件
的行数,vi 会将光标置于最后一行。这对编程人员特别有用,他们可以直接跳
到文件出错的地方而不用搜索它。


16.2 模式

vi 运转于用来完成各式任务的多种模式中。当你第一次打开 vi,将处于命令模
式。从这里开始,你可以输入各种命令来控制文本,在文件里移动,保存,退出,
和变换模式。在插入模式中编辑文本。你可以用大量按键在模式间快速移动,这
会在稍后介绍。


16.2.1 命令模式

你首先被置于命令模式。在这个模式中,你不能直接输入或编辑已经存在的文本。
尽管如此,你可以处理文本,搜索,离开,保存,加载新文件,等等。这里仅仅
希望对命令模式做一个介绍。对各种模式的描述,在第 16.7 节。

或许在命令模式中最为常用的命令就是变换到插入模式。这可以由敲击 i 键来
完成。光标改变了形状,然后在屏幕底部出现 -- 插入 --(注意并不是所有的
vi 克隆都会这样)。从那儿开始,你所有的按键都被输入到当前缓冲区并在屏
幕上显示。为了回到命令模式,按一下 ESCAPE 键。

命令模式还是你在文件里移动时所处的模式。在一些系统里,你可以使用方向键
去移动。在其他的系统里,你需要使用更传统的按键"hjkl"。这有一份如何使用
按键移动的清单:

h        向左移动一个字符
j        向下移动一个字符
k        向上移动一个字符
l        向右移动一个字符

简单按下一个键可以移动。就像你待会儿将看到的,这些按键可以和数字结合起
来使移动更为快捷。

你在命令模式里使用的许多命令都以一个冒号开头。比如,退出就是 :q,就像前
面讨论过的一样。冒号简单地指出那是一个命令,如"q"告诉 vi 去退出。其他的
命令是一个字母后加一个可选择的数字。这些命令前面并没有冒号,且通常用于
处理文本。

比如,从文本里完全删除一行只需敲击 dd。这会移除光标所在的一行。给出命令
4dd 将告诉 vi 移除光标所在行和其下三行。一般来说,数字告诉 vi 将命令重
复多少次。

你可以将数字和控制移动的按键组合使得一次可以移动多个字符。比如,10k 会
在屏幕里向上移动十行。

命令模式同样可以用于剪切和粘贴,插入文本,同时在当前缓冲区读入其他的文
件。复制文本由 y 键完成(y 代表拉回[yank])。复制当前行由敲击 yy 完成,
同时可以在前面甜数字拉回多行。然后,移动到要复制的地方敲击 p。文本将被
粘贴在当前行的下面。

剪切文本由 dd 完成,然后 p 被用于将剪切的文本粘贴回文件。从其他的文件载
入文本是一个简单的步骤。只需敲击 :r,紧跟一个空格和包含被插入文本的文件
名。文件的内容将被粘贴进当前缓冲区光标下一行。更棒的 vi 克隆甚至包含和
shell 差不多的文件名补全。

最后将谈到的搜索也使用它(命令模式)。命令模式允许简单的搜索,而复杂的
搜索-替换命令将使用一种强大的正则表达式。对正则表达式完整的讨论在本章
范围之外,所以这样将仅仅提到搜索的简单方式。

简单的搜索由敲击 / 键完成,接着输入需要搜索的文字。vi 会从光标处向文件
尾做匹配,找到后就停止。注意不正确的匹配同样会让 vi 停止。比如,对
"the"的搜索会使得 vi 在"then","therefore",等等地方停止。这是因为这些
词都匹配"the"。

vi 找到第一个匹配后,你可以通过简单敲击 / 键接着回车继续下一个匹配。同
样可以通过用 ? 替代斜杠在文件中向后做匹配,在文件中向后做"the"的匹配可
通过敲击 ?the 完成。


16.2.2 插入模式

插入和替换文本在插入模式里完成。就如前面讨论过的,你可以通过敲击 i 从命
令模式进入到插入模式。接着,所有你打的文字都被输入到当前缓冲区中。敲击
ESCAPE 键将回到命令模式。

替换文本可通过几种方式完成。在命令模式里,敲击 r 就可以替换在光标下的一
个字符。只需输入新的字符然后它将替换光标下面的那个。接着立刻回到命令模
式。敲击 R 将让你替换如你所需的字符。只要敲击 ESCAPE 就可以离开替换模式
回到命令模式。

还有另外一个将插入和替换结合在一起的方式。在命令模式中敲击 INSERT 键会
将你带进插入模式。当你在插入模式中时,键盘上的 INSERT 键将插入和替换结
合在了一起。一旦敲击它将让你实现替换。再次敲击它将让你插入文本。



16.3 打开文件

vi 允许你从命令模式里打开文件有如在命令行里指定打开的文件。如下打开
/etc/lilo.conf 文件:


  1. :e /etc/lilo.conf
复制代码


如果你在当前缓冲区做了改变而没有保存,vi 会提示。你仍然可以不用保存当前
缓冲区就打开文件,只需敲击 :e!,后接一个空格然后是文件名。通常,命令后
紧跟叹号可以禁止 vi 的警告。

如果你希望重打开当前的文件,你可以通过简单的敲击 e! 来完成。当你将文件
搞得一团糟并希望重新打开它时特别有用。

一些 vi 的克隆(比如,vim)允许同时打开多个缓冲区。比如,当另一个文件已
经打开了时,打开主目录下的文件 09-vi.sgml,我会输入:


  1. :split ~/09-vi.sgml
复制代码


新文件在屏幕的上半部分显示,而旧文件在屏幕的下半部显示。有许多命令可以
处理分屏,其中某些来自 Emacs,man page 里有相应的介绍。注意许多 vi 克隆
并不支持分屏,所以并不是什么地方都可以使用。



16.4 保存文件

在 vi 里有许多方式来保存文件。如果你想将当前的缓冲区保存到一个随机文件,
可以输入:


  1. :w randomness
复制代码


当你已经保存过文件后,再次保存它只需简单敲击 :w。所有的改变都将写入文件。
当你保存了文件后,又将回到命令模式。如果你想保存文件然后离开vi(一个很
平常的操作),只需敲击 :wq。那会告诉 vi 保存当前文件同时退出回到 shell。

有时,你想保存一个只读文件。只需在写入命令后加叹号,如下:


  1. :w!
复制代码


不管怎样,仍有你不能写入的文件(比如,你试图编辑一个不属于你的文件)。
当这种事情发生时,vi 会告诉你无法保存文件。如果你真的想要编辑这个文件,
你不得不以 root 或(更好的是)文件拥有者的身份来编辑它。



16.5 退出 vi

退出 vi 的一个方式是通过(敲击) :wq,这会在退出前保存当前缓冲区。你也
可以用 :q 或(更常用) :q! 不保存退出。后者当你对文件做了改动却不想保
存时将用到。

有时,你的机器会当掉或 vi 会崩溃。不管怎样,elvis 和 vim 都会采取措施将
对缓冲区的破坏减至最小。两个编辑器都会在必要时将打开的缓冲区保存到一个
一个临时文件。文件通常与打开的文件名字相似,前面多加一个点。这样会使文
件隐藏。

一旦在编辑器正常退出,临时文件将被移除。这意味着某些东西崩溃后临时的拷
贝仍在。当你回过头来再次编辑文件,会得到做相应行动的提示。大多数情况下,
大部分未保存的东西都可以被恢复。elvis 同样会给你发一封电子邮件(来自
Graceland,够古怪的了 :)告诉你一个备份的拷贝仍在。



16.6 配置 vi

你那特别的 vi 克隆可用多种方式配置。

在命令模式中,大量命令可用来输入配置 vi,依你的喜好输入。取决于你的编辑
器,你可以打开特性让编程更容易些(像语法高亮,自动缩进,等等),建立宏
自动完成任务,打开文本置换,等等。

这些命令的绝大部分都可以放进你主目录的一个配置文件里。elvis 读取 .exrc
文件,而 vi 读取 .vimrc 文件。大多数在命令模式里输入的配置命令都可以放
到配置文件里。包括设置信息,置换文本,宏,等等。

讨论所有的选项及对于不同编辑器的区别是一个复杂的主题。更多的信息,为你
首选的 vi 编辑器查看 man page 或网页。一些编辑器(像 vim)在编辑器内部
有多方面的帮助文件,或者一些相似的东西,可以通过 :help 命令得到。你还可
以查看 O'Reilly 出版,由 Lamb 和 Robbins 写的书 《Learning the vi
Editor》。

Linux 下一般的程序缺省使用 vi 打开文本文件。比如,编辑你的 crontabs 会
缺省使用 vi 打开。如果你不喜欢 vi 并希望用另外一个编辑器去代替,只需设
置 VISUAL 环境变量成你希望的编辑器。关于环境变量的更多信息,看《第八章
环境变量》。如果你希望确保每次登录后自己喜欢的编辑器成为缺省值,将VISUAL
的设定加到 .bash_profile 或 .bashrc 文件里。



16.7 Vi 按键

这个章节是许多 vi 常用命令的快速参考。一些命令已在前面的章节讨论过,而
许多是新的。

表 16-1。移动
操作                按键
向左,向下,向上,向右        h, j, k, l
移动到行末                $
移动到行首                ^
移动到文件尾                G
移动到文件头                :1
移动到第 47 行                :47

表 16-2。编辑
操作                按键
移去一行                dd
移去 5 行        5dd
替换一个字符        r
移去一个字符        x
移去 10 个字符        10x
撤销最后一次操作        u
连接当前行和下一行        J
新文本替换旧文本,全局性        %s'old'new'g(?)

表 16-3。查找
操作                按键
向前查找"asdf"        /asdf
向后查找"asdf"        ?asdf
重复向前查找        /
重复向后查找        ?
重复同个方向的查找        n
重复相反方向的查找        N

表 16-4。保存和退出
退出                :q
退出但不保存        :q!
写入然后退出        :wq
写入,但不退出        :w
重新打开当前文件        :e!
打开文件 hejaz        :e hejaz
将文件 asdf 读入缓冲区        :r asdf
将 ls 的输出读入缓冲区        :r !ls
回复 支持 反对

使用道具 举报

发表于 2005-9-23 12:35:45 | 显示全部楼层

第18章 Slackware 包管理

第18章 Slackware 包管理

一个软件包就是对准备好可以安装的相关程序所打的包。当你下载一个源代码存
档,你得手动配置,编译,然后安装。而有了软件包,这些都已经为你做好了。
你所需要做的一切就是安装这个包。软件包另一个易于使用的特性就是可以很容
易的移除和升级它们,如果你希望的话。Slackware 里的程序可以满足你对包管
理的所有需求。你可以很容易地安装,移除,升级,制作,和检查这些包。

流传着这样的谬论,自从 RedHat 开创了 RedHat 包管理器,Slackware 还没有
包管理工具。这简直不能偏离事实更远了。Slackware 一直包含着包管理器,甚
至在 RedHat 存在前。虽然不如 rpm (或者是 deb)般拥有大量特性或到处存在,
pkgtool 及其相关程序的任何一点有如 rpm 般易于安装。关于 pkgtool 的事实
并不是它并不存在,而是它根本不做依赖性检查。

似乎许多 Linux 社区里的人认为一个包管理器按照定义必须要包含依赖性检查。
喔,那根本不是事实,就好像 Slackware 必定不做那样。这并不是说Slackware
的包没有依赖性,倒不如说它的包管理器没有检查它们。依赖性管理留给了系统
管理员,而那正是我们喜欢的方式。



18.1 包格式总览

在学习实用程序前,你应该先熟悉 Slackware 包格式。在 Slackware 里,一个
包就是简单的用 gzip 压缩过的 tar 存档文件。包建立在会从 root 目录里解压
之上。

这是一个虚构的程序和它的包例子:

./
usr/
usr/bin/
usr/bin/makehejaz
usr/doc/
usr/doc/makehejaz-1.0/
usr/doc/makehejaz-1.0/COPYING
usr/doc/makehejaz-1.0/README
usr/man/
usr/man/man1
usr/man/man1/makehejaz.1.gz
install/
install/doinst.sh


包系统会在 root 目录解压这个文件并安装它。包数据库会创建一个包含这个包
的内容的条目,以便之后能够升级或移除。

注意 install/ 子目录。这是一个特别的目录,包含一个叫做 doinst.sh 的安装
后脚本。如果包系统找到这个文件,它会在安装完包后执行它。

其他的脚本会被嵌入到这个包中,不过这会在之后的第 18.3.2 节做更多的介绍。



18.2 包实用程序

包管理系统拥有 4 个主要的程序。它们执行安装,移除,和升级包。


18.2.1 pkgtool

pkgtool(8) 是一个菜单驱动的程序,允许安装和移除包。它的主要菜单会在图
18-1 显示。

图 18-1。Pkgtool 的主菜单。





安装可在当前目录,其他的目录或从软盘执行。简单地选择你想要的安装方式然
后 pkgtool 会搜索那个位置合法的包来安装。

你也会看到一个已经安装的包的清单,就像图 18-2 显示的。

图 18-2。Pkgtool 显示模式





如果你想移除包,选择移除选项然后一个已经安装的包的清单会呈现在你面前。
标上你想要移除的那些然后选择 OK。pkgtool 会移除它们。

一些用户更喜欢这个程序而不是命令行下的那些。尽管如此,必须注意命令行下
的程序提供更多的选项。同样,升级包只在命令行下的程序集里提供。


18.2.2 installpkg

installpkg(8) 处理系统里新包的安装。语法如下:


  1. # installpkg option package_name
复制代码


installpkg 提供三个选项。一次只能用一个选项。

表 18-1。安装选项
选项        效果
-m        在当前目录执行一个 makepkg 操作。
-warn        显示如果你安装这个特别的包将发生什么。这在生产系统很有用,你将
        会在安装前精确地看到发生了什么。
-r        在当前目录及其下递归地安装所有的包。包名可以使用通配符,在递归
        安装时有如搜索时的屏蔽。

如果在 installpkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在
为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录而不
是 /。

已经安装的包数据信息存放于 /var/log/packages。那仅仅只是一个平常的文本
文件,一个包一个。如果包拥有安装后脚本,它会被写入/var/logscripts/。

你可以对包名特别指定或使用通配符。小心 installpkg 不会告诉你将覆盖一个
已经安装的包。它将简单恰好的安装在那个旧的上面。如果你想要确保旧包被安
全地移除,使用 upgradepkg。


18.2.3 removepkg

removepkg(8) 处理从系统移除已经安装过的包。语法就像下面这样:

# removepkg option package_name

removepkg 拥有四个选项。一次只能用一个。

表 18-2。removepkg 选项
选项                   效果
-copy                   包被复制到了保留包目录。这会创建一个包原来的目录结
                   构但并不移除它。
-keep                   保留移动过程中创建的临时文件。仅在调试中有用。
-preserve           包被移除,但同时被复制到了保留包目录。
-warn                   显示如果移除包将发生什么。

如果在 removepkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在
为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录
而不是 /。

removepkg 检查其他已经安装了的包但仅仅移除你唯一指定的包文件。它同时还
为特别的包检查安装后脚本同时移除它创建的符号链接。

在移除过程中,将显示状态报告。移除后,包数据信息被移动到了
/var/log/removed_packages 同时安装后脚本被移除到了
/var/log/removed_scripts。

就像 installpkg 一样,你可以为包名特别指定或使用通配符。


18.2.4 upgradepkg

upgradepkg(8) 将升级一个已经安装的 Slackware 包。语法如下:


  1. # upgradepkg package_name
复制代码


或者


  1. # upgradepkg old_package_name%new_package_name
复制代码


upgradepkg 用于先安装新包然后移除旧包,然后将旧包清除出系统。如果升
级后的包名已经改变,使用百分号语法指定旧包(已经安装的包)和新包(你升
级后的包)。

如果在 upgradepkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在
为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录而不
是 /。

upgradepkg 不是没有缺点的。你应该随时为你的配置文件做备份。如果它们被
移除或覆盖了,你将会为修复工作寻求一个原来文件的拷贝。

有如 installpkg 和 removepkg,你可以为包名特别指定会使用通配符。


18.2.5 rpm2tgz/rpm2targz

Red Hat 包管理器是当今流行的包管理系统。许多发行版提供 RPM 格式的产品。
因为这不是我们自己的格式,所以不推荐大家依靠它们。尽管如此,有些东
西只能依靠 RPM 格式得到(甚至源代码)。

我们提供一个可以将 RPM 包转换成本地 .tgz 格式的程序。它允许你解压包(可
能将和 explodepkg 一起)到一个临时目录然后检查它的内容。

rpm2tgz 程序将创建一个以 .tgz 为扩展名的 Slackware 包,而 rpm2targz 创
建一个以 .tar.gz 为扩展名的存档。



18.3 制作包

制作 Slackware 包要么容易要么困难。制作包没有特别的方法。唯一的必要条件
是包必须是一个 gzip 压缩过的 tar 文档同时如果有一个安装后脚本,它必须是
/install/doinst.sh。

如果你对为自己管理的系统或网络制作包感兴趣,你应该看一下在 Slackware 源
码目录树里面的各种制作脚本。那有几种我们制作包的方法。


18.3.1 explodepkg

explodepkg(8) 将以 installpkg 同样的方式解包,但并不安装同时也不在包数
据库里记录。它仅仅在当前目录里面解包。

如果你查看一下 Slackware 的源码目录树,将会看到我们如何使用这个命令来“
组织”包。这些包都含有一个与最终包相似的骨骼。他们拥有所有必要的文件名
(大小为零),权限,所有权。安装脚本将从源码目录输出(cat)包的内容到包
安装目录。


18.3.2 makepkg

makepkg(8) 可以将当前目录打包成一个合法的 Slackware 包。它会去搜寻目录
树里所有的符号连接,并为了在包安装过程中创建它们向安装后脚本加上一个创
建块。它同样会警告在包目录树里任何零大小的文件。

这个命令典型地运用于你创建了的包目录树。


18.3.3 SlackBuild 脚本

Slackware 包按需要通过不同的方式制作。不是所有由编程人员编写的软件包都
用同样的方式编译。许多的编译选项并不包含在 Slackware 使用的包里。也许你
需要其中的一些功能;因此有必要编译自己的包。幸运的是在许多的 Slackware
源码包里,你可以找到 SlackBuild 脚本。

那么什么是 SlackBuild 脚本?SlackBuild 脚本就是以 root 身份来配置,编译,
然后创建 Slackware 包的可执行的 shell 脚本。你可以在源码目录里自由修改
这些脚本然后运行它们来为缺省的 Slackware 包创建你自己的的版本。



18.4 制作 Tags 和 Tagfiles(用于安装)

Slackware 安装程序处理系统里软件包的安装。有一些文件可以告诉安装程序哪
些包必须安装,哪些可供选择,而哪些缺省由安装程序自己选择。

一个 tagfile 就是在软件系列目录里的第一层名叫 tagfile 的文件。它列出特定磁
盘设备里的包和它们的状态。这些状态可以是:

表 18-3。Tagfile 状态选项
选项                  含义
ADD                  这个包为特殊的系统操作所必须
SKP                  这个包会被自动忽略
REC                  这个包不是必须的,但建议使用
OPT                  这个包可供选择

格式很简单:

包名:状态


一个包一行。原来每个软件系列的 tagfiles 被存成 tagfile.org。所以如果你
搞乱了你自己的,可以恢复原来的那个。

许多管理人员更喜欢编写他们自己的 tagfiles 然后启动安装程序选择“完全”。
安装程序会读取 tagfiles 然后依据内容来安装。如果你使用 REC 或者 OPT,
(程序)会向用户出现对话框询问是否想要那个包。所以,建议你为自动安装写
tagfiles 时仅使用 ADD 和 SKP。

确保你的 tagfiles 被写入到和原来那个同样的位置。或者如果你有定制的
tagfiles可以特别指定一个定制的 tagfile 路径。
回复 支持 反对

使用道具 举报

发表于 2005-10-25 13:27:07 | 显示全部楼层

Slackware 的 FAQ(非官方中译本)

欢迎转载,转载请保留译者信息,谢谢!
=================================================

这些都是人们经常问我的问题。希望它们在这里得到解答后不会再次被问到。

很多问题是很老的而且过时,但是我把它们留在这里是因为他们可能会给一些人提供解决相似问题的思路。同时,你也会发现其中的一些从其措辞来看不像是问题,而更像是尖叫着抱怨。嘿,我想要准确的描述。:^)

Q1:装完之后,我的以太网卡、CD-ROM 驱动器和/或其它我认为 Linux 能够支持的硬件不能工作。为什么?
Q2:无软驱安装本操作系统是否可能?
Q3:现在软盘上的 N 系列不合适,我该如何为我的膝上型电脑取得网络支持?
Q4:为什么我的索尼 CDU-31/33a 不再能被 Linux 检测到了?以前可以的!
Q5:内核不能识别一个与 Soundblaster 16 IDE 相连的 CD-ROM!
Q6:我用 RAWRITE 做的磁盘无法启动!
Q7:我能够很好的安装,但是装完的系统不能启动!
Q8:为什么我在 Slackware 下被告知“网络不可达”?
Q9:$%#@! 为什么我的 UltraStor SCSI 不能被检测到?在 DOS 下可以的!
Q10:如果 NFS 安装的安装菜单不能工作,我如何在开始安装之前动手设置网络?
Q11:我的 IBM Thinkpad 不能正确地把跟磁盘加载到 ramdisk,所以我不能安装 Linux。我该怎么办?
Q12:我的大(> 1/2 G) IDE 驱动器报告说多于16个头,因此 Linux 无法在上面安装。我该怎么办?
Q13:我怎么用我新采用的内核作一张 Slackware 引导盘?
Q14:我的退格键在X 下表现怪异?我如何修复它?
Q15:我构建了一个新内核。现在我该如何用这个新的 bzImage 文件替换已存在的内核?
Q16:为什么我不能从 elvis (vi) 中剪切粘贴到一个 xterm?
Q17:为什么我的总线鼠标不工作?内核、选择、X 服务器以及 text-mouse 都说“没有该设备。”
Q18:我看到我的 SoundBlaster/松下 CD-ROM 在引导时被检测到,但我不能从中安装或加载它。怎么办?
Q19:我用的是 UMSDOS 并且想让 Windows 与 Linux 使用同一个交换空间。应该怎么做?
Q20:安装盘上的 root 密码是什么?
Q21:Slackware Linux 发行版在我的机上装好后我怎么添加和删除软件?
Q22:我不知道 setup/pkgtool/installpkg 把哪些文件放到那里?
Q23:我把我的分区设置成为 "Linux native" 但是 Slackware 仍然无法检测到它们!我该怎么办?
Q24:我有一台 (PS/1 || Valuepoint || Thinkpad),由于 fdisk 不能认出我的硬盘而无法安装。我该怎么办?
Q25:为什么我的 /etc/issue 和 /etc/motd 总是在开机是重设置它们自身?
Q26:Emacs 卸载核心,提示说缺少库,或者没有 X 支持!
Q27:为什么我编译东西时提示 'signal 11: internal compiler error' 就死了?
Q28:我该如何改变(处理) ls 的颜色?
Q29:我用 "startx" 启动 X 而且它也工作了,但是我无法切换到虚拟终端。为什么?
Q30:为什么我无法在 X 里用新的 ghostscript?
Q31:所有东西都不能工作了!该怎么办?
Q32:我如何用一个自制的内核做一张引导盘?
Q33:当我刚刚装完 Slackware 的时候,系统可以发现我的 CD-ROM。但是但我尝试用 LILO或引导盘引导后系统就不再能找到 CD-ROM 驱动器了!怎么修复它?
Q34:我能用一个串口上的终端来安装吗?
Q35:“总线错误”是什么意思?

Q1:装完之后,我的以太网卡、CD-ROM 驱动器和/或其它我认为 Linux 能够支持的硬件不能工作。为什么?

A:也许你正在运行的内核不包含这些支持。为解决这个问题,你得安装一个包含这些支持的内核。那可能是 CD-ROM 上 /kernel 目录下的某个合适的内核,或者你可以自己为你的机器编译一个内核。这并不会很难──请看下面关于编译新内核的说明。

Q2:无软驱安装本操作系统是否可能?

A:是的!而且它一点儿也不难。

(注:第一次接触本方法的时候请看 rootdisks/install.zip)

首先,你将需要一个 DOS 分区。安装 Loadlin 到某个目录,比如 C:\LOADLIN (一个可用的ZIP 格式的 Loadlin 包位于 kernels/ 目录下)。你把 Loadlin 装上之后,需要复制一个 Linux 内核及一个 Slackware 安装器映像到 C:\LOADLIN 目录下。我们接下来就来描述这个过程:

你可以在 CD 上的 kernels/ 目录下找到许多内核。那些子目录有着和 Slackware 引导盘一样的名称,并包含了用于制作引导盘的内核。你可能需要参考 bootdisks 目录下的 README 文件来决定哪个内核将会在你的系统上运行得最好。一旦你选中了某个内核(zImage 或者 bzImage),把它复制到 C:\LOCALIN 目录下。然后,从 isolinux 目录下抓取安装器映像(叫做 “initrd.img”)并将该文件复制到你的 Loadlin 目录下。

现在,为了启动安装进程你得启动 DOS。如果你在运行 Windows95,在开始菜单里有个重新启动电脑进入到 MS-DOS 模式的选项。(注:如果你错过了以前你开机后可以自动进入 DOS 而要进 Windows 则需要键入 “win” 的好日子,很容易就可以把 Windows95 修正过来,让它再次那样子工作。编辑 C:\MSDOS.SYS 文件,把 BootGUI=1 改成 BootGUI=0)

启动了 DOS 之后,转到 Loadlin 目录并使用一个如下的命令来开始安装根磁盘:

loadlin zimage rw root=/dev/ram initrd=initrd.img loadramdisk=1

通常安装程序会从引导盘复制内核,因此当你使用这个方法的时候,你必须略过那个菜单,同样,也要略过制作引导盘的菜单。同时,略过 LILO 菜单也是明智的。因为 /vmlinuz 未必是你想要的。你最好的赌注是使用 Loadlin,因为是它把你带到这里来。编辑 LINUX.BAT 文件指向你的 Linux 根分区。

Q3:现在软盘上的 N 系列不合适,我该如何为我的膝上型电脑取得网络支持?

A:首先把 A 系列装上。然后,把 N 系列中的 tcpip.tgz 包放到一张软盘上。如果你的内核不包括网络支持,则把 netmods.tgz (网络内核模块)包放到另一张软盘上。如果你需要 PPP,则把 PPP包也放上。然后,(重启之后,不是从安装软盘重启)运行 “pkgtool”。选择 “install packages from floppy disks” 这一选项,安装 tcpip.tgz netmods.tgz 及 ppp.tgz 包。然后运行 netconfig 来设置你的网络,运行 pppsetup 来设置 PPP,编辑 /etc/rc.d/rc.modules 来为你的以太网卡加载支持。当你重启后,机器就有了网络能力了,而你则可以开始从网络上添加更多的软件。

Q4:为什么我的索尼 CDU-31/33a 不再能被 Linux 检测到了?以前可以的!

A:以下摘自源代码:

*******************************************************
警告 - 所有的自动检测已经被从驱动中移除。你必须通过在启动时或者在lilo.conf 里设定 LILO 来配置 CDU31A。在我的 lilo.conf 里有如下一行:

    append=”cdu31a=0x1f88,0,PAS”

第一个数字是这块卡的输入/输出基本地址。第二个数字是中断(0表示没有)。如果* *     在 Pro-Audio spectrum 上则第三个应该是 “PAS”,否则就没有。
*******************************************************

你也可以在 Loadlin 中使用以下选项:

C:\LOADLIN\LOADLIN C:\LINUX\VMLINUZ root=/dev/hda1 cdu31a=0x1f88,0,PAS

或者,在引导盘 LILO: 提示符后使用以下选项,例如:

LILO: ramdisk cdu31a=0x1f88,0,PAS

LILO: mount root=/dev/sda1 cdu31a=0x1f88,0,PAS ro

Q5:内核不能识别一个与 Soundblaster 16 IDE 相连的 CD-ROM!

A:首先,确认你正在使用适当的内核──这种情况下需要的是 IDE/ATAPI CD-ROM 类型,而非 SBPCD 类型。然后,如果问题还是没有解决,那么使用第二个 IDE 通道(IRQ 15 0x170),并且确认驱动器被设置为主驱动器(背后的跳线)而非从属驱动器(通常这是默认选项)。

Q6:我用 RAWRITE 做的磁盘无法启动!

A:首先,检查你是否使用了大小正确的映像。如果你在1.2 MB 的软盘上使用1.44 MB 软盘的映像(或者反之亦然),你可能会看到“LI” 的信息,同时引导程序会挂起。

另一个可能是 BIOS 的问题──一位用户曾经向我报告 RAWRITE 在他的机器上失败除非他先在一张 MS-DOS 软盘上做“dir a:“。很明显这是由于 BIOS 不恰当地把地址 0000:0526 (扇区数)初始化做11 h 而不是12 h。在设备上用“dir” 可以修正该值。在本案中受影响的机器使用 Unicore Software 的“Mr. BIOS”。

Q7:我能够很好的安装,但是装完的系统不能启动!

A:Slackware 使用精简的内核来进行安装──换句话说,这些内核仅包含控制完成安装所需设备的驱动。如果你没有安装引导盘的内核,也许应该安装(比如说) bare.i IDE 引导盘,但是却从 A 系列中装了 SCSI 内核到硬盘。由于这个内核内建了许多 SCSI 驱动,如果有一块不常见的硬件或一个非标准的端口/IRQ 不能被内核正确识别的话,这将会导致引导时挂起。如果发生此事,你得尝试一个不同的内核。首先,使用在安装过程中正常工作的引导盘来启动你的系统。为了做到这一点,引导这张盘并在 LILO 提示符处输入如下命令:

mount root=/dev/sda2

(以上假设 /dev/sda2 是你的 Linux 根分区,否则使用你系统上适当的设备名)

一旦你的系统运行起来之后,安装或者编译一个不同的内核。

编译内核的说明可以在你的内核源代码目录下找到(如果你安装了内核源代码就会有的)。内核源代码通常可以在 /usr/src/linux 下找到。

简单说来,构建一个新内核的方法如下:

cd /usr/src/linux

make config (然而回答你所需要回答的问题)

make dep ; make clean ; make zImage

如果 zImage 构建成功,请看关于如何通过 LILO 或者 Loadlin 安装它的说明,或者做一张引导盘。

一旦你完成之后,你可以希望通过 cd'ing 到 /usr/src/linux 来整理它并再次做 'make clean'。

祝你好运!如果你能解决这个问题,那么你在你向一个 Linux 高手转变的道路上表现得非常好。

Q8:为什么我在 Slackware 下被告知“网络不可达”?

A:这有几种可能性。对大多数用户而言,在机箱外面的一切都运作良好。但是,如果你遇到了这个问题,这里有两个办法你可以尝试:

1、把 /etc/rc.d/rc.inet/ 里的 ifconfig 调用中的广播地址和子网掩码的参数(及其变量)对调。确认你没有尝试设定你自己的 IP 地址──你不该那么做。

2、确认 /etc/networks 被恰当地设置。

3、你也许想尝试 'netconfig' 脚本。

它并不完美,但工作却干得漂亮。

4、确认你所用的内核支持你的硬件。Slackware 提供的大多数内核包括一个 /boot/config 文件,你可以查看编译选项。

Q9:$%#@! 为什么我的 UltraStor SCSI 不能被检测到?在 DOS 下可以的!

A:把输入/输出地址设置成 0x340 而非 0x330。

遇到有硬件不能工作,一个好的规则就是在器上玩弄 IRQ 和输入/输出设置并观察有什么发生。比如你的系统启动了并能运行,而 CD-ROM 或者磁带或者其它类似东西,你总是可以在 /usr/src/linux/drivers... 下驱动程序源代码里找一找。真的,这不会令你上当的!通常,源代码里包含了重要的文档,比如该类设备默认的 IRQ 设置,以及在 /dev 里主要的入口数目。你也可以尝试另一张引导盘看看是否有效。

Q10:如果 NFS 安装的安装菜单不能工作,我如何在开始安装之前动手设置网络?

A:如果你的 Linux 及其在 /etc/exports 里的 hosts 中被列出(但并非整个网络),在开始安装之前,你可能需要做下列事情。通常只是当 NFS 服务器与你的 Linux 机器处于不同的子网掩码时才需要这么做:

# Setup the loopback device:
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
# Setup the network:
ifconfig eth0 1.2.3.4                # 1.2.3.4 是我的机器的 IP 地址。
route add -net 1.2.3.0
route add default gw 1.2.3.1   # 在这个例子中,我们的  NFS 服务器 ip 地址为
                                                               # 1.2.31.4 且属于不同的网络。

Q11:我的 IBM Thinkpad 不能正确地把跟磁盘加载到 ramdisk,所以我不能安装 Linux。我该怎么办?

A:某些旧的 Thinkpad 的磁盘转换扇区的工作有点不同。这可以通过在引导时指定 "floppy=thinkpad" 来解决:

boot: ramdisk floppy=thinkpad

……在引导盘的 LILO 提示符处。

Q12:我的大(> 1/2 G) IDE 驱动器报告说多于16个头,因此 Linux 无法在上面安装。我该怎么办?

A:查看 /docs/mini/Large-IDE 文件,有关于如何解决这个问题的说明。(感谢 Bob DiMarco 把此问题报告给我,也感谢 Prtrick LoPresti 第一个编译信息)

注:较新的内核 (> 1.1.40) 将会自动为你完成此一翻译,因此多余的工作是不必要的。

Q13:我怎么用我新采用的内核作一张 Slackware 引导盘?
A:好,你选中一个已存在的内核(宁可找个大点的如 "scsinet.s"),把它放到一张软盘上,然后这么做:

mount /dev/fd0 /mnt (加载它)
cat zImage > /mnt/vmlinuz (令新内核就位)
rdev -R /mnt/vmlinuz 0       (加载为可读写)
rdev /mnt/vmlinuz /dev/fd0u1440 (使用这个驱动器,或者 /dev/fd0h1200)
rdev -r /mnt/vmlinuz 49152  (令 ramdisk 可用)
lilo -r /mnt  (重装 lilo)
umount /mnt (好了!你成功了!:^)

Q14:我的退格键在X 下表现怪异?我如何修复它?
A:我尚未真正见过此一问题。但我偶尔听到它。你也许可以尝试在 /usr/X11/lib/X11/xinit 下或者 $HOME 下的 .Xmodmap 里加入:

keycode 22=BackSpace

Q15:我构建了一个新内核。现在我该如何用这个新的 bzImage 文件替换已存在的内核?

A:首先,你必须准备新的内核。如果你正在使用 UMSDOS,你会希望你的系统引导成可读写。否则,你将希望它被引导成只读以便你的文件系统得到安全的检查。所以,这么做:

rdev -R bzImage 0

对于其它文件系统:

rdev -R bzImage 1

然后,你需要设置根分区。比如说,如果你的 Linux 根分区是 /dev/hda2,你需要这么做:

rdev bzImage /dev/hda2

然后,如果你喜欢可以设置显示模式。以下例子是设置成80x25普通终端模式:

rdev bzImage -1

其它模式包括:-3 = 提示符,-2 = 扩展 VGA。如果你使用 LILO 而且想试试扩展图象模式,那么你就要把 /etc/lilo.conf 里强制成为普通模式的那一行删去。接下来,你要安装内核。如果你从软盘引导,你可以简单地把一张格式化过的软盘插入软驱,然后这样写入 bzImage:

cat bzImage > /dev/fd0

如果你使用 lilo,你得把 bzImage 复制到你的 lilo.conf 希望它所在的位置(也许是 /vmlinuz)并重装 lilo。如果你用 Slackware 的 liloconf 脚本这同样会奏效的。(这是 setup 使用的脚本)

cp bzImage /vmlinuz ; lilo

你得先备份你原来的 /vmlinuz。

如果你使用 Loadlin,把内核复制到 Loadlin 可见的 DOS 分区(如过你使用 UMSDOS,就不必这么做)。然后像这样从 DOS 启动 Linux:

c:\loadlin\loadlin.exe c:\linux\vmlinuz root=/dev/hda2

那会有效的。

Q16:为什么我不能从 elvis (vi) 中剪切粘贴到一个 xterm?

A:最近的 elvis 用鼠标来代替游标位置。如果你想剪切粘贴,那么请在你使用鼠标的同时按住左 shift 键。

Q17:为什么我的总线鼠标不工作?内核、选择、X 服务器以及 text-mouse 都说“没有该设备。”

A:伴随 Slackware 一起发布的内核都没有包含总线鼠标的驱动。近来我尝试把它们包括进来但是却有严重的驱动程序冲突──所以如果它们无法与其它驱动共存的话最好还是把它们留在外面。要我提供包括全部总线鼠标驱动的各个版本的预编译内核显然是不合理的。我只有一台386。;^)

(我开玩笑的,在1999年3月份的时候,我正用着一台 P2-450)

解决方案是从内核模块中加载你的鼠标支持。编译 /etc/rc.d/rc.modules,取消你的鼠标行前面的注释:

# Mouse support:
# /sbin/modprobe atixlmouse
# /sbin/modprobe busmouse
# /sbin/modprobe msbusmouse

(为了取消一个 shell 脚本的注释行,你可以用一个文本编辑器删掉该行开始处的 '#')

Q18:我看到我的 SoundBlaster/松下 CD-ROM 在引导时被检测到,但我不能从中安装或加载它。怎么办?

A:尝试把驱动器号设置为0.安装盘希望这样。在驱动器的背后应该会有用来设置它的跳线──把它移到 leftmost 的位置。

Q19:我用的是 UMSDOS 并且想让 Windows 与 Linux 使用同一个交换空间。应该怎么做?

A:如果你想让 Linux-UMSDOS 与 Windows 共享交换文件,你可以这么做:

1、创建一个 NNNN 千字节的永久交换文件。
2、在 /etc/rc.d/rc.local 里加入如下行:

rm -f /DOS/windows/spart.par  <---用来镇压下次启动时 Windows 的抱怨!
mkswap /DOS/386spart.par NNNN
sync
swapon /DOS/386spart.par

3、在 /etc/rc.d/rc.0 文件里加入 "swapof"。

Q20:安装盘上的 root 密码是什么?

A:没有 root 密码。如果你被要求输入,通常是因为你用来安装的内存不够。

为了解决这个问题,查看你的 CMOS 设置并确认没有打开 ROM 屏蔽。ROM 屏蔽浪费内存且不会提高 Linux 的性能。同时确保你所用的是能够使用的最小的引导盘。比如说,你不是从 NFS 安装到 SCSI 驱动器你不必使用 "scsinet"。使用小一点的东西── 如果可以的话就用 "bare" 磁盘。有人误以为如果它们想在安装完成后使用网络的话就要使用带网络驱动的引导盘。不是这样的!引导盘上包含的东西与你在安装后所能使用的东西没有任何冲突──几乎在所有的情况下你都不需要在安装后的系统上运行与你进行安装时相同的内核。

Q21:Slackware Linux 发行版在我的机上装好后我怎么添加和删除软件?

A:为了删除软件包,输入 "pkgtool" 然后根据提示来做。 pkgtool 也可以让你从当前目录中添加软件包。

更好的安装软件方法是用 "setup" 脚本。当你完成了初次安装之后,setup 把它自己的一个副本放到你的 /sbin 目录下以便将来再用。如果你确实愿意的话,你也可以通过引导盘或者安装盘来添加软件。

如果是通过 NFS 来给一个运行中的系统添加软件的话,你最好手动加载分区并使用 setup 的 'install from a mounted directory' 的功能。还有一些命令行工具可以让你创建、添加和删除软件包。你可以看 manpages: installpkg(8), removepkg(8), makepkg(8), explodepkg(8)。下面是如何用 installpkg 来安装软件包的一个简单例子:

instalpkg package.tgz

Q22:我不知道 setup/pkgtool/installpkg 把哪些文件放到那里?

A:查看 /var/adm/packages。

类似的,你可以在 /var/adm/scripts 里找到每个包的安装脚本。

Q23:我把我的分区设置成为 "Linux native" 但是 Slackware 仍然无法检测到它们!我该怎么办?

A:这个问题比较少见,我还不清楚是什么引起的。

[ 我发现这与 IBM PS/1, Thinkpad 及类似机器上的检测不到硬盘的问题不同。如果你有这些机器的话,fdisk 会产生问题,在下面会提到 :^) ]

通过以下方法你仍然可以进行安装:

1、通过一张引导盘启动 text.gz。
2、为 Linux 创建并格式化分区。
3、把目标分区挂载到 /mnt 下。
4、键入 "setup -target_mounted"
5、参照安装说明的余下部分进行安装。
6、键入 "vi /mnt/etc/fstab" 并输入一个适当的 fstab。
       以我的 fstab 文件内容为例:

/dev/hdb2                swap                swap                defaults
/dev/hda2                /                ext2                defaults
/dev/hda3                /usr                xiafs                defaults
/dev/hda1                /dos                msdos        defaults
/dev/hdb1                /os2                msdos        defaults
none                        /proc                proc                defaults

下面略做说明:第一部分是所需要挂载的分区,第二部分是指定它应被挂载到哪里,第三部分是文件系统,最后一个部分是使用选项。除非你是 Linux 专家,否则把它设置为 "defaults"。

其它需要知道的事情:

确认你在把其它分区挂到根分区下之前已列出根分区。
加入 /proc 这样一行,否则 "ps", "w" 等将无效。
在最后插入一个空行是个好主意,因为曾经有人向我报告说最后一行列出的分区不能被加载。

7、当你创建并保存此文件后,你就可以按 ctrl-alt-delet 来重启了。

Q24:我有一台 (PS/1 || Valuepoint || Thinkpad),由于 fdisk 不能认出我的硬盘而无法安装。我该怎么办?

A:你需要在引导盘的提示符处输入你的硬盘参数。你也可以通过在第一个参数后使用第二个 hd= 参数来指定第二个 IDE 驱动器的几何性质。

在你启动了引导盘之后,你会发现有更多的在 LILO 提示符出传递你的硬盘参数到内核使之能够被识别的格式信息。

如果你希望 LILO 能工作,你得编辑 lilo.conf 文件,加入一行类似于 hd= flag。把如下一行加入到该文件的开头处:

append="hd=cyl,hds,secs"

"cyl", "hds",及 "secs" 分别是该驱动器上 cylinders,sectors,及 heads 的数值。

如果你有两个 IDE 驱动器,(像这样)指定它们:

append="hd=967,13,31 hd=944,14,40"

Q25:为什么我的 /etc/issue 和 /etc/motd 总是在开机是重设置它们自身?

A:是 /etc/rc.d/rc.S 在你开机后测得你当前正在运行的内核后设置它们──除非在登入处显示的内核版本不再是当前版本了。

如果你想自己来写 /etc/issue 和 /etc/motd,你可以注释掉 /etc/rc.d/rc.S 中的这部分。

Q26:Emacs 卸载核心,提示说缺少库,或者没有 X 支持!
A:GNU Emacs 系列包括一个你可以选择的带 X11 支持的或不带 X11 支持的版本。确认你的机器上有一个正确的二进制文件。

包含 X11 的二进制文件将被作为第一张光盘上某个软件包的一部分被安装,它是否会被安装取决于你是否需要 X11 支持。如果你不需要 X11 支持,安装最后一张盘上 Emacs 系列中的 "emac_nox.tgz" 就可以了。

Q27:为什么我编译东西时提示 'signal 11: internal compiler error' 就死了?

A:这有99%的可能是暗示了硬件问题。这通常可以通过在 CMOS 设置中加大等第状态的数值来解决。这几乎总是可以通过关闭 RAM 缓存来解决,虽然这也许是当它导致明显减慢时你最后的依靠。

另一个常见的原因是过热,尤其是在 CPU 超频的情况下。我已有几台机有这毛病好多年了,特别是在重负之下。如果 signal 11 的问题通常发生在机器运行了一阵之后,它应该就是跟温度有关。试一下打开机箱运行机器。如果这不起作用,就瞄准主板上的某个风扇。(我曾经用这个方法在一些使用 hot-running SCSI 硬盘的机器上,在其整个生命周期中如此运行)一个高质量的 CPU 风扇也会帮大忙的。如果你只有一个低功率的风扇/散热器的话,考虑把它换成 TennMax (www.TennMax.com)。在我这里使用这种风扇的效果效果非常棒。(一个双风扇模式使我的 P2-450 变得非常稳定)

想了解更多关于 signal 11 问题的原因及对策,请参看 http://www.bitwizard.nl/sig11/ 上 Signal 11 FAQ 的最新版本。

其法文译本可在如下地址找到:http://www.linux-france.com/article/sig11fr

Q28:我该如何改变(处理) ls 的颜色?

A:阅读 man 页,及 /etc/DIR_COLORS 文档。你可以通过任何你喜欢的方法来设置颜色,或者把它们全部都关闭。同时,你也可以复制 /etc/DIR_COLORS 到你的家目录,命名为 '.dir_colors' 通过逐个设定用户从而覆盖全局默认设置。

Q29:我用 "startx" 启动 X 而且它也工作了,但是我无法切换到虚拟终端。为什么?

A:在 Linux 文件模式下,你可以用 Alt-F1 到 Alt-F8 来切换虚拟终端。在 X 下,你得用 Ctrl-Alt-F1 到 Ctrl-Alt-F8。
另一组有用的秘密组合键是RightShift-PgUp/PgDown 来切换。(从零到若干几页是一个随机数字,取决于你的显示文本缓冲内存状态)

Q30:为什么我无法在 X 里用新的 ghostscript?

A:请确认 XAP1 盘上的 gs_x11.tgz 已被正确安装。

Q31:所有东西都不能工作了!该怎么办?

A:如果你看上去遇到了灾难性的失败(!),请检查 ftp.slackware.com 上 /pub/slackware 下的 FILE_LIST 文件与你硬盘内容的不同之处并确认你没有漏掉什么文件。

我也注意到了大多数关于 kernel panics 和系统挂起的问题报告来自只有4 MB 内存的人。如果你正属于这种情况,那么我建议你花点钱再加上4 MB。我用8 MB 的内存从来没有崩溃过。(除非我真的非常倒霉)
如果你不想那么做,浏览你的 /etc/rc.d/rc.* 文件并去除所有你不用的守护进程,像 crond, lpd 或者 selection。

如果你加了4 MB之后被警告说 "virtual memory exceeded in new',确认在运行 setup 前设置并激活了一个交换分区。如果你实在很难增加内存,你可以用 'editroot' 引导一张根磁盘来代替某个常用的引导内核。这会把软盘加载到根驱动器,你得从其它驱动器或者硬盘启动器进行安装。你或许也无法创建任何类型的引导盘,所以你必须安装 LILO 并冒一个险。我只建议不能用交换文件的人用此方法。

Q32:我如何用一个自制的内核做一张引导盘?

A:查看 ./kernels 子目录。你会在哪里发现关于如何做的全部说明。

Q33:当我刚刚装完 Slackware 的时候,系统可以发现我的 CD-ROM。但是但我尝试用 LILO或引导盘引导后系统就不再能找到 CD-ROM 驱动器了!怎么修复它?

A:问题的原因可能是你使用了包含你的 CD-ROM 驱动器支持的引导盘,但是你没有安装一个包含该支持的内核。

如果你准备尝试编译一个内核,你可以通过编译一个自制的内核(参看关于编译 Linux 内核的段落)从而很容易地解决问题,或者你也可以把 CD-ROM 的驱动作为内核模块来加载。你可以通过编辑 /etc/rc.d/rc.modules 文件在下次启动时为你的 CD-ROM 驱动器装载模块。

以下是该文件中装载 CD-ROM 驱动器模块的段落:

# These modules add CD-ROM drive support.  Most of these drivers will probe
# for the I/O address and IRQ of the drive automatically if the parameters
# to configure them are omitted. Typically the I/O address will be specified
# in hexadecimal, e.g.: cm206=0x300,11
#
#/sbin/modprobe aztcd aztcd=<I/O address>
#/sbin/modprobe cdu31a cdu31a_port=<I/O address> cdu31a_irq=<interrupt>
#/sbin/modprobe cm206 cm206=<I/O address>,<IRQ>
#/sbin/modprobe gscd gscd=<I/O address>
#/sbin/modprobe mcd mcd=<I/O address>,<IRQ>
#/sbin/modprobe mcdx mcdx=<I/O address>,<IRQ>
#/sbin/modprobe optcd optcd=<I/O address>
# Below, this last number is "1" for SoundBlaster Pro, or "0" for a clone.
#/sbin/modprobe sbpcd sbpcd=<I/O address>,1
#/sbin/modprobe sonycd535 sonycd535=<I/O address>
#/sbin/modprobe sjcd sjcd=<I/O address>

如果你要使用其中某一项,删去你的 CD-ROM 驱动器那一行前面的 '#' 即可。如果你知道输入/输出地址和/或主板的 IRQ,把它填入该行。比如,假设你的 SoundBlaster CD-ROM 在 0x300 处,那么你可以把 sbpcd 那行改成这样:

/sbin/modprobe sbpcd sbpcd=0x300,1

如果你需要读取 CD-ROM 驱动器来安装模块软件包,用你安装系统时使用的引导盘进入系统。在 LILO 提示符处使用如下命令,但是把根设备名替换成你机器上使用的名称:

mount root=/dev/hda1

在你登入后,这样安装模块软件包:

installpkg /cdrom/slackware/a*/modules.tgz

Q34:我能用一个串口上的终端来安装吗?

A:是的,Slackware 引导盘包含了把系统终端放在一个串口上的支持。为了做到这一点,你得在引导盘的引导提示符处使用 console=ttyS0 或者 console=ttyS1(这是 COM1: 和 COM2: 的两个例子)作为额外参数。

比如说,为了在一个串口终端上进行安装,你要启动如 bare.i 的引导盘并等它到引导提示符处停下来。接下来输入如下命令来用 COM1 上的终端引导内核:

    ramdisk console=ttyS0

为了从一个可引导并使用串口终端的 CD-ROM 来安装,在 "boot" 提示符处输入内核及串口的名称:

    bare.i console=ttyS0

Q35:“总线错误”是什么意思?

A:这通常意味着你机器上的内存不够。看看你是否能设置一些交换空间或者一个交换文件──这样就能解决问题。

另外,LDP 的成员已经发布了一批极好的 Linux 手册。你可以在 metalab.unc.edu 上的 /pub/Linux/docs/LDP 下找到它们。

Patrick Volkerding
volkerdi@slackware.com

翻译:shadkong
shadkong@163.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表