venerdì 14 gennaio 2011

Accedere alla sessione dal grub evitando i Login Manager

Oggi voglio spiegarvi come riesco ad alternare Openbox e KDE sul netbook senza utilizzare un login manager (gdm, slim o kdm), che alla fin fine ci rubano tempo e, se il pc lo usiamo solo noi, ci sta di intralcio.

È da un poco che uso KDE sul netbook (prima usavo Openbox), e di questo tip segnalatomi da Dieghen89 ne parlavo già sul mio blog quando feci il passaggio di DE. Ora ho trovato il tempo per approfondirlo.

Il tip, come già detto, ci dà il modo di scegliere il DE al grub riuscendo a fare a meno di un login manager. Va detto che le modifiche al inittab valgono anche per altre distro oltre ad Archlinux, e potrete evitare un Login Manager anche se avete un unico DE. Spiego verso la fine.

premessa

Dovete sapere che siamo ad un livello di smanettamento un po' fine a se stesso. Voglio dire, se avete due DE e li alternate spesso, vi conviene un login manager. Io però scelgo di non avere GDM, KDE o SLIM perché non voglio che il sistema carichi un daemon in più per niente, tanto userei l'autologin e visto che ho tempi di boot al di sotto dei 35 secondi, se mai dovessi cambiare ambiente grafico posso riavviare il netbook e sarò operativo in meno di un minuto.

Più di un ambiente grafico senza Login Manager

Ho imparato dalla wiki di Arch, che questa distro non dà una grande importanza ai runlevels, ed è proprio questo che ci dà un vantaggio all'ora di saltare i login manager, per arrivare alla sessione in modo veloce.

Non riporterò tutta l'intera procedura, dato che sulla wiki di Arch è spiegata molto bene e in chiaro. Vi spiegherò però in cosa consiste.

Praticamente, noi non faremo altro che indicare - nella voce del GRUB - a quale runlevel vogliamo accedere, dopodiché il file /etc/inittab si occuperà di fare l'auto-login (non dovremo mettere nessuna password) e avvierà il Desktop Manager indicato nel file .xinitrc. In quest'ultimo file, a seconda del runlevel in cui ci troviamo, verrà avviato il DE scelto (KDE o Openbox).

Quindi le cose da ritoccare saranno 3, il file inittab, il file .xinitrc - che si trova dentro la home - e la voce del grub: /boot/grub/menu.lst.

Risultato: vi ritroverete dritti dentro la sessione come se avreste messo l'auto autenticazione nel login manager, ma - con la differenza - che risparmierete il tempo perso da gdm, slim o kdm.

Passi da seguire

Prima applicate queste modifiche "Start X at boot: etc/inittab". Nel mio caso devo cambiare il suddetto file in questo modo(ovviamente in NOMEUTENTE va il vostro):
id:5:initdefault:
[...]
x:45:once:/bin/su NOMEUTENTE -l -c "/bin/bash --login -c xinit >/dev/null 2>&1"

Ora tocca fare la modifica dentro .xinitrc, Xinitrc at start up, nel mio caso:
rl=$(runlevel | grep -o [0-6])

case $rl in
  4) exec dbus-launch --exit-with-session ck-launch-session openbox-session;;
  5) exec dbus-launch ck-launch-session startkde;;
esac

dopodiché modifico il grub come indicato. Anzi, replico la voce che ho già, ma aggiungo il numero del runlevel. Nel mio caso ho aggiunto due voci, una con il numero 4 e l'altra con il numero 5. Quest'ultima avvia la sessione di KDE, mentre la prima quella di openbox (come indicato nel file .xinitrc) Ecco l'interno di /boot/grub/menu.lst
[...]
#Kernel-Netbook
title kernel-netbook KDE
root (hd0,0)
kernel /boot/vmlinuz-netbook root=/dev/sda1 elevator=noop rootfstype=ext4 ro 5 quiet

#Kernel-Netbook
title kernel-netbook Openbox
root (hd0,0)
kernel /boot/vmlinuz-netbook root=/dev/sda1 elevator=noop rootfstype=ext4 ro 4 quiet
[...]

come potrete notare quello che avvia kde ha il runlevel 5 mentre quello che avvia openbox ha il runlevel 4.

Ricapitolando

Una volta caricato il kernel e i servizi, all'avvio, il sistema andrà a leggere il file inittab, questo farà il login da solo e leggerà il file xinitrc, il quale - a seconda del runlevel in cui ci troviamo - caricherà il desktop scelto al grub.

-------------------------------------

Con un unico DE

Per gli utenti di Arch

Se avete un unico DE la faccenda diventa facile. Tenendo presente le cose imparate prima, dovrete modificare il file inittab da root indicando di fare l'autologin e guardare in .xinitrc come spiegato nella Wiki ufficiale. Dopodiché vi toccherà aggiungere nel file .xinitrc la riga che indica il DE da caricare.

suggerimento, nella wiki ufficiale viene riportata questa riga
x:5:once:/bin/su USERNAME -l -c "/bin/bash --login -c /usr/bin/startx >/dev/null 2>&1"
io però consiglio questa
x:5:respawn:/bin/su USERNAME -l -c "/bin/bash --login -c xinit >/dev/null 2>&1"
Non è che cambi molto, al posto di once c'è respawn e al posto di startx c'è xinit. Diciamo che rende le cose più dirette ma sono preferenze.

Per utenti di Debian

ringrazio Doc per avermi passato queste righe:
Per lo startx automatico:
$ nano .bash_profile
e copiate quanto segue
 if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
     startx
 fi

Per l'autologin (non fatto da Doc, poiché è contrario):
# nano /etc/inittab
e commentare con # la stringa
1:2345:respawn:/sbin/getty 38400 tty1
Quindi, sotto la precedente, aggiungere la seguente riga
1:2345:respawn:/bin/login -f YOUR_USER_NAME tty1 </dev/tty1 >/dev/tty1 2>&1
ovviamente, modificando in modo opportuno YOUR_USER_NAME.

6 commenti:

  1. very interesting :D
    prossimamente lo farò anche io

    RispondiElimina
  2. interessantissimo post :D

    RispondiElimina
  3. Scusate, ma un banale:
    aptitude install nodm???

    RispondiElimina
  4. @Candido Ricorsi
    Personalmente, non conoscevo questo pacchetto.
    Lo provo subito su una mia installazione secondaria!
    Grazie mille!

    RispondiElimina
  5. @Candido Ricorsi
    Interessante neppure io lo conoscevo, non so se c'è per Arch ma ti ringrazio lo stesso, direi che non è niente di banale a questo punto ;)

    RispondiElimina
  6. @Santiago
    Installato nodm sul mio sistema di prova.
    La configurazione è semplicissima
    sudo nano /etc/default/nodm
    e poi basta modificare un paio di cose all'inizio:

    # Set NODM_ENABLED to something different than 'false' to enable nodm
    NODM_ENABLED=true

    # User to autologin for
    NODM_USER=proprio_nome_utente

    Riavvio e... tutto finito!
    Ovviamente, non è da consigliare se si vogliono usare più ambienti.

    RispondiElimina

EDIT 30/12/2017: abbiamo deciso di chiudere i commenti ma lasciare le guide intatte.

Nota. Solo i membri di questo blog possono postare un commento.