Linux的启动方式可以从软盘或硬盘引导Linux。从软盘启动Linux时,引导扇区包含的代码只读前数百个数据块(当然,依赖于内核的大小)到预定的内存位置。Linux引导软盘上,没有系统,内核存在连续的扇区中,因为这样简化了引导过程。
软盘引导Linux
Linux加载后,它初始化硬件和设备驱动程序,然后运行 init。init可启动其他进程以">允许用户登录并做其他事情。这部分的细节在下面讨论。
为了关闭一个Linux系统,首先所有进程被告知结束(这使他们关闭所有文件,完成必要的其他事情,使之整齐地结束),然后unmount 文件系统和交换分区,最后打印可以关掉电源的信息到控制台。如果没有遵循正确的过程,可怕的事情可能发生。最重要的文件系统缓冲Cache可能没有回写,这意味着其中的所有资料将丢失,磁盘文件系统不完整,并可能不可用。
硬盘引导
从硬盘引导时,主引导记录的代码检查分区表(也在主引导记录区中),确认活动分区(标记为可引导的分区),从该分区读引导扇区,然后启动该引导扇区的代码。该分区的引导扇区的代码与软盘所做的相同:从该分区读入内核并启动。但细节不同,因为一般只给内核映像做一个单独的分区是没什么用的,所以分区引导扇区中的代码不能只顺序地读磁盘,它必须找到文件系统并把它们放在哪些扇区中。有几个方法可解决这个问题,但最通常的方法是使用GRUB。
用GRUB引导时,它读入并引导默认内核。也可以设置GRUB,使之能引导若干个内核之一,甚至其他操作系统。也可以在引导时让用户选择引导哪个内核或操作系统。
对比
从软盘和硬盘启动各有优势,但通常从硬盘启动较好,因为这避免了关于软盘的冲突 ,而且快速。然而,安装相同从硬盘启动可能有更多的麻烦,因此很多人先用软盘引导,然后当系统工作很好后,再安装GRUB从硬盘引导。
Linux内核被读入内存后,才代表真正启动了Linux,概述如下:
Linux内核是被压缩安装的,所以它首先得解压自己。内核映像开头包括一个解压的小程序。
然后,内核检查还有什么其他硬件(硬盘、软盘、网卡……),并配置适当的设备驱动程序。同时,输出查找结果的资料。例如,我引导时得到类似如下的资料。
Loading Linux.
Console: colour EGA+ 80x25, 8 Virtual consoles
Serial driver version 3.94 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: lp1 exists (0), using polling driver
Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
Loopback deVice init
Warning WD8013 board not found at i/o = 280.
Math coprocessor using irq13 error reporting.
Partition check:
hda: hda1 hda2 hda3
VFS: Mounted root (ext filesystem).
Linux version 2.4.18-12Thiz (root@haven) 05/01/2002 14:12:20