::respawn:-/bin/sh
Using BR2_ROOTFS_OVERLAY, modify the guest /etc/inittab to contain:
::respawn:-/bin/sh
instead of the default line of form:
console::respawn:/sbin/getty -L console 0 vt100
You can copy the default inittab from output/target/etc/inittab after the build to modify the above line from it.
I found this while studying the examples/inittab in Busybox 1_28_3 and found this, tried it out, and it worked, so it is the best solution I've found so far.
Don't forget the leading dash -, or job control actions such as Ctrl + C don't work as mentioned below.
The leading dash - gets magically parsed by BusyBox' init: https://github.com/mirror/busybox/blob/1_28_3/init/init.c#L439 and sets up the TTY for the command that follows.
BusyBox also appends the - to the beginning or arg[0], which /bin/sh interprets as indicating a login shell, which makes it source some init files such as /etc/profile. See also: https://stackoverflow.com/a/42291142/895245
The following is equivalent since console is the default value:
console::respawn:-/bin/sh
To login as another user by default, you can use instead:
::respawn:-/bin/login -f user0
Here is a sample setup.
Previous answer: getty -l
After almost two years, I've found it! :-)
Using BR2_ROOTFS_OVERLAY, override / create the following files:
/etc/inittab: start from https://github.com/buildroot/buildroot/blob/2018.02/package/busybox/inittab and edit the console line to be:
console::respawn:/sbin/getty -n -L -l /loginroot.sh console 0 vt100
/loginroot.sh:
#!/bin/sh
exec /bin/login root
/bin/login is the default executable if -l is not given. What we did it to create an executable that calls /bin/login with the user root already specified.
This makes init try to log in as the root user by default, and then since the default password is empty (BR2_TARGET_GENERIC_ROOT_PASSWD), it automatically logs in.
This technique basically re-implements the -a <user> option present in Ubuntu 14.04's getty, which BusyBox' implementation doesn't have.
Then, to login as a different user, just run:
/bin/login
Here is a sample setup.
Previous previous answer: console::respawn:/bin/sh
I've asked on the mailing list and Thomas Petazzoni replied that the:
/etc/inittab
should contain:
console::respawn:/bin/sh
instead of:
console::respawn:/sbin/getty -n -L console 0 vt100 # GENERIC_SERIAL
With qemu_x86_defconfig, the inittab is being used by Busybox' init system, due to BR2_INIT_BUSYBOX=y.
This method does have a downside however: just after login, the message shows:
/bin/sh can't access tty; job control turned off
and as advertised, things like Ctrl+C will have no effect.