事实上,Linux主机是很稳定的,除非是硬件问题与系统管理员不小心的动作,否则, 很难会造成一些无法挽回的错误的。但是,毕竟我们目前使用的可能是练习机,会常常开开关关的, 所以确实可能会有一些小问题发生。好了,我们先来简单的谈一谈,如果无法顺利启动时, 你应该如何解决。要注意的是,底下说到的内容很多都还没有开始介绍, 因此,看不懂也不要太紧张~在本书全部都读完且看第二遍时,你自然就会有感觉了!
1、文件系统错误的问题
在启动的过程中最容易遇到的问题就是硬盘可能有坏轨或文件系统发生错误(数据损毁)的情况, 这种情况虽然不容易发生在稳定的Linux系统下,不过由于不当的开关机行为, 还是可能会造成的,常见的发生原因可能有:
- 最可能发生的原因是因为断电或不正常关机所导致的文件系统发生错误, 鸟哥的主机就曾经发生过多次因为跳电,家里的主机又没有安装不断电系统, 结果就导致硬盘内的文件系统错误!文件系统错误并非硬件错误,而是软件数据的问题喔!
- 硬盘使用率过高或主机所在环境不良也是一个可能的原因, 例如你开放了一个FTP服务,里面有些数据很有用, 所以一堆人抢着下载,如果你又不是使用较稳定的SCSI接口硬盘,仅使用一般PC使用的硬盘, 虽然机率真的不高,但还是有可能造成硬盘坏轨的。此外,如果主机所在环境没有散热的设备, 或者是相对湿度比较高的环境,也很容易造成硬盘的损坏喔!
解决的方法其实很简单,不过因为出错扇区所挂载的目录不同,处理的流程困难度就有差异了。 举例来说,如果你的根目录『/』并没有损毁,那就很容易解决,如果根目录已经损毁了,那就比较麻烦!
(1)如果根目录没有损毁
假设你发生错误的partition是在/dev/sda7这一块,那么在启动的时候,屏幕应该会告诉你:press root password or ctrl+D : 这时候请输入root的密码登陆系统,然后进行如下动作:
- 在光标处输入root密码登陆系统,进行单人单机的维护工作;
- 输入『 fsck /dev/sda7 』(fsck 为文件系统检查的命令,/dev/sda7为错误的partition,请依你的情况下达参数), 这时屏幕会显示开始修理硬盘的信息,如果有发现任何的错误时,屏幕会显示: clear [Y/N]? 的询问信息,就直接输入 Y 吧!
- 修理完成之后,以 reboot 重新启动啰!
(2)如果根目录损毁了
一般初学者喜欢将自己的硬盘只划分为一个大partition,亦即只有根目录, 那文件系统错误一定是根目录的问题啰!这时你可以将硬盘拔掉,接到另一台Linux系统的计算机上, 并且不要挂载(mount)该硬盘,然后以root的身份运行『 fsck /dev/sdb1 』(/dev/sdb1 指的是你的硬盘装置文件名,你要依你的实际状况来配置),这样就 OK 啰!
另外,也可以使用近年来很热门的Live CD,也就是利用光盘启动就能够进入Linux操作系统的特性, 你可以前往:『http://knoppix.tnc.edu.tw/』 这个网站来下载,并且刻录成为CD,这个时候先用Live CD光盘启动,然后使用fsck去修复原本的根目录, 例如: fsck /dev/sda1 ,就能够救回来了!
(3)如果硬盘整个坏掉
如果硬盘实在坏的离谱时,那就先将旧硬盘内的数据,能救出来的救出来,然后换一颗硬盘来重新安装Linux吧! 不要不愿意换硬盘啊!啥时候硬盘会坏掉谁也说不准的!
那么硬盘该如何预防发生文件系统错误的问题呢?可以参考底下说明:
A.妥善保养硬盘:
例如:主机通电之后不要搬动,避免移动或震动硬盘;尽量降低硬盘的温度,可以加装风扇来冷却硬盘; 或者可以换装 SCSI 硬盘。
B.划分不同的partition:
为什么磁盘分区这么重要!因为Linux每个目录被读写的频率不同,妥善的块分配将会让我们的Linux更安全! 通常我们会建议划分下列的磁盘区块:
这样划分有些好处,例如/var是系统默认的一些数据缓存或者是cache数据的储存目录, 像 e-mail 就含在这里面。如果还有使用proxy时,因为常常存取,所以有可能会造成磁盘损坏, 而当这部份的磁盘损坏时,由于其他的地方是没问题的,因此数据得以保存,而且在处理时也比较容易!
2、忘记 root 密码
常常有些朋友在配置好了Linux之后,结果root密码给他忘记去!要重新安装吗?不需要的, 你只要以单人维护模式登陆即可更改你的root密码喔!由于lilo这个启动管理程序已经很少见了, 这里鸟哥使用grub启动管理程序作为范例来介绍啰!
先将系统重新启动,在读秒的时候按下任意键就会出现如同第四章图3.2的菜单画面,仔细看菜单底下的说明, 按下『e』就能够进入grub的编辑模式了。此时你看到的画面有点像底下这样:
[AppleScript] ı鿴 ƴ root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-128.el5.img
此时,请将光标移动到kernel那一行,再按一次『 e 』进入kernel该行的编辑画面中, 然后在出现的画面当中,最后方输入 single :
[AppleScript] ı鿴 ƴ kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet single
再按下『 Enter 』确定之后,按下 b 就可以启动进入单人维护模式了! 在这个模式底下,你会在tty1的地方不需要输入密码即可取得终端机的控制权(而且是使用root的身份喔!)。 之后就能够修改root的密码了!请使用底下的命令来修改root的密码喔!
[AppleScript] ı鿴 ƴ [root@www ~]# passwd
# 接下来系统会要求你输入两次新的密码,然后再来reboot即可顺利修订root密码了!
这里仅是介绍一个简单的处理方法而已,更多的原理与说明将会在后续的各相关章节介绍的喔!
重点回顾
- 为了避免瞬间断电造成的Linux系统危害,建议做为服务器的Linux主机应该加上不断电系统来持续提供稳定的电力;
- 默认的图形模式登陆中,可以选择语系以及作业阶段。作业阶段为多种窗口管理员软件所提供,如GNOME及KDE等;
- CentOS 5.x默认的中文输入法为使用SCIM这个软件所提供的输入;
- 不论是KDE还是GNOME默认都提供四个Virtual Desktop给使用者使用;
- 在X的环境下想要重新启动X的组合按键为:『[alt]+[ctrl]+[backspace]』;
- 默认情况下,Linux提供tty1~tty6的文字接口登陆,以及tty7的图形接口登陆环境;
- 除了run level 5默认取得图形接口之外,run level 3亦可使用 startx 进入图形环境;
- 在终端机环境中,可依据提示字符为$或#判断为一般账号或root账号;
- 取得终端机支持的语系数据可下达『echo $LANG』或『locale』命令;
- date可显示日期、cal可显示日历、bc可以做为计算器软件;
- 组合按键中,[tab]按键可做为命令补齐或档名补齐,[crtl]-[c]可以中断目前正在运行中的程序;
- 联机帮助系统有man及info两个常见的命令;
- man page说明后面的数字中,1代表一般账号可用命令,8代表系统管理员常用命令,5代表系统配置文件格式;
- info page可将一份说明文件拆成多个节点(node)显示,并具有类似超链接的功能,添加易读性;
- 系统需正确的关机比较不容易损坏,可使用shutdown, poweroff等命令关机。
本章习题
( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看)
情境模拟题一:我们在tty1里面看到的欢迎画面,就是在那个login:之前的画面(CentOS release 5.3 (Final)...)是怎么来的?
- 目标:了解到终端机接口的欢迎信息是怎么来的?
- 前提:欢迎信息的内容,是记录到/etc/issue当中的
- 需求:利用man找到该文件当中的变量内容
情境模拟题一的解决步骤:
1.欢迎画面是在/etc/issue文件中,你可以使用『nano /etc/issue』看看该文件的内容(注意,不要修改这个文件内容,看完就离开),这个文件的内容有点像底下这样:
[AppleScript] ı鿴 ƴ CentOS release 5.3 (Final)
Kernel \r on an \m
2.与tty2比较之下,发现到核心版本使用的是 \r 而硬件等级则是 \m 来取代,这两者代表的意义为何? 由于这个文件的档名是issue,所以我们使用『man issue』来查阅这个文件的格式;
3.透过上一步的查询我们会知道反斜杠(\)后面接的字符是与mingetty(8)有关,故进行『man mingetty』这个命令的查询。
4.由于反斜杠(\)的英文为『escape』因此在上个步骤的man环境中,你可以使用『/escape』来搜寻各反斜杠后面所接字符所代表的意义为何。
5.请自行找出:如果我想要在/etc/issue文件内表示『时间(localtime)』与『tty号码(如tty1, tty2的号码)』的话, 应该要找到那个字符来表示(透过反斜杠的功能)?(答案为:\t 与 \l)
简答题部分:
- 请问如果我以文本模式登陆Linux主机时,我有几个终端机接口可以使用?如何切换各个不同的终端机接口?
共有六个, tty1 ~ tty6 ,切换的方式为 Crtl + Alt + [F1]~[F6],其中, [F7] 为图形接口的使用。
- 在Linux系统中,/VBird与/vbird是否为相同的文件?
两者为不同的文件,因为 Linux 系统中,大小写字母代表意义不一样!
最简单的方式就是使用 man date 或 info date 来查看,如果该套件有完整说明的话,那么应该也可以在 /usr/share/doc 里面找到说明档!
- 我想要在今天的 1:30 让系统自己关机,要怎么做?
shutdown -h 1:30
- 如果我 Linux 的 X Window 突然发生问题而挂掉,但 Linux 本身还是好好的,那么我可以按下哪三个按键来让 X window 重新启动?
[crtl]+[alt]+[backspace]
- 我想要知道 2010 年 5 月 2 日是星期几?该怎么做?
最简单的方式直接使用 cal 5 2010 即可找出 2010 年 5 月份的月历。
使用 man date 然后找出显示目前的日期与时间的参数,成为类似:2009/10/16-20:03date +%Y/%m/%d-%H:%M
- 若以 X-Window 为默认的登陆方式,那请问如何进入 Virtual console 呢?
可以按下 [Ctrl] + [Alt] + [F1] ~ [F6] 进入 Virtual console ( 共六个 ); 而按下 [Ctrl] + [Alt] + [F8] 或 [F7] 可回到 X-Window 的 desktop 中!
- 简单说明在 bash shell 的环境下, [tab] 按键的用途?
[Tab] 按键可做为命令补齐或文件补齐的功能,与所接的命令位置有关。 接在一串命令的第一个单字后面,则为命令补齐,否则则为文件补齐!
(利用按键,非利用 kill 命令)可以利用 [Ctrl] + c 来中断!
- Linux 提供相当多的在线查询,称为 man page,请问,我如何知道系统上有多少关于 passwd 的说明?又,可以使用其他的程序来取代 man 的这个功能吗?
可以利用 man -f passwd 来查询,另外,如果有提供 info 的文件数据时 (在 /usr/share/info/ 目录中) ,则能够利用 info passwd 来查询之!
- man -k passwd 与 man -K passwd 有什么差异(大小写的 K )?
小写的 -k 为查询关键词,至于 -K 则是整个系统的 man page 查询~ 每个被检查到有关键词的 man page file 都会被询问是否要显示, 你可以输入『ynq』,来表示:y:要显示到屏幕上;n:不显示;q:结束 man 的查询。
- 在 man 的时候, man page 显示的内容中,命令(或文件)后面会接一组数字,这个数字若为 1, 5, 8 ,表示该查询的命令(或文件)意义为何?
代表意义为 1) 一般用户可以使用的命令或可运行文件案 5)一些配置文件的文件内容格式 8)系统管理员能够使用的管理命令。
man page 显示的内容的文件是放置在哪些目录中?放置在 /usr/share/man/ 与 /usr/local/man 等默认目录中。
- 请问这一串命令『 foo1 -foo2 foo3 foo4 』中,各代表什么意义?
foo1 一定是命令, -foo2 则是 foo1 这个命令的选择项目参数, foo3 与 foo4 则不一定, 可能是 foo1 的参数配置值,也可能是额外加入的 parameters。
- 当我输入 man date 时,在我的终端机却出现一些乱码,请问可能的原因为何?如何修正?
如果没有其他错误的发生,那么发生乱码可能是因为语系的问题所致。 可以利用 LANG=en 或者是 LANG=en_US 等配置来修订这个问题。
- 我输入这个命令『ls -al /vbird』,系统回复我这个结果:『ls: /vbird: No such file or directory』 请问发生了什么事?』
不要紧张,很简单的英文,因为系统根本没有 /vbird 这个文件的存在啊!
- 你目前的 Linux 底下,默认共有多少可以被你运行的命令?
最简单的做法,直接输入两次 [tab] 按键即可知道有多少命令可以被运行。
- 我想知道目前系统有多少命令是以 bz 为开头的,可以怎么作?
直接输入 bz[tab][tab] 就可以知道了!
- 承上题,在出现的许多命令中,请问 bzip2 是干嘛用的?
在使用 man bzip2 之后,可以发现到,其实 bzip2 是用来作为压缩与解压缩文件案用的!
参考数据与延伸阅读
- 注1:为了让Linux的窗口显示效果更佳,很多团体开始发展壁纸应用的环境,GNOME/KDE都是。 他们的目标就是发展出类似Windows壁纸的一整套可以工作的壁纸环境,他可以进行窗口的定位、放大、缩小、 同时还提供很多的壁纸应用软件。底下是KDE与GNOME的相关连结:
a.http://www.kde.org/
b.http://www.gnome.org/
|