Difference between revisions of "Start X at Login (Italiano)"

From ArchWiki
Jump to: navigation, search
m
m
(30 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:X Server (Italiano)]]
 
[[Category:X Server (Italiano)]]
 
[[Category:Boot process (Italiano)]]
 
[[Category:Boot process (Italiano)]]
{{i18n|Start X at Boot}}
+
[[en:Start X at Boot]]
 +
[[es:Start X at Boot]]
 +
[[fr:Startx]]
 +
[[hu:Start X at Boot]]
 +
[[ja:Start X at Login]]
 +
[[pt:Start X at Boot]]
 +
[[ru:Start X at Boot]]
 +
[[th:Start X at Boot]]
 +
[[zh-CN:Start X at Boot]]
 
{{Article summary start|Sommario}}
 
{{Article summary start|Sommario}}
{{Article summary text|Tratta i metodi .bash_profile ed inittab per inizializzare un [[Xorg (Italiano)|X server]] durante la fase di boot.}}
+
{{Article summary text|Come avviare X automaticamente dopo il login su una tty.}}
 
{{Article summary heading|Articoli collegati}}
 
{{Article summary heading|Articoli collegati}}
 +
{{Article summary wiki|systemd/User (Italiano)}}
 +
{{Article summary wiki|Automatic login to virtual console (Italiano)}}
 
{{Article summary wiki|Display Manager (Italiano)}}
 
{{Article summary wiki|Display Manager (Italiano)}}
{{Article summary wiki|Automatic login to virtual console (Italiano)}}
+
{{Article summary wiki|Silent boot}}
 
{{Article summary wiki|xinitrc (Italiano)}}
 
{{Article summary wiki|xinitrc (Italiano)}}
 
{{Article summary end}}
 
{{Article summary end}}
  
La maggior parte degli utenti utilizzano un [[Display Manager (Italiano)|Display manager]] per avviare il server [[Xorg (Italiano)|X]]. Questo articolo tratta due metodi per compiere questa operazione senza l'ausilio di un display manager: il metodo .bash_profile avvierà X una volta effettuato il login in una tty, mentre il metodo inittab farà partire il server grafico automaticamente al boot, senza la necessità di inserire una password.
+
Questo articolo spiega come avviare automaticamente il [[Xorg (Italiano)|Server X]] dopo il login in un terminale virtuale attraverso l'utilizzo del comando {{ic|startx}}, il cui comportamento può essere modificato come riportato nella pagina relativa a [[xinitrc (Italiano)|xinitrc]], ad esempio per scegliere quale [[Window Manager (Italiano)|window manager]] avviare.
  
Per avviare manualmente X, è necessario usare i comandi {{ic|startx}} o {{ic|xinit}}. Entrambi eseguiranno il file {{ic|~/.xinitrc}}, che potrà essere personalizzato per avviare il window manager preferito, come descritto in [[Xinitrc (Italiano)|Xinitrc]].
+
In alternativa, è possibile utilizzare un [[Display Manager (Italiano)|display manager]] per avviare automaticamente X e fornire un login grafico.
  
==bash_profile==
+
==Avviare X automaticamente dopo il login in un terminale virtuale==
  
Una via alternativa all'utilizzo di un login manager è quella di aggiungere questo codice in fondo al vostro {{ic|~/.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 {{ic|~/.zprofile}}).
+
{{Nota|Il comando di cui sotto avvia X nella stessa tty dal quale si effettua il login, condizione necessaria per mantenere la sessione di login.}}
{{hc|~/.bash_profile|<nowiki>
+
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
+
  exec startx
+
  # È possibile usare xinit invece di startx
+
  # exec xinit -- /usr/bin/X -nolisten tcp vt7
+
fi
+
</nowiki>}}
+
  
oppure, con controlli addizionali (se la tty1, accessibile con {{Keypress|Ctrl+Alt+F1}}, riporta un messaggio d'errore):
+
* Se si usa [[Bash (Italiano)|Bash]], aggiungere il comando al proprio {{ic|~/.bash_profile}}.
 +
Se il file non esiste lo si copi da {{ic|/etc/skel/.bash_profile}}.
 +
* Se si usa [[Zsh|Zsh]] aggiungere il comando al file {{ic|~/.zprofile}}
  
{{hc|~/.bash_profile|<nowiki>
+
{{bc|1=<nowiki>
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
+
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
  exec startx
+
fi
+
 
</nowiki>}}
 
</nowiki>}}
  
O con una richiesta esplicita:
+
{{Nota|
 +
* È possibile sostituire {{ic|-eq 1}} con {{ic|-le 3}} (per i vt dal 1 al 3) se si desidera avvalersi del login grafico su più di un terminale virtuale.
 +
* X deve essere sempre avviato dalla stessa tty dove si è effettuato il login, in modo che la sessione di logind venga mantenuta. Questo comportamento è garantito dal file {{ic|/etc/X11/xinit/xserverrc}}.}}
  
{{hc|~/.bash_profile|<nowiki>
+
* Se si utilizza la [[Fish|Fish]] shell, è necessario aggiungere quanto segue in fondo al proprio {{ic|~/.config/fish/config.fish}}
+
 
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
+
{{bc|1=<nowiki>
while true; do
+
# start X at login
read -p 'Do you want to start X? (y/n): '
+
if status --is-login
case $REPLY in
+
    if test -z "$DISPLAY" -a $XDG_VTNR = 1
  [Yy]) exec xinit -- /usr/bin/X -nolisten tcp vt7 ;;
+
        exec startx
  [Nn]) break ;;
+
    end
  *) printf '%s\n' 'Please answer y or n.' ;;
+
end
esac
+
done
+
 
</nowiki>}}
 
</nowiki>}}
  
Usando questo metodo, l'utente verrà automaticamente disconnesso quando X viene terminato. Per evitare questo comportamento, rimuovere il comando {{ic|exec}} dallo script.
+
==Suggerimenti==
 
+
{{Nota|Questo metodo può essere combinato con [[Automatic login to virtual console (Italiano)|automatic login to virtual console]] di modo che si comporti in modo simile al metodo inittab, con la differenza che questo registrerà correttamente la vostra sessione e funzionerà con [[ConsoleKit|consolekit]].}}
+
{{Attenzione|Si noti che vi è una importante differenza in termini di sicurezza tra usare un login manager o il semplice startx. Quando si usa startx, si è sempre in grado di passare da X (solitamente avviato sulla tty7) alla console testuale ({{Keypress|Ctrl+Alt+F1}}), ottenendo così il controllo sulla shell utente anche quando lo schermo è bloccato (ad esempio via xscreensaver, i3clock {{AUR|alock-svn}} o {{AUR|lualock-git}}). Una soluzione è quella di sostituire {{ic|exec startx}} con {{ic|exec nohup startx > .xlog & vlock}}. Questo comando avvierà X, redirigerà l'output in {{ic|~/.xlog}} e bloccherà l'accesso alla shell. Naturalmente si dovrà installare {{Pkg|vlock}} affinchè funzioni.}}
+
 
+
==inittab==
+
{{Attenzione|Questo metodo non userà {{ic|/bin/login}}, né registrerà la sessione, percui essa non comparirà nell'output di comandi come {{ic|who}} o {{ic|w}}. Inoltre, la sessione non verrà autorizzata come "locale" da [[ConsoleKit|consolekit]], perciò non sarete in grado di spegnere/riavviare il pc o montare/smontare i drives senza l'ausilio di sudo o su}}
+
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 {{ic|/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'
+
 
+
Per l'utilizzo combinato di GNU [[su|su]] e [[Bash (Italiano)|Bash]] sono richiesti dei workarounds (si veda [http://linux.derkeiler.com/Newsgroups/comp.os.linux.misc/2006-09/msg00666.html su 5.2.1 non invoca bash come una shell di login]):
+
 
+
* Bash non effettua il normale processo di login in modalità non interattiva a meno che non sia costretto a farlo con lo switch {{ic|-l}}. L'opzione {{ic|-c}} rende la shell non interattiva
+
* L'opzione {{ic|--}} assicura che gli switch {{ic|-l}} e {{ic|-c}} siano passati alla shell, invece che a su.
+
 
+
Spiegazione degli altri componenti:
+
 
+
* L'opzione {{ic|-}} invoca una "shell di login" aggiungendo un trattino (-) al suo nome.
+
* Lo standard input deve essere rediretto ({{ic|</dev/null}}) se [[Getty|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 ({{ic|/dev/null 2>&1}}) per evitare che X scriva i suoi messaggi in console.
+
* Il campo {{ic|once}}, può essere cambiato in {{ic|respawn}} per far sì che X venga riavviato dopo la sua chiusura.
+
 
+
Il comando {{ic|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'
+
* Il metodo appena presentato può essere combinato con [[Automatic login to virtual console (Italiano)|il login automatico da console virtuale]].
x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
+
  
e inserire due voci nel {{ic|/boot/grub/menu.lst}} di [[GRUB]]:
+
{{Attenzione|1=Se si utilizza [[PulseAudio (Italiano)|PulseAudio]] ricordarsi di impostare in modo corretto le dipendenze per il servizio di autologin di systemd affinchè dbus sia avviato prima che {{ic|~/.xinitrc}} sia letto. (Si veda [https://bbs.archlinux.org/viewtopic.php?id=155416 BBS#155416]).}}
  
# (0) Arch Linux
+
* Se si desidera mantenere il login su TTY quando la sessione di X viene terminata, si rimuova {{ic|exec}}.
title  Arch Linux USER1
+
* Per redirigere l'output della sessione di X su un file, si crei un [[Bash (Italiano)#Alias|alias]]:
root  (hd0,0)
+
kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 4
+
initrd /initramfs-linux.img
+
  
  # (1) Arch Linux
+
  alias startx='startx &> ~/.xlog'
title  Arch Linux USER2
+
root  (hd0,0)
+
kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 5
+
initrd /initramfs-linux.img
+
  
{{Nota|1=Se si hanno problemi con caratteri non-ASCII nell'X avviato in questo modo, rimuovere lo switch {{ic|-l}} (si veda [https://bugs.gentoo.org/show_bug.cgi?id=339182#c4 qui]).}}
+
* Se si dispone di un file di configurazione del profilo ({{ic|~/.bash_profile}} o {{ic|~/.zprofile}}, ecc.) si inserisca il comando di cui sopra in questi files, in modo che venga eseguito solo se il login avviene correttamente

Revision as of 16:16, 20 June 2013

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 wiki Template:Article summary wiki Template:Article summary end

Questo articolo spiega come avviare automaticamente il Server X dopo il login in un terminale virtuale attraverso l'utilizzo del comando startx, il cui comportamento può essere modificato come riportato nella pagina relativa a xinitrc, ad esempio per scegliere quale window manager avviare.

In alternativa, è possibile utilizzare un display manager per avviare automaticamente X e fornire un login grafico.

Avviare X automaticamente dopo il login in un terminale virtuale

Nota: Il comando di cui sotto avvia X nella stessa tty dal quale si effettua il login, condizione necessaria per mantenere la sessione di login.
  • Se si usa Bash, aggiungere il comando al proprio ~/.bash_profile.

Se il file non esiste lo si copi da /etc/skel/.bash_profile.

  • Se si usa Zsh aggiungere il comando al file ~/.zprofile
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
Nota:
  • È possibile sostituire -eq 1 con -le 3 (per i vt dal 1 al 3) se si desidera avvalersi del login grafico su più di un terminale virtuale.
  • X deve essere sempre avviato dalla stessa tty dove si è effettuato il login, in modo che la sessione di logind venga mantenuta. Questo comportamento è garantito dal file /etc/X11/xinit/xserverrc.
  • Se si utilizza la Fish shell, è necessario aggiungere quanto segue in fondo al proprio ~/.config/fish/config.fish
# start X at login
if status --is-login
    if test -z "$DISPLAY" -a $XDG_VTNR = 1
        exec startx
    end
end

Suggerimenti

Attenzione: Se si utilizza PulseAudio ricordarsi di impostare in modo corretto le dipendenze per il servizio di autologin di systemd affinchè dbus sia avviato prima che ~/.xinitrc sia letto. (Si veda BBS#155416).
  • Se si desidera mantenere il login su TTY quando la sessione di X viene terminata, si rimuova exec.
  • Per redirigere l'output della sessione di X su un file, si crei un alias:
alias startx='startx &> ~/.xlog'
  • Se si dispone di un file di configurazione del profilo (~/.bash_profile o ~/.zprofile, ecc.) si inserisca il comando di cui sopra in questi files, in modo che venga eseguito solo se il login avviene correttamente