« Debootstrap » : différence entre les versions

Aller à la navigation Aller à la recherche
 
(20 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[category:debian]]
[[category:debian]]
[[category:serveur]]
[[category:serveur]]
[[Category:trixie]]
Debootstrap permet d'installer une distribution debian sur un point de montage en utilisant une debian en service.
Debootstrap permet d'installer une distribution debian sur un point de montage en utilisant une debian en service.


Pour commencer, installer debootstrap :
=Prérequis=
 
Ce tutoriel se base sur l'utilisation de debootstrap pour installer une base de système d'exploitation debian. La plupart des hébergeurs proposent un système de "rescue" permettant l'installation de debian par ce moyen.
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l'installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l'iso de debian.
 
=Pour les débutants=
 
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d'une précédente installation de debian ou de proxmox
* <code>/etc/networks</code>
* <code>/etc/network/interfaces</code>
* <code>/etc/resolv.conf</code>
* <code>/etc/hosts</code>
* <code>/etc/fstab</code>
* <code>/etc/mdadm/mdadm.conf</code> si vous disposez d'un raid logiciel
* tout fichier de personnalisation de grub (<code>/etc/grub.d/</code> par exemple)
 
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.
 
=Partitionnement et système de fichier=
 
Voici le partitionnement que je vais utiliser :
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb
* Partitions swap de 4096 Go chacune réparties sur sda et sdb
* Le reste de l'espace sera utilisé plus tard pour un LVM dédié aux VMs
 
==Partitionnement==
 
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===
 
Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque :
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type <code>EF00</code>. Pour assurer une bonne compatibilité avec les multiples firmwares EFI, il est recommandé de leur attribuer une taille de 512 MiB (+512M au prompt gdisk).
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>.
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>.
 
<br>
 
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) <code>EFI_SYSPART</code> :
<pre>
<pre>
aptitude install debootstrap
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1
</pre>
</pre>


La syntaxe est la suivante :
===Possibilité 2 : Partitionnement GPT pour BIOS===
 
Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque :
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type <code>EF02</code>. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>.
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>.
 
Notez que la partition du bootloader ne doit pas être formatée.
 
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===
 
A titre informatif : création avec <code>parted</code>, sans nécessité de créer une partition dédiée au bootloader/grub : créez juste la partition root et swap.
 
==Création du RAID==
 
Pour des raisons esthétiques, définissez l'hostname de votre système de rescue :
<pre>hostname debian</pre>
 
Pour créer votre raid 1 avec 2 disques :
<pre>
<pre>
debootstrap <version> <point de montage>
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
</pre>
</pre>


L'actuelle version stable de debian est <code>squeeze</code>.
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de <code>--raid-devices</code> et ajouter les partitions des disques à la suite.


Pour installer une architecture précise, spécifier l'option <code>--arch=<architecture</code>
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande <code>watch cat /proc/mdstat</code>.
Les architectures les plus courantes :
* <code>amd64</code> pour les microprocesseurs supportant les jeux d'instruction 64 bits. Parfois appelé <code>x86-64</code> ou <code>EM64T</code>.
* <code>i386</code> pour les microprocesseurs plus anciens ne supportant que les instructions 32 bits. Aussi appelé <code>x86</code> ou <code>x86-32</code>.
* <code>ia64</code> pour les microprocesseurs Itanium et Itanium 2 de intel
* <code>armel</code> pour les microprocesseurs ayant une architecture ARM, fréquemment utilisés dans les téléphones mobiles, smartphone et tablettes du fait de leur faible consommation.


Je vais prendre l'installation de debian par debootstrap en mode rescue chez ovh comme exemple.
==Création des systèmes de fichiers==


Fichiers à sauvegarder issu d'une ancienne installation : /etc/networks, /etc/network/interfaces, /etc/resolv.conf, /etc/hosts, /etc/fstab, /etc/lilo.conf, /etc/default/rcS (pour vous simplifier la vie)
Créez un système de fichier ext4 pour le raid du root :
<pre>
mkfs.ext4 /dev/md2
</pre>


Pour commencer, rebootez votre serveur en mode rescue.
Enfin, initialisez les swaps :
<pre>
mkswap /dev/sda3
mkswap /dev/sdb3
</pre>


=Partitionnement=
=Installation de debian=


Utilisez <code>cfdisk</code> puis <code>mkfs.ext4</code> et <code>mkswap</code> pour formater les partitions.
==Installation du système de base==


=Installation=
Nous débutons par installer le système de base de Debian avec <code>debootstrap</code>


Lancez debootstrap :
Installez les paquets nécessaires dans votre rescue :
<pre>apt install debootstrap debian-archive-keyring</pre>
 
Montez votre partition raid root sur <code>/mnt</code> :
<pre>
<pre>
mount /dev/sda1 /mnt
mount /dev/md2 /mnt
debootstrap --arch=amd64 squeeze /mnt
...
I: Base system installed successfully.
</pre>
</pre>


=Configuration=
Installez le système de base debian, version bookworm :
<pre>debootstrap --arch=amd64 --include=openssl,ca-certificates trixie /mnt http://deb.debian.org/debian</pre>


==Configuration de Debian==
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :
<pre>
<pre>
mount -o bind /proc /mnt/proc
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /sys /mnt/sys
mount -o bind /sys /mnt/sys
mount -o bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
chroot /mnt
chroot /mnt
</pre>
</pre>


Configurez :
Configurez les archives apt : éditez le fichier <code>/etc/apt/sources.list.d/debian.sources</code> :
* /etc/fstab
* /etc/network/interfaces
* /etc/hostname
* /etc/resolv.conf
* /etc/default/rcS (fsckfix a yes)
* /etc/hosts
 
/etc/apt/sources.list :
<pre>
<pre>
deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
# main updates and backports
deb-src http://ftp.fr.debian.org/debian squeeze main contrib non-free
Types: deb
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg


#Sec
# security
deb http://security.debian.org/ squeeze/updates main contrib non-free
Types: deb
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
</pre>


#anciennement debian-volatile
Mettez à jour les paquets :
deb http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
<pre>
deb-src http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
apt update
apt full-upgrade
</pre>
</pre>


Installez les locales et la configuration de console :
<pre>
<pre>
aptitude update
apt install locales  
aptitude install locales  
dpkg-reconfigure locales
dpkg-reconfigure locales
aptitude install console-data
apt install console-data console-setup-linux console-setup wget
dpkg-reconfigure console-data # from arch > french > latin9)
dpkg-reconfigure console-data # from arch > french > latin9)
</pre>
</pre>


kernel :
Définissez la zone horaire :
<pre>
tzselect
dpkg-reconfigure tzdata
</pre>
 
Configurez votre fichier <code>/etc/fstab</code>.<br>
'''Pour GPT pour EFI / UEFI :'''
<pre>
# <file system> <mount point>  <type>  <options>                                <dump>  <pass>
/dev/md2        /              ext4    defaults,errors=remount-ro,relatime      0      1
/dev/sda1      /boot/efi      vfat    defaults                                  0      1
/dev/sda3      swap    swap    sw,pri=1                                          0      0
/dev/sdb3      swap    swap    sw,pri=1                                          0      0
</pre>
 
'''Pour GPT ou MBR pour BIOS :'''
<pre>
# <file system> <mount point>  <type>  <options>                                <dump>  <pass>
/dev/md2        /              ext4    defaults,errors=remount-ro,relatime      0      1
/dev/sda3      swap    swap    sw,pri=1                                          0      0
/dev/sdb3      swap    swap    sw,pri=1                                          0      0
</pre>
 
'''Dans le cas d'un partitionnement GPT pour EFI / UEFI''' : montez la partition EFI / ESP :
<pre>
mkdir /boot/efi
mount /boot/efi
</pre>
 
Configurez les interfaces réseaux dans <code>/etc/network/interfaces</code> :
<pre>
# The loopback network interface
auto lo
iface lo inet loopback
 
auto eno3
iface eno3 inet static
        address XXXX/24
        gateway XXXX
</pre>
 
Configurez le fichier <code>/etc/hosts</code> :
<pre>
127.0.0.1      localhost
::1            localhost ip6-localhost ip6-loopback
fe00::0        ip6-localnet
ff00::0        ip6-mcastprefix
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
ff02::3        ip6-allhosts
 
127.0.1.1      debian.domain.tld debian
</pre>
 
Définissez les hostnames dans ces fichiers :
<pre>
<pre>
cd /boot
# Pour celui la : non-fqdn
wget ftp://ftp.ovh.net/made-in-ovh/bzImage/System.map-2.6.24.5-xxxx-grs-ipv6-32
echo debian > /etc/hostname
wget ftp://ftp.ovh.net/made-in-ovh/bzImage/bzImage-2.6.24.5-xxxx-grs-ipv6-32
# Pour celui la : fqdn
echo debian.domain.tld > /etc/mailname
</pre>
</pre>


N'oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans <code>/etc/resolv.conf</code> :
<pre>nameserver XX.XX.XX.XX</pre>
Installez postfix :
<pre>
<pre>
aptitude install lilo
hostname -F /etc/hostname
apt install postfix
</pre>
</pre>


Configurez /etc/lilo.conf + y ajouter l'option "large-memory"
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer <code>madadm</code> à ce stade :
<pre>apt install mdadm</pre>
 
Vérifiez si votre array root s'est bien défini automatiquement dans <code>/etc/mdadm/mdadm.conf</code>. Si ce n'est pas me cas, ajoutez la configuration de l'array manuellement :
<pre>mdadm --examine --scan >> /etc/mdadm/mdadm.conf</pre>
 
==Installation du kernel==
 
===Possibilité 1 : Partitions GPT pour EFI / UEFI===
 
Vérifiez que <code>/boot/efi</code> est bien monté. Si ce n'est pas le cas, faites le.


Installez le kernel proxmox :
<pre>
<pre>
lilo
apt install linux-image-amd64 grub-efi-amd64 gdisk
tzselect
</pre>
dpkg-reconfigure tzdata
 
Supprimez les paquets suivant si vous n'avez pas besoin de secureboot :
<pre>apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned</pre>
 
Normalement tout doit se faire avec des promps (<code>dpkg-reconfigure grub-efi-amd64</code>). Si ce n'était pas le cas :
<pre>grub-install --bootloader-id=debian</pre>
 
Si jamais vous utilisez un démarrage en PXE (c'est le cas sur un serveur OVH par exemple), utilisez l'argument <code>--no-nvram</code> pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :
<pre>grub-install --bootloader-id=debian --no-nvram</pre>
 
Etant donné que seul <code>/dev/sda1</code> est monté sur <code>/boot/efi</code>, il faut transférer manuellement les données sur <code>/dev/sdb1</code> :
<pre>
mount /dev/sdb1 /mnt
rsync -av /boot/efi/ /mnt/
umount /mnt
</pre>
 
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===
 
<pre>
apt install linux-image-amd64 grub-pc gdisk
</pre>
 
Lorsqu'on vous demandera où installer grub, choisissez <code>sda</code> ET <code>sdb</code>. Sinon :
<pre>
grub-install /dev/sda
grub-install /dev/sdb
</pre>
</pre>


Installez openssh
==Installation de proxmox - OpenSSH==
 
Installez openssh et définissez votre clé ssh.
<pre>
<pre>
aptitude install openssh-server
hostname -F /etc/hostname
apt install openssh-server
echo "votre clé ssh" > /root/.ssh/authorized_keys
</pre>
</pre>


Configurez le password root:
==Vérifications finales et redémarrage sur le kernel==
 
Si vous avez une configuration particulière à entrer dans <code>/etc/default/grub</code>, faites le maintenant. Par exemple :
<pre>
<pre>
passwd
GRUB_CMDLINE_LINUX="nomodeset iommu=pt"
</pre>
</pre>


Commentez le mount de /home et /srv et du swap dans /etc/fstab (ils poseront potentiellement problème car udev n'est pas encore installé, et il vaut mieux ne l'installer qu'après avoir booté sur le nouveau debian)
Puis régénérez la configuration de grub :
<pre>update-grub</pre>
 
Vous pouvez vérifier que votre fstab est valide avec :
<pre>findmnt --verify --verbose</pre>
 
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier


<pre>
<pre>
umount /boot/efi/
exit
exit
</pre>
<pre>
umount /mnt/sys/firmware/efi/efivars
umount /mnt/sys
umount /mnt/sys
umount /mnt/dev/pts
umount /mnt/dev
umount /mnt/dev
umount /mnt/proc
umount /mnt/proc
Ligne 120 : Ligne 300 :
</pre>
</pre>


Rebootez en mode HD
'''Enfin, redémarrez le serveur sur le disque dur.'''
 
Une fois le reboot terminé : se reconnecter et installer udev
<pre>aptitude install udev</pre>
 
Editer <code>/etc/fstab</code> et décommenter les lignes montants <code>/home</code>, <code>/srv</code> et le swap.