User Tools

Site Tools


debian:linux-chroot-ubuntu

Installer Ubuntu à partir d'un système Unix/Linux dans un chroot

Cette section explique comment installer Ubuntu à partir d’un système Unix ou Linux existant, sans utiliser le programme d’installation piloté par menu.

Une fois le nouveau système Ubuntu configuré, on peut y migrer les données utilisateur existantes (le cas échéant) et continuer ainsi. Il s’agit donc d’une installation Ubuntu à «zéro temps d’arrêt». C'est également un moyen de gérer du matériel qui ne fonctionne pas correctement avec différents supports de démarrage ou d'installation.

Préparation de l'environnement

Préparation du support

Avec les outils de partitionnement habituels, partitionner le disque dur de destination, en créant au moins un système de fichiers et un échange. Il faut environ 506 Mo d'espace disponible pour une installation sur console uniquement.

Ensuite, créer des systèmes de fichiers sur les partitions. Par exemple, pour créer un système de fichiers ext3 sur la partition /dev/sda6:

mke2fs -j /dev/sda6

Pour créer un système de fichiers ext2 à la place, omettre -j.

Initialiser et activer le swap (remplacer le numéro de partition par la partition de swap Ubuntu prévue):

mkswap /dev/sda5
sync
swapon /dev/sda5

Repmarque: Au lieu d'utiliser une partition swap dédiée, on peut omettre la configuration de la partition swap ici et utiliser simplement un fichier swap.

Monter une partition en tant que /mnt/ubuntu (le point d’installation, qui sera le système de fichiers racine (/) sur le nouveau système). Le nom du point de montage est strictement arbitraire, il est référencé plus tard.

mkdir /mnt/ubuntu
mount /dev/sda6 /mnt/ubuntu

Pour monter des parties du système de fichiers (par exemple, /usr) sur des partitions distinctes, il faudra créer et monter ces répertoires manuellement avant de passer à l'étape suivante.

Installer debootstrap

L'utilitaire utilisé par le programme d'installation Ubuntu et reconnu comme le moyen officiel d'installer un système de base Ubuntu est debootstrap. Il utilise wget et ar, mais ne dépend sinon que de /bin/sh et des outils de base Unix/Linux. Installer wget et ar s'ils ne sont pas déjà sur lee système actuel, puis télécharger et installer debootstrap. Si ces étapes sont exécutées sous Ubuntu, on peut le faire simplement en installant debootstrap.

Ou, on peut utiliser la procédure suivante pour l'installer manuellement. Créer un dossier de travail pour extraire le .deb dans:

mkdir work
cd work

Le binaire debootstrap se trouve dans l’archive Ubuntu (sélectionner le fichier approprié pour l'architecture). Télécharger le fichier debootstrap.deb à partir du pool, copier le package dans le dossier de travail et extraire les fichiers de celui-ci. Il fuat utiliser des privilèges root pour installer les fichiers.

ar -x debootstrap_0.X.X_all.deb
cd /
zcat /full-path-to-work/work/data.tar.gz | tar xv

Lancer debootstrap

debootstrap peut télécharger les fichiers nécessaires directement à partir de l'archive lorsqu'on l'exécute. On peut remplacer ports.ubuntu.com/ubuntu-ports par n'importe quel miroir d'archive Ubuntu dans l'exemple de commande ci-dessous, de préférence un miroir proche de votre réseau. Les miroirs sont répertoriés à l'adresse http://wiki.ubuntu.com/Archive.

Si on a un CD bionique Ubuntu monté sur /cdrom, vous pouvez remplacer l’URL du fichier par l’URL http: file:/cdrom/ubuntu/

Dans la commande debootstrap, remplacer ARCH par l'un des éléments suivants: amd64, arm64, armhf, i386, powerpc, ppc64el ou s390x.

/usr/sbin/debootstrap --arch ARCH bionic /mnt/ubuntu

Configurer le système de base

On a maintenant un vrai système Ubuntu, bien que maigre, sur disque. se chrooté dedans:

LANG=C.UTF-8 chroot /mnt/ubuntu /bin/bash

Configuration du terminal

Après avoir chrooté, il faudra peut-être définir la définition du terminal pour qu'elle soit compatible avec le système de base Ubuntu, par exemple:

export TERM=xterm-color

En fonction de la valeur de TERM, il faudra peut-être installer le package ncurses-term pour obtenir de l'aide.

Si des avertissements comme bash: warning: setlocale: LC_ALL: impossible de modifier les paramètres régionaux (en_US.UTF-8),se produisent, les fichiers de localisation requis doivent être générés:
sudo locale-gen en_US.UTF-8

Configurer Apt

Debootstrap aura créé un fichier /etc/apt/sources.list très basique qui permettra d’installer des paquets supplémentaires. Toutefois, il est suggéré d'ajouter des sources supplémentaires, par exemple pour les packages source et les mises à jour de sécurité:

deb-src http://archive.ubuntu.com/ubuntu bionic main

deb http://security.ubuntu.com/ubuntu bionic-security main
deb-src http://security.ubuntu.com/ubuntu bionic-security main

Exécuter apt update après avoir modifié la liste des sources.

Installer des paquets supplémentaires

Maintenant, il est nécessaire d'installer certains paquets supplémentaires, tels que makedev (nécessaire pour la section suivante): apt install makedev

Ou si on utilise l'architecture s390x le paquet obligatoire s390-tools: apt install s390-tools

Préparer le système de fichier

Créer des fichiers de périphérique

À ce stade, /dev/ ne contient que des fichiers de périphérique très élémentaires. Pour les prochaines étapes de l'installation, des fichiers de périphérique supplémentaires peuvent être nécessaires. Il existe différentes façons de procéder. La méthode à utiliser dépend du système hôte utilisé pour l'installation, de l'intention d'utiliser un noyau modulaire ou non, et de l'intention d'utiliser fichiers de périphérique Dynamic (par exemple, avec udev). ) ou des fichiers de périphérique statiques pour le nouveau système.

Quelques unes des options disponibles sont:

  • créer un ensemble par défaut de fichiers de périphériques statiques à l'aide de (après chrooter)
mount none /proc -t proc
cd /dev
MAKEDEV générique
# ou selon l'architecture spécifique:
MAKEDEV std
cd ..
  • créer manuellement uniquement des fichiers de périphérique spécifiques à l'aide de MAKEDEV
# Sur s390x, les périphériques DASD doivent être créés comme suit:
cd /dev
MAKEDEV dasd
cd ..
  • faire un mount --bind à partir du système hôte au-dessus de /dev dans le système cible, par exemple:
mount --bind dev / dev

Les scripts postinst de certains paquetages peuvent essayer de créer des fichiers de périphérique. Cette option ne doit donc être utilisée qu'avec précaution.

Monter proc et sys

On peut monter les systèmes de fichiers proc et sys plusieurs fois et à des emplacements arbitraires, bien que /proc et /sys soient respectivement usuels.

mount -t proc proc /proc
mount -t sysfs sysfs /sys

La commande ls /proc doit maintenant afficher un répertoire non vide. Si cela échoue, il faudra peut-être monter proc de l'extérieur du chroot:

mount -t proc proc /mnt/ubuntu/proc

Monter les partitions

Il faut créer /etc/fstab.

vi /etc/fstab

Voici un exemple de contenu que l'on peut modifier en fonction des besoins :

# /etc/fstab: informations sur le système de fichiers statique.
# fabriqué à la main
# options de type de point de montage du système de fichiers dump pass
#
/dev/dasdb1/ ext4 default 0 1

/swapfile none swap sw 0 0

Utiliser mount -a pour monter tous les systèmes de fichiers spécifiés dans le nouveau /etc/fstab ou, pour monter des systèmes de fichiers individuellement, utiliser:

mount /path # exemple: mount/usr

Les systèmes Ubuntu actuels ont des points de montage pour les supports amovibles sous /media, mais conservent les liens symboliques de compatibilité dans /. Créer ses liens au besoin, par exemple:

cd /media
mkdir cdrom0
ln -s cdrom0 cdrom
cd /
ln -s media /cdrom

Même si lsdasd répertorie déjà les périphériques DASD:

lsdasd

  ID de bus Nom d'état Type de périphérique BlkSz Size Blocks
  =============================================== ============================
  0.0.1601 actif dasda 94: 0 ECKD 4096 7043MB 1803060
  0.0.260a actif dasdb 94: 4 ECKD 4096 7043MB 1803060

… ainsi que d'autres périphériques CCW tels que DASD, FCP ou QETH, ceux-ci ne peuvent pas encore être utilisés complètement et de manière persistante.

lszdev --online | head -n 1 && lszdev --online | grep dasd-eckd

  TYPE ID SUR NOMS PERS.
  dasd-eckd 0.0.0123 oui non dasda
  dasd-eckd 0.0.1234 oui non dasdb

Ici, DASD 1234 est celui utilisé pour debootstrap. Il faut activer cette DASD de manière persistante à l’aide de l’outil habituel chzdev:

chzdev -e 1234

  ECKD DASD 0.0.1234 configuré

lszdev --en ligne 1234

  TYPE ID SUR NOMS PERS.
  dasd-eckd 0.0.1234 oui oui dasdb

Répéter les mêmes étapes pour d’autres périphériques CCW, tels que FCP, QETH ou d’autres périphériques DASD, autant que nécessaire.

Réglage du fuseau horaire

Le réglage de la troisième ligne du fichier /etc/adjtime sur “UTC” ou “LOCAL” détermine si le système interprétera l'horloge matérielle comme étant définie sur l'heure locale UTC respective.

vi /etc/adjtime
0,0 0 0,0
0
UTC

La commande suivante permet de choisir le fuseau horaire.

dpkg-reconfigure tzdata

Configurer le réseau

Pour configurer la mise en réseau, éditer /etc/network/interfaces, /etc/resolv.conf, /etc/hostname et /etc/hosts.

cat /etc/network/interfaces << "EOF"
################################################# #####################
# / etc / network / interfaces - fichier de configuration pour ifup (8), ifdown (8)
# Voir la page de manuel interfaces (5) pour plus d’informations sur les options disponibles.
# disponible.
################################################# #####################

# Interface de bouclage.
#
auto lo
iface lo inet loopback

# Pour utiliser dhcp:
#
# auto eth0
# iface eth0 inet dhcp

# Exemple de configuration IP statique: (la diffusion et la passerelle sont facultatifs)
#
# auto eth0
# iface eth0 inet statique
# adresse 192.168.0.42
# réseau 192.168.0.0
# masque de réseau 255.255.255.0
# diffusion 192.168.0.255
# passerelle 192.168.0.1
EOF

Entrer le serveur de noms et vos directives de recherche dans /etc/resolv.conf:

cat /etc/resolv.conf<< "EOF"
search hqdom.local
nameserver 10.1.1.36
nameserver 192.168.9.100
EOF

Entrer le nom d'hôte du système (2 à 63 caractères):

echo UbuntuHostName> /etc/hostname

Et un /etc/hosts de base avec support IPv6:

cat /etc/hosts << "EOF"
127.0.0.1 localhost
127.0.1.1 UbuntuHostName

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
:: 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
EOF

Lorsqu'on a plusieurs cartes réseau, il faut organiser les noms des modules de pilotes dans le fichier /etc/modules dans l'ordre souhaité. Ensuite, au démarrage, chaque carte sera associée au nom d’interface (eth0, eth1, etc.) attendu.

Configurer les paramètres régionaux et le clavier

Pour configurer les paramètres régionaux de manière à utiliser une langue autre que l'anglais, il fautinstaller les modules de langue appropriés et les configurer. Actuellement, l'utilisation des paramètres régionaux UTF-8 est recommandée.

apt installer language-pack-fr language-pack-gnome-fr

Puis configurer votre clavier (si nécessaire):

apt install console-setup
dpkg-reconfigure keyboard-configuration

Le clavier ne peut pas être configuré dans le chroot, mais sera configuré pour le prochain redémarrage.

Installer un noyau

Pour démarrer ce système, Il est nécessaire d'avoir un noyau Linux et un chargeur de démarrage. Identifier les noyaux pré-emballés disponibles avec:

apt-cache search linux-image

Ensuite, installer le paquet de noyau en utilisant son nom.

apt install linux-image-arch-etc

(On peut également installer linux-image-generic.)

Configurer le chargeur d'amorçage

Pour que le système Ubuntu soit amorçable, configurer le chargeur de démarrage pour charger le noyau installé avec la nouvelle partition racine. debootstrap n’installe pas de chargeur de démarrage, utiliser apt dans votre chroot Ubuntu pour le faire.

Le chargeur de démarrage zipl fait partie du package s390-tools installé précédemment. Consulter man zipl.conf pour des instructions sur la configuration du chargeur de démarrage. Créer une configuration zipl.conf à partir de rien ou copier et modifier celle existante.

Voici un exemple de base de /etc/zipl.conf:

[defaultboot]
defaultmenu=menu

:menu
target=/boot
1=Ubuntu
défaut=1

[Ubuntu]
target=/boot
image=/boot/vmlinuz
ramdisk=/boot/initrd.img
parameters=root=/dev/dasdb1

Étant donné que les noms de fichiers du noyau et initrd dans /boot sont versionnés, il est recommandé de les lier à des noms par défaut non versionnés, tels que:

ln -s /boot/vmlinuz-4.15.0-23-generic /boot/vmlinuz
ln -s /boot/initrd.img-4.15.0-23-generic /boot/initrd.img

ls -la / boot / vmlinuz * /boot/initrd.img*

  lrwxrwxrwx 1 racine 28 juin 20 07:31 /boot/initrd.img -> initrd.img- <version> -generic
  -rw-r - r-- 1 racine racine 11245088 20 juin 07:14 /boot/initrd.img-<version>-générique
  lrwxrwxrwx 1 racine racine 25 juin 20 07:31 / boot / vmlinuz -> vmlinuz- <version> -generic
  -rw ------- 1 racine racine 4390912 23 mai 12:54 / boot / vmlinuz- <version> -generic

Enfin, exécuter la commande zipl pour écrire la configuration sur le disque:

zipl

  Utilisation du fichier de configuration '/etc/zipl.conf'
  Construire bootmap dans '/ boot'
  Menu de construction 'menu'
  Ajout n ° 1: section IPL 'ubuntu' (par défaut)
  Préparation du périphérique d’amorçage: dasdb (<votre numéro de périphérique dasd>).
  Terminé.

Touches finales

Accès à distance: Installation de SSH et configuration de l'accès

Pour pouvoir se connecter au système via le réseau, installer SSH et configurer l'accès.

apt install openssh-server

La connexion root avec mot de passe est désactivée par défaut. Il faut donc configurer l'accès en définissant un mot de passe root

passwd

et en réactivant la connexion root avec mot de passe dans /etc/ssh/sshd_config:

PermitRootLogin yes

L'accès peut également être configuré en ajoutant une clé ssh au compte root:

mkdir /root/.ssh
cat << EOF> /root/.ssh/authorized_keys
ssh-rsa ....
EOF

Enfin, l'accès peut être configuré en ajoutant un utilisateur non root et en lui définissant un mot de passe:

adduser joe
passwd joe

Complétion de l'installation

Comme mentionné précédemment, le système installé sera très basique. Pour rendre le système un peu plus mature, il existe une méthode simple pour installer tous les packages correspondants à une “tâche” particulière.

Tasksel est une application d'installation de logiciels faisant partie intégrante de l'installeur Debian. Tasksel regroupe les paquets à installer par tâches (ex. serveur LAMP, création audio, etc.), permettant ainsi à l'utilisateur d'installer très facilement l'ensemble des paquets nécessaires à une tâche particulière.

apt install tasksel tasksel install standard Bien sûr, on peut aussi simplement utiliser apt pour installer les paquets individuellement.

Nettoyage du système

Après l'installation, il y aura beaucoup de packages téléchargés dans /var/cache/apt/archives/. On peut libérer de l'espace disque en lançant:

apt clean

Utilisateurs admin

Utiliser la commande adduser pour créer un nouveau compte utilisateur:

adduser myusername

Répondre à l'invite pour entrer un nom complet et un mot de passe.

La configuration normale d'Ubuntu consiste à permettre à ce nouvel utilisateur d'administrer le système à l'aide de sudo. Pour le configurer, créer d'abord un groupe des administrateurs et y ajouter le nouvel utilisateur:

addgroup --system admin
adduser myusername admin

On peut maintenant utiliser la commande visudo pour ajouter ces lignes à la fin de /etc/sudoers, afin que tout utilisateur du groupe admin puisse administrer le système:

# Les membres du groupe admin peuvent obtenir les privilèges root
%admin ALL=(ALL) ALL

Lorsqu'on n'utilise pas cette configuration, il faut définir un mot de passe root: passwd root

debian/linux-chroot-ubuntu.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1