Linux的系统启动流程
Linux的系统启动流程
- 一、systemd进程介绍
- 1.systemd服务介绍
- 2.systemd功能
- 3.服务单元
- 3.查看以激活状态的服务单元
- 4.查看服务之间的依赖关系
- 二、Linux的运行级别
- 1.运行级别
- 2.target类型
- 3.查看当前系统默认启动的运行目标
- 4.切换当前运行目标
- 三、系统启动内核
- 1.查看默认内核启动项信息
- 2.修改内核的默认启动项
- 1.根据开机启动菜单栏索引号
- 2.根据绑定特定的内核版本
- 3.修改内核启动参数
- 1.采用VIM编辑方式
- 2.采用命令修改方式
- 四、Linux系统启动流程
- 1.BIOS初始化过程
- 2.grub阶段
- 五、系统重要文件查看
- 1./sbin/init
- 2.系统启动的内核
- 3.系统的内核源代码文件
- 4.内核的信息文件
- 5.grub2的信息文件
一、systemd进程介绍
1.systemd服务介绍
systemd守护进程管理Linux的启动,一般包括服务启动和服务管理,它可以在系统引导时以及运行中的系统激活系统的资源、服务器守护进程和其他进程。
2.systemd功能
①并行化功能,同时启动多个服务,可以提高系统的启动速度。
②按需启动激活进程
③自动服务依赖管理
3.服务单元
列出所有的服务单元
[root@tianyi ~]# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
cloud-config.service loaded active exited Apply the settings specified in cloud-config
cloud-final.service loaded active exited Execute cloud user/final scripts
cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking)
cloud-init.service loaded active exited Initial cloud-init job (metadata service crawler)
cloudResetPwdUpdateAgent.service loaded active running cloudResetPwdUpdateAgent
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
denyhosts.service loaded active running SYSV: Activates/Deactivates the
dracut-shutdown.service loaded active exited Restore /run/initramfs on shutdown
firewalld.service loaded active running firewalld - dynamic firewall daemon
getty@tty1.service loaded active running Getty on tty1
httpd.service loaded active running The Apache HTTP Server
import-state.service loaded active exited Import network configuration from initramfs
iscsi-shutdown.service loaded active exited Logout off all iSCSI sessions on shutdown
kdump.service loaded active exited Crash recovery kernel arming
kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current kernel
libstoragemgmt.service loaded active running libstoragemgmt plug-in server daemon
lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
mcelog.service loaded active running Machine Check Exception Logging Daemon
multi-queue-hw.service loaded active exited LSB: NIC multiple queues init
mysqld.service loaded active running MySQL 8.0 database server
NetworkManager-wait-online.service loaded active exited Network Manager Wait Online
NetworkManager.service loaded active running Network Manager
nis-domainname.service loaded active exited Read and set NIS domainname from /etc/sysconfig/network
php-fpm.service loaded active running The PHP FastCGI Process Manager
polkit.service loaded active running Authorization Manager
qemu-guest-agent.service loaded active running QEMU Guest Agent
rngd.service loaded active running Hardware RNG Entropy Gatherer Daemon
rsyslog.service loaded active running System Logging Service
smartd.service loaded active running Self Monitoring and Reporting Technology (SMART) Daemon
UNIT :服务单元的名称
LOAD :systemd是否正确解析了单元的配置,并将该单元加载到内存中
ACTIVE:单元的高级别激活状态,此信息表明单元是否正常启动。
SUB:单元的低级别激活状态,信息视单元类型、状态以及单元执行方式而异。
3.查看以激活状态的服务单元
[root@tianyi ~]# systemctl list-unit-files --type=service
UNIT FILE STATE
arp-ethers.service disabled
atd.service enabled
auditd.service enabled
autovt@.service enabled
blk-availability.service disabled
bolt.service static
chrony-dnssrv@.service static
chrony-wait.service disabled
chronyd.service disabled
clean-mount-point@.service static
cloud-config.service enabled
cloud-final.service enabled
cloud-init-local.service enabled
cloud-init.service enabled
cloudResetPwdAgent.service enabled
cloudResetPwdUpdateAgent.service enabled
cockpit-motd.service static
cockpit.service static
console-getty.service disabled
container-getty@.service static
cpupower.service disabled
crond.service enabled
dbus-org.fedoraproject.FirewallD1.service enabled
dbus-org.freedesktop.hostname1.service static
dbus-org.freedesktop.locale1.service static
dbus-org.freedesktop.login1.service static
dbus-org.freedesktop.NetworkManager.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
dbus-org.freedesktop.portable1.service static
dbus-org.freedesktop.timedate1.service enabled
4.查看服务之间的依赖关系
[root@tianyi ~]# systemctl list-dependencies httpd
httpd.service
● ├─-.mount
● ├─httpd-init.service
● ├─php-fpm.service
● ├─system.slice
● └─sysinit.target
● ├─dev-hugepages.mount
● ├─dev-mqueue.mount
● ├─dracut-shutdown.service
● ├─import-state.service
● ├─iscsi.service
● ├─kmod-static-nodes.service
● ├─ldconfig.service
● ├─loadmodules.service
● ├─lvm2-lvmpolld.socket
● ├─lvm2-monitor.service
● ├─multipathd.service
● ├─nis-domainname.service
● ├─plymouth-read-write.service
● ├─plymouth-start.service
● ├─proc-sys-fs-binfmt_misc.automount
● ├─rngd.service
● ├─selinux-autorelabel-mark.service
● ├─sys-fs-fuse-connections.mount
● ├─sys-kernel-config.mount
● ├─sys-kernel-debug.mount
● ├─systemd-ask-password-console.path
● ├─systemd-binfmt.service
● ├─systemd-firstboot.service
● ├─systemd-hwdb-update.service
● ├─systemd-journal-catalog-update.service
● ├─systemd-journal-flush.service
● ├─systemd-journald.service
● ├─systemd-machine-id-commit.service
● ├─systemd-modules-load.service
● ├─systemd-random-seed.service
● ├─systemd-sysctl.service
● ├─systemd-sysusers.service
● ├─systemd-tmpfiles-setup-dev.service
● ├─systemd-tmpfiles-setup.service
● ├─systemd-udev-trigger.service
● ├─systemd-udevd.service
● ├─systemd-update-done.service
二、Linux的运行级别
1.运行级别
REL6.0及之前版本的定义————
0:关机,停机模式
1:单用户模式
2:多用户模式
3:完整的多用户文本模式
4:系统未使用,保留一般不用
5:图形化模式
6:重启模式
运行级就是操作系统当前正在运行的功能级别。这个级别从0到6,具有不同的功能。
2.target类型
RHEL8.0新版本————
graphical.target:系统支持多用户、图形和基于文本登录。
multi-user.target:系统支持多用户和基于文本登录。
rescue.target:系统初始化以完成,需要root登录。
emergency.target:只读挂载根文件系统,需要root权限。
3.查看当前系统默认启动的运行目标
[root@tianyi ~]# systemctl get-default
multi-user.target
4.切换当前运行目标
[root@tianyi ~]# systemctl set-default multi-user.target
[root@tianyi ~]# systemctl get-default
multi-user.target
三、系统启动内核
1.查看默认内核启动项信息
[root@control ~]# grubby --default-kernel
/boot/vmlinuz-4.18.0-80.el8.x86_64
[root@control ~]# grubby --info=/boot/vmlinuz-4.18.0-80.el8.x86_64
index=0
kernel="/boot/vmlinuz-4.18.0-80.el8.x86_64"
args="ro resume=UUID=2f261207-03e5-47d7-ac83-9a4424fb6f74 rhgb quiet $tuned_params"
root="UUID=11568b58-6451-40da-a59f-7da0c2536cd3"
initrd="/boot/initramfs-4.18.0-80.el8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (4.18.0-80.el8.x86_64) 8.0 (Ootpa)"
id="043c7535dbf0487cbd536e7ea6413864-4.18.0-80.el8.x86_64"
2.修改内核的默认启动项
1.根据开机启动菜单栏索引号
[root@control ~]# grubby --default-index
0
[root@control ~]# grub2-set-default 0
[root@control ~]# grubby --default-index
0
2.根据绑定特定的内核版本
[root@control boot]# ll
total 107080
-rw-r--r--. 1 root root 180942 Mar 13 2019 config-4.18.0-80.el8.x86_64
drwxr-xr-x. 3 root root 17 Dec 8 2020 efi
drwx------. 4 root root 83 Mar 2 09:19 grub2
-rw-------. 1 root root 65698603 Dec 8 2020 initramfs-0-rescue-043c7535dbf0487cbd536e7ea6413864.img
-rw-------. 1 root root 24257032 Dec 8 2020 initramfs-4.18.0-80.el8.x86_64.img
drwxr-xr-x. 3 root root 21 Dec 8 2020 loader
-rw-------. 1 root root 3751920 Mar 13 2019 System.map-4.18.0-80.el8.x86_64
-rwxr-xr-x. 1 root root 7872864 Dec 8 2020 vmlinuz-0-rescue-043c7535dbf0487cbd536e7ea6413864
-rwxr-xr-x. 1 root root 7872864 Mar 13 2019 vmlinuz-4.18.0-80.el8.x86_64
[root@control boot]# grubby --set-default /boot/vmlinuz-0-rescue-043c7535dbf0487cbd536e7ea6413864
The default is /boot/loader/entries/043c7535dbf0487cbd536e7ea6413864-0-rescue.conf with index 1 and kernel /boot/vmlinuz-0-rescue-043c7535dbf0487cbd536e7ea6413864
[root@control boot]# grubby --default-kernel
/boot/vmlinuz-0-rescue-043c7535dbf0487cbd536e7ea6413864
3.修改内核启动参数
1.采用VIM编辑方式
[root@control boot]# cat /etc/default/grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=UUID=2f261207-03e5-47d7-ac83-9a4424fb6f74 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
VIM编辑修改需更新grub2配置文件grub2-mkconfig -o /boot/grub2/grub.cfg
2.采用命令修改方式
[root@control boot]# grubby --remove-args="rhgb quiet" --args=console=ttyS0,115200 --update-kernel /boot/vmlinuz-4.18.0-80.el8.x86_64
四、Linux系统启动流程
1.BIOS初始化过程
电脑通电开机,完成硬件初始化。BIOS加电自检,BIOS进行初始化。
2.grub阶段
1.把MBR加载到内存, MBR=512字节=引导程序(446字节)+64字节(分区表)+2字节
2.BIOS加载grub引导程序,系统控制交给引导程序。
3.引导程序加载配置文件/boot/grub2/grub.cfg,告诉/boot目录所在分区和内核文件在哪,并加载内核和initramfs,并放入内存中。initramfs包含启动时硬件必要的内核模块和初始化脚本。
4.Kernel自身初始化,且内核在initramfs中找到所有硬件的驱动程序,初始化这些硬件。
5.initramfs中的/sbin/init以pid为1的进程启动,并链接到systemd。
6.内核将根从initramfs切换到真正的根。
7.启动第一个程序systemd
五、系统重要文件查看
1./sbin/init
[root@control ~]# ll -ld /sbin/init
lrwxrwxrwx. 1 root root 22 Feb 26 2019 /sbin/init -> ../lib/systemd/systemd
2.系统启动的内核
[root@control boot]# pwd
/boot
[root@control boot]# ll
total 107080
-rw-r--r--. 1 root root 180942 Mar 13 2019 config-4.18.0-80.el8.x86_64
drwxr-xr-x. 3 root root 17 Dec 8 2020 efi
drwx------. 4 root root 83 Mar 2 09:19 grub2
-rw-------. 1 root root 65698603 Dec 8 2020 initramfs-0-rescue-043c7535dbf0487cbd536e7ea6413864.img
-rw-------. 1 root root 24257032 Dec 8 2020 initramfs-4.18.0-80.el8.x86_64.img
drwxr-xr-x. 3 root root 21 Dec 8 2020 loader
-rw-------. 1 root root 3751920 Mar 13 2019 System.map-4.18.0-80.el8.x86_64
-rwxr-xr-x. 1 root root 7872864 Dec 8 2020 vmlinuz-0-rescue-043c7535dbf0487cbd536e7ea6413864
-rwxr-xr-x. 1 root root 7872864 Mar 13 2019 vmlinuz-4.18.0-80.el8.x86_64
[root@control boot]#
3.系统的内核源代码文件
[root@control kernels]# pwd
/usr/src/kernels
[root@control kernels]# ll
total 8
drwxr-xr-x. 23 root root 4096 Feb 1 14:35 4.18.0-80.el8.x86_64
drwxr-xr-x. 23 root root 4096 Feb 1 14:35 4.18.0-80.el8.x86_64+debug
4.内核的信息文件
cat /boot/grub2/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#### BEGIN /etc/grub.d/00_header ###
set pager=1if [ -f ${config_directory}/grubenv ]; thenload_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; thenload_env
fi
if [ "${next_entry}" ] ; thenset default="${next_entry}"set next_entry=save_env next_entryset boot_once=true
elseset default="${saved_entry}"
fiif [ x"${feature_menuentry_id}" = xy ]; thenmenuentry_id_option="--id"
elsemenuentry_id_option=""
fiexport menuentry_id_optionif [ "${prev_saved_entry}" ]; thenset saved_entry="${prev_saved_entry}"save_env saved_entryset prev_saved_entry=save_env prev_saved_entryset boot_once=true
fi
5.grub2的信息文件
[root@control system]# cat /etc/default/grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=UUID=2f261207-03e5-47d7-ac83-9a4424fb6f74 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
Linux的系统启动流程相关推荐
- linux操作系统启动流程与kickstart文件制作
文章目录 一.Linux操作系统启动流程 1.1.简单回顾linux系统组成以及内核作用 1.2.简单了解一下磁盘构成以及相关基础知识 二.CentOS 启动流程(只适用于MBR类型的PC架构主机) ...
- linux文件系统启动流程 ---笔记整理
下面是一张linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/inittab 3. /etc/rc. ...
- Linux操作系统启动流程简单介绍
Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程.了解 Linux操作系统的启动过程,对Linux操作系统更深入认识和日常的运维工作非常有帮助,感兴趣的朋友可以了解一 ...
- linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程
转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...
- Linux 操作系统启动流程以及trouble shooting
2019独角兽企业重金招聘Python工程师标准>>> 最近在某个版块看到有人讨论GRUB的问题,这里是我个人的一些理解. 我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖 ...
- linux 笔记--系统启动流程
POST(开机自检)-->BIOS(boot seqvence)-->MBR(boot loader)-->kernel-->initrd-->sbin/init 内核设 ...
- linux系统启动流程详解
系统启动流程(CentOS6) Post加电自检: 开机检查cpu.内存.磁盘等是否存在 Boot Sequence: BIOS:Basic Input and Output System 按照BIO ...
- Linux 操作系统原理 — 系统启动流程
目录 文章目录 目录 系统启动流程 编辑 gurb.cfg RHEL7 的启动级别 RHEL7 破密码步骤 grup2 加密,防止破密码 initramfs 文件 系统启动流程 RHEL7 使用了 G ...
- Linux 系统启动流程及其介绍
熟悉Linux系统启动流程可以更好的排除Linux系统在启动的过程中所遇到的错误,下面介绍Linux系统在启动过程. 开机,BIOS自检:检测外置设备,目的是为了把外围设备的信息提供给操作系统使用 寻 ...
最新文章
- python docx 复制_99%的人都不知道的Python整理文件方法,效率提升100倍
- 「Python」pandas入门教程
- some understanding of《Improved Use of Continuous Attributes in C4.5》
- 【干货】神策标签生产引擎架构
- FLEX 2.01 全套下载!
- 接口返回buffer的16进制数据如何转换
- json对象获取json数组
- echarts地图实现部分地区高亮
- ccy影响因子版270ms
- python 面积计算器
- 我为大家带来了二十张登录界面!!!
- 隔壁老王|亲述,我的运维心路历程
- java 创建用户界面_建立图形用户界面 JAVA实验
- Python爬虫实践:优志愿 院校列表
- 16行 python代码获取音效素材
- 瑞利散射 拉曼散射 米散射_使用Cartopy的时移散射图可视化
- php读取目录中文文件名乱码解决方法
- 队列Q(Wannafly挑战赛19)
- 【C语言中清空文件的方法】
- 3.基本的DOS命令
热门文章
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
- 关于IO模拟时序(SPI)的注意事项
- Oracle(21)—— Linux环境部署Oracle11g数据库
- 亲测:阿里云的高效云盘真没有声称那么好
- Socket网络编程--简单Web服务器(2)
- sql server 2008语言基础: 集合
- OpenCV计算机视觉编程攻略之提取图片轮廓-使用Canny函数
- matlab作图如何改变坐标刻度
- mongodb java 学习_MongoDB学习(四):通过Java使用MongoDB
- 026_Pagination分页