sumbowlong 发表于 2003-12-29 13:58:29

kernel2.6.0 对boot的更改

我们知道系统启动的顺序是: bootsect.S --> setup.S --> head.S 其中 bootsect.S放在磁盘的第一个扇区,当电脑启动时, BIOS自动将其读入到0x7c00处,进而加载系统。如果只安装一个操作系统,只要将bootsect.s写入磁盘首扇区即可引导进入linux。但是一般(并非全部)人往往在安装linux之外不得不安装windows,这就涉及到多重启动问题。在linux下一般用lilo或grub来进行多重引导,随着boot loader的不断发展,功能越来越强,其作用也与原来的bootsect.S有一定重叠。甚至可以完全取而代之。kernel的开发者可能意识到在近期内linux不太可能将windows赶出电脑。另一方面,也为了增加引导的灵活性,所以在2.5.57版中对bootsect.S做了较大的删改,将原本bootsect.S的功能移出到boot loader中,这一更改在正式的2.6.0版中得以保留。但是负面影响也是显而易见的,即这样一来,系统只能由boot loader来引导,即使从软盘启动也是一样。造成了一定的不便。

正在或打算阅读2.6.0内核的朋友应该注意这一点,此外,在/arch/i386/中除了boot目录外还有一个boot98目录(这也是从2.5.57版中引入的)。不要被它迷惑,boot98是pc9800架构电脑的启动代码目录,并不是普通架构电脑的启动代码目录(我对pc9800并不熟悉.).

小弟现在正在啃2.6.0源代码,由于自己初来乍到,对kernel并不熟悉,只能结合着一些2.4.0以前的资料半学半猜.感觉2.6.0内核改变非常大,非常希望可以看到有关2.6.0的专题文章。网上这样的文章还是特别少,大多是转载。所以将自己的看法和经验拿来大家共享,虽然水平有限,难免有谬误,但是我希望与各位共同探讨,一起进步。
页: [1]
查看完整版本: kernel2.6.0 对boot的更改