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

From ArchWiki
Jump to: navigation, search
m (inittab)
m
(20 intermediate revisions by 2 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]]
 +
[[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|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.
+
È possibile utilizzare un [[Display Manager (Italiano)|display manager]] per fornire all'utente una schermata di login ed avviare automaticamente il [[Xorg (Italiano)|server X]]. Questo articolo spiegherà come avviarlo usando un virtual terminal esistente.
 
+
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]].
+
 
+
==bash_profile==
+
 
+
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}}).
+
{{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):
+
 
+
{{hc|~/.bash_profile|<nowiki>
+
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
+
  exec startx
+
fi
+
</nowiki>}}
+
 
+
O con una richiesta esplicita:
+
 
+
{{hc|~/.bash_profile|<nowiki>
+
+
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
+
</nowiki>}}
+
 
+
Usando questo metodo, l'utente verrà automaticamente disconnesso quando X viene terminato. Per evitare questo comportamento, rimuovere il comando {{ic|exec}} dallo script.
+
 
+
{{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==
+
{{Nota|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:
+
Per avviare manualmente X, è necessario utilizzare {{ic|startx}}il quale eseguirà il file {{ic|~/.xinitrc}}, che potrà essere personalizzato per avviare il window manager scelto, come descritto nell'articolo dedicato a [[Xinitrc (Italiano)|xinitrc]].
  
* L'opzione {{ic|-}} invoca una "shell di login" aggiungendo un trattino (-) al suo nome.
+
==file del profilo della shell==
* 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:
+
{{Nota|La seguente procedura avvierà X nella stessa console virtuale usata per il login, condizione necessaria affinchè la sessione di login sia mantenuta.}}
  
startx -- -nolisten tcp -br -deferglyphs 16
+
* Se si utilizza [[Bash (Italiano)|Bash]], aggiungere quanto segue in fondo al proprio {{ic|~/.bash_profile}}. Se il file non esiste se ne recuperi una copia da {{ic|/etc/skel/.bash_profile}}.
 +
* Se si usa [[Zsh|Zsh]] si aggiunga quanto sotto al proprio {{ic|~/.zprofile}}.
  
È possibile ripetere l'intera procedura per più utenti, usando runlevels differenti:
+
<nowiki>[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx</nowiki>
  
x1:4:once:/bin/su - -- PREFERRED_USER1 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
+
{{Nota|È possibile sostituire il confronto {{ic|-eq 1}} con uno simile a {{ic|-le 3}} (per le tty da 1 a 3) se si vuole utilizzare il login grafico su piu di una tty.}}
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]]:
+
{{Nota|Il server X deve essere eseguito sulla stessa tty dove si è effettuato il login per mantenere la sessione aperta da logind. Questo comportamento è configurato di default nel file {{ic|/etc/X11/xinit/xserverrc}}.}}
  
# (0) Arch Linux
+
==Suggerimenti==
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
+
* Il metodo appena presentato può essere combinato con [[Automatic login to virtual console (Italiano)|il login automatico da console virtuale]].
title  Arch Linux USER2
+
* Se si desidera mantenere il login su TTY quando la sessione di X viene terminata, si rimuova {{ic|exec}}.
root  (hd0,0)
+
* Per redirigere l'output della sessione di X su un file, si crei un [[Bash (Italiano)#Alias|alias]]:
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]).}}
+
alias startx='startx &> ~/.xlog'

Revision as of 16:39, 25 November 2012

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 end

È possibile utilizzare un display manager per fornire all'utente una schermata di login ed avviare automaticamente il server X. Questo articolo spiegherà come avviarlo usando un virtual terminal esistente.

Per avviare manualmente X, è necessario utilizzare startxil quale eseguirà il file ~/.xinitrc, che potrà essere personalizzato per avviare il window manager scelto, come descritto nell'articolo dedicato a xinitrc.

file del profilo della shell

Nota: La seguente procedura avvierà X nella stessa console virtuale usata per il login, condizione necessaria affinchè la sessione di login sia mantenuta.
  • Se si utilizza Bash, aggiungere quanto segue in fondo al proprio ~/.bash_profile. Se il file non esiste se ne recuperi una copia da /etc/skel/.bash_profile.
  • Se si usa Zsh si aggiunga quanto sotto al proprio ~/.zprofile.
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
Nota: È possibile sostituire il confronto -eq 1 con uno simile a -le 3 (per le tty da 1 a 3) se si vuole utilizzare il login grafico su piu di una tty.
Nota: Il server X deve essere eseguito sulla stessa tty dove si è effettuato il login per mantenere la sessione aperta da logind. Questo comportamento è configurato di default nel file /etc/X11/xinit/xserverrc.

Suggerimenti

  • Il metodo appena presentato può essere combinato con il login automatico da console virtuale.
  • 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'