TTY Autologin: Difference between revisions
m (→Prerequisites: Use pkg template.) |
(use single "apk add" command to install packages) |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
=By using agetty= | |||
== How == | == How == | ||
# Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/ | Install {{pkg|agetty}}: {{cmd|# apk add agetty}} | ||
# Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login | Edit {{path|/etc/inittab}} to use agetty<br> | ||
Example for the virtual terminal tty1:<br> | |||
<code>tty1::respawn:/sbin/agetty --autologin root tty1 linux</code> | |||
Example inittab entry for a serial terminal on ttys01:<br> | |||
<code>ttyS0::respawn:/sbin/agetty --autologin root ttyS0 vt100</code> | |||
{{tip|You can change the `tty1` or `ttyS0` to a different serial port or virtual terminal as you please. `root` can be changed to a different user as well. Finally the terminal type (`linux` and `vt100` in our examples) can be changed to a wide variety of serial terminals.}} | |||
=By compiling your own autologin wrapper= | |||
== How == | |||
# Writing a wrapper, called autologin, around {{path|/bin/login}} and moving it in {{path|/usr/sbin/}} | |||
# Editing {{path|/etc/inittab}} specifying the use of {{path|/usr/sbin/autologin}} instead of {{path|/bin/login}} | |||
== Prerequisites == | == Prerequisites == | ||
* A C compiler | * A C compiler (e.g. '''''{{pkg|gcc}}''''' or '''''{{pkg|tcc}}''''') | ||
* The '''''{{pkg|musl-dev}}''''' package which contains the C standard library | * The '''''{{pkg|musl-dev}}''''' package which contains the C standard library | ||
==== Example on how to assolve the prerequisites: ==== | ==== Example on how to assolve the prerequisites: ==== | ||
{{Cmd| | {{Cmd|# apk add gcc musl-dev}} | ||
== Writing the autologin.c program == | == Writing the autologin.c program == | ||
Create a file | Create a file in this example called autologin.c | ||
{{cat|autologin.c|#include <unistd.h> | |||
{{ | |||
int main() | int main() | ||
Line 28: | Line 36: | ||
}} | }} | ||
The | The program makes a system call to execute the ''login'' binary (part of busybox) which will be searched in $PATH. | ||
As parameters are passed: | As parameters are passed: | ||
Line 35: | Line 43: | ||
== Compiling the autologin.c program == | == Compiling the autologin.c program == | ||
If using | If using gcc: | ||
{{Cmd| | {{Cmd|# gcc -o autologin autologin.c }} | ||
Move the binary autologin to /usr/sbin | Move the binary autologin to {{path|/usr/sbin}} | ||
{{Cmd| | {{Cmd|# mv autologin /usr/sbin/}} | ||
== Editing /etc/inittab == | == Editing /etc/inittab == | ||
Open | Open {{path|/etc/inittab}} | ||
{{ | |||
replace "'':respawn:/sbin/getty''" with "'':respawn:/sbin/getty -n -l /usr/sbin/autologin''" for each TTY you want to enable autologin. | replace "'':respawn:/sbin/getty''" with "'':respawn:/sbin/getty -n -l /usr/sbin/autologin''" for each TTY you want to enable autologin. | ||
* The getty's '''-n''' flag do not prompt the user for a login name | * The getty's '''-n''' flag do not prompt the user for a login name | ||
* The getty's '''-l''' flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin | * The getty's '''-l''' flag invokes a custom login instead of {{path|/bin/login}}; in our case it is set to invoke {{path|/usr/sbin/autologin}} | ||
==== Note ==== | ==== Note ==== | ||
To perform such a replacement on all TTYs, the following command can be used: | To perform such a replacement on all TTYs, the following command can be used: | ||
{{Cmd| | {{Cmd|# sed -i 's@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g' /etc/inittab }} | ||
* "'''@'''" is used as a delimiter | * "'''@'''" is used as a delimiter | ||
* The '''-i''' flag edits the file in-place | * The '''-i''' flag edits the file in-place | ||
== Cleaning up == | == Cleaning up == | ||
It is possible to remove the autologin.c file, the C compiler and the | It is possible to remove the autologin.c file, the C compiler and the {{pkg|musl-dev}} package | ||
{{ | |||
== References == | == References == | ||
* [https://git.busybox.net/busybox/tree/init/init.c Busybox init source, substantial comments documenting /etc/inittab are at the bottom] | |||
* [http://littlesvr.ca/linux-stuff/articles/autologinconsole/autologinconsole.php Linux-Stuff: Log in automatically to a console when Linux boots] | |||
* [https://wiki.gumstix.com/index.php/AutoLogin AutoLogin - Gumstix User Wiki] | |||
* [https://busybox.net/downloads/BusyBox.html#getty Busybox getty arguments] | |||
* [https://github.com/util-linux/util-linux/blob/master/term-utils/agetty.8.adoc agetty(8) Manual Page] |
Latest revision as of 21:25, 16 September 2023
By using agetty
How
Install agetty:
# apk add agetty
Edit /etc/inittab to use agetty
Example for the virtual terminal tty1:
tty1::respawn:/sbin/agetty --autologin root tty1 linux
Example inittab entry for a serial terminal on ttys01:
ttyS0::respawn:/sbin/agetty --autologin root ttyS0 vt100
By compiling your own autologin wrapper
How
- Writing a wrapper, called autologin, around /bin/login and moving it in /usr/sbin/
- Editing /etc/inittab specifying the use of /usr/sbin/autologin instead of /bin/login
Prerequisites
Example on how to assolve the prerequisites:
# apk add gcc musl-dev
Writing the autologin.c program
Create a file in this example called autologin.c
Contents of autologin.c
The program makes a system call to execute the login binary (part of busybox) which will be searched in $PATH.
As parameters are passed:
- -f flag which stands for "Do not authenticate (user already authenticated)"
- username in this example is root but if you created a new user, its username can be used instead.
Compiling the autologin.c program
If using gcc:
# gcc -o autologin autologin.c
Move the binary autologin to /usr/sbin
# mv autologin /usr/sbin/
Editing /etc/inittab
Open /etc/inittab
replace ":respawn:/sbin/getty" with ":respawn:/sbin/getty -n -l /usr/sbin/autologin" for each TTY you want to enable autologin.
- The getty's -n flag do not prompt the user for a login name
- The getty's -l flag invokes a custom login instead of /bin/login; in our case it is set to invoke /usr/sbin/autologin
Note
To perform such a replacement on all TTYs, the following command can be used:
# sed -i 's@:respawn:/sbin/getty@:respawn:/sbin/getty -n -l /usr/sbin/autologin@g' /etc/inittab
- "@" is used as a delimiter
- The -i flag edits the file in-place
Cleaning up
It is possible to remove the autologin.c file, the C compiler and the musl-dev package