欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux系统的启动过程

程序员文章站 2023-04-07 16:18:55
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


发现系统时间和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