深入地讲:许多人害怕Linux,因为它给出的出错提示信息简直像天书一样。并且这样的信息有很多。如果你在Linux Format(译者注:这是一家英国销售量最好的Linux杂志)的论坛上搜索“Error”这个词,你将会得到超过150页的内容。那些是许多人遇到的许多问题。
用户们遇到的最大的困难并非出错提示信息的数量,而是如何从中找出有用的东西。例如,“ Kernel Oops”是什么意思,或者“PCI can’t allocate”是什么意思?Linux的出错提示相当愚钝且很难理解,几乎起不了什么帮助。这是一个遗憾,因为大绝大多数问题本可以很容易的解决,而且有相当数量的涉及同样问题的出错提示一次又一次的出现。用商业圈里的话来说,这是最能获得立竿见影效果的部分(译者:不知些句如此翻译妥当否?请指教)。我们要解决的正是这一部分问题。
启动你的系统不需要你成为一个Linux专家,播放视频文件也无需成为程序员。然而大部分出错信息都假定他们的用户已掌握了此类专门技术。我们试图阐明这些常见错误,并提供解决方案,以帮助普通的Linux用户规避这些问题,并使他们的系统回到正常状态。我们挑选了一些我们认为问题最多的领域,包括启动、常规软件应用、文件系统、网络和发行版的安装。
我们从每个领域中挑选了几个最常见的错误,并解释了相应的解决方案是如何起作用的。这样做的目的是,即使这些问题不适合你的情况,你也能了解为什么Linux的出错提示信息看上去如此的难以捉摸并令人生畏。希望你能从中学会找到解决自己问题所需知识的方法。
发行版的安装
每一种Linux发行版都有不同的安装例程,并且都会制造一些问题。Ubuntu也许在一台电脑上工作良好而另外一台则不行。一台安装了Ubuntu并运行正常的电脑也许根本无法安装Fedora, OpenSUSE, Linux Mint, 或者Mandriva…
ERROR Can’t boot from CD/DVD(无法从光盘启动)
如何你刚开始接触Linux,下述情况通常会是你对该操作系统的第一体验:你将你的新光盘放入光驱并重启电脑,结果发现却是进入了你先前使用的操作系统。问题在于你硬盘的启动优先级高于光驱。许多现代的BIOS包含了一个启动菜单,在这里你可以动态地修改设备的启动优先级。当屏幕上第一次出现东西的时候,试着按下Escape键或F12键,你只需在那里选择从光驱启动。
老一点的电脑可能没有这样的方便。你需要在开机时按F12或者Del键进入系统的BIOS菜单,从那儿更改启动顺序。通常你可以在“Boot”菜单下找到相关选项,你需要保存这些更改以便能够从光驱启动。如果你需要从外接驱动器或U盘启动,可以执行相同的步骤。如果你在网吧或者面对一台公司的电脑,上述内容同样有用。
有时你可能需要更改设备的启动优先级以便能够从光驱启动一个live版的Linxu发行版。
ERROR PCI: cannot allocate(无法指派)
这样的错误有许多,他们主要在启动系统时出现。他们有一个共同的起因:错误的电源管理行为。罪魁祸首是一个叫做ACPI的东西,即高级配置与电源接口。尽管他是一种电源管理标准,但在十几年的时间里他已经引起了无数问题。麻烦在于硬件驱动总是不完全执行这个协议规范。
当你打开电脑的时候,或者将电脑从睡眠状态唤醒的时候,你的电源管理便开始起作用,每到此时某些设备就会出问题。通过Live CD进行的安装加剧了些问题,因为他们启动时不提供严格侦测硬件匹配的额外功能,也无法包含所有设备的驱动,这就是为什么通过Live CD进行安装后常会出现此问题。
你能做的只有一件事——关闭ACPI。有时你可以通过系统的BIOS菜单来关闭此功能,如果不能关闭的话,你需要在启动时禁用ACPI。启动时按下Escape键,进入Grub菜单,选择你通常用的那个项。向下翻到从内核启动的那一行,按下E键编辑该行。在此行末尾加上acpi=off noapic,按回车及B键进行启动。你会发现你的电脑顺便启动,如果你以后再安装Linux,你选择的发行版应该能够更好的在安装时选择正确的驱动。
Booting problems(启动出错)
没有什么比一条中止你系统启动的信息更糟糕的了——主要是因为你现在还没有解决主要问题的工具。然而启动时出错相当常见。因为我们都喜欢安装发行版,并且我们经常在一台电脑上安装不止不种发行版,还和Windows共享一块硬盘。任何这样的安装都能扰乱引导程序,将一个运行良好的系统回复原状并不是那么容易的。
ERROR Grub…
如果你在打开电脑时看见了这条信息,说明Grub 的启动菜单损坏了。这是你安装的Linux的中负责启动操作系统的部分。你唯一能做的就是从其他媒介启动Linux,最好是Live CD。进入桌面后,打开一个命令行终端,切换到管理员账户,键入grub。以下步骤在你的Grub菜单项不再指向你的Linux分区的情况下也能起作用。
键入find /boot/grub/stage1,此命令的作用是搜寻初始启动驱动器的位置,他将会返回包含(hd0,0)字样的几行输出——这是Grub用来表示硬盘驱动器位置的语法规则,返回什取决于你自己的安装,所以不要以为他就是(hd0,0)。现在键入 root (hd0,0) (或者是你自己得到的返回值),以告诉Grub该从哪个分区启动,然后键入setup (hd0)以在你的硬盘主引导记录重新安装引导程序。然后重启电脑,他应该已经能正常启动了。
知道如何在你的主硬盘安装Grub启动引导程序将会摆脱各种难缠的问题。
ERROR Out of range, ERROR Fatal server error: no screens found(超出范围错误,服务器致命错误:无法找到屏幕)
当你的屏幕预设值跟你的显示器不兼容时就会出现此错误。按下Ctrl+Alt+F1进入控制台模式,以root身份登录(或者用你在Ubuntu中的普通账户使用sudo命令)。基于Debian发行版的用户可以键入命令dpkg-reconfigure xserver-xorg来重新配置你的屏幕。
其他用户将不得不按以下步骤手动修复他们的设置。首先,键入cd /etc/X11,然后是cp xorg.conf xorg.lxf,以便备份你的设置文件。现在用一款你用着最顺手的命令行编辑器打开此文件。如果你不确定的话就键入nano xorg.conf。如果你知道你显示屏的规格,将此配置文件向下翻找到“Section Monitor”项,现在你需要手动设定水平和垂直刷新率。
如果你不知道你屏幕的分辨率,继续向下翻直到找到Screen section项。你需要删除此处所有的高分辨率,因为我们在寻找最小公分母(我们建议删除任何高于1024×768的分辨率)。在你的屏幕恢复正常后你可以重新从桌面增加其分辨率。如何这些方法都不起作用,那么最后的保护性选项就是将你的设备调整为“vesa”模式,完全避开你的显卡驱动。
ERROR Kernel panic!
Kernel panic 或者 Kernel oops!错误信息是我们Linux用户所遇到的最接近那个经常困扰Windows用户的蓝屏死机的故障了。和Windows一样,当这种情况出现时你除了关掉电源开关外别无他法。内核处于你的Linux系统的心脏部位,内核崩溃通常是由于硬件动作异常而导致内核强制进入系统内存的未知区域。
最好的解决办法是升级内核,因为硬件的问题可能已经在新版本中得到修正。但是你可能需要从启动菜单退回到一个早期版本的内核以便能够使用Linux,然后进行升级。
另外一种选择是确定出问题的硬件。如何你刚刚更改过你的硬件或者安装了新的驱动器,这可能就是问题所在。否则,你可能不得不采取逐个移除硬件的方法来测试你的电脑是否能够正常启动。尽管内核崩溃会给出大量信息,普通用户通常只能理解其中的极少数,因为原来的错误已将系统推向一种无法预知的状态。
ERROR Incorrect username or password(用户名或密码错误)
你会吃惊于竟有如此多的用户给我们打来电话说他们忘记了自己的密码,或者更糟,用户信誓旦旦的宣称他们从来没有被要求输入密码。幸运的是,密码并非永远丢失了。你需要启动你的电脑到单用户模式或者修复模式。为达此目的,只需启动后在电脑离开BIOS界面时按下Escape键,就会显示Grub启动菜单。
如果没有进行单用户模式或者修复模式的选项,那就选择通常启动的那一项(通过位于菜单的顶部),按E键编辑启动参数。移动到以kernel字样开关的那一行,然后再次按E键编辑那一行的文本。确定指针处于行尾,增加以下参数rw init=/bin/bash。按回车,然后按B键启动。我们刚刚改变了默认的启动选项来打开一个Bash终端而非通常启动的会话。
至于安全和修复模式,你要做的就是键入你要改变密码的用户名和新密码。如果没有用户名,passwd命令将会改变root的密码。现在重启你的电脑就可以使用你的新密码了。
如果你能够跟一台电脑有物理接触,那么就能通过启动后进入修复模式的方法轻松改变任何用户的密码。(译者注:据本人的经验,如果root用户原来就设有密码,那么在进入recover mode的时候,会首先要求你输入root密码,故上述方法只适用于root原来没有密码的情况。 而通过开机更改grub启动参数的方法则不受此限制,连root密码也可以改掉)
文件系统
文件系统是你安装的Linux内核的一部分,其负责对包括外部设备上的文件的读写。此部分通常是很健壮的,但突然断电或行为异常煌硬件有时也会引起一些问题。关于你的文件系统的任何问题通常解决起来都比较复杂。所以,我们列出的解决方案都是用命令行。
ERROR Run fsck manually(手动运行fsck)
基本的文件系统错误就有数十个不同的种类。这些错误通常在启动电脑是出现,并经常导致出现对根分区的“只读”警告。这意味着如果你的电脑能够启动,你将不能做任何事。解决方法是从Live CD启动,这保证了你损坏的驱动器不被启动程序触及以使文件系统修复工具能够进行必要的修改来修复问题。
你需要运行的命令是fsck -f /dev/drive,但是你需要用你自己的根分区的设备替换掉命令中的“drive”。这取决于你的安装。例如,主驱动器上的第一个分区是sda1。初始的错误提示中应该会包含此信息。你需要以管理员身份运行fsck,这意味着Ubuntu用户需要用Ubuntu Live CD创建一个用户,只需先后键入以下两条命令sudo passwd root,sudo bash。
ERROR Device is busy(设备忙)
我们许多人使用外接硬盘和U盘,但有时这些设备拒绝从文件系统卸载自己。你不能只简单地将其拔下,因为这样你可能会丢失本地缓存中尚未写入该设备的数据。你可以通过在命令行键入sync解决此问题,这将迫使任何缓存的数据立刻写入该设备,但这仍不能解决无法载载的问题。
要解决无法载载的问题,你需要用到一个叫做lsof的命令,该命令需要单独安装。键入“lsof 挂载点”能够列出当前正在访问设备上文件的进程,你需要杀死这些进程之后才能卸下该驱动器。
知道这个技巧将会使无法卸载CD或者DVD的情况变得很容易处理,因为所用到的技术是一样的(只是不涉及sync的问题,因为他们是只读设备)。这里有一个例子:
> umount /mnt/contentumount: /mnt/content: device is busy> lsof /mnt/contentCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEsmbd 23222 root cwd DIR 8,33 4096 2 /mnt/content> kill -9 23222> umount /mnt/contentNetworking(网络)
极少有人乐于检测并修复网络问题。但在我们有有线世界,这些问题是无法避免的。幸运的是,有少数几个错误占据了这些问题的很大一部分比例,我们已经替你把他们解决了。
ERROR Server not found(找不到服务器)
这是经典的网络错误。你打开了电脑,等系统启动,点开了指向你最喜欢的网页的链接。然而他并没有打开,而且出现了“服务器错误”的信息。这个问题是无法接入互联网,有许多可能的原因。解决此问题的最好办法从主要连接开始查起。你的路由器连接电源了吗?你的宽带连接在你的路由器上工作吗?
如果你在使用无线网,显然你需要检查一下你装有Linux的机器上的无线连接。如果你在用有线的以太网,你需要检查一下看电缆周围的两个LED指示灯是不是都亮了。橘黄色LED灯亮表示有连接,而绿色的LED指示灯随着网络动作而闪烁。
如果这些都没有问题,那说明问题出在你的Linux系统中。如果你已经检查过你的发行版的网络设置面板,并且看上去一切正常,你就需要尝试一系统命令行工具了。ifconfig命令产生许多输出,但这是确保你的网络连接已被分配IP的最快捷的方法。如果是有线连接就查找eth0,如果是无线连接就查找ath0或者wlan0,确保你的网路有正确的网络地址。
如果上述方法不起作用,那么试试先后输入以下命令:ifconfig eth0 down,然后是ifconfig eth0 up。也许你还想试试route命令以确定只有一个确定的网关地址。如果你找到两个,键入”route del 网关地址”以删除一个。
此类出错提示信息上可能是由数不清的问题导致。
ERROR MSN won’t connect(MSN无法连接)
这跟你用的messenger客户端没有关系——Pidgin, Kopete, KMess 和 AMSN 有时都会连不上服务器。此类问题通常可归结为服务器协议的改变,这意味着每个客户端都需要升级。但也可能是由你的本地连接引起的。MSN对防火墙和端口转发非常敏感。解决办法是使用HTTP,通常这是你账户窗口中的一个选项。鉴于HTTP是网络传输的通用协议,你不应该再在连接方面有什么困难。
如果MSN的连接选项不起作用,那么就在用户设置页面转换成HTTP。
Software(软件)
这是我们使用Linux时都感到沮丧的一个方面。OS X和Windows用户经常会惊奇的发现Linux用户甚至无法从因特网上下载一个软件包,之后双击该包并毫无阻碍的完成应用程序的安装。他们能只需下载一个文件并运行之便能轻松获得最新版的如Gimp, Inkscape a和OpenOffice.org这样的应用程序。Linux用户可没有这样的好运,且此问题又因多数发行版使用不同的软件安装方法而进一步恶化。
ERROR Permission denied(权限不足)
这个错误是由系统安全设置引起的,当从命令行执行程序或编辑某些文件时常会出现。Linux锁定了某些文件和目录,这样即使帐户被盗,该用户也无法运行系统的关键程序。这样的机制在Linux服务器或者那种有着数百用户的Linux框架中显得更加有用。尽管他在单用户系统中也很重要,但即使你避开这些预防措施以给自己足够的权限进行或打开某些关键文件,这也没什么错。
你可以在桌面或命令行来达到此目的,但你需要使用系统管理员账户以便能够改变所需要权限。在命令行,可以输入sudo bash命令来进入管理员账户,如果是非Debian用户,则只需输入su 即可。你可以用”chown 用户名 文件名”来改变文件的所有权,加上 -R 参数将会递归改变该文件夹下所有文件的所有权。但这帮不了你电脑上其他用户的忙,因为他们仍将面对权限问题。
正确答案是改变文件的可执行权限。可以用chmod命令来改变权限。键入 “chmod +x 文件名” 以便给你电脑上的每个用户增加对该文件的可执行权限。类似的,”chmod +rw 文件名”将会授予所有用户对该文件的读写权限。
ERROR Downloads won’t run!(不能下载)
数个月前,我们在我们发行的DVD里包含了Runes of Avalon 2(译者注:阿瓦隆神符2,一款益智类消除游戏)试用版。他被封装在一个tar.gz文件中。我们中的大多数人甚至不会注意到这个游戏,因为我们已经被Linux的古怪弄得麻木了。但我们还是接到了几个新Linux用户(这些正是我们需要努力争取的人)的电话,询问为什么那个tar.gz文件无法运行。当然,答案是.tar.gz文件是一个归档文件。我们解释说它就像是一个zip文件,需要解压到一个文件夹才能运行那个试用版游戏。
你可以在桌面上右击该文件选择解压,或者在命令行键入“tar xvf 文件名.tar.gz”,但新手根本没必要知道命令行的方法。然后你需要找到一个.bin或者.sh文件,双击该文件以运行此游戏。如果你运气不好,你可能需要在命令行进入刚才创建的文件夹并键入./install.sh进行安装。我们代表世界各地的Linux拥护者对此不便之处表示歉意。
除非你以Linux比较熟悉,否则运行试用版软件和下载不会像在其他操作系统中那样顺畅。
ERROR Flash movies don’t move(Flash影片无法播放)
真同情那些刚接触Linux的用户,他们启动了新安装的系统,却发现自己无法在YouTube度过当天的时间。是的,极少有Linux发行版默认支持Flash回放功能的。更糟糕的是,你的浏览器不可的乐观的宣称只需点几下鼠标就可以完成Flash的安装,而这通常都是在说谎。然而,这里有一个很保险的方法来获得Flash回放支持。
在Google搜索“adobe flash download”,点击第一个靠前的链接。在新页面中“version to download”的下拉菜单中,选择“tar.gz for linux”并点击用户协议。该文件会被保存,你需要记住浏览器把文件存在什么地方了。接着,打开一个命令行终端,键入cd+空格+你下载的文件的路径(通常是你主文件夹中的~/Desktop)。
进入那个文件夹之后,键入 tar xvf install_flash* 解压缩下载的文件,cd 进入此新文件夹。现在你需要键入./flashplayer-installer来执行安装程序,并注意屏幕上的提示符(译者注:即闪动的光标)。稍后浏览器会重启,你已得到了一个工作正常的Adobe Flash。
即使你的发行版不包含Adobe Flash支持,安装一个支持程序也就是两分钟的事。