systemd特性、service脚本、grub2配置文件、centos7破解口令、grub2口令

本文介绍Systemd特性,包括服务并行启动、按需启动、依赖关系管理等。讲解unit概念及配置,服务管理命令如启用、禁用、重启等,以及service脚本组成和关键选项。还涉及target文件、grub2配置、系统启动修改和CentOS7密码破解方法。

*systemd特性

系统引导时实现服务并行启动
按需启动守护进程
自动化的服务依赖关系管理

核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置。文件中主要包含了系统服务、监听socket、保存的系统快照及其他init相关的信息。

/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc#.d/S##的功能,比上面目录优先运行

*systemd管理服务

查看服务当前是否激活的状态
systemctl is-active name.service

设置为开机启动
systemctl enable name.service
实际上就是创建了一个软连接放到/etc/systemd/system/multi-user.target.wants/

取消开机启动
systemctl disable name.service
实际上就是删除了软连接

条件式重启:已启动则重启,否则不操作
systemctl try-restart name.service

重载或重启:先加载,再启动
systemctl reload-or-restart name.service

重载或条件式重启:先加载,再启动
systemctl reload-or-try-restart name.service

禁止自动和手动启动
systemctl mask name.service
执行后会生成软连接指向/dev/null

取消禁止
systemctl unmask name.service

取消禁止
systemctl unmask name.service

*service脚本

service脚本由三部分组成

**[Unit] **

Unit段的常用选项:

Description:描述信息

After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反

Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活

Wants:依赖到的其它units,弱依赖

Conflicts:定义units间的冲突关系

[Service]

Service段的常用选项:

Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中

forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止

oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中

dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行

notify:在启动完成后会发送一个通知消息。还需要配合NotifyAccess 来让Systemd 接收消息

idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务

EnvironmentFile:环境配置文件

ExecStart:指明启动unit要运行命令或脚本的绝对路径

ExecStartPre: ExecStart前运行

ExecStartPost: ExecStart后运行

ExecStop:指明停止unit要运行的命令或脚本

Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务

[Install]

Install段的常用选项:

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖

WantedBy:被哪些units所依赖,弱依赖

Also:安装本服务的时候还要安装别的相关服务

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启
systemctl daemon-reload

*target文件

target就是服务的集合,相当于以前的runlevel,除此之外在centos7中还有其他的target

可以使用命令来切换target
systemctl isolate name.target

*grub2配置文件

grub2的配置文件是/boot/grub2/grub.cfg
通常不修改这个文件,而是通过命令生成

grub2-mkconfig -o /boot/grub2/grub.cfg

此命令会参考/etc/default/grub的设置来生成grub.cfg文件

*启动时临时修改加载的target

在grub菜单编辑里找到linux16,在最后加上systemd.unti=Multi-user.target,按CTRL+X启动

*centos7破解口令之一

1.在grub菜单编辑里找到linux16,加上rd.break,按CTRL+X
2.切根目录,chroot /sysroot
3.passwd root
如果启用了SELinux还需要执行

> /.autorelabel

4.exit

*centos7破解口令之二

1.在grub菜单编辑里找到linux16,加上

rw init=/sysroot/bin/sh

按CTRL+X
2.切根目录,chroot /sysroot
3.passwd root
如果启用了SELinux还需要执行

> /.autorelabel

4.exit

*grub2口令

使用命令grub2-setpassword,输入口令后会生成一个user.cfg文件,里面存着口令

CentOS 7 开机直接进入 GRUB 命令界面时,通常是由于引导配置损坏、系统分区未正确识别或 GRUB 配置文件丢失等问题引起。以下是详细的排查与解决方法。 ### 一、手动引导系统以恢复运行 1. **查找系统分区** 使用 `ls` 命令查看所有可用分区: ``` grub> ls ``` 示例输出为 `(hd0) (hd0,msdos1) (hd0,msdos2)`,需逐一检查每个分区的 `/boot` 目录是否存在: ``` grub> ls (hd0,msdos1)/boot grub> ls (hd0,msdos2)/boot ``` 2. **确定根分区** 通过查看 `fstab` 文件确认根分区位置: ``` grub> cat (hd0,msdos1)/etc/fstab grub> cat (hd0,msdos2)/etc/fstab ``` 找到包含 `/` 挂载点的分区,即为根分区[^1]。 3. **配置引导参数** 设置 GRUB 的根分区并加载内核和 initramfs 文件: ``` grub> set root=(hd0,msdos1) grub> linux /vmlinuz-3.10.0-1160 root=/dev/sda2 grub> initrd /initramfs-3.10.0-1160.img ``` 4. **启动系统** 输入 `boot` 命令启动系统: ``` grub> boot ``` ### 二、重建 GRUB 引导 若手动引导成功但重启后仍进入 GRUB 命令行界面,需重建 GRUB: 1. **进入系统后挂载根分区** 假设根分区为 `/dev/sda2`: ```bash mount /dev/sda2 /mnt mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /run /mnt/run ``` 2. **切换到系统根目录** ```bash chroot /mnt ``` 3. **重新安装 GRUB** 根据 BIOS 启动模式选择对应命令: - **Legacy BIOS 模式**: ```bash grub2-install /dev/sda ``` - **UEFI 模式**: ```bash grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="CentOS" ``` 4. **生成 GRUB 配置文件** ```bash grub2-mkconfig -o /boot/grub2/grub.cfg ``` 5. **退出并重启** ```bash exit reboot ``` ### 三、预防措施与配置建议 - **设置默认运行级别** CentOS 7 默认运行在图形界面(运行级别5),如需开机默认进入命令行模式,可修改默认运行级别: ```bash ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target ``` - **定期备份 GRUB 配置文件** 可定期备份 `/boot/grub2/grub.cfg` 和 `/etc/default/grub`,以防止配置文件损坏导致无法引导。 - **验证 BIOS 启动模式** 确认当前系统使用的是 Legacy BIOS 还是 UEFI 模式,这将影响 GRUB 安装方式和配置文件路径[^3]。 ### 四、常见问题排查 - **硬盘分区编号映射问题** `(hd0,msdos1)` 对应 `/dev/sda1`,`(hd0,msdos2)` 对应 `/dev/sda2`,需注意分区编号与设备名称的映射关系[^4]。 - **内核文件缺失或损坏** 若 `/boot` 分区中缺少 `vmlinuz` 或 `initramfs` 文件,需从安装介质挂载并重新安装内核包。 - **GRUB 配置文件损坏** 若 `/boot/grub2/grub.cfg` 文件损坏,可使用 `grub2-mkconfig` 重新生成。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值