Linux系统的启动过程
程序员文章站
2022-05-25 21:05:45
Linux 系统启动过程 Linux系统的启动过程可以分为5个阶段: BIOS自检 内核的引导。 运行init。 系统初始化。 用户登录系统。 BIOS自检: BIOS是英文"Basic Input Output System"的缩写,中文名称就是"基本输入输出系统"。 BIOS是电脑启动时加载的第 ......
linux 系统启动过程
linux系统的启动过程可以分为5个阶段:
- bios自检
- 内核的引导。
- 运行init。
- 系统初始化。
- 用户登录系统。
bios自检:
bios是英文"basic input output system"的缩写,中文名称就是"基本输入输出系统"。 bios是电脑启动时加载的第一个程序,它是计算机内主板上一个rom芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从cmos中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。主机接通电源后,系统将有一个对内部各个设备进行检查的过程,这是由一个通常称之为post(power on self test,上电自检)的程序来完成的。这也是bios的一个功能。完整的post自检将包括cpu、640k基本内存、1m以上的扩展内存、rom、主板、 cmos存贮器、串并口、显示卡、软硬盘子系统及键盘测试等。自检中若发现问题,系统将给出提示信息或鸣笛警告。如果自检没有问题,会根据bios中的引导选项中查找引导设备,然后读取设备的第一扇区,设备的第一个扇区(mbr)主要记录了系统的分区信息。
内核引导:
此时bios将权限交给grub(grand unified bootloade),grub到/boot目录下去读取内核文件。读取成功后,将控制权交给内核。
init:
内核启动系统的第一个进程init,因此init的进程号总是1,init进程是所有进程的发起者和控制者,所有如果init出现问题,系统随之垮掉。init读取配置文件/etc/inittab,决定启动的运行级别(runlevel)。
linux系统有7个运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有nfs)
- 运行级别3:完全的多用户状态(有nfs),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:x11控制台,登陆后进入图形gui模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
系统初始化:
centos7以前版本在/etc/inittab文件中系统默认运行级别。然后根据运行级别/etc/rc*.d执行相应的环境初始化,建立终端。
用户登陆:
输入用户名密码登陆系统。
初次安装系统后,系统的时区可能不是我们想要的。
1、查看系统时间:
[root@localhost ~]# timedatectl
local time: mon 2019-04-29 01:24:46 cst
universal time: sun 2019-04-28 17:24:46 utc
rtc time: sun 2019-04-28 19:19:12
time zone: asia/shanghai (cst, +0800)
ntp enabled: no
ntp synchronized: no
rtc in local tz: no
dst active: n/a
local time: mon 2019-04-29 01:24:46 cst
universal time: sun 2019-04-28 17:24:46 utc
rtc time: sun 2019-04-28 19:19:12
time zone: asia/shanghai (cst, +0800)
ntp enabled: no
ntp synchronized: no
rtc in local tz: no
dst active: n/a
发现系统时间和universal time时间相差8个小时;
2、将当前系统所处的分区重新命名:
[root@localhost ~]# mv /etc/localtime /etc/localtime.bak
3、将/usr/share/zoneinfo/中创建软连接以替换当前的时区信息:
[root@localhost ~]# ln -s /usr/share/zoneinfo/universal /etc/localtime
4、再次查看系统时间
[root@localhost ~]# timedatectl
local time: sun 2019-04-28 19:26:03 utc
universal time: sun 2019-04-28 19:26:03 utc
rtc time: sun 2019-04-28 19:26:03
time zone: n/a (utc, +0000)
ntp enabled: no
ntp synchronized: no
rtc in local tz: no
dst active: n/a