📄 506.html
字号:
<br>
不过,linux 的 LILO,除了放在 MBR 之外,还可以放在 boot 的 partition 上面的第一个 block,也就是所谓的 superblock是也。那您在安装的时候,就要将 LILO 装在 boot 的 partition 上面;或是修改 /etc/lilo.conf ,将 boot=hda 改成boot=hda2 (假设您的 boot partition 是在 hda2 上面),然后再执行 lilo 命令就可以完成。<br>
<br>
假如您真的将 LILO 装在 superblock 上面,那您在 MBR 上面的 loader 必须有能力提供选单,而且能够告诉系统到哪里找到 LILO。抱歉,windows 的 loader 都没有这个能力。其它诸如 partition magic 或 spfdisk 之类的 loader,则有这个功能,但前提条件是:您的 LILO 要装在 superblock 上面。<br>
<br>
当您在 LILO 选择 linux之后,您会看到一大堆开机过程的报告,有兴趣可以逐行看看(假如您眼睛够快的话)。如果开机过程卡在某些服务上面而等上好几分钟的话,可能您的网路设定不正确,最常见的问题是 /etc/hosts 或 DNS没设定好。为避免这些情况,请确定机器在开机的时候,启动程式能够能连得上指定的伺服器地址。<br>
<br>
最终,您会看到 Login: 的提示,如果您的 X window 在安装的时候设定好了,那么登录画面会是图形界面的。这时候您可以用 ‘ root ’进行登录,然后输入您在安装时设定的 root 密码。之后,整个 linux系统就是您的啦!<br>
tips:不过,任何时候,我们都不鼓励直接用 root 登录,因为它的权限太大,会在系统安全上构成威胁。我们通常是用普通用户进行登录(也就是安装的时候所设定的帐号),然后真的碰到系统设定的时候,才用 su 或 sudo 命令切换为 root 身份执行。不过,这里的例子,大部份是教您设定伺服器的,通常都需要 root 来执行,只是日后换到真正的工作系统之后,就请尽量避免用 root 来工作了。<br>
<br>
至于机器如何从启动到成功载入,如果我们对这个过程了解的话,相信在日后的管理,或遇到问题的时候会非常有帮助。下面不妨让我们看看 linux 的开机过程和其中的一些选项。<br>
<br>
Init & Run Level<br>
<br>
系统的初始化步骤粗略如下:<br>
<br>
1. 首先,当电源打开之后,机器会首先经过 POST 检查,然后从 CMOS 载入 BIOS,以确定最基本的硬体架构,如时钟和硬碟资讯等。<br>
<br>
2. 然后会找到 MBR,载入 boot loader,以确定启动哪一个作业系统。<br>
<br>
3. 当作业系统选定之后,LOADER 会告诉机器到那里载入作业系统的核心程式。<br>
<br>
tips:关于 LILO 这个开机管理程式,本身的开机提示符号就非常有学问,不妨参考下面这篇录自新闻群组的文章:<br>
<br>
"继续颓废" 撰写于邮件 news:41243S$2vw@Terry.Dorm11.NCTU.edu.tw...<br>
> ※ 引述《fllow.bbs@bbs.mgt.ncu.edu.tw (无雨的夏天)》之铭言:<br>
> > 灌完 Redhat 7.3 后, 没有任何错误讯息<br>
> > 重开机后只见 LI 就当机了<br>
> > 请问是何问题.<br>
> > 似乎在哪有见过类似的说明<br>
> > L 后当机<br>
> > LI 后当机<br>
> > LIL 后当机<br>
> > 谢谢..<br>
> <br>
> LILO 启动讯息<br>
> <br>
> 当LILO自行载入时,它会显示LILO一字。在执行某些特定的动作之前或之后会<br>
> 列印每一个字母。如果LILO在某一点失败,则目前为止已印出的字母可用来识<br>
> 别问题。<br>
> <br>
> 请注意,如果发生暂态磁碟问题,则在第一个"L"之后可插入某些十六进位数字。<br>
> 除非LILO在该点停止,产生无限的错误码串流,这种十六进位数字不表示伺服器<br>
> 问题。<br>
> <br>
> [无]<br>
> - 未载入 LILO 的任何部件。 LILO 不是未安装就是其启动区段所在的分割区<br>
> 不在作用中。<br>
> <br>
> L [错误] ...<br>
> - 第一阶段启动载入程式已载入并启动,但是它无法载入第二阶段启动载入程式。<br>
> 二位数字错误码指出问题的类型。 这种状况通常表示媒体失效或几何不符<br>
> (例如,磁碟参数无效)。<br>
> <br>
> LI<br>
> - 第一阶段启动载入程式已能够载入第二阶段启动载入程式,但是无法加以执行。<br>
> 这可能是由于几何不符或是没有执行 map 安装程式而移动 /boot/boot.b所导致。<br>
> <br>
> LIL<br>
> - 第二阶段启动载入程式已启动,但是它无法从映射档载入描述子表格。这通常是<br>
> 由于媒体失效或几何不符所导致。<br>
> <br>
> LIL?<br>
> - 在不正确的位址载入了第二阶段启动载入程式。这通常是由于细微的几何不符或<br>
> 是没有执行 map 安装程式而移动 /boot/boot.b 所导致。<br>
> <br>
> LIL-<br>
> - 描述子表格讹误。这可能是由于几何不符或是没有执行 map 安装程式而移动<br>
> /boot/map 所导致。LILO 已顺利载入 LILO 的所有部件。<br>
<br>
4. 当核心程式载入之后,机器基本上就交由核心处理了。核心程式首先要载入档案系统,然后第一个执行的程式就是 init (它是所有程式的 parrent ),init 的第一个动作是找到 /etc/rc.d/rc.sysinit 并执行之。<br>
<br>
5. 这个 rc.sysinit 程式首先是执行 /sbin/initlog 并输出 $LOGLEVEL 变数,以决定记录档的信息量。<br>
<br>
6. 接着检查 /dev/.devfsd 和 /sbin/devfsd 这两个档案,以决定系统是否使用 devfs 。<br>
<br>
7. 然后设定 PATH 环境。<br>
<br>
8. 然后检查 /etc/sysconfig/network 档是否存在,然则根据设定档设定网路环境,否则用 localhost 命名系统。<br>
<br>
9. 再来是执行 /etc/rc.d/init.d/functions 这只 script ,以提供其后的 shell 程式所使用的一些变数和功能。<br>
<br>
10. 然后载入 keymap,按照您安装时指定的键盘资讯来确定您的键盘类型。<br>
<br>
11. 执行 /sbin/setsysfont 来设定系统使用的字型。<br>
<br>
12. 启动系统的置换(swap)空间。至此,系统之主机名称(hostname)和网域名称(domain),将作为环境变数的依据。<br>
<br>
13. 然后 rc.sysinit 会检查 /fsckoptions 这个档是否存在,然则,会改变这个档的中的一个变数值;如果 /forcefsck 档案存在的话,就会在这个变数值前面增加一个旗标,这样会导致后面的步骤强迫系统对档案系统进行检查。<br>
<br>
14. 接下来,会检查 /fastboot 是否存在,然则,系统会略过档案系统的检查步骤;否则,系统会对 / ( 也就是 root) 进行一个完整的检查。<br>
<br>
15. 之后,系统会执行 mount -t proc /proc /proc 命令,为核心挂载一个特殊的档案系统,它完全建立在记忆体之上。每次关机都会消失,而每次开机才被建立。其中的资料,纯粹是给核心使用的,其中一些设定,会根据系统设定档进行配置。<br>
<br>
16. 完成这个动作之后,接下来是对 Plug and Play 设备的检测。如果经过特别设定,还会执行 isapnp 程式来检查 ISA 类型的 PnP 设备。<br>
<br>
17. 现在,档案系统的 / 才挂载为完整的读和写模式,并更新 quota 资讯,同时在 / 上面实施 quota 限制。<br>
<br>
18. 再来呢,系统会清掉 IN_INITLOG 变数,如果 /etc/HOSTNAME 档不存在,则将 HOSTNAME 的变数值作为该档的内容。<br>
<br>
19. 再来是清空 mtab,并将 / 档案系统和 /proc 置于其中。系统通常根据 /etc/fstab 来判定要挂载的档案系统在哪里,而 mtab 是一个档案,算是从 /etc/fstab 提炼出来真正给系统使用的版本吧。<br>
<br>
20. 然后,系统会载入一系列的核心模组。一旦完成,除非前面的 /fastboot 存在,否则系统会对 / 之外的所有档案系统进行检查。除了 NFS 之外,所有分区都会完成挂载,并且非 / 分区的 quota 也会打开。<br>
<br>
21. 到这里,系统会砍掉一些档案,以清理这次启动,同时也是为下次启动作准备。前面提到的 /fastboot 和档案系统检查选项都会清掉,同时, /var/lock 其下的一些 lock 档也会移除,/var/run 里面的陈旧行程 ID 也会砍掉,更多在 /tmp 里面的 lock 档也会砍光。这样,rc.sysinit 可以说为系统安排好一切了:设定好系统时钟、启用置换空间、载入相应模组、并根据 /etc/sysconfig/desktop 来决定 X 系统使用的视窗管理系统(除非使用者另行设定)。<br>
<br>
22. 关于 rc.sysinit 在启动过程中所显示的所有信息,都会存放到 /var/log/dmesg 里面去。<br>
<br>
23. 此时,rc.sysinit 已经完成准备工作,并将系统交还 /sbin/init 程式,然后根据 /etc/inittab 选择预设的 run level (这个容后解释),以决定执行哪些服务程式。具体要执行的程式,按照 /etc/rc.d/rcX.d/ ( X 代表不同的 run level 号码)目录里面的 script 内容而定。而最后一个要执行的 script,则是 /etc/rc.d/rc.local 。并执行 /sbin/loglevel 以确定系统的记录等级(级别越高,记录越详细)。<br>
<br>
Tips:在 /etc/rc.d/ 目录下的 rc.local,有点像 DOS 里面的 autoexec.bat ,如果您有哪些在开机的时候需要执行的系统设定,可以将命令行,或 script 写在这里。比方说,您在用别台机器 telnet 进来的时候,会看到机器目前的作业系统资讯(这或许对别有用心的人非常有用),您单纯以为修改 /etc/issue.net 的内容就可以解决掉;但发现重新开机之后,档案又复原了。呵~~ 这就是 rc.local 搞的鬼啦:当您修改好 issue.net 之后,还不要忘记修改 rc.loal 这个档,将其中一行 cp -f /etc/issue /etc/issue.net 注解起来。<br>
<br>
24. 最后,init 将系统交由 login 程式接管,正式完成开机使命。<br>
<br>
以上就是大致的开机流程,其中我省略了许多步骤,如果您有兴趣研究的话,不妨深入追踪一下 /etc/rc.d/rc.sysinit 这个档案。<br>
<br>
Tip:有时候您不正常关机,会造成档案损毁的现像,系统在开机的时候会尝试自动修复。如果自动修复不成功,则会停下来要您输入 root 密码,执行 fsck 程式进行手工修复。<br>
<br>
您要知道有问题的 partiton 是那一个(几个)?比方说您现在碰到 / 有问题,假设它 在 /dev/hda6 上面,那您就输入:<br>
fsck /dev/hda6<br>
<br>
然后要回答许多问题,一直按 y 就是了;如果您不想按 y ,那就输入:<br>
fsck -y /dev/hda6<br>
<br>
不过,小心哦:有时候第一个问题可能告诉您一些警告,然后说按 y 进行 cancel,那您就只好第一个按 n,然后逐个按 y 了。<br>
<br>
假如您对上面的描述不是很理解,不用担心,尽可略过您不懂的对方,等日后对系统有更充份的了解之后,再回来重拾灵感好了。不过,对开机过程的了解程度,会影像到您日后的系统管理和调整技巧,尤其是在进行除错的时候。建议您最好将开机过程了解透切一些,是绝对有百利而无一害的。<br>
<br>
好了,前面提到过 run level 这个词,究竟是什么东东呢?嗯,如果您以前玩过 DOS,为不同游戏设定过不同的开机环境,或许比较容易了解。要不然,您可以简单的认为:run level 就是不同的系统启动配置,不同的 run level 会让系统执行不同的服务和设定,最后获得的环境和功能也不一样。系统每次开机,只能进入其中一个 run level 而已,您可以在 LILO 提示的时候指定要进入哪个 level (或是在启动时看到红色的 RedHat 文字时按 i 键),也可以调整 /etc/inittab 的设定来指定系统的预设 level (号码)。不同的厂商,其 run leve 的号码不太一样,如果以 RedHat 为例,号码所代表的 run level 如下:<br>
<br>
* Level 0:关机<br>
* Level 1:单人模式<br>
* Level 2:多人模式,没有网路功能<br>
* Level 3:完整多人模式,文字界面<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -