提前获得命令行控制权的几种方法
按启动时间分三个阶段,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 567 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、单用户模式修改密码之后
以上是 提前获得命令行控制权的几种方法 的全部内容, 来源链接: utcz.com/z/519650.html