In questa sezione viene spiegato come installare Debian GNU/Linux a partire da un sistema Unix o Linux esistente, senza utilizzare l'installatore a menu come illustrato nel resto del manuale. Questo HOWTO sul «cross-install» è stato richiesto da utenti di altre distribuzioni, come Red Hat, Mandriva e SUSE, che vogliono provare Debian GNU/Linux. Viene data per acquisita da parte dell'utente una minima familiarità con i comandi *nix e con la navigazione del file system. In questa sezione, $
indica un comando da inserire nel sistema attualmente in uso all'utente, mentre #
si riferisce a un comando da inserire nell'ambiente chroot di Debian.
Una volta che il nuovo sistema Debian è stato configurato a proprio piacimento, si può procedere alla migrazione dei dati esistenti e poi all'uso quotidiano. Si tratta quindi di un'installazione di Debian GNU/Linux che non blocca, nemmeno momentaneamente, l'uso del sistema, inoltre è un modo ingegnoso per gestire hardware che potrebbe avere problemi con i normali metodi di avvio o installazione.
Nota | |
---|---|
Questa è per lo più una procedura manuale, si deve tenere in mente che è necessario fare da soli molte configurazioni di base del sistema che richiedono una conoscenza più approfondita di Debian e di Linux in generale rispetto a una normale installazione. Non ci si deve aspettare che seguendo questa procedura si ottenga un sistema identico a quello che si otterrebbe con una normale installazione. Si deve anche tenere in mente che questa procedura contiene solo i passi basilari per la configurazione di un sistema; potrebbero essere necessarie altre operazioni di installazione e/o configurazione. |
Usando gli strumenti per il partizionamento disponibili, ripartizionare, secondo le proprie necessità, il disco fisso creando almeno un file system e una partizione di swap. Per un ambiente puramente testuale sono necessari 1012 MB, 2539 MB se si intende installare X (ancora di più se si installa un ambiente desktop come GNOME o KDE Plasma).
Poi creare dei file system sulle partizioni appena realizzate. In questo esempio si crea un file system ext3 sulla partizione /dev/sda6
(in seguito questa partizione è usata come root):
# mke2fs -j /dev/sda6
Per creare un file system ext2, basta omettere l'opzione -j
.
Inizializzare e attivare lo swap (sostituire il numero della partizione con quello della partizione destinata allo swap per Debian):
# mkswap /dev/sda5
# sync # swapon /dev/sda5
Montare una partizione come /mnt/debinst
(il punto di installazione, diventerà il file system di root /
del nuovo sistema). Il nome del mount point è arbitrario, quello scelto è utilizzato da qui in avanti.
# mkdir /mnt/debinst
# mount /dev/sda6
/mnt/debinst
Nota | |
---|---|
Nel caso si voglia avere delle parti del filesystem (p.e. /usr) montate da delle partizioni separate è necessario creare e montare manualmente queste directory prima di procedere con la prossima fase. |
Lo strumento usato dall'installatore Debian, e che è considerato il mezzo ufficiale per installare un sistema Debian di base, è debootstrap. Utilizza wget e ar, ma a parte questi programmi ha bisogno solo di /bin/sh
e degli strumenti Unix/Linux di base[20]. Installare, se non sono già presenti sul sistema in uso, wget e ar poi scaricare e installare debootstrap.
Un'ulteriore possibilità è installare debootstrap manualmente seguendo questa procedura. Creare una directory di lavoro in cui estrarre il .deb:
# mkdir work # cd work
Il binario di debootstrap si trova nell'archivio Debian (si faccia attenzione a scegliere il file adatto alla propria architettura). Scaricare il pacchetto .deb di debootstrap dal pool, poi copiarlo nella cartella di lavoro ed estrarre i file. Servono i privilegi di root per installarli.
# ar -x debootstrap_0.X.X_all.deb # cd / # zcat /full-path-to-work/work/data.tar.gz | tar xv
Quando viene lanciato, debootstrap è in grado di scaricare i file necessari direttamente dall'archivio. Si può sostituire ftp.it.debian.org/debian
, utilizzato nell'esempio sottostante, con un qualsiasi mirror dell'archivio Debian, meglio se geograficamente vicino. Un elenco dei mirror è disponibile presso: http://www.buy-develop.eu.org/mirror/list.
Se su /cdrom
è stata montata un'immagine per l'installazione Debian GNU/Linux bookworm, è possibile sostituire l'URL http con l'URL file:/cdrom/debian/
.
Nel comando debootstrap sostituire ARCH
con uno dei seguenti: amd64
,
arm64
,
armel
,
armhf
,
i386
,
mips64el
,
mipsel
,
ppc64el
,
s390x
.
# /usr/sbin/debootstrap --arch ARCH bookworm \ /mnt/debinst http://ftp.us.debian.org/debian
Nel caso che l'architrettura del nuovo sistema sia diversa da quella del sistema in uso, occorre aggiungere l'opzione --foreign
.
Ora sul disco c'è un vero sistema Debian, seppur minimale. Eseguire chroot:
# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash
Nel caso che l'architrettura del nuovo sistema sia diversa da quella del sistema in uso, è necessario prima copiare qemu-user-static sul nuovo sistema:
# cp /usr/bin/qemu-ARCH-static /mnt/debinst/usr/bin # LANG=C.UTF-8 chroot /mnt/debinst qemu-ARCH-static /bin/bash
Dopo l'operazione di chroot potrebbe essere necessario impostare il terminale con uno compatibile con il sistema Debian di base, per esempio:
# export TERM=xterm-color
In base al valore di TERM, potrebbe essere necessario installare il pacchetto ncurses-term
.
Nel caso che l'architrettura del nuovo sistema sia diversa da quella del sistema in uso, è necessario completare l'avvio a più fasi:
/debootstrap/debootstrap --second-stage
A questo punto /dev/
contiene solo i file di device più basilari, però i prossimi passi dell'installazione potrebbero aver bisogno di altri file di device. Ci sono più modi per proseguire, la scelta dipende dal sistema che sta ospitando l'installazione, dall'intenzione di usare un kernel modulare oppure no, e dall'intenzione di usare file di device dinamici (per esempio usando udev
) o statici.
Alcune delle possibili soluzioni sono:
installare il pacchetto makedev e, dopo aver fatto il chroot, creare il set predefinito di file di device statici usando
# apt install makedev # mount none /proc -t proc # cd /dev # MAKEDEV generic
creare manualmente solo dei file di device specifici usando MAKEDEV
collegare con mount la /dev del sistema che ospita l'installazione sopra la /dev del sistema che si sta installando; notare che gli script di post-installazione di alcuni pacchetti potrebbero provare a creare file di device quindi questo metodo deve essere usato con molta cautela.
Adesso è necessario creare /etc/fstab
.
# editor /etc/fstab
Segue un esempio che si può adattare secondo le proprie necessità:
# /etc/fstab: static file system information. # # file system mount point type options dump pass /dev/XXX / ext3 defaults 0 1 /dev/XXX /boot ext3 ro,nosuid,nodev 0 2 /dev/XXX none swap sw 0 0 proc /proc proc defaults 0 0 /dev/cdrom /media/cdrom iso9660 noauto,ro,user,exec 0 0 /dev/XXX /tmp ext3 rw,nosuid,nodev 0 2 /dev/XXX /var ext3 rw,nosuid,nodev 0 2 /dev/XXX /usr ext3 rw,nodev 0 2 /dev/XXX /home ext3 rw,nosuid,nodev 0 2
Per montare tutti i file system specificati nel proprio /etc/fstab
, si esegua mount -a
, mentre per montarli singolarmente si usi:
# mount /path # per esempio: mount /usr
Nei sistemi Debian più recenti i punti di mount per i supporti rimovibili sono in /media
, per compatibilità si possono tenere dei link simbolici in /
. Creare i link in base alle proprie necessità, per esempio:
# cd /media # mkdir cdrom0 # ln -s cdrom0 cdrom # cd / # ln -s media/cdrom
È possibile montare il file system proc più volte e in posizioni arbitrarie, ma è consuetudine farlo su /proc
. Se non si esegue mount -a
, prima di continuare assicurarsi di montare proc:
# mount -t proc proc /proc
Adesso il comando ls /proc
dovrebbe mostrare una directory con dei file. Se non funziona, si dovrebbe essere in grado di montare proc da fuori della chroot:
# mount -t proc proc /mnt/debinst/proc
L'impostazione alla terza riga del file /etc/adjtime
a «UTC» o «LOCAL» determina se il sistema deve interpretare l'orologio hardware come impostato su UTC oppure sull'ora locale. Il comando seguente permette di impostare questa opzione.
# editor /etc/adjtime
Questo è un esempio:
0.0 0 0.0 0 UTC
Il comando seguente permette di impostare il proprio fuso orario.
# dpkg-reconfigure tzdata
Per configurare la rete, si deve modificare /etc/network/interfaces
, /etc/resolv.conf
, /etc/hostname
e /etc/hosts
.
# editor /etc/network/interfaces
Alcuni esempi banali da /usr/share/doc/ifupdown/examples
:
###################################################################### # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # See the interfaces(5) manpage for information on what options are # available. ###################################################################### # The loopback interface isn't really required any longer, but can be used # if needed. # # auto lo # iface lo inet loopback # To use dhcp: # # auto eth0 # iface eth0 inet dhcp # An example static IP setup: (network, broadcast and gateway are optional) # # auto eth0 # iface eth0 inet static # address 192.168.0.42 # network 192.168.0.0 # netmask 255.255.255.0 # broadcast 192.168.0.255 # gateway 192.168.0.1
Gli indirizzi dei name server e le direttive search vanno inseriti in /etc/resolv.conf
:
# editor /etc/resolv.conf
Un semplice esempio di /etc/resolv.conf
:
search example.com nameserver 10.1.1.36 nameserver 192.168.9.100
Inserire l'hostname del proprio sistema (da 2 a 63 caratteri):
# echo DebianHostName > /etc/hostname
E un semplice /etc/hosts
con supporto IPv6:
127.0.0.1 localhost 127.0.1.1 DebianHostName # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
In presenza di più schede di rete, si dovrebbero disporre i nomi dei driver nel file /etc/modules
nell'ordine desiderato. In tal modo, durante l'avvio ad ogni scheda verrà associato il nome di interfaccia che ci si aspetta (eth0, eth1, etc.).
Debootstrap crea un file /etc/apt/sources.list
molto semplice che permette l'installazione di altri pacchetti. Comunque si possono anche aggiungere ulteriori sorgenti, per esempio per i pacchetti sorgente e gli aggiornamenti alla sicurezza:
deb-src http://ftp.us.debian.org/debian bookworm main deb http://security.debian.org/ bookworm-security main deb-src http://security.debian.org/ bookworm-security main
Ricordarsi di eseguire apt update
dopo aver modificato il file sources.list
.
Per utilizzare una localizzazione diversa da quella inglese, installare e configurare il pacchetto locales
. Si raccomanda l'uso di un locale UTF-8.
# apt install locales # dpkg-reconfigure locales
Per configurare la tastiera (se necessario):
# apt install console-setup # dpkg-reconfigure keyboard-configuration
Notare che la tastiera non può essere impostata quando si è all'interno della chroot, sarà possibile configurarla al riavvio successivo.
Nel caso si intenda avviare il nuovo sistema, servono un kernel Linux e un boot loader. I kernel pacchettizzati disponibili si trovano con:
# apt search linux-image
Si può quindi installare il pacchetto con il kernel prescelto usando il nome del pacchetto.
# apt install linux-image-arch-etc
Per avviare il sistema Debian GNU/Linux, è necessario configurare il proprio boot loader in modo da caricare il kernel installato con la nuova partizione di root. Notare che debootstrap non installa un boot loader, è possibile installare un boot loader tramite apt dall'interno della chroot Debian.
Notare che si suppone che il device /dev/sda
sia già stato creato. Esistono anche altri metodi per installare grub2, ma questi non rientrano fra gli scopi di questa appendice.
Chi può accedere al sistema dalla console, può saltare questa sezione. Se il sistema deve essere accessibile da remoto, è necessario installare SSH e impostare l'accesso.
# apt install ssh
Con la configurazione predefinita non è possibile accedere come root tramite password, quindi è necessario prima impostare una password e poi riattivare l'accesso come root tramite password:
# passwd # editor /etc/ssh/sshd_config
Questa è l'opzione da attivare:
PermitRootLogin yes
È possibile anche configurare l'accesso aggiungendo una chiave ssh all'utente root:
# mkdir /root/.ssh # cat << EOF > /root/.ssh/authorized_keys ssh-rsa .... EOF
Infine, configurare l'accesso per un utente non-root e impostare la password per questo utente:
# adduser joe # passwd joe
Come già detto in precedenza, al termine dell'installazione si dispone di un sistema decisamente basilare. Per rendere il proprio sistema più completo c'è un metodo molto semplice per installare tutti i pacchetti con priorità «standard»:
# tasksel install standard
Ovviamente è possibile usare apt per installare individualmente i pacchetti.
Al termine dell'installazione in /var/cache/apt/archives/
sono presenti i pacchetti scaricati. Si possono cancellare e quindi liberare un po' di spazio usando:
# apt clean