Linux系统启动过程
1、BIOS启动
当系统加电后,计算机会首先从CMOS(complementary Metal Oxide Semiconductor)芯片中加载BIOS,并且检测系统硬件基本信息,如内存、硬盘、处理器等。然后BIOS寻找是否有系统启动盘,如果没有,系统会寻找主引导区MBR(Master Boot Record)并运行记录在MBR上的程序。通常这个程序就是操作系统的Loader程序(嵌入式系统中称为BootLoader),其主要功能是指示系统在启动之后所要加载的系统以及加载方式。例如,在MBR上运行Linux的Loader程序(GRUB和LILO)后,就可以加载Linux内核。
BIOS称为固件。在计算机系统中,BIOS程序是存储于主板芯片中的,格式化硬盘对此住信息没有任何影响除使用专门工具可以对其进行擦除外,其内容始终是存在的。
2、GRUB加载系统
GRUB是一种系统运行的Loader程序,一般情况下,安装了Linux操作系统后,启动系统时的第1个程序即是GRUB。
此程序用于加载操作系统内核(如果有多个操作系统,此程序可以用于选择启动多个操作系统)。
在Linux操作系统下,与启动相关的应用程序位于/boot文件夹下。运行GRUB时读取的应用程序为/boot/grub/grub.conf文件,修改此文件可以设置加载操作系统的启动等待时间(超过此等待时间后系统将启动默认启动操作系统)、启动菜单、默认启动操作系统和操作系统内核映像文件及位置。
# ls -l /boot/grub/grub.conf //查看此文件位置
# cat /boot/grub/grub.conf //显示此文件内容
3、系统启动文件
在系统加载Linux内核后,系统将依次运行以下几个内核程序。系统运行的第1个内核文件为/sbin/init,此程序将创建系统第1个进程,并将此进程作为整个系统以后应用程序的父进程,然后运行/etc/rc.d/rc.sysinit初始化系统。/etc/inittab是系统运行的第3个重要程序,此程序主要用来选择系统启动级别,不同的启动级别运行不同的程序及命令,这些文件在/etc/rcX.d文件夹下读取。执行完成以上内容后,系统即加载用户所特有的信息。下面详细介绍这些文件。
(1)/sbin/init.此文件位于/sbin文件夹下,用户可以在#提示符下查询当前系统进程,可以发现init进程号为
0.在整个系统中,此进程必须处于活动状态,除非系统关闭。
# ls /sbin/init //查看init文件位置
# ps -aux //查看当前系统中所有进程
(2)/etc/rc.d/rc.sysinit.创建0进程后,系统将读取文件/etc/rc.d/rc.sysinit进行系统初始化。
系统初始化的内容有以下几个方面:
设置环境变量内容;
读取/etc/sysconfig/network;
使用fsck检测文件系统;
将启动信息经过dmesy存入/var/log/dmesg中;
使用/etc/sysconfig/clock文件来初始化clock;
检测系统参数proc并设置PNP;
运行rc.erial对串行端口进行初始化;
安装root、proc文件系统以及其他文件系统;
设置字体,启动Swapping等操作。
(3)/etc/inittab.读取并检测系统基本信息后,系统将读取/etc/inittab文件来选择默认的运行级别,以决定启动哪些系统服务。Linux包括6种运行级别,不同的运行级别将默认启动不同的硬件和系统环境,例如,要启动网络环境,必须在级别3和级别5中进行;要修改系统错误,一般在单用户模式级别1中进行。一般情况下,系统将默认启运行级别3或级别5.
# cat /etc/inittab
6种运行级别的义如下:
0,挂起模式,建议不要设置成这一级别;
1,单用户模式,一般在系统修复时使用;
2,多用户模式,但没有网络文件系统支持;
3,多用户完整模式,很多服务器选择这种模式;
4,没有使用;
5,为X11模式,即图形界面,运行桌面系统需要选择此级别;
6,重启模式。
(4)/etc/rcX.d.根据/etc/inittab中选择的默认级别,系统将读取/etc/rcX.d文件夹下的文件(X即为对应的级别,如1,2,3...),此文件夹下全部为S和K前缀文件。
4、初始化用户文件
(1)/etc/rc.d/rc.local是一个脚本文件,在完成以上初始化后,用户可以在该文件夹下加载系统启动时要运行的程序。系统启动时自动启动的程序即可以在此文件中添加,相当于启动时的一个批处理程序。
(2)/etc/profile文件。读取/etc/rc.d/rc.local后,系统将设置环境变量,这是系统最主要的shell配置文件,也是用户登录时系统最先检测的文件。主要包括PATH、USER、LOGNAME、MAIL、HOSTMAME等。
(3)/home/$USERNAME/./bash_profile文件。读取完/etc/profile文件后,各用户将读取自己特有的配置文件,
除root用户外,所有用户都将分别读取/home/$USERNAME/.bash_profile文件并设置自身的环境变量。
执行完以上文件后,Linux操作系统就可以登录了。
Linux登录方式
Linux是一个多用户的网络操作系统,登录方式有多种,包括虚拟控制台和远程登录等方式。Linux启动到图形界面后(级别3),系统提供了多个虚拟控制台,每个控制台相互独立,互不影响,在字符界面下,可以通过按快捷键Alt+F1~F6进行多个虚拟控制台之间的切换,使用startx可以切换到图形界面;如果当前是图形界面,可以通过按快捷键Alt+Ctrl+F1~F6切换到字符虚拟终端,按Alt+Ctrl+F7可以返回图形界面。
远程登录是一种非常重要的登录方式,Linux服务器一般都采用远程登录的方式登录系统,通常使用telnet工具