📄 node68.html
字号:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><!--Converted with LaTeX2HTML 96.1-h (September 30, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds --><HTML><HEAD><TITLE>The boot process in closer look</TITLE><META NAME="description" CONTENT="The boot process in closer look"><META NAME="keywords" CONTENT="sag"><META NAME="resource-type" CONTENT="document"><META NAME="distribution" CONTENT="global"><LINK REL=STYLESHEET HREF="sag.css"></HEAD><BODY LANG="EN" > <A NAME="tex2html1150" HREF="node69.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="./next_motif.gif"></A> <A NAME="tex2html1148" HREF="node66.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="./up_motif.gif"></A> <A NAME="tex2html1142" HREF="node67.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="./previous_motif.gif"></A> <A NAME="tex2html1152" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="./contents_motif.gif"></A> <A NAME="tex2html1153" HREF="node108.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="./index_motif.gif"></A> <BR><B> Next:</B> <A NAME="tex2html1151" HREF="node69.html">More about shutdowns</A><B>Up:</B> <A NAME="tex2html1149" HREF="node66.html">Boots And Shutdowns</A><B> Previous:</B> <A NAME="tex2html1143" HREF="node67.html">An overview of boots </A><BR> <P><H1><A NAME="SECTION00720000000000000000">近观引导过程</A></H1><P>可以从软盘或硬盘引导Linux. 安装和开始指南的安装一节([<A HREF="node107.html#getting-started">Wel</A>])告诉你如何安装Linux, 并按你希望的方式引导.<P>当PC引导后, BIOS做一些测试保证一切正常,<A NAME="tex2html29" HREF="footnode.html#2099"><IMG ALIGN=BOTTOM ALT="gif" SRC="./foot_motif.gif"></A>然后开始真正的引导. 它选择一个磁盘(通常是第一个软驱, 如果有软盘的话, 否则就是第一个硬盘, 如果安装了的话; 顺序是可设置的). 然后读第一个扇区, 这叫<b>引导扇</b>;对于硬盘, 也叫<b>主引导记录</b>, 因为硬盘可以包含多个分区, 每个分区都有自己的引导扇.<A NAME="1978"> </A><A NAME="1979"> </A><A NAME="1980"> </A><A NAME="1981"> </A><A NAME="2100"> </A><A NAME="2101"> </A><P>引导扇包含一个小程序(小到可以存入一个扇区), 它的责任是从磁盘读入真正的操作系统并启动之.从软盘启动Linux时, 引导扇包含的代码只读前数百个数据块(当然, 依赖于核心的大小)到预定的内存位置. Linux引导软盘上, 没有文件系统, 核心存在连续的扇区中, 因为这样简化了引导过程.当然, 使用LILO(LInux LOader)可以从文件系统引导. <A NAME="1984"> </A><A NAME="2102"> </A><P>从硬盘引导, 主引导记录的代码检查分区表(也在主引导记录扇区中), 确认活动分区(标记为可引导的分区), 从该分区读引导扇区, 然后启动该引导扇区的代码. 该分区的引导扇区的代码做与软盘所做的相同: 从该分区读入核心并启动. 但细节不同, 因为一般只给核心映象做一个单独的分区是没什么用的, 所以分区引导扇中的代码不能只顺序地读磁盘, 它必须找到文件系统把它们放在哪些扇区中. 有几个方法解决这个问题, 但最通常的方法是使用LILO. (关于如何做的细节与这里的讨论无关; 更多的信息请看LILO文档, 它很全面) <A NAME="1986"> </A><A NAME="2103"> </A><A NAME="1988"> </A><A NAME="1989"> </A><A NAME="1990"> </A><P>用LILO引导时, 它读入并引导缺省核心. 也可以设置LILO, 使之能引导若干个核心之一, 甚至其他操作系统, 也可以在引导时让用户选择引导哪个核心或操作系统. LILO可以设置为如果有人在引导时按住<TT>alt</TT>, <TT>shift</TT>, or <TT>ctrl</TT>键(LILO启动时), LILO将不立即引导缺省的而问用户引导哪个. LILO可以设置为带一个timeout选项并询问, 当超时时, 就引导缺省核心.<P><b>META: </b>除了LILO还有其他的引导载入程序, 如loadlin, 它们的信息将在下一版本中给出.<P>从软盘和硬盘启动各有优势, 但通常从硬盘启动更好, 因为这避免了关于软盘的争论.而且快. 然而, 安装相同从硬盘启动可能有更多的麻烦, 因此很多人先用软盘引导, 然后当相同工作很好后, 再安装LILO从硬盘引导.<P>Linux核心被读入内存后, 才真正启动了, 概述如下:<P> <UL><LI><P>Linux核心是被压缩安装的, 所以它首先得解压自己. 核心映象开头包括一个解压的小程序.<A NAME="1995"> </A><A NAME="1996"> </A><LI><P>如果你有Linux可识别的super-VGA卡, 且支持一些特殊的文本模式(如100列40行), Linux会问你要用哪个模式. 编译核心时, 可能预定了一个视频模式, 就不会问了. 这也可以用LILO或<tt>rdev</tt><A NAME="2121"> </A>完成.<A NAME="1998"> </A><A NAME="1999"> </A><A NAME="2000"> </A><A NAME="2001"> </A><LI><P>然后, 核心检查还有什么其他硬件(硬盘, 软盘, 网卡...), 并配置适当的设备驱动; 同时, 输出查找结果的信息. 例如, 我引导时, 得到类似如下信息:<A NAME="2002"> </A><A NAME="2003"> </A><A NAME="2004"> </A><A NAME="2005"> </A> <BLOCKQUOTE> <PRE>LILO boot:Loading linux.Console: colour EGA+ 80x25, 8 virtual consolesSerial driver version 3.94 with no serial options enabledtty00 at 0x03f8 (irq = 4) is a 16450tty01 at 0x02f8 (irq = 3) is a 16450lp_init: lp1 exists (0), using polling driverMemory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)Floppy drive(s): fd0 is 1.44M, fd1 is 1.2MLoopback device initWarning WD8013 board not found at i/o = 280.Math coprocessor using irq13 error reporting.Partition check: hda: hda1 hda2 hda3VFS: Mounted root (ext filesystem).Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20</PRE></BLOCKQUOTE>精确的文本在不同系统上不同, 依赖硬件, Linux版本, 及其配置.<LI><P>然后核心试图mount根文件系统. 位置可在编译时设置, 或在任何时候使用<tt>rdev</tt><A NAME="2123"> </A>或LILO. 文件系统类型自动检测. 如果根文件系统mount失败, 例如因为你忘了在核心中包含相关的文件系统驱动, 核心将失败, 系统停止(此时没什么可做了).<A NAME="2009"> </A><A NAME="2010"> </A><A NAME="2011"> </A><A NAME="2012"> </A><A NAME="2013"> </A><A NAME="2014"> </A><P>根文件系统通常被只读mount(这可用与位置相同的方法). 这可使文件系统在mount上时检查; 检查一个可读写的已mount的文件系统可不是个好主意.<A NAME="2015"> </A><A NAME="2016"> </A><A NAME="2017"> </A><LI><P>然后, 核心在后台启动程序<tt>init</tt><A NAME="2125"> </A>(位于<tt>/sbin/init</tt><A NAME="2127"> </A>)(它的进程号是1).<tt>init</tt><A NAME="2129"> </A>做许多启动工作. 确切的事依赖于设置;参见<A HREF="#chinit"><IMG ALIGN=BOTTOM ALT="gif" SRC="./cross_ref_motif.gif"></A>章了解更多信息. 它至少要启动一些必要的后台守候程序.<A NAME="2022"> </A><LI><P><tt>init</tt><A NAME="2131"> </A>然后切换到多用户模式并启动<tt>getty</tt><A NAME="2133"> </A>,提供虚拟控制台和串行线.<tt>getty</tt><A NAME="2135"> </A>是一个让用户通过虚拟控制台和串行终端登录的程序.<tt>init</tt><A NAME="2137"> </A>还可能启动一些其他程序, 基于设置.<A NAME="2027"> </A><A NAME="2028"> </A><A NAME="2029"> </A><A NAME="2030"> </A><LI><P>至此, 引导完成, 系统启动并正常运行.<P> </UL><HR><A NAME="tex2html1150" HREF="node69.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="./next_motif.gif"></A> <A NAME="tex2html1148" HREF="node66.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="./up_motif.gif"></A> <A NAME="tex2html1142" HREF="node67.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="./previous_motif.gif"></A> <A NAME="tex2html1152" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="./contents_motif.gif"></A> <A NAME="tex2html1153" HREF="node108.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="./index_motif.gif"></A> <BR><B> Next:</B> <A NAME="tex2html1151" HREF="node69.html">More about shutdowns</A><B>Up:</B> <A NAME="tex2html1149" HREF="node66.html">Boots And Shutdowns</A><B> Previous:</B> <A NAME="tex2html1143" HREF="node67.html">An overview of boots </A><P><ADDRESS><I>Lars Wirzenius <BR>Sun Jun 29 13:31:22 EEST 1997</I></ADDRESS></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -