提前获得命令行控制权的几种方法
按启动时间分三个阶段,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、单用户模式修改密码之后
桃李春风一壶酒,江湖夜雨十年灯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用