linux系统启动过程初探

来源:互联网 发布:用json解析天气预报 编辑:程序博客网 时间:2024/06/06 12:40

    从事linux的工作有一个多月了。在这一个多月里,我主要在做与系统安装相关的工作--建立一个安装环境,让我们的安装程序可以在这个环境里面完成安装系统的工作。在建立这个安装环境的过程当中,我学习了一点关于linux启动过程的东西,现在把它分享在这里,也给我的工作做一个阶段性的总结。

    一.livecd-tools的使用

    安装环境和安装程序都是做在一个光盘里的--所谓的LiveCD。为了做出这样一张光盘,我首先用livecd-creator这个工具做出一个iso,然后再把这个iso刻成光盘。livecd-creator是livecd-tools这个软件包里的一个工具,使用这个工具的时候,我需要写出一个配置文件--ks文件,在这个ks文件里面我可以定制我将要做出的安装环境,这个安装环境实际上是一个缩减版的linux操作系统;在ks文件里,我可以配置安装环境将会装哪些软件包,selinux的策略,系统的语言环境,时区,分区的划分策略等等信息;我还可以在%post域来定制系统启动以后运行的一些服务。

    关于这方面的详细信息可以参考以下资料:

http://fedoraproject.org/wiki/FedoraLiveCD/LiveCDHowTo

 

    二.linux的启动过程

    我所理解的计算机由power off到用户界面的过程大体是这样的:

    1.上电,alw plane --> sus plane --> run plane,上电的过程跟EC密切相关;

    2.初始化,所有的电都好了以后,会有powergood信号发出,CPU将执行BIOS的程序,BIOS检查硬件的状态并初始化硬件;

    3.由BIOS读取磁盘的主引导扇区,选择操作系统,并将控制权交给操作系统;

    4.接下来就是各个操作系统的启动过程了;

    阶段1和2是我以前的工作主要涉及的事情,阶段3和4则是我现在的工作所要涉及的,也是我正在学习的东西。在阶段3会有一个叫做bootloader的东西,通过它我们可以选择我们要启动哪个操作系统和怎样启动这个操作系统。windows系统中,我们有以前XP上的ntldr和现在的win7上的bootmgr。在接触linux的过程中,我接触了grub,grub4dos,isolinux,syslinux这样的bootldr;前两个用在硬盘上比较多,而后两个用在光盘上和U盘上比较多。在利用livecd-creator所制作出来的iso中所用的bootloader就是isolinux,isolinux还可以通过配置文件来设置某些东西,这个后面再说。

    在linux系统的启动过程中,bootloader将会加载kernel和initrd到内存中,在2.6以后的kernel中,kernel完成自己的工作后,它将调用initrd,由initrd来负责接下来的工作,initrd实际上是一个小系统,initrd将会执行其目录下的init脚本,来完成加载驱动,mount文件系统等等工作,接着chroot到实际的根目录下,在这个根目录下,根据/etc/inittab中配置的runlevel的不同,系统将会执行相应的脚本,加载相应的服务。这些脚本位于/etc/rc?.d中(?代表runlevel)。在上面所说的livecd-creator的ks文件中,我们可以通过脚本在/etc/rc?.d目录中添加脚本或修改已经存在的脚本来达到我们的目的。

    以上就是我目前所理解的linux的启动过程,其中一些细节还有待继续研究。

原创粉丝点击