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
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
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).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
A mio avviso non è consigliabile condividere la
/home
se si usaschroot
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