GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configura un ambiente chroot su Ubuntu con debootstrap

Croot

Croot fornisce un modo per configurare un ambiente isolato all'interno di un sistema operativo, in cui applicazioni specifiche possono essere eseguite senza interagire con il resto del sistema. Viene anche chiamato jail e viene spesso utilizzato per creare un ambiente di test per applicazioni che potrebbero non essere installate direttamente sul sistema a causa di vari problemi come stabilità o sicurezza.

Eseguire applicazioni a 32 bit in un ambiente chroot a 64 bit Ubuntu

Poiché chroot isola l'applicazione in un ambiente separato, viene utilizzato anche per eseguire applicazioni a 32 bit all'interno di un ambiente OS a 64 bit. Oggigiorno la maggior parte dei sistemi operativi e delle applicazioni sono a 64 bit sia su desktop che su server.

Tuttavia ci sono scenari in cui le applicazioni non possono essere migrate a 64 bit, a causa di varie restrizioni. Ciò accade nelle organizzazioni in cui le applicazioni legacy di grandi dimensioni sono in esecuzione da molto tempo. Affinché tali applicazioni continuino a funzionare, è necessario disporre di un sistema operativo a 32 bit installato o creare un ambiente a 32 bit all'interno di un'installazione di sistema operativo a 64 bit.

L'ambiente chroot

Un ambiente chroot è un modo per creare una cosiddetta "prigione" separata nel tuo sistema, che esegue un sistema operativo diverso dall'host. In altre parole, è un sistema operativo in esecuzione all'interno di un altro sistema operativo. Tecnicamente, l'utente cambia temporaneamente la directory radice (di solito /) in un'altra directory radice (nel nostro esempio, /srv/chroot).

In tutti i sistemi operativi basati su Unix, la directory principale è la parte superiore dell'albero del filesystem e le applicazioni non possono accedere a nessun file o directory più in alto, quindi, avendo una radice nuova, diversa e modificandola, le applicazioni in esecuzione lì, sono isolati dal resto del sistema host.

Questo approccio ha molti vantaggi:

-  Test applications without the risk of compromising the entire host system.
-  From the security point of view, whatever happens in the chroot environment won't affect the host system (not even under root user)
-  A different operating system running in the same hardware

In questo caso, sfrutteremo questa funzionalità per eseguire applicazioni a 32 bit in modo nativo in un host a 64 bit.

I pacchetti necessari per configurare l'ambiente chroot sono debootstrap e schroot , che sono disponibili nel repository di Ubuntu. Il comando schroot viene utilizzato per configurare l'ambiente chroot.

Debootstrap ti consente di installare una nuova nuova copia di qualsiasi sistema Debian (o basato su Debian) in una directory con tutti i comandi e i binari di base necessari per eseguire un'istanza di base del sistema operativo.

Puoi eseguire il chroot direttamente come root semplicemente eseguendo il comando chroot, ma gli utenti normali non sono in grado di utilizzare questo comando. Lo schroot consente l'accesso ai chroot per gli utenti normali utilizzando lo stesso meccanismo, ma con permessi che controllano e consentendo un'ulteriore configurazione automatizzata dell'ambiente chroot, come il montaggio di filesystem aggiuntivi e altre attività di configurazione.

Questa configurazione automatica viene eseguita tramite l'azione di script di configurazione che possono essere personalizzati ed estesi per eseguire tutte le azioni richieste, come spiegato di seguito.

Questi sono i passaggi per implementare questa funzionalità in Ubuntu 12.04:

1. Installa i pacchetti:

Il primo passo è installare i pacchetti con apt-get:

$ sudo apt-get install debootstrap
$ sudo apt-get install schroot

2. Crea una configurazione schroot:

Dobbiamo configurare schroot per soddisfare le nostre esigenze nel file di configurazione.

Scegli un nome breve per il chroot, abbiamo usato precise_i386 :

$ sudo gedit /etc/schroot/chroot.d/precise_i386.conf

Quindi procedere con la configurazione, come in questo esempio:

[precise_i386]
description=Ubuntu 12.04 Precise for i386
location=/srv/chroot/precise_i386
personality=linux32
root-users=bob
type=directory
users=alice,bob,charlie

Modifica i valori dei parametri di configurazione nell'esempio sopra per adattarli al tuo sistema:

location - This should be a directory that is outside of the /home tree. 
The latest schroot documentation recommends /srv/chroot.

personality - Enable this line if the host system is 64-bit running on an amd64/x64 computer 
and the chroot is 32-bit for i386. Otherwise, leave it disabled, by adding "#" as first character.

root-users - These are users on the host system that can invoke the schroot program and 
get direct access to the chroot system as the root user.

users - These are users on the host system that can invoke the schroot program and 
get access to the chroot system. Your username on the host system should be here.

3. Installa Ubuntu a 32 bit con debootstrap

Debootstrap scarica e installa un sistema operativo minimo all'interno del tuo ambiente chroot .

Puoi installare qualsiasi distribuzione basata su Debian di tua preferenza, purché tu abbia un repository disponibile. Adoro questa utility, ti fa risparmiare molto tempo e lavoro.

Nel nostro esempio abbiamo posizionato l'ambiente chroot nella directory /srv/chroot/precise_i386 e questa è la directory principale dell'ambiente chroot.

$ sudo mkdir -p /srv/chroot/precise_i386
$ sudo debootstrap --variant=buildd --arch=i386 precise /srv/chroot/precise_i386 http://archive.ubuntu.com/ubuntu/

Ci vuole del tempo (a seconda della larghezza di banda) per scaricare, installare e configurare il sistema completo. Occorrono circa 500 M per un'installazione minima.

4. Testare l'ambiente chroot

Ora dovremmo avere installato Ubuntu a 32 bit.

Per prima cosa elenca gli ambienti chroot disponibili usando il comando schroot.

$ schroot -l
chroot:precise_i386

dovresti aspettarti preciso_i386 come risultato.

Ora entriamo nel merito, digita semplicemente come utente normale

$ schroot -c precise_i386 -u root

Ora sei nell'ambiente in chroot come root!

Verifica che il messaggio di richiesta sia leggermente diverso dal solito e di avere nuovi valori per i seguenti comandi

lsb_release -a
uname -a

5. Configurazione aggiuntiva

Ora che abbiamo un ambiente funzionale a 32 bit, finiamo di installare i requisiti minimi e tutte le librerie e le applicazioni necessarie.

$ apt-get install ubuntu-minimal

Questo scaricherà e installerà i pacchetti necessari per un'installazione minima di Ubuntu.

Questo è tutto.

Puoi iniziare a installare i pacchetti, le librerie e le dipendenze di cui la tua applicazione ha bisogno, come al solito con il comando apt-get o dpkg. Recupererà la versione i386, purché tu lo faccia all'interno dell'ambiente chroot.

Puoi aggiornarlo e aggiornarlo, come fai con il sistema host; modifica il tuo /etc/apt/sources.list e modifica in base alle tue esigenze.

Le home directory degli utenti all'interno del chroot sono condivise con l'host.
Questo è molto utile per avere accesso alle applicazioni, ai documenti e ai file di cui hai bisogno.

Per concludere questo tutorial, per eseguire un'applicazione grafica dal chroot, devi esportare la variabile d'ambiente DISPLAY.

$ DISPLAY=:0.0 ./yourapp

Non esitare a inviare qualsiasi domanda o commento in merito a questo articolo.

Spero che ti sia piaciuto e che l'abbia trovato utile!!


Ubuntu
  1. Configurazione iniziale del server con Ubuntu 14.04

  2. Come configurare l'ambiente Chroot in Ubuntu 14.04

  3. Configura il contenitore Linux con LXC su Ubuntu 16.04

  4. Usare Ubuntu con una configurazione a due schermi?

  5. Configura una shell incarcerata con jailkit su Ubuntu

Una guida su come installare Ubuntu 15.04 con schermate

Come configurare l'ambiente di sviluppo Django su Ubuntu 18.04

Uno script di shell per configurare l'ambiente di sviluppo in Ubuntu

Come configurare WordPress su Ubuntu Server con Apache

Come configurare l'ambiente virtuale Python 3 su Ubuntu 20.04

Configurazione iniziale del server con Ubuntu 18.04