10. Linux 系统启动原理
个人笔记 :
Linux系统启动时界面

bash
#系统登录页面,按'e'进入编辑模式
#找linux16 /vmlinux这一行,部分机器会出现两行,在第一行的UTF-8后面按空格,添加操作语句
#省去超时等待时间,直接进入紧急模式
systemd.unit=emergency.target

bash
#保存执行
Ctrl x
bash
#编辑/etc/fstab于定义文件系统的自动挂载规则。
vim /etc/fstab
#如果文件只读,可这么修改,用于将根文件系统重新挂载为可读写模式
mount -o rw,remount /
CentOS 7 启动过程
现代计算机系统是硬件与软件的复杂组合。从断电状态开始,到拥有登录提示符的运行中系统,这需要大量的硬件和软件配合工作。
以下列表从较高层面概述了 CentOS7 启动过程。

-
计算机接通电源。系统固件(现代UEFI或更旧的BIOS)运行开机自检(POST),并开始初始化硬件。
配置: 在系统启动早期,通过按特定的组合键,例如F2,配置系统固件。
-
系统固件搜索启动设备,根据固件配置的顺序搜索启动磁盘上的主启动记录(MBR)。系统固件从磁盘读取boot loader,然后将系统控制权交给boot loader,boot loader是GRand Unified Bootloader version 2(GRUB2)。
配置: 使用 grub2-install 命令进行配置,它将安装 GRUB2 作为磁盘上的启动加载器。
-
GRUB2从/boot/grub2/grub.cfg文件加载配置并显示一个操作系统菜单,可以从中选择要启动的系统。
配置: 使用 /etc/grub.d/ 目录、/etc/default/grub 文件和 grub2-mkconfig 命令进行配置,以生成 /boot/grub2/grub.cfg 文件。
-
boot loader根据选定条目的配置,从磁盘中加载kernel和initramfs,并将它们放入内存中。initramfs是一个存档,其中包含启动时所有必要硬件的内核模块、初始化脚本等等。
boot loader将控制权交给kernel,并同时将启动项的内核参数、initramfs在内存中的位置传递给kernel。内核在initramfs中找到所有硬件驱动程序,并初始化这些硬件。
配置: 使用 /etc/dracut.conf.d/ 用录、dracut 命令和 lsinitrd 命令进行配置,以检查 initramfs 文件。
-
initramfs 执行/sbin/init,作为PID 1。在CentOS中,/sbin/init是一个指向systemd的链接。
配置: 使用内核参数
init=command配置系统初始化程序。 -
随后,systemd会加载从内核命令行传递的target或者加载系统配置的default.target,该目标通常启动一个基于文本的登录或图形登录屏幕。
**配置:**使用systemctl设置默认target。
-
default.target依赖sysinit.target,sysinit.target用于初始化系统,例如读取/etc/fstab挂载文件系统,激活systemd-journald等。
**配置:**使用/etc/fstab配置文件系统开机自动挂载。
-
default.target还会激活开机启动的单元。
**配置:**使用systemctl设置开机启用服务。
-
default.target还会激活getty.target,该target将打开tty1终端用于用户登录。
系统 target
systemd使用类型为target的单元来分组不同单元,例如multi-user.target包涵chronyd.service、crond.service、firewalld.service等服务。
target还可以包涵其他target,例如graphical.target包涵multi-user.target,multi-user.target包涵basic.target,basic.target包涵sysinit.target。
使用以下命令查看target之间依赖关系:
bash
[root@centos7 ~]# systemctl list-dependencies graphical.target
graphical.target
● ├─accounts-daemon.service
● ├─gdm.service
● ├─initial-setup-reconfiguration.service
● ├─network.service
● ├─rtkit-daemon.service
● ├─systemd-readahead-collect.service
● ├─systemd-readahead-replay.service
● ├─systemd-update-utmp-runlevel.service
● ├─udisks2.service
● └─multi-user.target
......
# 查看反向依赖
[root@centos7 ~]# systemctl list-dependencies sshd.service --reverse
sshd.service
● └─multi-user.target
● └─graphical.target
系统启动级别
CentOS 6 之前使用启动级别控制系统开机激活哪些服务。CentOS 7 使用target控制系统开机激活哪些服务。
命令各式: initi 0 ;init 5
| runlevel | target | 作用 |
|---|---|---|
| 0 | 关机,init 0 同 poweroff 和systemctl poweroff |
|
| 1 | emergency.target rescue.target | 单用户模式、救援模式和紧急模式用于修复系统 |
| 2 | 多用户文本界面,不具备NFS功能 | |
| 3 | multi-user.target | 完全多用户文本界面 |
| 4 | 未使用 | |
| 5 | graphical.target | 多用户图形界面,图形化启动 |
| 6 | 重启,init 6 同 reboot 和systemctl reboot |
-
常用操作命令:
-
切换运行级别 :使用 "
systemctl isolate" 命令bash#可立即启动图形用户界面。 [root@client ~ 19:20:35]# systemctl isolate graphical.target -
查看当前 target:
bash#可查看当前激活的 target 及其状态。 [root@client ~ 19:24:02]# systemctl list - units --type = target -
修改默认 target :使用 "
systemctl set - default" 命令,如 "systemctl set - default multi - user.target" 可将默认 target 设置为多用户模式。
-
设置系统运行目标
/etc/inittab文件是CentOS 6之前版本初始化系统使用的配置文件。
bash# 部分内容如下 # Default runlevel. The runlevels used by RHS are: # 0 - 停机(请勿将 initdefault 设置为此级别) # 1 - 单用户模式 # 2 - 多用户模式,无 NFS(如果没有网络,与级别 3 相同) # 3 - 完全多用户模式 # 4 - 未使用 # 5 - X11 # 6 - 重启(请勿将 initdefault 设置为此级别 # 设置运行级别为5,也就是图形化方式启动。 id:5:initdefault:
设置系统当前运行 target
bash
# 设置系统当前运行target为multi-user.target
[root@centos7 ~]# systemctl isolate multi-user.target
# 设置系统当前运行target为graphical.target
[root@centos7 ~]# systemctl isolate graphical.target
设置系统开机默认运行 target
bash
# 查看系统开机默认运行target
[root@centos7 ~]# systemctl get-default
graphical.target
# 设置系统开机默认运行target
[root@centos7 ~]# systemctl set-default multi-user.target
# 重启验证
在系统启动时选择其它目标
要在启动时选择其他目标,将 systemd.unit=target.target 参数附加到内核命令行。该配置是临时生效的,经常用于系统启动过程中故障排除。
要使用这种选择其他目标的方法,请执行以下步骤:
-
启动或重新启动系统。
-
按任意键中断启动加载器菜单倒计时(Enter除外,它用于执行正常启动)。
-
将光标移至第一个内核条目,按e编辑当前条目。

-
将光标移至以linux16开头的行,末尾附加systemd.unit=target.target。例如,systemd.unit=multi-user.target。按 Ctrl+x 使用这些更改进行启动。

重置 ROOT 密码
以下几种方法可用于设置新的root密码。例如:
- 系统管理员可以使用Live CD启动系统,挂载根文件系统,然后编辑/etc/shadow:
- 删除root账户密码字段
- 使用已知密码字段替换root密码字段
- 在CentOS 7之后版本中,可以让initramfs运行的脚本在某些点暂停,以提供root身份的shell,然后在该shell中重置root密码。
方法1:rd.break
-
重新启动系统。
-
按任意键(Enter除外)中断启动加载器倒计时。
-
将光标移至第一个内核条目,按e编辑当前条目。

-
将光标移至以 linux16 开头的行,末尾附加 rd.break。利用该选项,在系统从initramfs向实际系统移交控制权前,系统将会中断。按Ctrl+x进行启动。

-
此时,系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/sysroot。
以读/写形式重新挂载/sysroot。
bashswitch_root:/# mount -o remount,rw /sysroot -
切换root位置,把/sysroot做为文件系统树的根。
bashswitch_root:/# chroot /sysroot -
设置新root密码。
bashsh-4.2# echo 新密码 | passwd --stdin root #或者修改用户密码,将用户密码删除 vim /etc/shadow提示:password 是用户自定义密码。
-
如果系统开启了 SELinux 功能,则需要确保所有未标记的文件(包括此时的/etc/shadow)在启动过程中都会重新获得标记。
bashsh-4.2# touch /.autorelabel -
执行以下命令,系统将继续启动。如果系统开启了SELinux功能,还需要执行完整的 SELinux 重新标记,然后再次重新启动。
bashsh-4.2# exit switch_root:/# exit -
登录验证。
方法2:init=/bin/bash
-
重新启动系统。
-
按任意键(Enter除外)中断启动加载器倒计时。
-
将光标移至第一个内核条目,按e编辑当前条目。
-
将光标移至以 linux16 开头的行,末尾附加
init=/bin/bash。利用该选项,在系统从initramfs向实际系统移交控制权前,系统将会中断,请开启一个root shell。按Ctrl+x使用这些更改进行启动。 -
此时系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/。以读/写形式重新挂载/。
bashbash-4.2# mount -o remount,rw / -
使用以下命令删除root密码,等进入系统后再重新设置root密码。
bashsh-4.2# passwd -d root此时还可以使用vi编辑器直接编辑/etc/shadow文件,复制已知用户的密码记录替换root密码。
-
如果系统开启了 SELinux 功能,则需要确保所有未标记的文件(包括此时的/etc/shadow)在启动过程中都会重新获得标记。
bashsh-4.2# touch /.autorelabel -
执行以下命令,系统将继续启动。如果系统开启了SELinux功能,还需要执行完整的 SELinux 重新标记,然后再次重新启动。
bashsh-4.2# exec /usr/lib/systemd/systemd -
使用root登录,此时不需要密码。
/etc/fstab 引起的系统启动问题
环境准备
bash
# 设置磁盘分区管理方案
[root@centos7 ~]# parted /dev/sdb mklabel msdos
# 创建分区
[root@centos7 ~]# parted /dev/sdb unit MiB mkpart primary 1 10241
# 格式化为xfs文件系统
[root@centos7 ~]# mkfs.xfs /dev/sdb1
# 创建挂载点
[root@centos7 ~]# mkdir /data01
# 设置持久化挂载
[root@centos7 ~]# echo '/dev/sdb1 /data01 xfs defaults 0 0' >> /etc/fstab
# 挂载并验证
[root@centos7 ~]# mount -a
[root@centos7 ~]# df -h /data01
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 10G 33M 10G 1% /data01
故障1:挂载点不存在
环境准备
bash
[root@centos7 ~]# umount /data01
[root@centos7 ~]# rmdir /data01
重启系统验证
bash
# 可以正常进入系统,挂载点会被自动创建
[root@centos7 ~]# df -h /data01
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 10G 33M 10G 1% /data01
故障2:设备名称写错或者找不到设备
环境准备
bash
[root@centos7 ~]# vim /etc/fstab
# 将原先的sdb1修改为sdb2
/dev/sdb2 /data01 xfs defaults 0 0
重启系统验证
-
启动过程中找不到该设备。
-
1分30秒超时后,进入emergency模式,进行修复。
修改为正确的值或者注释该条目,确保系统正常启动。
-
然后输入exit,继续启动。
故障3:破坏文件系统
环境准备
bash
[root@centos7 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=1
重启系统验证
-
系统启动过程中尝试修复文件系统,修复失败后提示进入 emergency 模式修复。

-
输入root 密码进入emergency 模式。
bash# 执行以下命令修复 [root@centos7 ~]# xfs_repair /dev/sdb1修复完成后,输入 exit 正常启动系统。
grub2 配置
grub2 配置文件
grub2 的主要配置文件如下:
-
/boot/grub2,grub2的主要配置文件所在目录,例如grub.cfg、grubenv、user.cfg。
-
/etc/grub2.cfg
-
/etc/grub2.cfg 是指向 /boot/grub2/grub.cfg的软连接。
-
不要直接修改/etc/grub2.cfg文件,该文件由系统自动生成。如果需要自定义这个文件,可以通过修改/etc/grub.d/中脚本和/etc/default/grub文件,然后通过grub2-mkconfig命令生成。
使用efi启动方式的grub2配置文件是/etc/grub2-efi.cfg。
-
-
/etc/grub.d/,该目录下存放多个数字开头的脚本,按照从小到大的顺序执行。例如00_header会调用/etc/default/grub配置文件来实现最基本的开机界面配置。
-
/etc/default/grub,定义grub启动部分变量信息,例如grub启动菜单选择条目的超时时间,内核参数等。
-
/boot/grub2/grubenv,设定默认启动条目。
grub 菜单超时时间
bash
[root@server ~ 10:00:03]# vim /etc/default/grub
# 修改GRUB_TIMEOUT为10
GRUB_TIMEOUT=10
# 生效grub2.cfg配置文件
[root@server ~ 10:05:59]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
done
# 重启
[root@server ~ 10:03:21]# reboot
kernel 启动参数
bash
[root@server ~ 10:04:11]# vim /etc/default/grub
# 修改GRUB_CMDLINE_LINUX,例如在最后添加参数console=ttyS0,导致不显示启动过程
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet console=ttyS0"
# console=ttyS0: 启动过程信息显示到 ttyS0 终端,导致启动过程是tty1上不显示启动消息。
# rhgb:启用图形化启动界面(Red Hat Graphical Boot)。
# quiet:减少启动过程中的日志输出(只显示重要信息), debug 开启调试模式(显示详细启动日志)
# 生成grub2.cfg配置文件,重启验证
[root@server ~ 10:05:26]# grub2-mkconfig -o /etc/grub2.cfg
[root@server ~ 10:05:59]# reboot
效果如下:

查看内核启动参数
-
所有内核参数的详细说明可参考 Linux 内核文档,CentOS 7 中可通过安装
kernel-doc包获取:bashyum install kernel-doc -y文档路径:
/usr/share/doc/kernel-doc-<版本>/Documentation/admin-guide/kernel-parameters.txt查看方式:
bashless /usr/share/doc/kernel-doc-3.10.0/Documentation/admin-guide/kernel-parameters.txt(注意替换
<版本>为实际内核版本,可通过uname -r查看) -
常用参数说明
除了
rhgb和quiet,常见参数包括:ro:只读挂载根文件系统(启动后由系统自动切换为读写)rw:直接以读写方式挂载根文件系统root=:指定根文件系统的设备(如root=/dev/sda1)crashkernel=auto:预留内存用于内核崩溃时的转储net.ifnames=0:禁用网络接口的 "一致性命名规则"(如ens33),强制使用传统命名(如eth0),便于脚本或传统工具兼容。biosdevname=0:配合net.ifnames=0使用,彻底禁用基于 BIOS 的设备命名规则。
grub 菜单加密
bash
# 查看/etc/grub.d/01_users脚本
[root@centos7 ~]# cat /etc/grub.d/01_users
#!/bin/sh -e
cat << EOF
if [ -f \${prefix}/user.cfg ]; then
source \${prefix}/user.cfg
if [ -n "\${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root \${GRUB2_PASSWORD}
fi
fi
EOF
# 生成grub2密码
[root@centos7 ~]# grub2-mkpasswd-pbkdf2
Enter password: `123`
Reenter password: `123`
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.649DDB2FE50D7D3A0DF829A21887FFD9FB7CC14F0E750B993CFB08B86D0E99AE33D7E121DEC82DD71FF69B2653D9446ED777ADAFB5DAE051685C7B85C3A3A276.8DC92452B738F2007F7254BC884AF34B3C149E62D2054BB09DA970B931AF329BE772648AA0FE15DC8196AED48545F5BF84AAF9EB989CCCD168604B8050988FF0
# 创建文件
[root@centos7 ~]# vim /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.649DDB2FE50D7D3A0DF829A21887FFD9FB7CC14F0E750B993CFB08B86D0E99AE33D7E121DEC82DD71FF69B2653D9446ED777ADAFB5DAE051685C7B85C3A3A276.8DC92452B738F2007F7254BC884AF34B3C149E62D2054BB09DA970B931AF329BE772648AA0FE15DC8196AED48545F5BF84AAF9EB989CCCD168604B8050988FF0
# 生效grub2配置文件
[root@server ~ 10:30:00]# grub2-mkconfig -o /boot/grub2/grub.cfg
# 生成grub2.cfg配置文件,重启验证
[root@centos7 ~]# reboot
效果如下
-
启动菜单界面,按e编辑。
-
输入用户名root,密码redhat。

-
弹出如下菜单,可以编辑了。
思考:如何解除 grub 菜单加密?
默认启动条目
bash
# 查看启动条目有哪些
[root@centos7 ~]# # grep -o "^menu.*CentOS L.*Core)'" /etc/grub2.cfg
menuentry 'CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core)'
menuentry 'CentOS Linux (0-rescue-43c2aa8a5c024d90af4e8da0b3881cb2) 7 (Core)'
# 修改默认启动条目
[root@centos7 ~]# vim /boot/grub2/grubenv
# 修改saved_entry为相应条目
saved_entry=CentOS Linux (0-rescue-43c2aa8a5c024d90af4e8da0b3881cb2) 7 (Core)
......
# 生成grub2.cfg配置文件,重启验证
[root@centos7 ~]# grub2-mkconfig -o /etc/grub2.cfg
[root@centos7 ~]# reboot
grub2 故障处理
MBR 组成回顾
主引导扇区由三个部分组成:

- 引导程序(占446个字节),硬盘启动时将系统控制权转给分区表中的某个操作系统。
- 磁盘分区表项(DPT,Disk Partition Table),由四个分区表项构成(每个16个字节)。
- 结束标志(占2个字节),其值为AA55(十六进制)。
故障1:grub 引导程序故障
光盘重装引导程序
环境准备
bash
[root@centos7 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
**效果如下:**系统无法从硬盘启动,则会尝试使用其他设备启动。

**解决思路:**使用光盘启动,并重新安装引导程序。
解决过程:
-
开机从光盘启动,并选择
Troubleshooting。
-
选择
Rescue a CentOS system
-
稍等片刻,进入选择界面,选择
1。搜索到系统后,提示系统已经挂载在/mnt/sysimage,按回车继续。
-
切换root目录,并确保root文件系统是读写挂载。
bashsh-4.2# chroot /mnt/sysimage bash-4.2# mount | grep root /dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota ) -
确认系统启动分区所在磁盘。

-
安装引导程序。
bashbash-4.2# grub2-install /dev/sda Installing for i386-pc platform. Installation finished. No error reported. -
输入
exit两次重启系统:第一次exit,退出chroot环境;第二次exit,退出系统。bashbash-4.2# exit sh-4.2# exit
故障2:引导文件丢失
环境准备
bash
[root@centos7 ~]# mv /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64{,.ori}
[root@centos7 ~]# reboot
**效果如下:**系统无法启动,提示/vmlinuz-4.18.0-553.el8_10.x86_64文件找不到。

**解决思路:**使用光盘启动,并从起位置恢复相应文件。
解决过程:
-
参考 **<< grub 引导程序故障 >>**处理流程,获取root权限shell。
-
恢复文件。(从其他系统复制过来,从rpm包提取等)
-
输入
exit两次继续启动系统。
故障处理总结
通过光盘启动的目的是将硬盘上的系统挂载到内存中,并进行修复。
我们也可以通过U盘启动盘启动或者将故障磁盘拔下来挂载到其他系统。
思考
如何避免别人获得磁盘后,读取磁盘中数据?
答案:对硬盘加密。

效果:
-
系统启动的时候,必须输入密码才能读取,硬盘中数据。

-
修复磁盘的时候,同样需要输入密码。

**提示:**该加密操作不会加密grub2系统选择菜单,也就是/boot目录中数据。
如何手动加密数据盘?
假设需要加密的块设备为sdb1。
步骤如下:
- LUKS 依赖
cryptsetup工具,安装命令:
bash
yum install cryptsetup -y
- 初始化 LUKS 加密分区:对目标分区(如
/dev/sdb1)进行 LUKS 初始化,设置加密密钥(密码):
bash
cryptsetup luksFormat /dev/sdb1
- 执行后会提示警告("WARNING! This will overwrite data on /dev/sdb1 irrevocably."),输入
YES确认。 - 随后设置加密密码(建议复杂度高,至少 8 位,包含大小写、数字和特殊字符)。
注意:此操作会清除分区原有数据,需提前备份!
- 打开(映射)加密分区:初始化后,需将加密分区映射到一个临时设备(如
crypt_disk),才能进行格式化和挂载:
bash
cryptsetup open /dev/sdb1 crypt_disk
- 输入步骤 2 中设置的密码,验证通过后,会生成映射设备
/dev/mapper/crypt_disk。
- 格式化映射设备:对映射后的设备格式化文件系统(如 ext4 或 xfs):
bash
mkfs.xfs /dev/mapper/crypt_disk # 或 mkfs.ext4 /dev/mapper/crypt_disk
- 挂载加密分区
bash
mkdir /mnt/encrypted
mount /dev/mapper/crypt_disk /mnt/encrypted
此时即可像使用普通分区一样在 /mnt/encrypted 目录读写数据。
- 卸载与关闭加密分区
bash
umount /mnt/encrypted
cryptsetup close crypt_disk # 关闭映射,加密分区恢复不可访问状态
- 开机自动挂载加密分区(可选)
若需开机自动挂载,需配置 /etc/crypttab 和 /etc/fstab:
7.1 获取 LUKS 分区的 UUID
bash
blkid /dev/sdb1 # 记录 UUID 字段(如 "UUID=xxxx-xxxx-xxxx")
7.2 编辑 /etc/crypttab,添加映射信息:
bash
echo "crypt_disk UUID=xxxx-xxxx-xxxx none luks" >> /etc/crypttab
格式:[映射名] [加密分区UUID] [none表示手动输入的密码 或 密钥文件路径] [luks]
7.3 编辑 /etc/fstab,添加自动挂载信息:
bash
echo "/dev/mapper/crypt_disk /mnt/encrypted xfs defaults 0 0" >> /etc/fstab
若希望自动输入密码(无需手动交互) ,可将密码存入密钥文件(如 /root/luks_key),并在 /etc/crypttab 中指定该文件路径(需设置文件权限为 600)。
- 生成密钥
bash
[root@server ~ 13:48:03]# ssh-keygen
Generating public/private rsa key pair.
#生成密钥文件的路径:/root/luks_key
Enter file in which to save the key (/root/.ssh/id_rsa): '/root/luks_key'
#输入设置的密码
Enter passphrase (empty for no passphrase): '密码'
Enter same passphrase again: '密码'
Your identification has been saved in /root/luks_key.
Your public key has been saved in /root/luks_key.pub.
The key fingerprint is:
SHA256:+0dadX7shLjSZKq1r/KVeRzsGFPx5bgqS4lGVQlyNEw root@server.lzh.cloud
The key's randomart image is:
+---[RSA 2048]----+
| .+E.... .|
| o.o. =.|
| . o o|
| . o...|
| S oo+= |
| . o .*X..=|
| + =O*.+o.|
| ..++=+. .|
| .+*=. |
+----[SHA256]-----+
- 更改密钥文件权限
bash
[root@server ~ 14:01:17]# chmod 600 /root/luks_key
-
将密钥文件添加到LUKS加密设备(关键步骤,否则密钥文件无效):
cryptsetup luksAddKey /dev/sdb1 /root/luks_key
执行后需输入原LUKS加密密码(初始化时设置的密码),验证通过后,密钥文件将被添加为合法解密方式。
-
重启测试,无需密码直接进入
bashreboot
ty for no passphrase): '密码'
Enter same passphrase again: '密码'
Your identification has been saved in /root/luks_key.
Your public key has been saved in /root/luks_key.pub.
The key fingerprint is:
SHA256:+0dadX7shLjSZKq1r/KVeRzsGFPx5bgqS4lGVQlyNEw root@server.lzh.cloud
The key's randomart image is:
±--[RSA 2048]----+
| .+E... .|
| o.o. =.|
| . o o|
| . o...|
| S oo+= |
| . o .X...=|
| + =O .+o.|
| ...++=+. .|
| .+*=. |
±---[SHA256]-----+
2. 更改密钥文件权限
```bash
[root@server ~ 14:01:17]# chmod 600 /root/luks_key
-
将密钥文件添加到LUKS加密设备(关键步骤,否则密钥文件无效):
cryptsetup luksAddKey /dev/sdb1 /root/luks_key
执行后需输入原LUKS加密密码(初始化时设置的密码),验证通过后,密钥文件将被添加为合法解密方式。
-
重启测试,无需密码直接进入
bashreboot