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

  • A+
所属分类:linux技术
摘要

1.启动机器,按方向键让系统停留在grub选择界面
2.选择默认启动的启动项(有的系统可能有多个),然后按“e”进入编辑


按启动时间分三个阶段,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、单用户模式修改密码之后
提前获得命令行控制权的几种方法