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

按启动时间分三个阶段,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 @ 2021-05-11 19:28  北樟有棵蓝花楹  阅读(773)  评论(0编辑  收藏  举报