0%

Linux操作环境target与runlevel等级

在核心载入完毕、完成硬件侦测与驱动载入后,核心会主动调用第一个程序systemd。systemd的主要功能是准备软件执行的环境,包括系统的主机名称、网络设置、语系设置、文件系统及其他服务的启动。所有的动作都会通过systemd的默认启动服务集合/etc/systemd/system/default.target来规划。
默认的操作环境default.target主要项目有:multi-user.target和graphical.target;
使用命令systemctl get-default获取当前的运行级别;
使用命令systemctl set-default [target] 设置系统的默认运行级别

runlevel与systemd的对应关系

System V systemd
init 0 poweroff
init 1 rescue
init [234] multi-user.target
init 5 graphical.target
init 6 reboot

忘记root密码

新版本的systemd,默认的rescue模式无法直接取得root权限,所以无法通过rescue模式重置root密码。可以通过rd.break核心参数来处理,该核心参数是Ram Disk里面的操作系统状态,不能直接取得原本的操作系统环境,还需要chroot的支持。

重置root密码流程

  1. 按下电源启动,进入开机画面后,选择开机菜单,按下e进入编辑模式,找到第一个linux16开头的内容,在末尾添加rd.break,ctrl+x执行开机;

  2. 进入Ram Disk环境,原本的系统被挂载到/sysroot目录下;

    • 首先检查挂载点,找到原系统的挂载目录mount
    • 将系统目录重新挂载为可读写mount -o remount,rw /sysroot
    • 使用chroot切换到根目录chroot /sysroot
    • 重置root密码passwd --stdin root
    • 新建.autorelabel文件touch /.autorelabel 很重要的一步
    • 因为修改了root用户的密码,文件/etc/shadown文件内容发生改变,所以这个文件的SELinux安全文本会被取消,如果没有让系统开机时自动的回复SELinux的安全文本,将会出现无法登陆的问题;
    • 退出/sysroot exit
    • 重启reboot