Automatic login to virtual console (Italiano)

From ArchWiki
Revision as of 08:24, 20 August 2012 by Umby213 (Talk | contribs) (Mingetty: rimossa nota e allineata pagina)

Jump to: navigation, search
Sommario help replacing me
Descrive come accedere automaticamente a una consolle virtuale.
Articoli correlati
Display Manager (Italiano)
Start X at Boot (Italiano)

Questo articolo descrive come accedere automaticamente a una “consolle virtuale” o tty alla fine del processo di boot. Questo articolo tratta solamente dell'accesso alla consolle; i metodi per avviare il server X sono descritti in Start X at Boot.

Initscript

Agetty

Questo è il metodo migliore e più "pulito". Modificare così le righe di /etc/inittab:

/etc/inittab
c1:2345:respawn:/sbin/agetty -a USERNAME -8 -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

per avere un autologin al boot dell'utente USERNAME sulla prima console (tty1).

Se invece si vuole un login automatica, ma si vuole comunque digitare la password, la riga da aggiungere a /etc/inittab è la seguente:

c1:2345:respawn:/sbin/agetty -a USERNAME -o "-- \u" -8 -s 38400 tty1 linux

Mingetty

Nota: Sebbene sia una derivata di mingetty, fgettyAUR non supporta il parametro --autologin

Installare il pacchetto mingetty dai repository ufficiali. Mingetty è progettato per essere un getty minimale e per permettere login automatici. Poi bisogna cambiare /etc/inittab in:

/etc/inittab
c1:2345:respawn:/sbin/mingetty --autologin USERNAME tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

Con questo metodo non sarà possibile uscire da tty1, in quanto si accederà di nuovo all'infinito. Se si desidera che l'accesso automatico avvenga solo all'avvio, e che sia possibile uscire, è possibile modificare /etc/inittab in questo modo

/etc/inittab
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux
a1:2345:wait:/sbin/mingetty --autologin USERNAME tty1 linux
c1:2345:respawn:/sbin/agetty -8 -s 38400 tty1 linux

Usare un programma di accesso in C

Come alternativa può essere scritto un programma di accesso in C:

autologin.c
#include <unistd.h>

int main(void) {
   execlp("login", "login", "-f", "USERNAME", NULL);
}

Qui la funzione in C execlp esegue il comando login -f USERNAME.

Il programma deve essere compilato e copiato in una posizione appropriata:

$ gcc -o autologin autologin.c
# cp autologin /usr/local/sbin/

Alla fine modificare etc/inittab in questo modo:

/etc/inittab
c1:2345:respawn:/sbin/agetty -n -l /usr/local/sbin/autologin -s 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux

Usare systemd

Creare un nuovo servizio tipo getty@.service e copiarlo in /etc/systemd/system/

# cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Nota: /etc/systemd/system/ ha la precedenza su /usr/lib/systemd/system/

Una volta creato creare un link dal nuovo autologin@.service al "target" scelto: tty, e.g. tty1, tty2, .., tty8, etc.

#ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service

Aprire autologin@.service con un editor di testo e modificare le righe ExecStart e rimuovere la riga Type=idle o cambiarla in Type=simple:

/etc/systemd/system/autologin@.service
[Service]
[...]
ExecStart=-/sbin/agetty --noclear -a USERNAME %I 38400
Type=idle
[...]

L'idea che sta alla base di Type=simple è di permettere un leggero ritardo per l'esecuzione di agetty fino a che tutti i processi non siano completati. Vedere man systemd.service per ulterioti informazioni.

Per questioni di sicurezza potrebbe essere consigliabile cambiare Restart=always in Restart=no.

Infine, ricaricare il demone e avviare il servizio:

# systemctl daemon-reload
# systemctl start getty@tty1.service