Test Environment

In order to demonstrate how to use the recovery console, we choose a scene that the disk space is full and the OS cannot boot.

Term Definition
RancherOS v1.4.0
Platform Virtualbox
Root Disk 2GB
CPU 1C
MEM 2GB

Fill up the disk

Start this VM to check disk usage:

/dev/sda1            ext4            1.8G    567.2M      1.2G  32% /opt
/dev/sda1            ext4            1.8G    567.2M      1.2G  32% /mnt
...
...

Fill the remaining space with dd:

$ cd /opt/
$ dd if=/dev/zero of=2GB.img bs=1M count=2000
dd: writing '2GB.img': No space left on device
1304+0 records in
1302+1 records out

$ ls -ahl
total 1334036
drwxr-xr-x    2 root     root        4.0K Jul 19 07:32 .
drwxr-xr-x    1 root     root        4.0K Jul 19 06:58 ..
-rw-r--r--    1 root     root        1.3G Jul 19 07:32 2GB.img

At this point you cannot reboot in the OS, but you can reboot via Virtualbox:

$ shutdown -h now
Failed to write to log, write /var/log/boot/shutdown.log: no space left on device
[            ] shutdown:info: Setting shutdown timeout to 60 (rancher.shutdown_timeout set to 60)
Failed to write to log, write /var/log/boot/shutdown.log: no space left on device
Failed to write to log, write /var/log/boot/shutdown.log: no space left on device
.[            ] shutdown:fatal: Error response from daemon: {"message":"mkdir /var/lib/system-docker/overlay2/7c7dffbed40e7b0ed4c68d5630b17a179751643ca7b7a4ac183e48a767071684-init: no space left on device"}
Failed to write to log, write /var/log/boot/shutdown.log: no space left on device

After rebooting, you will not be able to enter the OS and there will be a kernel panic.

Boot with recovery console

When you can access the bootloader, you should select the Recovery console and press <Tab> to edit:

You need add rancher.autologin=tty1 to the end, then press <Enter>. If all goes well, you will automatically login to the recovery console.

How to recover

We need to mount the root disk in the recovery console and delete some data:

# If you couldn't see any disk devices created under `/dev/`, please try this command:
$ ros udev-settle

$ mkdir /mnt/root-disk
$ mount /dev/sda1 /mnt/root-disk

# delete data previously generated using dd
$ ls -ahl /mnt/root-disk/opt
-rw-r--r--    1 root     root        1.3G Jul 19 07:32 2GB.img
$ rm -f /mnt/root-disk/opt/2GB.img

After rebooting, you can enter the OS normally.