Difference between revisions of "Start X at Login (Italiano)"
(fixed heading levels; updated to new templates; added templates) |
m (→Metodo /etc/inittab: fixing a broken template usage) |
||
Line 90: | Line 90: | ||
x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' | x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' | ||
− | e inserire due voci nel {{/boot/grub/menu.lst}} di [[GRUB]]: | + | e inserire due voci nel {{ic|/boot/grub/menu.lst}} di [[GRUB]]: |
# (0) Arch Linux | # (0) Arch Linux |
Revision as of 02:58, 1 December 2011
Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end
Introduzione
Tipicamente, i comandi startx
o xinit
sono usati per avviare X in modo manuale. Entrambi eseguiranno il contenuto del file ~/.xinitrc
, che può essere personalizzato per avviare il window manager di vostra scelta, come descritto nell'articolo xinitrc.
La maggior parte degli utenti che desiderano inizializzare un server X in fase di boot installano un gestore di login grafico: si veda Display Manager per i dettagli.
Usando il #Metodo ~/.bash_profile, X verrà avviato una volta che si è fatto il login ad una tty. Il #Metodo /etc/inittab consente di avviare X automaticamente, senza che venga richiesta una password.
Metodi
Metodo ~/.bash_profile
Una via alternativa all'utilizzo di un login manager è quella di aggiungere questo codice in fondo al vostro ~/.bash_profile
presente nella vostra home (se questo file non esiste, dovrete crearlo. Se si sta usando Zsh come shell predefinita, si aggiungano invece le righe seguenti al proprio ~/.zprofile
).
~/.bash_profile
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec startx # È possibile usare xinit invece di startx # exec xinit -- /usr/bin/X -nolisten tcp vt7 fi
oppure, con controlli addizionali (se la tty1, accessibile con Template:Keypress, riporta un messaggio d'errore):
~/.bash_profile
if [[ -z $DISPLAY ]] && ! -e /tmp/.X11-unix/X0 ]] && (( EUID )); then exec startx fi
O con una richiesta esplicita:
~/.bash_profile
if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]] && (( EUID )); then while true; do read -p 'Do you want to start X? (y/n): ' case $REPLY in [Yy]) exec xinit -- /usr/bin/X -nolisten tcp vt7 ;; [Nn]) break ;; *) printf '%s\n' 'Please answer y or n.' ;; esac done
Usando questo metodo, l'utente verrà automaticamente disconnesso quando X viene terminato. Per evitare questo comportamento, rimuovere il comando exec
dallo script.
Metodo /etc/inittab
Un altro metodo è quello di inizializzare direttamente X con il vostro DE\WM preferito, senza richiesta di nessun login, e lo si può fare editando con permessi di root, il file /etc/inittab
in questo modo:
id:3:initdefault: [...] x:5:respawn:/usr/bin/xdm -nodaemon
in:
id:5:initdefault: [...] x:5:once:/bin/su - -- PREFERRED_USER -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
L'opzione - invoca una "shell di login" aggiungendo un trattino (-) al suo nome. Dal momento che è stato specificata l'esecuzione di un comando con lo switch -c, la shell sarà avviata in "modalità non interattiva". Bash non effettua il normale processo di login in modalità non interattiva a meno che non sia costretto a farlo con lo switch -l. L'opzione -- assicura che gli switch -l e -c siano passati alla shell, invece che a su. Questi workarounds sono necessari a causa della combinazione tra Gnu su e Bash; si veda a tal proposito "su 5.2.1 does not invoke bash as a login shell".
Lo standard input deve essere rediretto (</dev/null 2>&1
) se Getty o qualche altro programma è ancora in uso sulla console, altrimenti potrebbero verificarsi conflitti tra più programmi che si "rubano" a vicenda l'output della console.
È altresì possibile redirigere l'output a /dev/null per evitare che X scriva i suoi messaggi in console.
Il campo once
, può essere cambiato in respawn
per far sì che X venga riavviato dopo la sua chiusura.
Il comando startx
può essere modificato secondo le proprie necessità. Di seguito, alcuni esempi:
startx -- -nolisten tcp -br -deferglyphs 16
È possibile ripetere l'intera procedura per più utenti, usando runlevels differenti:
x1:4:once:/bin/su - -- PREFERRED_USER1 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
e inserire due voci nel /boot/grub/menu.lst
di GRUB:
# (0) Arch Linux title Arch Linux USER1 root (hd0,0) kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 4 initrd /initramfs-linux.img
# (1) Arch Linux title Arch Linux USER2 root (hd0,0) kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 5 initrd /initramfs-linux.img
-l
(si veda qui).