So I have a bug in a script in my init.d directory and bottom line...I can't completely boot the pi.
How can I boot into runlevel 1 (single user mode) so I can fix the bug?
So I have a bug in a script in my init.d directory and bottom line...I can't completely boot the pi.
How can I boot into runlevel 1 (single user mode) so I can fix the bug?
That's not exactly a way to enter runlevel 1, but there is "safe mode" boot option in raspberry Pi firmware. To enable it, you have to insert a jumper between pins 5 and 6 on P1 (GPIO) header when booting.
If you do this, bootloader will ignore the config.txt
file (except from avoid_safe_mode
option which can be used to disable this feature) and will try to boot kernel_emergency.img
(if available) instead of kernel.img
.
Default kernel_emergency.img
has special emergency initramfs
build in and it will boot to this busybox based OS so that you can fix the problems in your OS manually (or change kernel boot parameters to run runlevel 1 at next boot). Remember to run sync
before powering down since reboot
or shutdown
commands may not work.
add to the end of the line
init=/bin/sh
hit ok, then Esc to boot...... it will boot you in to a command line
# /etc/init.d/mountall.sh
(this will do something)
# mount -n -o remount,rw /
(this will remount / so you can make changes)
now you should be able to edit the init.d config......
Several of the other answers here are now incorrect:
The GPIO jumper pin method was removed from the upstream OS, so it only works now if you're using a NOOBS image
Raspbian Jessie's move to systemd breaks the init=/bin/sh
hack. When you do this, it complains, can't access tty: job control turned off
Fortunately, there is a solution that works, which actually gives real single-user access: add a space and a 1
at the end of cmdline.txt
, right after the rootwait
parameter.
The hold-Shift boot menu doesn't exist with the stock Raspbian Jessie OS image, so you'll have to do this by editing /boot/cmdline.txt
from another computer if you aren't using the NOOBS image.
Cannot open access to console, the root account is locked.
-- did I miss a step? Or did they just increase security at some point? Or... ?
Boot into runlevel 1
$ sudo init 1
After booting into runlevel 1
$ passwd
NOTE: to runlevel 1, change the file /etc/inittab
from id:2:initdefault:
to something similar like: id:1:initdefault: