
本章将描述一系列可能发生的问题及其解决方法。即使您的情况并未精确地列在这里,也可能有足够相似的情况可提供解决您的问题的方法提示。
Linux 报告情况时是很详细的。当您的系统发生问题时,可以从几个位置查看,通常大多数是 Linux 系统的标准日志,有一些是与 SUSE Linux Enterprise Desktop 系统相关的日志。多数日志文件可以用 YaST( › )查看。
YaST 可提供支持团队所需的所有系统信息。使用 › ,然后选择问题类别。当所有信息都被集合后,将其附加在您的支持请求。
将出现最常检查的日志文件的列表,并附有其典型用途说明。包含 ~ 的路径是指当前用户的用户主目录。
|
日志文件 |
描述 |
|---|---|
|
|
来自当前运行的桌面应用程序的消息。 |
|
|
来自 AppArmor 的日志文件,详细信息请参见Part IV, “Confining Privileges with AppArmor”。 |
|
|
来自审计的日志文件,用来跟踪对系统的文件、目录或资源的任何访问,并跟踪系统调用。有关详细信息,请参见Part V, “The Linux Audit Framework”。 |
|
|
来自邮件系统的消息。 |
|
|
来自 NetworkManager 的日志文件通过网络连接收集问题 |
|
|
包含 Samba 服务器及客户端日志消息的目录。 |
|
|
所有来自内核与系统日志守护程序的消息为“警告”或更高级别。 |
|
|
包含当前计算机会话的用户登录记录的二进制文件。可使用 |
|
|
来自 X Window 系统的各种启动和运行时日志文件。在调试失败的 X 启动时,该日志很有用。 |
|
|
包含 YaST 操作及其结果的目录。 |
|
|
Zypper 的日志文件。 |
除了日志文件外,您的计算机还可提供关于运行中的系统的信息。请参见 表 32.2: /proc 文件系统的系统信息
/proc 文件系统的系统信息 #|
文件 |
描述 |
|---|---|
|
|
包含处理器信息,包括处理器类型、制造商、型号和性能。 |
|
|
显示当前使用的 DMA 通道。 |
|
|
显示正在使用的中断和已使用的中断数量。 |
|
|
显示 I/O(输入/输出)内存的状态。 |
|
|
显示当时正在使用的 I/O 端口。 |
|
|
显示内存状态。 |
|
|
显示各个模块。 |
|
|
显示当前装入的设备。 |
|
|
显示所有硬盘的分区。 |
|
|
显示当前的 Linux 版本。 |
除了 /proc 文件系统外,Linux 内核还可通过 sysfs 模块(一个内存内的文件系统)导出信息。该模块表示了内核对象及其属性以及关系。有关 sysfs 的更多信息,请参见第 20 章 “使用 udev 进行动态内核设备管理” 中 udev 的环境。表 32.3 包含 /sys 下最常见目录的概述。
/sys 文件系统的系统信息 #|
文件 |
描述 |
|---|---|
|
|
包含系统中发现的每个块设备的子目录。通常多数是磁盘类设备。 |
|
|
包含每个物理总线类型的子目录。 |
|
|
包含按设备功能类型分组的子目录(如图形、网络、打印机等) |
|
|
包含全局设备层次结构。 |
Linux 自带了几个用于系统分析和监视的工具。请参见Chapter 2, System Monitoring Utilities以选择在系统诊断中使用的最重要的工具。
以下包含的每个情景都以一个描述问题的标题开头,后跟一两段内容,提供建议的解决方案、解决方案详细信息的参考,以及对其他可能相关的情景的交叉引用。
安装问题是指计算机无法进行安装的情况。一种可能是完全无法进行安装,另一种是无法启动图形安装程序。本节将着重介绍您可能会遇到的一些典型问题,并提供可行的解决方案或针对此类情况的变通方案。
如果您使用 SUSE Linux Enterprise Desktop 安装媒体时遇到任何问题,请检查安装媒体的完整性。从该媒体引导,然后从引导菜单中选择。在运行中的系统上,启动 YaST 并选择 › 。要检查 SUSE Linux Enterprise Desktop 媒体,请将它插入驱动器中,然后在 YaST 的屏幕中单击。这可能要花几分钟时间。如果检测到有任何错误,则不应使用此媒体进行安装。媒体问题可能是您在自行刻录媒体时发生的。以较低的速度 (4x) 刻录媒体有助于避免问题。
如果您的计算机没有可引导的 DVD-ROM 驱动器,或者 Linux 不支持您的驱动器,则有几种无需内置 DVD 驱动器便可安装计算机的方法:
如果您的 BIOS 和安装内核支持,请从外部 DVD 驱动器或 USB 储存设备引导。有关如何创建可引导 USB 储存设备的说明,请参见Section 2.2.1, “PC (AMD64/Intel 64/ARM AArch64): System Start-up”。
如果计算机没有 DVD 驱动器,但是提供了有效的以太网连接,则可以执行完全基于网络的安装。详情请参见Section 5.1.3, “Remote Installation via VNC—PXE Boot and Wake on LAN”和Section 5.1.6, “Remote Installation via SSH—PXE Boot and Wake on LAN”。
Linux 支持多数的现有 DVD 驱动器。如果系统上没有 DVD 驱动器,仍可能用通过 USB、FireWire 或 SCSI 连接的外部 DVD 驱动器引导系统。这主要取决于 BIOS 与所使用硬件的交互。如果遇到问题,有时执行 BIOS 更新可能会有用。
从 Live CD 安装时,也可以创建用于引导的 “Live 闪存盘”。
计算机不从安装媒体引导的一个原因可能是 BIOS 中引导顺序的设置不正确。BIOS 引导顺序必须将 DVD 驱动器设置为第一引导项。否则计算机将尝试从其他媒体引导,通常为硬盘。有关更改 BIOS 引导顺序的指南可在随主板提供的文档中找到,也可以参见以下段落。
BIOS 是实现计算机最基本功能的软件。主板厂商提供专门为他们的硬件设计的 BIOS。通常,只能在特定时间(例如引导计算机时)访问 BIOS 设置。在此初始化阶段,计算机会执行若干项诊断硬件测试。其中一项测试就是内存检查,由内存计数器指示。当显示计数器时,请查找一行(通常在计数器下面,有时也在底部),该行提到要访问 BIOS 设置需要按的键。通常,要按的键是 Del、F1 或 Esc。按此键,直到出现 BIOS 设置屏幕。
使用由引导例程声明的适当键输入 BIOS,然后等待 BIOS 屏幕出现。
若要更改 AWARD BIOS 中的引导顺序,请查找 项。其他制造商可能对该项使用不同的名称,例如 。当您找到该项后,将其选中并按 Enter 键确认。
在所打开的屏幕中,查找名为 或 的子项。按 Page ↑ 或 Page ↓ 键来更改设置,直到 DVD 驱动器在最前面。
通过按 Esc 键离开 BIOS 设置屏幕。若要保存更改,请选择 或按 F10 键。若要确认应保存设置,按 Y 键。
按 Ctrl–A打开设置。
选择。现在将显示所连接的硬件组件。
记下您 DVD 驱动器的 SCSI ID。
按 Esc 退出菜单。
打开。在下,选择,然后按 Enter 键。
输入 DVD 驱动器的 ID,然后再次按 Enter 键。
按 Esc 键两次以返回到 SCSI BIOS 的开始屏幕。
退出此屏幕,并确认以引导计算机。
无论最终安装将使用何种语言及键盘布局,大多数 BIOS 配置使用下图所示的美式键盘布局:
某些硬件类型(主要是过旧或非常新的硬件)可能无法安装。此问题往往是由于安装内核中缺少此类硬件的支持或该内核中包含的某些功能(如 ACPI,它仍会在某些硬件上引起问题)而引起的。
如果系统无法使用第一个安装引导屏幕上的标准方式进行安装,请尝试使用以下方法:
将第一张 DVD 留在驱动器中,然后使用 Ctrl–Alt–Del 或硬件重设置按钮来重引导计算机。
在出现引导屏幕时,按 F5 键,使用键盘上的箭头键浏览至,然后按 Enter 键起动引导和安装过程。此选项将禁用对 ACPI 电源管理技术的支持。
按Chapter 2, Installation with YaST中所述的步骤进行安装。
如果此操作失败,请按照以上步骤继续,但应选择。此选项将禁用 ACPI 和 DMA 支持。大多数硬件应使用此选项引导。
如果以上两个选项都失败,请使用引导选项提示向安装内核传递支持此硬件类型所需的任何其他参数。关于可用作引导选项的参数的更多信息,请参见 /usr/src/linux/Documentation/kernel-parameters.txt 中的内核文档。
安装 kernel-source 包以查看内核文档。
在引导安装之前,还有各种其他与 ACPI 相关的内核参数可在引导提示处输入:
acpi=off
此参数禁用计算机上的整个 ACPI 子系统。如果您的计算机无法处理 ACPI 或如果您认为是计算机中的 ACPI 导致问题的产生,则可以使用此参数。
acpi=force
始终启用 ACPI,即使计算机使用的是 2000 年以前的 BIOS。如果除了 acpi=off 之外还设置了此参数,则此参数将启用 ACPI。
acpi=noirq
不要将 ACPI 用于 IRQ 路由。
acpi=ht
只运行足够的 ACPI 来启用超线程。
acpi=strict
降低对不严格遵循 ACPI 规格的平台的容许度。
pci=noacpi
禁用新 ACPI 系统的 PCI IRQ 路由。
pnpacpi=off
在您的 BIOS 设置包含错误的中断或端口时,此选项用于串行或并行问题。
notsc
禁用时戳计数器。此选项可用于解决系统上的计时问题。这是一项新功能,如果看到计算机上有衰退,尤其是时间相关的或甚至完全挂起,此选项值得一试。
nohz=off
禁用 nohz 功能。如果您的计算机挂起,则此选项可能有帮助。否则就没有用处。
一旦确定了正确的参数组合,YaST 会自动将其写入引导加载程序配置中以确保系统下一次能够正确引导。
如果在装载内核或安装过程中出现无法解释的错误,则在引导菜单中选择以检查内存。如果返回一个错误,则通常这是硬件错误。
在将媒体插入驱动器并重引导计算机之后,出现安装屏幕,但是在选择之后,图形安装程序没有启动。
有多种方法可解决此情况:
尝试为安装对话框另选一种屏幕分辨率。
选择进行安装。
使用图形安装程序进行远程安装(通过 VNC)。
引导以安装。
按 F3 键打开一个菜单,从中选择一个较低的安装分辨率。
选择,然后按Chapter 2, Installation with YaST中所述的步骤进行安装。
引导以安装。
按 F3,然后选择。
选择,然后按Chapter 2, Installation with YaST中所述的步骤进行安装。
引导以安装。
在引导选项提示下输入以下文本:
vnc=1 vncpassword=some_password
将 some_password 替换为用于 VNC 安装的口令。
选择,然后按 Enter 键启动安装。
系统未正确启动图形安装例程,而是仍以文本方式继续运行,接着暂停,显示一条消息,其中包含了可通过浏览器界面或 VNC 查看器应用程序访问安装程序的 IP 地址和端口号。
如果使用浏览器来访问安装程序,请启动浏览器,输入由将要安装 SUSE Linux Enterprise Desktop 的计算机上的安装例程提供的地址信息,然后按 Enter 键:
http://ip_address_of_machine:5801
随后浏览器窗口中将打开一个对话框,提示您输入 VNC 口令。输入口令,然后按Chapter 2, Installation with YaST中所述的步骤进行安装。
通过 VNC 安装这一方法可在任意操作系统下的任意浏览器上进行,只要启用了 Java 支持即可。
看到提示时,提供您的 VNC 查看器的 IP 地址和口令。然后,将打开一个窗口,其中显示了多个安装对话框。照常进行安装。
将媒体插入了驱动器,BIOS 例程结束,但是系统未启动图形引导屏幕。而是启动了一个非常简陋的基于文本的界面。如果计算机的图形内存不足而无法生成图形引导屏幕,则可能发生这种情况。
虽然文本引导屏幕看起来比较简陋,但是它所提供的功能与图形引导屏幕几乎是相同的。
与图形界面不同的是,不能使用键盘的鼠标键来选择其他引导选项。文本引导屏幕上的引导菜单提供了一些可在引导提示下输入的关键字。这些关键字与图形版本中提供的选项相对应。输入您的选择,然后按 Enter 起动引导过程。
在选择引导选项之后,请在引导提示下输入相应的关键字,或者根据第 32.2.4 节 “无法引导” 中所述输入自定义引导选项。要启动安装过程,请按 Enter 键。
使用 F 键来确定安装屏幕的分辨率。如果需要以文本方式引导,请选择 F3。
有关安装期间创建的日志文件的详细信息,请参见第 31.5 节 “在安装过程中收集信息”。
引导问题是指系统不能正确引导时出现的情况(不能引导到预期的目标和登录屏幕)。
如果硬件运行正常,则可能是由于引导加载程序已损坏而使 Linux 无法在计算机上启动。在这种情况下,需要修复引导加载程序。为此,您需要按第 32.6.2 节 “使用救援系统”中所述启动救援系统,然后根据第 32.6.2.4 节 “修改和重新安装引导加载程序”中的说明操作。
其他导致计算机无法引导的原因可能与 BIOS 相关:
检查与硬盘相关的 BIOS 设置。如果在当前的 BIOS 设置中找不到硬盘本身,GRUB 2 可能就不能启动。
请检查您的系统引导顺序中是否包含硬盘。如果未启用硬盘选项,即使系统正确安装,在访问所需的硬盘时仍可能无法引导。
这种情况通常在内核更新失败后发生,称为 kernel panic,原因是该过程中最后阶段有时可以在系统控制台上的错误类型。如果实际上计算机刚刚在软件更新后重引导,则当前目标是使用旧的经过验证的 Linux 版本内核和关联文件重引导。引导过程中,可以在 GRUB 引导加载程序屏幕中通过以下方式来实现此目的:
用重设置按钮重引导计算机,或关闭它之后再打开。
当 GRUB 2 引导屏幕显示时,选择这一项,然后从菜单中选择之前的内核。计算机将使用内核的前一个版本及其关联文件引导。
在引导过程完成后,使用 YaST 的模块去除新安装的内核,并根据需要将默认引导项设置为原先的内核。有关详细信息,请参见第 12.3 节 “使用 YaST 配置引导加载程序”。不过,这可能并不是必须要进行的操作,因为回滚过程中自动更新工具通常会为您修改它。
重引导.
如果这样不能修复问题,请使用安装媒体引导计算机。计算机引导之后,继续至步骤 3。
如果计算机能够启动,但是无法引导进入图形登录管理器,则问题可能出在默认的 systemd 目标选项或 X Window 系统的配置上。要检查当前的 systemd 默认目标,请运行命令 sudo systemctl get-default。如果返回的值为 not graphical.target,请运行命令 sudo systemctl isolate graphical.target。如果图形登录屏幕已启动,请登录并启动 › › ,然后将设置为。此后,系统应该能够引导进入图形登录屏幕。
如果即使已引导或者切换到图形目标,图形登录屏幕也不启动,则原因可能是您的桌面或 X Window 软件设置错误或者已损坏。请检验 /var/log/Xorg.*.log 中的日志文件,查找它尝试启动的 X 服务器发出的详细消息。如果桌面在启动期间发生错误,可能会在系统日记中记录错误讯息,您可以使用命令 journalctl 查询该日记(有关详细信息,请参见第 15 章 “journalctl:查询 systemd 日记”)。如果这些错误消息指出问题出在 X 服务器中的配置上,请尝试修正这些问题。如果图形系统仍无法启动,请考虑重安装图形桌面。
如果 btrfs 根分区已损坏,请尝试以下选项:
使用 -o recovery 选项装入该分区。
如果不起使用,请在您的根分区上运行 btrfs-zero-log。
如果根分区损坏,请在引导提示符处使用参数
forcefsck 。这样会将选项 -f (force) 传递给 fsck 命令。
登录问题是指计算机实际上已引导到期望的欢迎屏幕或登录提示下,但是拒绝接受用户名和口令,或者虽然接受了用户名和口令,但是未能正确地运行(无法启动图形桌面、发生错误或转到了命令行等)。
如果系统配置为使用网络身份验证或目录服务,但出于某些原因无法从为其配置的服务器上检索到结果,通常就会发生此问题。只有作为唯一本地用户的 root 用户仍能登录到这些计算机。以下是计算机看似能够运行但无法正确处理登录的常见原因:
网络出现故障。有关此问题的进一步说明,请转到第 32.5 节 “网络问题”。
DNS 在当时不起作用(这使得 GNOME 不起作用,并使系统无法向安全服务器发出经验证的请求)。如果是这种情况,则表现为计算机对任何操作的响应都需要极其长的时间。有关该主题的详细信息,请参见 第 32.5 节 “网络问题”。
如果将系统配置为使用 Kerberos,则系统的本地时间与 Kerberos 服务器时间之间的差异可能超过了可接受的值(通常为 300 秒)。如果 NTP(网络时间协议)未正确地起作用,或者本地 NTP 服务器不起作用,则 Kerberos 身份验证将不再工作,因为该身份验证依赖于整个网络的通用时钟同步。
系统的身份验证配置不正确。请对相关的 PAM 配置文件进行检查以确定是否存在指令输入错误或排序错误。有关 PAM 的其他背景信息及相关配置文件的语法,请参见Chapter 2, Authentication with PAM。
主分区是加密的。有关该主题的详细信息,请参见 第 32.4.3 节 “登录至加密的主分区失败”。
在不涉及外部网络问题的所有情况下,解决方法是将系统重引导到单用户方式并修复配置,然后再次引导到操作方式并重试登录。要引导到单用户方式,请执行以下操作:
重引导系统。此时将出现引导屏幕,其中显示一个提示。
按 Esc 退出启动屏幕,并转到 GRUB 2 基于文本的菜单。
按 B 进入 GRUB 2 编辑器。
在包含内核参数的行中添加以下参数:
systemd.unit=rescue.target
按 F10。
输入 root 的用户名与口令。
进行必要的一切更改。
在命令行中输入 systemctl isolate graphical.target,以引导进入完全的多用户和网络模式。
这是到目前为止用户最常遇到的问题,因为有许多原因可能引起该问题。登录失败可由多种原因造成,取决于您是使用本地用户管理和身份验证,还是使用网络身份验证。
本地用户管理失败可由以下原因造成:
用户可能输入了错误的口令。
用户包含桌面配置文件的主目录已损坏或被写保护。
验证该特定用户的 X Window 系统可能存在问题,尤其是在安装当前版本之前,该用户的主目录已被其他 Linux 分发版使用时。
要找到本地登录失败的原因,请执行如下操作:
在尝试调试整个身份验证机制之前,请检查用户所记的口令是否正确。如果用户可能记错了口令,请使用“YaST 用户管理”模块更改用户的口令。注意 Caps Lock 键,如果需要请解锁。
以 root 身份登录,并使用 journalctl -e 检查系统日记,找出登录过程和 PAM 的错误讯息。
尝试从控制台登录(使用 Ctrl–Alt–F1)。如果成功了,则问题不在 PAM 上,因为可以在该计算机上身份验证此用户。尝试找出与 X Window 系统或 GNOME 桌面相关的任何问题。有关更多信息,请参考第 32.4.4 节 “登录成功但 GNOME 桌面发生故障”。
如果用户的主目录被其他 Linux 产品所使用,请将该用户主目录中的 Xauthority 文件删除。使用控制台登录(通过 Ctrl–Alt–F1),然后以该用户的身份运行 rm .Xauthority。这样应该可以消除该用户的 X 身份验证问题。然后再次尝试图形登录。
如果桌面由于配置文件损坏而无法启动,请参见第 32.4.4 节 “登录成功但 GNOME 桌面发生故障”。
下面列出了在特定的计算机上对特定用户进行的网络身份验证可能失败的常见原因:
用户可能输入了错误的口令。
用户名存在于计算机的本地身份验证文件中,但同时网络身份验证系统也提供了该用户名,从而引起冲突。
主目录存在,但已损坏或不可用。该目录可能处于写保护状态或位于此刻无法访问的服务器上。
用户无权登录到身份验证系统中的该特定主机。
计算机出于某种原因更改了主机名,而用户无权登录到该主机。
计算机无法访问包含该用户信息的身份验证服务器或目录服务器。
验证该特定用户的 X Window 系统可能存在问题,尤其是在安装当前办法之前,该用户的主目录已被其他 Linux 分发版使用时。
要通过网络身份验证找到登录问题的原因,请执行以下步骤:
在尝试调试整个身份验证机制之前,请检查用户所记的口令是否正确。
确定计算机在身份验证时要依赖的目录服务器,并确保计算机在正常运行且与其他计算机正常通讯。
确定该用户的用户名和口令在其他计算机上是否有效,以确保存在该用户的身份验证数据且已正确分发。
确定其他用户是否可以登录到该故障计算机。如果其他用户可以正常登录,或 root 可以登录的话,请登录并使用 journalctl -e> 文件检查系统日记。找到与登录尝试相对应的时间戳记,然后确定 PAM 是否生成了任何错误消息。
尝试从控制台登录(使用 Ctrl–Alt–F1)。如果成功,则问题不在用户主目录中的 PAM 或目录服务器上,因为可以在该计算机上验证此用户。尝试找出与 X Window 系统或 GNOME 桌面相关的任何问题。有关更多信息,请参考第 32.4.4 节 “登录成功但 GNOME 桌面发生故障”。
如果用户的主目录被其他 Linux 产品所使用,请将该用户主目录中的 Xauthority 文件删除。使用控制台登录(通过 Ctrl–Alt–F1),然后以该用户的身份运行 rm .Xauthority。这样应该可以消除该用户的 X 身份验证问题。然后再次尝试图形登录。
如果桌面由于配置文件损坏而无法启动,请参见第 32.4.4 节 “登录成功但 GNOME 桌面发生故障”。
对于便携式计算机建议使用加密的主分区。如果无法登录到您的便携式计算机,原因通常很简单:您的分区无法解锁。
在引导时,需要输入通行口令来解锁加密的分区。如果不输入它,引导进程继续,但保持分区锁定。
要解锁您的加密分区,请如下操作:
按 Ctrl–Alt–F1 切换到文本控制台。
成为 root 用户。
用以下步骤重启动解锁进程:
systemctl restart home.mount
输入您的通行口令以解锁加密的分区。
用 Alt–F7 退出文本控制台并切换回登录屏幕。
如常登录。
如果是这种情况,可能您的 GNOME 配置文件已损坏。可能出现的症状包括键盘不起作用、屏幕几何图形变形,甚至整个屏幕变成灰色。而最重要的差别在于其他用户登录时,该计算机能正常运行。那么可能只需将用户的 GNOME 配置目录移到某个新位置,以便使 GNOME 初始化一个新的桌面,这样就能很快地解决此问题。虽然用户不得不重配置 GNOME,但不会丢失任何数据。
按 Ctrl–Alt–F1 切换到文本控制台。
用您的用户名登录。
将用户的 GNOME 配置目录移到某个临时位置:
mv .gconf .gconf-ORIG-RECOVER mv .gnome2 .gnome2-ORIG-RECOVER
注销。
再次登录,但别运行任何应用程序。
通过以下命令将 ~/.gconf-ORIG-RECOVER/apps/ 目录复制回新的 ~/.gconf 目录,这样就能恢复您的个人应用程序配置数据(包括 Evolution 电子邮件客户端数据):
cp -a .gconf-ORIG-RECOVER/apps .gconf/
如果这引起登录问题,则尝试只恢复重要的应用程序数据并重配置其他的应用程序。
系统的许多问题可能都与网络相关,即使初看起来不是这样。例如,系统不允许用户登录可能是某种网络问题造成的。本节介绍一个简单的核对表,您可以使用它来确定任何所遇到的网络问题的原因。
在检查计算机的网络连接时,请执行如下操作:
如果使用的是以太网连接,请首先检查硬件。确保您的网络电缆已正确插入计算机和路由器(或集线器等)。以太网连接器旁边的控制灯通常应全部激活。
如果连接失败,请检查网线在别的计算机上是否正常。如果正常,则可能是网卡引起了该问题。如果您的网络设置中有集线器或交换机,它们也可能有故障。
如果使用的是无线连接,请检查是否可与其他计算机建立此无线链接。如果没有,请联系无线网络的管理员。
一旦完成了对基本网络连通性的检查,请尝试找出没有响应的服务。收集设置中所需的所有网络服务器的地址信息。在相应的 YaST 模块中查找这些信息,或者询问您的系统管理员。下面列出了设置中涉及的一些典型网络服务器以及服务中断的症状。
名称服务中断或发生故障会在许多方面影响网络运行。如果本地计算机依赖于任一网络服务器进行身份验证,而这些服务器由于名称解析问题而无法找到,则用户甚至还不能登录。网络中由中断的名称服务管理的计算机将无法“看到”彼此且不能通信。
NTP 服务发生故障或完全中断可能会影响 Kerberos 身份验证和 X 服务器功能。
如果任何应用程序所需的数据储存在 NFS 装入目录中,则一旦此服务停止或配置错误,应用程序便无法启动或正常运行。最坏的情况是,如果由于 NFS 服务器发生故障而无法找到包含 .gconf 子目录的用户主目录,则该用户主目录所属的用户的个人桌面配置将无法启动。
如果任何应用程序需要的数据储存在有故障的 Samba 服务器上的某个目录中,它便无法启动或正常运行。
如果您的 SUSE Linux Enterprise Desktop 系统依赖有故障的 NIS 服务器提供用户数据,用户将无法登录此计算机。
如果您的 SUSE Linux Enterprise Desktop 系统依赖有故障的 LDAP 服务器提供用户数据,用户将无法登录此计算机。
身份验证无法进行,登录至任何计算机都会失败。
用户无法打印。
请检查网络服务器是否正在运行并且您的网络设置是否允许您建立连接:
下面介绍的调试步骤只适用于简单的网络服务器/客户端设置,不涉及任何内部路由。假设服务器和客户端都是同一子网的成员,不需要额外的路由。
可使用 ping IP 地址或主机名(将主机名替换为服务器的主机名)来检查各台服务器是否正在运行且能够对网络作出响应。如果此命令成功,表示您所查找的主机在正常运行,并且网络的名称服务配置正确。
如果 ping 命令失败,同时显示消息目标主机不可访问,则表明您的系统或期望的服务器未正确配置或已宕机。可从其他计算机运行 ping IP 地址或您的主机名命令来检查您的系统是否可访问。如果可以从其他计算机访问您的计算机,则表明该服务器未运行或未正确配置。
如果 ping 命令失败且返回 unknown host,则表示名称服务未正确配置或使用的主机名不正确。要对该问题进行进一步的检查,请参见步骤 4.b。如果 ping 命令仍然失败,则可能网卡未正确配置或网络硬件存在故障。
请使用 host 主机名来检查您尝试连接的服务器的主机名是否能够正确地转换为 IP 地址,反之亦然。如果此命令返回了该主机的 IP 地址,则名称服务已在正常运行。如果 host 命令失败,请检查您主机上所有与名称和地址解析相关的网络配置文件:
/etc/resolv.conf
此文件用于对当前使用的名称服务器和域进行跟踪。您可手工修改该文件,或者由 YaST 或 DHCP 自动调整。建议采用自动调整。但是,请确保此文件具有以下结构并且所有的网络地址和域名都正确无误:
search fully_qualified_domain_name nameserver ipaddress_of_nameserver
此文件中可以包含多个名称服务器地址,但是其中必须至少有一个能够对您的主机提供正确的名称解析。如果需要,请使用 YaST“网络设置”模块(“主机名/DNS”选项卡)调整此文件。
如果网络连接是通过 DHCP 处理的,请在“YaST DNS 和主机名”模块中选择和,以启用 DHCP 来更改主机名和名称服务信息。
/etc/nsswitch.conf
此文件告诉 Linux 到何处查找名称服务信息。它应显示为:
... hosts: files dns networks: files dns ...
dns 条目是必需的。它告诉 Linux 要使用外部名称服务器。通常这些项是 YaST 自动管理的,但最好谨慎地检查。
如果主机上的所有相关条目均正确,请让系统管理员检查 DNS 服务器配置,以确定时区信息是否正确。如果确信主机和 DNS 服务器的 DNS 配置正确,请检查网络和网络设备的配置。
如果系统无法与网络服务器建立连接,并且已排除了名称服务出现问题的可能,则请检查网卡的配置。
使用 ip addr show 网络设备命令来检查此设备是否已正确配置。确保已正确设置带网络掩码(/掩码)的 inet address。如果 IP 地址中出现错误或网络掩码中缺少一位,将使您的网络配置无法使用。如有必要,也在服务器上执行该检查。
如果名称服务和网络硬件已正确配置并正在运行,但是某些外部网络连接仍然长时间超时或完全失败,请使用 traceroute fully_qualified_domain_name 命令(以 root 用户的身份执行)来跟踪这些请求所经过的网络路由。此命令将列出某一请求从您的计算机传递到其目标所经过的所有网关(跳跃)。其中列出了每个跃点的响应时间以及此跃点是否可访问。请将 traceroute 和 ping 结合使用以确定故障原因并通知管理员。
一旦确定了网络故障的原因,就可以自行解决(如果问题出在您自己的计算机上),或告诉网络系统管理员您的发现,以便其重配置服务或修复必要的系统。
如果网络连接有问题,请按过程 32.6, “如何识别网络故障” 中所述缩小范围。如果 NetworkManager 看上去有问题,请执行以下步骤,以获取相关的日志来找出 NetworkManager 失败原因的线索:
以 root 用户身份打开外壳并登录。
重启动 NetworkManager:
systemctl restart Network.Manager
以普通用户身份打开一个网页,例如 http://www.opensuse.org,看看是否可以连接。
收集 /var/log/NetworkManager 中有关 NetworkManager 状态的任何信息。
有关 NetworkManager 的更多信息,请参考第 28 章 “使用 NetworkManager”。
数据问题是指无论计算机是否能够正确引导,有一点是明确的,即系统上的数据损坏并且系统需要恢复。这些情况下需要对关键数据进行备份,以便您能够在系统出现故障时恢复故障前的状态。SUSE Linux Enterprise Desktop 提供了专用的 YaST 模块用于系统备份和恢复,以及一个救援系统用于从外部恢复受损的系统。
有时您需要从整个分区甚至硬盘来执行备份。Linux 附带了 dd 工具,该工具可用于创建磁盘的精确副本。与 gzip 一起使用可节约一些空间。
以 root 用户身份启动外壳。
选择源设备。通常形如 /dev/sda(标记为 SOURCE)。
确定要把您的映像储存在何处(标记为 BACKUP_PATH)。它不能与您的源设备相同。换句话说:如果从 /dev/sda 备份,则映像文件不得储存在 /dev/sda 下。
运行以下命令创建压缩映像文件:
dd if=/dev/SOURCE | gzip > /BACKUP_PATH/image.gz
用以下命令恢复硬盘:
gzip -dc /BACKUP_PATH/image.gz | dd of=/dev/SOURCE
如果只需备份某个分区,请将 SOURCE 占位符替换为相应的分区。在这种情况下,映像文件可以位于同一硬盘上不同的分区中。
有多种原因会造成系统无法正常启动和运行。系统崩溃后造成文件系统损坏、配置文件损坏或引导加载程序配置损坏是最常见的原因。
为了帮助您解决这些状况,SUSE Linux Enterprise Desktop 提供了一套您可以引导的救援系统。该救援系统是一个小型 Linux 系统,可以装载到一个 RAM 磁盘并以 root 文件系统的形式装入,使您可以从外部访问 Linux 分区。使用该救援系统,可以恢复或修改系统中任何一个重要的方面:
操作任意类型的配置文件。
检查文件系统中的缺陷和启动自动修复进程。
访问“更改 root”环境下的已安装系统。
检查、修改和重新安装引导加载程序配置。
从安装有误的设备驱动程序或不可用内核恢复。
使用 parted 命令调整分区大小。在 GNU Parted 网站 http://www.gnu.org/software/parted/parted.html 上可以找到有关该工具的更多信息。
该救援系统可以从各种来源和位置进行装载。最简单的选择是从原始安装媒体上引导该救援系统。
如果硬件设置不包含 DVD 驱动器,可以从网络源引导该救援系统。以下示例适用于远程引导的情形,如果使用另一引导媒体(例如 DVD),则要相应地修改 info 文件,并像正常安装一样进行引导。
输入 PXE 引导设置的配置,添加以下行:install=protocol://instsource 和rescue=1。但如果需要启动修复系统,请使用 repair=1。如同正常安装的情况一样,protocol 代表任何一种所支持的网络协议(NFS、HTTP、FTP 等);instsource 代表网络安装源的路径。
按Section 4.7, “Wake on LAN”中所述使用“网络唤醒”引导系统。
在 Rescue: 提示符处输入 root。无需口令。
一旦进入该救援系统,便可通过 Alt–F1 到 Alt–F6 键来访问虚拟控制台。
可以在 /bin 目录下找到外壳和许多其他有用的实用程序,如 mount 程序。/sbin 目录包含重要的用于查看和修复文件系统的文件和网络实用程序。此目录还包含用于系统维护的最重要的二进制文件,如 fdisk、mkfs、mkswap、mount 和 shutdown,以及用于维护网络的 ip 和 ss。目录 /usr/bin 包含 vi 编辑器、find、less 和 SSH。
要查看系统讯息,请使用命令 dmesg,或使用 journalctl 查看系统日志。
举一个可以通过该救援系统修复配置的例子,假设有一个被损坏的配置文件,使该系统无法正常引导。您可以通过救援系统修复该配置文件。
要操作配置文件,请执行以下步骤:
用上述方法之一启动救援系统。
要在救援系统中装入位于 /dev/sda6 下的 root 文件系统,请使用如下命令:
mount /dev/sda6 /mnt
系统所有目录现在均位于 /mnt 之下
将目录切换为所装入的 root 文件系统:
cd /mnt
在 vi 编辑器中打开有问题的配置文件。调整并保存配置。
从救援系统中卸载 root 文件系统:
umount /mnt
重引导计算机。
通常,不能在正在运行的系统上修复文件系统。如果遇到严重问题,您甚至都无法装入 root 文件系统,系统引导可能以显示 “kernel panic” 结束。在这种情况下,唯一的方法是从外部修复系统。该系统包含的实用程序可检查并修复 btrfs、ext2、ext3、ext4、reiserfs、xfs、dosfs 和 vfat 文件系统。您可以试试命令 fsck.文件系统,例如,如果需要对 btrfs 进行文件系统检查,请使用 fsck.btrfs。
如果需要从救援系统访问已安装系统,需要在更改 root 环境中执行此操作。例如,修改引导加载程序配置或执行硬件配置实用程序。
要设置基于已安装系统的更改 root 环境,请执行以下步骤:
运行 lsblk 以检查哪个节点对应于根分区。在本例中,该节点为 /dev/sda2:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 149,1G 0 disk ├─sda1 8:1 0 2G 0 part [SWAP] ├─sda2 8:2 0 20G 0 part / └─sda3 8:3 0 127G 0 part └─cr_home 254:0 0 127G 0 crypt /home
从安装的系统装入根分区:
mount /dev/sda2 /mnt
装入 /proc、/dev 和 /sys 分区:
mount -t proc none /mnt/proc mount --rbind /dev /mnt/dev mount --rbind /sys /mnt/sys
现在可以“更改根分区”为新的环境,并保留 bash 外壳:
chroot /mnt /bin/bash
最后,装入已安装系统的剩余分区:
mount -a
现在可以访问已安装系统了。在重引导系统之前,请用 umount -a 卸载分区并用 “exit” 退出更改 root环境。
尽管对已安装系统的文件和应用程序有完全访问权,但仍有一些限制。运行的内核是用救援系统引导的那个,不是用更改 root 环境引导的那个。它仅支持关键硬件,如果内核版本不完全相同,则无法从已安装系统中添加内核模块。始终用 uname -r 检查当前正在运行的(救援)内核版本,然后查明更改 root 环境中 /lib/modules 目录下是否有匹配的子目录。如果是,可以使用已安装模块;否则,需要在其他媒体(例如闪盘)上提供模块的正确版本。很多时候,救援内核版本与已安装模块不同,这样您完全无法访问声卡等。也不可能启动图形用户界面。
还应注意,在使用 Alt–F1 到 Alt–F6 键切换控制台时,要退出“更改 root”环境。
有时,系统无法引导是因为引导加载程序配置已损坏。例如,如果没有正常工作的引导加载程序,启动例程将无法将物理驱动器转化为 Linux 文件系统中的实际位置。
要检查引导加载程序配置并重新安装引导加载程序,请执行以下步骤:
如第 32.6.2.3 节 “访问已安装系统” 中所述执行必要的步骤以访问已安装系统。
检查系统上是否已安装 GRUB 2 引导加载程序。如果未安装,请安装 grub2 包并运行
grub2-install /dev/sda
根据第 12 章 “引导加载程序 GRUB 2”中所述的 GRUB 2 配置原则,检查下列文件是否正确配置,并根据需要应用修复。
/etc/default/grub
/boot/grub2/device.map(选用文件,手动创建后才存在)
/boot/grub2/grub.cfg(此文件是系统生成的,不要编辑)
/etc/sysconfig/bootloader
使用以下命令序列重新安装引导加载程序:
grub2-mkconfig -o /boot/grub2/grub.cfg
卸载分区,从“更改 root”环境中注销并重引导该系统:
umount -a exit reboot
内核更新会产生新的 bug,这样会影响系统运行。例如,系统某个硬件的驱动程序有故障,您就无法访问和使用该硬件。在这种情况下,需还原到上一个工作内核(如果在系统上可用),或从安装媒体安装原始内核。
为了防止内核更新出现故障后无法进行引导,请使用内核多版本功能,并告知 libzypp 在更新后保留哪些内核。
例如,要始终保留最后两个内核和当前正在运行的内核,请将
multiversion.kernels = latest,latest-1,running
添加到 /etc/zypp/zypp.conf 文件。有关详细信息,请参见Chapter 10, Installing Multiple Kernel Versions。
类似的情况是,当您需要重新安装或更新已损坏而不受 SUSE Linux Enterprise Desktop 支持的设备驱动程序时。例如,当硬件供应商使用特定设备时,比如硬件 RAID 控制器,它需要一个二进制驱动程序才能被操作系统识别。供应商通常会发布含有固定版或更新版必要驱动程序的驱动程序更新磁盘 (DUD)。
这两种情况下,您都需要以救援模式访问已安装系统,并修复内核相关问题,否则系统可能无法正确引导:
从 SUSE Linux Enterprise Desktop 安装媒体引导。
如果您正在从内核更新故障中恢复,请跳过此步骤。如果需要使用驱动程序更新磁盘 (DUD),请在出现引导菜单后按 F6 装载驱动程序更新,并选择驱动程序更新的路径或 URL,然后确认。
从引导菜单中选择,并按 Enter。如果选择使用 DUD,将要求您指定储存驱动程序更新的位置。
在 Rescue: 提示符处输入 root。无需口令。
手动将目标系统和“更改 root”装入新环境。有关详细信息,请参见第 32.6.2.3 节 “访问已安装系统”。
如果使用的是 DUD,请安装/重新安装/更新有故障的设备驱动程序包。始终确保已安装的内核版本与您正在安装的驱动程序版本完全相同。
如果要修复有故障的内核更新安装,可以从安装媒体使用以下过程安装原始内核。
使用 hwinfo --cdrom 命令确定您的 DVD 设备信息,使用 mount /dev/sr0 /mnt 命令装入设备。
导航到 DVD 上储存内核文件的目录,例如,cd /mnt/suse/x86_64/。
使用 rpm -i 命令安装具有您风格的必需 kernel-*、kernel-*-base 和 kernel-*-extra 包。
更新配置文件,必要时可重初始化引导加载程序。有关详细信息,请参见第 32.6.2.4 节 “修改和重新安装引导加载程序”。
从系统驱动器中删除所有可引导的媒体,然后重引导。