Avviare il DE di un'altra distribuzione in Debian 7 Wheezy

Mar, 02/12/2014 - 18:12

Avviare il DE di un'altra distribuzione in Debian 7 Wheezy

Inviato da frank67 2 commenti

Introduzione


Questa guida illustra come configurare Debian 7 Wheezy per avviare il desktop environment (DE) di una distribuzione installata su una partizione del disco fisso o su di un suo logical volume. Lo scopo di questa soluzione è quello di sfruttare l'hardware del PC senza per questo doverlo riavviare per usare un'altra distribuzione, sfruttando ciò che Debian 7 Wheezy mette a disposizione. È possibile ricorrere alle tecniche di virtualizzazione per ottenere risultati analoghi ma li ho scartati per fare in modo di usare la scheda grafica del PC che non poteva essere virtualizzata, nel mio caso Nvidia.

Scelta del software


Dopo una breve esperienza con i Linux Container che riporto funzionanti con distribuzioni che si avviano con init System V ma non con Systemd dopo aver casualmente trovato la pagina wiki System Virtualization ho voluto provare Schroot dopo averlo installato con il tradizionale:
$ sudo apt-get install schroot

ho subito letto le pagine di manuale a corredo del pacchetto e da "man schroot" ho trovato un interessantissimo:
 … Some examples of existing uses for schroot include:
…
   ·      Using different versions of an operating system, or even different operating systems  altogether, e.g. different GNU/Linux distributions
   ·      Running 32-bit programs using a 32-bit chroot on a 64-bit host system

per gli impazienti raccomando subito di leggere "man schroot-faq" onde evitare spiacevoli disavventure.

Configurazione del software


La distribuzione nella schroot jail è Kubuntu 14.10 il DE è Plasma 5 technical preview vediamo subito come configurare schroot. Schroot è configurabile attraverso dei profili presenti all'interno della directory “/etc/schroot/” se ne possono creare ex-novo o utilizzare quelli preinstallati, ho scelto di modificare il preinstallato “desktop” editiamo il file “/etc/schroot/desktop/fstab” in modo da risultare come segue:
# fstab: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           none    rw,bind        0       0
/sys            /sys            none    rw,bind        0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
# /home         /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
 
# If you use gdm3, uncomment this line to allow Xauth to work
#/var/run/gdm3  /var/run/gdm3   none    rw,bind         0       0
# For PulseAudio and other desktop-related things
/var/lib/dbus    /var/lib/dbus  none    rw,bind         0       0
 
# It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot.  However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
/run            /run            none    rw,bind         0       0
/run/lock       /run/lock       none    rw,bind         0       0
/dev/shm        /dev/shm        none    rw,bind         0       0
/run/shm        /run/shm        none    rw,bind         0       0
/sys            /sys            none    rw,bind         0       0
/sys/fs/cgroup/ /sys/fs/cgroup/ none    rw,bind         0       0

consiglio di commentare il binding di /home in modo da lavorare coi dati nella /home di Kubuntu, si possono aggiungere altri mount-point per avere disponibili nella schroot jail delle directory presenti nel filesystem Debian, esempio:
/opt/data       /mnt            none    rw,bind         0       0

poi diamo il comando:
$ sudo echo 'CHROOT_NAME=""' >/etc/schroot/desktop/config

Vediamo ora come definire la schroot-jail: creiamo il file “/etc/schroot/chroot.d/kubuntu.conf” in modo che contenga la “stanza” di configurazione chiamata “[kubuntu]”:
# Kubuntu schroots definition file.
[kubuntu]
description=Kubuntu 14.10
type=block-device
device=/dev/mapper/ld0-lv2
users=mio_utente1
preserve-environment=true
profile=desktop
setup.nssdatabases=

Non è un errore, l'ultima linea è da specificare senza valore, con questo file di configurazione viene parametrizzato schroot in modo che avvii una sessione schroot della distribuzione installata nel volume logico “/dev/mapper/ld0-lv2” l'utente “mio-utente” avrà il permesso di avviarla e il profilo di configurazione è contenuto nella directory “desktop”, per le altre voci rimando alla pagina di manuale “man schroot.conf”. Si può ora verificarne il funzionameto con:
$ schroot -c kubuntu -- startx -- :1 vt8 -nolisten tcp

Se vi dice che non avete il permesso di avviarla aggiungete il vostro utente alla voce “user”. Dovreste ottenere qualcosa di simile a:
In questa schermata si vede il DE Plasma 5.1.1, il client Steam connesso, Dolphin e il terminale Konsole che mostra l'output del comando “uname -a” il kernel di Debian.
Ora premendo la combinazione di tasti Ctrl-Alt-F7 potrete tornare al DE di Debian e con Ctrl-Alt-F8 andare in quello di Kubuntu switchando tra i due, per terminare la sessione occorre fare “click” sulla “K” in basso a sinistra spostarsi sulla linguetta “Esci” e selezionare “Disconnetti” si tornerà al DE di Debian.

Limitazioni


Ci sono delle problematiche da affrontare prima di arrivare a questo risultato, siccome il server Xorg avviato è di Kubuntu occorre che i driver video che il kernel Debian ha caricato siano allineati con quelli di Kubuntu, per aggirare questo ostacolo ho dovuto disinstallare i driver Nvidia di Debian e al loro posto installare i proprietari Nvidia, con il comando “wget” ho scaricato l'installer:
$ wget us.download.nvidia.com/XFree86/Linux-x86_64/331.89/NVIDIA-Linux-x86_64-331.89.run

altra nota dolente è l'impossibilità di avviare daemon compilati con il supporto Systemd come “sddm” (il display manager di Kubuntu) o “udisks2” questo necessario a “k3b” per rilevare il masterizzatore/lettore DVD che perciò è utilizzabile solo da applicazioni da riga di comando e non da quelle del DE.

Conclusioni


Qui abbiamo discusso come utilizzare “schroot” per un compito per il quale di certo non è stato progettato ma con l'avvento di Systemd che non supporta l'avvio di daemon nelle chroot-jail se non configurato in futuro questo compito verrà probabilmente svolto da applicazioni come “systemd-nspawn” che pur essendo disponibile per Debian 7 Wheezy nel pacchetto “systemd”non ho provato. Altra applicazione che potrebbe interessare per gli scopi discussi in questa guida è “xmount” dalla descrizione:…This makes it for example possible to boot acquired  harddisk images using QEMU, KVM, VirtualBox, VMware or alike.
Per il momento è tutto, mi auguro che questa guida possa incuriosire più persone possibile e stimolarle a contribuire al software free.





Commenti

Ritratto di mcortese
#1

Inviato da mcortese il Gio, 11/12/2014 - 19:41.

Re: Avviare il DE di un'altra distribuzione in Debian 7 Wheezy

Complimenti per la guida e soprattutto la tenacia con cui hai perseguito il tuo scopo Wink

Penso che valga la pena condividere anche la /home, se non altro per scambiare dati tra i due ambienti. Se temi che i programmi dell'uno "inquinino" la configurazione dell'altro (tipo i file sotto ~/.config e ~/.local, che sappiamo essere delicati) puoi sempre definire due utenti diversi ma appartenenti allo stesso gruppo e ciascuno accederà alla home dell'altro (sempre che umask sia impostato a 002 come è predefinito in Debian, non so in Ubuntu).



Ritratto di frank67
#2

Inviato da frank67 il Ven, 12/12/2014 - 16:30.

Re: Avviare il DE di un'altra distribuzione in Debian 7 Wheezy

Grazie per i complimenti Smile
A mio avviso non è consigliabile condividere la /home se si usa schroot per lo scopo qui discusso: "avviare il DE di un'altra distribuzione" infatti oltre ad alterare le configurazioni il DE creerebbe anche directory come "Scaricati" "Documenti" ecc. nella home di Wheezy. Creare e gestire un utente per il chroot penso sia più oneroso che non montare la /home/utente in un mount-point del filesystem di Kubuntu come spiegato nella guida, farebbe confusione anche perché in Kubuntu l'utente è già creato tanto vale usare quello con la sua home.

Ciao, Franco