博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux经典面试题----开机启动流程
阅读量:3958 次
发布时间:2019-05-24

本文共 3857 字,大约阅读时间需要 12 分钟。

linux开机启动流程

1,power on 开机

2,POST开机自检
由主板上的BIOS程序来完成
3,BIOS对硬件进行检测
BIOS:基本输入输出系统,是个人电脑启动时加载的第一个软件。可从CMOS中读写系统设置的具体信息。

名词解释:

1,什么是BIOS?
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。
BIOS是个人电脑启动时加载的第一个软件。
它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息。
BIOS这个大程序里面有3个小程序:基本输入输出的程序、开机后自检程序和系统自启动程序

2,CMOS是什么?

CMOS是一个存储参数配置的芯片,是主板上一块可读写的RAM芯片
CMOS芯片靠后备电池供电,即使系统关机掉电后系统也不会消失

4,boot启动顺序检查

hard drive 硬盘
cdrom 光驱
removeable device 可移动设备
Network 从网络中的服务器启动
一般从硬盘启动
5,硬盘
硬盘里有一个MBR分区
6,MBR
主引导记录,MBR是第一个可开机设备的第一个扇区的引导分区块,内包含引导加载程序,电脑开机的时候,计算机系统会主动去执行BIOS这个程序,然后BIOS会分析计算机上的存储设备,硬盘的话,BIOS会到该硬盘里面去读取第一个扇区的MBR位置,MBR里面放着引导加载程序,加载内核文件
7,groub2引导启动程序
里面的ext4驱动,可以识别/boot分区里的内容

8,/boot

/boot分区里有vmlinuxz 和initramfs执行这两个文件,将其加载到内存
vmlinuz-4.18.0-147.el8.x86_64 真正的linux内核程序
initramfs-4.18.0-147.el8.x86_64.img --为内核配套的文件系统,存放了很多的驱动

注:initramfs文件可以解压:

cpio -idmv < ./initramfs.img

9.启动systemd进程

systemd进程 是linux里的第1个进程
10,启动对应的运行级别里的服务
一般是multi-user级别,运行/etc/rc.local和/etc/fstab
/etc/rc.local -->开机启动的过程中将所有的服务启动后,会执行这个文件里的命令
‘chmod +x /etc/rc.d/rc.local’ 这个文件必须要设置可执行权限,里面的命令才会执行

/etc/fstab  会自动挂载文件系统

11,之后进入login登录页面(输入用户名和密码)

12,根据/etc/passwd和/etc/shadow 检测用户名和密码是否正确

13,如果登录成功就运行~/.bashrc ~/.bash_profile /etc/bashrc /etc/profile 这四个配置文件

~/.bashrc -->启动bash程序的时候会加载 -->只是影响某个用户的
~/.bash_profile -->用户登录的时候会运行的脚本

/etc/bashrc -->全局,会影响所有的用户的

/etc/profile -->全局,会影响所有的用户的

首先会执行/etc/profile、和~/.bash_profile-->~/.bashrc -->/etc/bashrc

14,开机成功,最后会出现bash提示符

root用户:#
普通用户:$

开机启动相关问题

如何查看一个服务是否开机启动?

方法1: 到多用户模式对应的文件夹下查看是否有这个服务的名字

[root@localhost ~]# cd /etc/systemd/system[root@sanchuang system]# cd multi-user.target.wants/[root@localhost system]# lsbasic.target.wants                          default.target           network-online.target.wants  sysinit.target.wants   timers.target.wantsdbus-org.freedesktop.nm-dispatcher.service  getty.target.wants       nginx.service.d              syslog.service         vmtoolsd.service.requiresdbus-org.freedesktop.resolve1.service       multi-user.target.wants  sockets.target.wants         sysstat.service.wants

如果不想某个服务开机启动可以:

如:禁用nginx开机启动

root@sanchuang multi-user.target.wants]# systemctl  disable  nginx  Removed /etc/systemd/system/multi-user.target.wants/nginx.service.[root@sanchuang multi-user.target.wants]# lsauditd.service   dnf-makecache.timer  NetworkManager.service  sshd.service     tuned.servicechronyd.service  irqbalance.service   remote-fs.target        sssd.service     vmtoolsd.servicecrond.service    kdump.service        rsyslog.service         sysstat.service

解释:

/etc存放系统管理和配置文件
/etc/systemd/system 存放系统启动的默认级别及启动的unit的软连接,优先级最高。

运行级别(centos6里概念)

在centos6里有哪些运行级别?

runlevel 可以查看当前运行级别

0级:关机
1级:单用户(找回丢失密码)
2级:多用户无网络,不能使用NFS功能
3级:多用户有网络(multi-user),最常用的级别,CLI字符界面
(会定义哪些程序在字符界面下开机启动 -->开启的程序少–>消耗的资源少 -->最小化安装)
4级:保留,目前Linux暂无使用
5级:图像界面,GUI界面
(图形界面 -->会定义哪些程序在图形界面下开机启动 -->开启的程序多–>消耗资源多 -->带GUI服务器,linux里启动图形界面是启动GNOME 和KDE)
6级:重启
在centos7/8里该文件已经不再使用了

[root@localhost system]# cat /etc/inittab inittab is no longer used when using systemd. Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.targetsystemd uses 'targets' instead of runlevels. By default, there are two main targets:multi-user.target: analogous to runlevel 3graphical.target: analogous to runlevel 5To view current default target, run:systemctl get-defaultTo set a default target, run:systemctl set-default TARGET.target

查看当前的默认运行级别

[root@sanchuang zhuxiaodan]# systemctl get-default multi-user.target

设置默认的运行级别

[root@sanchuang zhuxiaodan]# systemctl set-default graphical.target  [root@sanchuang zhuxiaodan]# systemctl set-default multi-user.targetRemoved /etc/systemd/system/default.target.Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.

init 0 关机

init 3 进入运行级别3 -->字符界面
init 6 重启
注:千万不能把initdefault 设为0或6,会导致你的系统一开机就关机,一开机就重启

转载地址:http://imlzi.baihongyu.com/

你可能感兴趣的文章
比较Cint() , int() , fix() ,round()的区别
查看>>
举例说明常用字符串处理函数
查看>>
用Mindmanager整理的VB常用函数
查看>>
随风潜入夜,润物细无声
查看>>
软件生存期模型
查看>>
制定计划(问题的定义,可行性研究)
查看>>
需求分析
查看>>
软件设计
查看>>
程序编码
查看>>
软件测试
查看>>
软件维护
查看>>
软件项目管理
查看>>
面向过程的分析方法
查看>>
面向数据流的设计方法
查看>>
软件设计基础
查看>>
UML的基本结构
查看>>
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
查看>>
用例图(UseCase Diagram)—UML图(一)
查看>>
类图(Class diagram)—UML图(二)
查看>>
对象图(Object Diagram)—UML图(三)
查看>>