admin 管理员组文章数量: 887016
Linux开机启动流程详解
- 一.开机启动流程
- 二.开机启动流程的意义:
- 了解开机启动流程就是为了解决这些问题
- 三.Linux开机完整流程图
- 一.开机自检(POST)
- 二.BIOS程序(完成开机自检的程序)
- 三.按boot第一顺序启动
- 四.MBR
- 五./boot里文件的驱动
- 六.内核文件
- 七.systemd进程
- 八.运行级别
- 九.输入用户名与密码
- 十.补充
- 1.查看当前的默认启动模式
- 2.修改为图形界面启动模式/设置默认的运行级别为GUI
- 3.设置开机自启:
- 4.其他
- 十一.思考题
- 1.如何查看一个服务是否开机启动?
- 2.设置yum install安装的nginx服务开机启动
- 3.破坏MBR文件能不能运行?
- 4.假如你是一个黑客,如何让你的木马程序开机启动?(当然,我开玩笑的)
- 5.如何设置默认的运行级别为3?
- 6.编译安装的软件如何设置开机启动?
- 7.编写的脚本如何设置开机启动?
- 8.删除/boot分区里的内容,是否可以开机?
- 9.把内存条拔出来,是否可以开机?
关于Linux的开机启动流程一定要认真了解、牢记。
一.开机启动流程
按一下开机按钮到你输入用户名和密码,进入系统的整个过程,都叫开机启动流程–》我们这篇文章主要是关注这个过程计算机背后发生的事情
二.开机启动流程的意义:
大家可以思考一下:
1掌握让某个软件开机自动运行
2.开机不能正常启动,是什么原因…那个环节出现了问题
3.防止黑客植入木马,去查询黑客会把木马放到哪些地方?
了解开机启动流程就是为了解决这些问题
三.Linux开机完整流程图
一.开机自检(POST)
开机自检:上电自检(POST, Power on Self Test)
指计算机系统,接通电源, (BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存,系统ROMBIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。
检查:主板(motherboard),CPU,内存,磁盘,网卡,显卡,声卡,电源,鼠标,键盘,显示器等
二.BIOS程序(完成开机自检的程序)
BIOS程序
BIOS是英文"Basic Input output system"的缩略词,直译过来后中文名称就是"基本输入输出系统"。
BIOS是个人电脑后动时加载的第一个软件。
它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。
(1)BIOS是一个程序会读取CMOS芯片里的参数,了解cpu的配置,时间的配置,启动顺序的配置等
(2)CMOS :是一个存储参数配置的芯片
三.按boot第一顺序启动
boot :引导、启动
启动顺序:
BIOS–boot
第1引|导顺序: hard drive硬盘(台式机一般就是硬盘启动)
第2引导顺序: cd rom光驱 —》安装系统
第3引导顺序: removable device可移动设备–》u盘,移动硬盘–》安装系统
第4引导顺序: Network–从网络启动–》网络中安装服务器启动–》安装
四.MBR
MBR–》在硬盘的第1个扇区–》主引导记录–》用来启动linux系统的程序
BIOS–》主板里的程序(有一个指针,固定到磁盘的第1个扇区)–》disk–》MBR–》grub2
MBR: master boot record
主引导记录:有启动程序 grub2
MBR只占512个字节
五./boot里文件的驱动
[root@localhost boot]# ls
config-4.18.0-240.el8.x86_64 initramfs-4.18.0-240.el8.x86_64kdump.img
efi loader
grub2 System.map-4.18.0-240.el8.x86_64
initramfs-0-rescue-c60d2d9754344502ada018e9d5f81a56.img vmlinuz-0-rescue-c60d2d9754344502ada018e9d5f81a56
initramfs-4.18.0-240.el8.x86_64.img vmlinuz-4.18.0-240.el8.x86_64
六.内核文件
initramfs-4.18.0-147.e18.x86-64.img )给内核程序提供一个初始化的内存文件系统的镜像文件–》临时的根文件系统的镜像文件
宫殿、大臣、军队、妃子等
init 初始化 initial
ram:随机存取存储器(random access memory的缩写)
fs:file system - -》
vmlinuz-4.18.0-147.e18.x8664 --》内核程序文件–》皇上
initramfs-4.18.0-147.e18.x8664kdump.img
解压initramfs:
[root@localhost 530]# cp /boot/initramfs-4.18.0-240.el8.x86_64.img .
[root@localhost 530]# ls
initramfs-4.18.0-240.el8.x86_64.img
[root@localhost 530]# cpio -idmv < initramfs-4.18.0-240.el8.x86_64.img
.
early_cpio
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
202 块
[root@localhost 530]# ls
early_cpio initramfs-4.18.0-240.el8.x86_64.img kernel
七.systemd进程
pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁。
安装pstree程序:
[root@localhost 530]# yum provides pstree #查找是谁提供的pstree这个命令
上次元数据过期检查:1:29:20 前,执行于 2021年05月30日 星期日 10时10分10秒。
psmisc-23.1-5.el8.x86_64 : Utilities for managing processes on your system
仓库 :baseos
匹配来源:
文件名 :/usr/bin/pstree
[root@localhost 530]# yum install psmisc -y #安装pstree
查看boot运行的进程
[root@localhost boot]# pstree -p
systemd(1)─┬─NetworkManager(888)─┬─{NetworkManager}(923)
│ └─{NetworkManager}(924)
├─VGAuthService(879)
├─auditd(802)───{auditd}(803)
├─bash(19419)───sleep(51883)
├─crond(1523)
├─dbus-daemon(886)
├─irqbalance(883)───{irqbalance}(891)
├─login(992)───bash(1438)
├─nginx(23007)─┬─nginx(23338)
│ ├─nginx(23339)
│ ├─nginx(23340)
│ └─nginx(23341)
├─polkitd(884)─┬─{polkitd}(969)
│ ├─{polkitd}(970)
│ ├─{polkitd}(971)
│ ├─{polkitd}(972)
│ └─{polkitd}(999)
├─rngd(911)───{rngd}(919)
├─rsyslogd(1013)─┬─{rsyslogd}(1042)
│ └─{rsyslogd}(1044)
├─sshd(938)───sshd(43448)───sshd(43451)───bash(43452)───pstree(51884)
├─sssd(878)─┬─sssd_be(916)
│ └─sssd_nss(954)
├─systemd(1428)───(sd-pam)(1430)
├─systemd-journal(720)
├─systemd-logind(977)
├─systemd-udevd(760)
├─tuned(939)─┬─{tuned}(1419)
│ ├─{tuned}(1421)
│ └─{tuned}(1422)
├─vim(9461)
└─vmtoolsd(880)─┬─{vmtoolsd}(904)
└─{vmtoolsd}(908)
由于Centos版本的不同第一个进程也不同
例如:
Centos 6 第一个进程为: init
Centos 7 第一个进程为:systemd
八.运行级别
在centos6里有哪些运行级别?(RunLevel)
0 --》关机
1 --》单用户模式–》破密码
2–》多用户模式,不能使用NFS功能
3–》完全多用户模式 multi-user–> CLI 字符界面
4–》没有用
5–》图形界面 graphical --》GUI界面
6–》重启
例如:
init 0 = 关机
init 6 = 重启
补充:
init 3进入运行级别3 --》字符界面
runlevel
centos7里只有3和5 多用户和图形化界面
5 3 --》开机的时候是图形界面后面进入了字符界面
不同的级别启动的服务是不一样的
3 字符界面–》会定义哪些程序在字符界面下开机启动–>开启的程序少–》消耗的资源少–》最小化安装–》3
5 图形界面–》会定义哪些程序在图形界面下开机启动–》开启的程序多–》消耗资源多–》带GUI服务器–》5
九.输入用户名与密码
用户输入用户名与密码后
Linux系统自动进入/etc/passwd 查找用户名
再根据用户名进入/etc/shadow 查找用户密码
此处的用户密码是通过哈希加密算法保存的,Linux是不能通过破解哈希算法来得到原密码,而是通过用户输入的密码,再次进行一次哈希计算,再将运行完的结果与存储的密码进行比较。
十.补充
1.查看当前的默认启动模式
[root@localhost lianxi]# systemctl get-default
multi-user.target
2.修改为图形界面启动模式/设置默认的运行级别为GUI
[root@localhost boot]# systemctl set-default graphical
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
没有安装相关程序所以会按照字符页面正常启动
[root@localhost boot]# systemctl get-default
graphical.target
centos6里使用的chkconfig systemctl 取代了chkconfig的方式
3.设置开机自启:
yum install mariadb mariadb-server -y 安装mariadb的数据库软件
[root@localhost system]# pwd
/usr/lib/systemd/system --》集中存放所有需要启动的服务的目录
[root@localhost system]# cd /etc/systemd/system/multi-user.target.wants/
[root@localhost multi-user.target.wants]# pwd
/etc/systemd/system/multi-user.target.wants --》多用户模式开机启动的服务存放的目录
[root@localhost multi-user.target.wants]# systemctl disable mariadb.service 禁用服务开机启动
Removed /etc/systemd/system/multi-user.target.wants/mariadb.service.
Removed /etc/systemd/system/mysql.service.
Removed /etc/systemd/system/mysqld.service.
[root@localhost multi-user.target.wants]# systemctl enable mariadb 设置服务开机启动
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
4.其他
/etc/rc.local 启动的过程中,最后会运行这个脚本里的命令(这个文件必须要有可执行权限)
/etc/fstab 启动的过程中,会加载这个文件里知道的磁盘分区
十一.思考题
1.如何查看一个服务是否开机启动?
2.设置yum install安装的nginx服务开机启动
3.破坏MBR文件能不能运行?
4.假如你是一个黑客,如何让你的木马程序开机启动?(当然,我开玩笑的)
5.如何设置默认的运行级别为3?
6.编译安装的软件如何设置开机启动?
7.编写的脚本如何设置开机启动?
8.删除/boot分区里的内容,是否可以开机?
9.把内存条拔出来,是否可以开机?
版权声明:本文标题:Linux开机启动流程有一这篇就够啦!!! 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729023770h1308267.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论