提前获得命令行控制权的几种方法
Published on 2021-05-11 19:28 in 分类: linux相关 with 北樟有棵蓝花楹
分类: linux相关

提前获得命令行控制权的几种方法

按启动时间分三个阶段,rdshell, init, single user。

1、在change root之前,用rd.shell, rd.shell比init更早的停下来,但支持的命令更少。 方法:

此方法,因change root之前,系统中的文件就是解开后的 initrd的文件。
1、centos/rhel 7 及之后:
在grub中加入: rd.break (必须同时加入rd.debug 才生效)
2、 centos/rhel 6
在grub中加入: rdbreak
3、centos/rhel 5不支持!
4、补充:
在内核启动参数中, 加入:
rdinfo: 在quiet模式下输出内核启动过程更多信息
rdshell: mount root fs失败后, 转到ramfs中的sh
rdinitdebug: 输出更多的调试信息到/init.log
rdbreak:initrd初始化结束后,停止下来。
rdbreak=cmdline 在处理cmdline时就停下来。
rdbreak=pre-udev 在udev之前就停下来。
rdbreak=pre-trigger
rdbreak=initqueue
rdbreak=pre-mount 在mount之前就停下来。
rdbreak=mount 在mount的时候亭下来。
rdbreak=pre-pivot
请参见: https://linux.die.net/man/8/dracut
以centos6为例:

1.启动机器,按方向键让系统停留在grub选择界面

2.选择默认启动的启动项(有的系统可能有多个),然后按“e”进入编辑

3.在grub里面添加rdbreak,按enter确认(其它系统可能不一样,可能是Ctrl + X)

4.按“b”启动(其它系统可能有所不同)

5.如下图就是成功了

2: change root之后,不做正常的启动,立刻执行一个shell,方法是在grub中加入下面参数之一:

适用于centos/rhel 5\6\7 ubuntu 12.04
init=/bin/sh
init=/bin/bash
加上init=/bin/sh(用ramdisk中的sh)或者init=/sysroot/bin/sh(root文件系统mount到了/sysroot)
还是以centos6为例

1.前面步骤和上面一样,在grub参数中添加“init=/bin/sh”

2.回车保存,按“b”启动,如下图

3: 单用户模式。启动得更晚。方法:

在grub中加入:
single 或s 或 1 或 linux single
suse 进入单用户方法:
启动grub时候选择 Failsave, 下面的“boot option“内bai容全部删除,写入duinit=/bin/bash,进入单用户模式。
依旧以centos6为例

1.前面步骤同上,在grub参数中加入single

2.回车保存,按“b”启动,如下图

PS:

1、显示乱码问题

2、单用户模式修改密码之后

posted @   北樟有棵蓝花楹  阅读(955)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示