Supporto nativo
Poiché Ubuntu 11.04 e Debian wheezy (7.0), Debian e Ubuntu hanno il supporto multiarch: è possibile combinare i pacchetti x86_32 (i386) e x86_64 (amd64) sullo stesso sistema in modo semplice. Questo è noto come supporto multiarch. Vedi la risposta di warl0ck per maggiori dettagli.
Nelle versioni precedenti, Debian e Ubuntu vengono fornite con un numero di librerie a 32 bit su amd64. Installa il pacchetto per avere un set base di librerie a 32 bit e possibilmente altri pacchetti che dipendono da questo. I file eseguibili a 32 bit devono essere eseguiti semplicemente se si dispone di tutte le librerie richieste. Per lo sviluppo, l'installazione e, eventualmente, altri pacchetti che dipendono da esso come . Potresti trovare utile anche su Debian. Passa l' opzione a gcc per compilare per ix86.ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Si noti che uname -m
verrà comunque mostrato x64_64
se si esegue un kernel a 64 bit, indipendentemente dai componenti della modalità utente a 32 bit installati. Schroot descritto di seguito si occupa di questo.
schroot
Questa sezione è una guida all'installazione di una distribuzione simile a Debian "all'interno" di un'altra distribuzione Linux. È formulato in termini di installazione di Ubuntu a 32 bit all'interno di Ubuntu a 64 bit, ma dovrebbe applicarsi con lievi modifiche ad altre situazioni, come l'installazione di Debian instabile in Debian stable o viceversa.
introduzione
L'idea è di installare una distribuzione alternativa in una sottostruttura ed eseguire da quella. In questo modo è possibile installare un sistema a 32 bit su un sistema a 64 bit, oppure una diversa versione della propria distribuzione o un ambiente di test con diversi set di pacchetti installati.
Il chroot
comando e la chiamata di sistema avvia un processo con una vista del filesystem che è limitata a una sottostruttura dell'albero delle directory. Debian e Ubuntu forniscono schroot , un'utilità che avvolge questa funzione per creare un sottoambiente più utilizzabile.
Installa il schroot
pacchetto ( Debian ) e il debootstrap
pacchetto ( Debian ). Debootstrap è necessario solo per l'installazione della distribuzione alternativa e può essere rimosso in seguito.
Installa schroot
Questo esempio descrive come configurare un ambiente alternativo Ubuntu 10.04LTS (lucid lynx) a 32 bit. Una configurazione simile dovrebbe funzionare con altre versioni di Debian e Ubuntu. Creare un file /etc/schroot/chroot.d/lucid32
con i seguenti contenuti:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
La linea directory=/32
dice a Schroot dove inseriremo i file dell'installazione a 32 bit. La riga username=yourusername
dice che all'utente yourusername
sarà permesso usare la schroot. La riga groups=users,admin
dice che gli utenti di entrambi i gruppi potranno usare la schroot; puoi anche mettere una users=…
direttiva.
Installa la nuova distribuzione
Crea la directory e inizia a popolarla con debootstrap. Debootstrap scarica e installa un set principale di pacchetti per la distribuzione e l'architettura specificate.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Hai quasi già un sistema funzionante; ciò che segue sono miglioramenti minori. Schroot sovrascrive automaticamente diversi file /32/etc
quando viene eseguito, in particolare la configurazione DNS /etc/resolv.conf
e il database utente in /etc/passwd
e altri file (questo può essere sovrascritto, consultare la documentazione). Ci sono alcuni altri file che potresti voler copiare manualmente una volta per tutte:
cp -p /etc/apt/apt.conf /32/etc/apt/ # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/ # for universe, security, etc
cp -p /etc/environment /32/etc/ # for proxy and locale settings
cp -p /etc/sudoers /32/etc/ # for custom sudo settings
Non ci sarà un file /etc/mtab
o /etc/fstab
nel chroot. Non consiglio di usare il mount
comando manualmente nel chroot, fallo dall'esterno. Ma creane uno abbastanza buono /etc/mtab
per eseguire df
ragionevolmente comandi come il lavoro.
ln -s /proc/mounts /32/etc/mtab
Con il directory
tipo, schroot eseguirà monta bind di una serie di directory, vale a dire queste directory saranno condivisi con l'installazione genitore: /proc
, /dev
, /home
, /tmp
.
Servizi nel chroot
Come descritto qui, uno schroot non è adatto per eseguire demoni. I programmi nella schroot verranno uccisi quando si esce dalla schroot. Utilizzare uno schroot "semplice" invece di uno "directory" se si desidera che sia più permanente e impostare montaggi di bind permanenti /etc/fstab
nell'installazione padre.
Su Debian e Ubuntu, i servizi si avviano automaticamente all'installazione. Per evitare ciò (che potrebbe interrompere i servizi in esecuzione al di fuori del chroot, in particolare perché le porte di rete sono condivise), stabilire una politica di non eseguire i servizi nel chroot. Inserisci il seguente script come /32/usr/sbin/policy-rc.d
e rendilo eseguibile ( chmod a+rx /32/usr/sbin/policy-rc.d
).
#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
exit 101
fi
Popolare il nuovo sistema
Ora possiamo iniziare a usare il chroot. A questo punto ti consigliamo di installare qualche altro pacchetto.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Potrebbe essere necessario generare alcune impostazioni locali, ad es
locale-gen en_US en_US.utf8
Se lo schroot è per una versione precedente di Ubuntu come 8.04 (hardy), si noti che il pacchetto ubuntu-standard inserisce un MTA. Seleziona al nullmailer
posto di quello predefinito postfix
(potresti volere che il tuo chroot invii posta ma sicuramente non vuoi che ne riceva nessuno).
Andare avanti
Per ulteriori informazioni, consultare il schroot
manuale , le FAQ di Schroot e il
schroot.conf
manuale . Schroot fa parte del progetto Debian autobuilder (buildd) . Potrebbero esserci ulteriori utili suggerimenti nella pagina della comunità di Ubuntu su debootstrap .
Macchina virtuale
Se è necessario l'isolamento completo dell'ambiente alternativo, utilizzare una macchina virtuale come KVM ( qemu-kvm ) o VirtualBox .