Installation squeeze chroot debootstrap
Installation d'une Squeeze avec debootstrap et chroot
L'objectif est d'installer une Squeeze (sur une nouvelle partition) à partir d'une autre Debian (ici une autre Squeeze, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…
Avantage : rester dans mon environnement de travail pendant toute l'installation…
Parti-pris : utilisation de nano comme éditeur
Pré-requis
Pré-requis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian).
root@Janus:~# apt-get install debootstrap
Formatage de la partition qui va recevoir la Squeeze :
J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.
La partition cible (ici /dev/sda4) devra aussi être adaptée à votre configuration.
root@Janus:~# mkfs -V -t ext4 /dev/sda4
Création du répertoire qui va recevoir le système et montage de la partition fraîchement formatée dans ce nouveau répertoire.
J'ai choisi /var/chroot/squeeze_i386_sda4.
Un petit « ls » à la fin pour vérifier que la partition est bien montée.
root@Janus:~# mkdir -p /var/chroot/squeeze_i386_sda4 root@Janus:~# mount /dev/sda4 /var/chroot/squeeze_i386_sda4 root@Janus:~# cd /var/chroot/squeeze_i386_sda4 root@Janus:/var/chroot/squeeze_i386_sda4# ls lost+found
Installation avec debootstrap
Installation de la Squeeze avec debootstrap (j'ai choisi une Squeeze i386, rien ne vous empêche de choisir une Lenny amd64 ou bien même une Sid…)
Astuces :
_Vous pouvez utiliser un dépôt local pour cette installation. Détails ici sur le forum.debian-fr.org
_Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/
_En ajoutant l'option --variant=minbase à debootstrap, vous installerez uniquement le strict minimum de paquets (pas d'aptitude, de vim, d'exim4, etc.).
root@Janus:/var/chroot/squeeze_i386_sda4# debootstrap --arch i386 squeeze /var/chroot/squeeze_i386_sda4/ http://ftp2.fr.debian.org/debian/ I: Retrieving Release I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Found additional required dependencies: insserv libbz2-1.0 libdb4.8 libslang2 I: Found additional base dependencies: libnfnetlink0 libsqlite3-0 I: Checking component main on http://ftp2.fr.debian.org/debian... I: Retrieving/Validating un tas de paquets I: Chosen extractor for .deb packages: dpkg-deb I: Extracting un tas de paquets... I: Installing core packages... I: Unpacking required packages... I: Unpacking un tas de paquets... I: Configuring required packages... I: Configuring un tas de paquets... I: Unpacking the base system... I: Unpacking un tas de paquets... I: Configuring the base system... I: Configuring un tas de paquets... I: Base system installed successfully.
Si tout s'est bien passé, un "ls" vous retournera la toute nouvelle arborescence :
root@Janus:/var/chroot/squeeze_i386_sda4# ls bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
À ce niveau, votre Squeeze est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas démarrer dessus…
Préparation du chroot
Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc.
Vous devez éditer votre fstab pour que ces répertoires soient montés (et liés - « bind/rbind ») automatiquement dans votre répertoire chroot.
root@Janus:/var/chroot/squeeze_i386_sda4# nano /etc/fstab
Ajoutez-y :
## chroot Squeeze i386 sda4 /tmp /var/chroot/squeeze_i386_sda4/tmp none bind 0 0 /dev /var/chroot/squeeze_i386_sda4/dev none rbind 0 0 /proc /var/chroot/squeeze_i386_sda4/proc none bind 0 0
Ctrl+O (enregistrer) Ctrl+X (Quitter)
root@Janus:/var/chroot/squeeze_i386_sda4# mount -a
(cette commande monte tout ce qui est dans votre fstab)
Pour « normaliser les comptes et groupes » de votre nouvelle Squeeze (que les utilisateurs et groupes aient les mêmes identifiants dans votre système "hôte" et dans votre chroot) tapez les commandes suivantes :
root@Janus:/var/chroot/squeeze_i386_sda4# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd >> /var/chroot/squeeze_i386_sda4/etc/passwd root@Janus:/var/chroot/squeeze_i386_sda4# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group >> /var/chroot/squeeze_i386_sda4/etc/group
Vous allez maintenant entrer dans votre environnement chroot (tadaa !) :
root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4 root@Janus:/#
Finalisation de l'installation et réglages de la Squeeze
Vous êtes maintenant dans votre nouvelle Squeeze, mais ce n'est pas terminé, votre système est incomplet, impossible de démarrer dessus…
"locales"
Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé de faire un fsck…
En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…
root@Janus:/# apt-get update root@Janus:/# apt-get install locales root@Janus:/# dpkg-reconfigure locales root@Janus:/# dpkg-reconfigure tzdata root@Janus:/# hwclock --systohc --utc
Il faut modifier le fichier /etc/default/rcS pour forcer le système à se mettre en heure locale…
Explications sur le forum.debian-fr.org
root@Janus:/# nano /etc/default/rcS
Il faut modifier la ligne utc : UTC=no
root@Janus:/# apt-get install ntpdate root@Janus:/# ntpdate ntp.metas.ch
Le sources.list
Nous allons maintenant compléter nos dépôts
J'ai complété avec quelques dépôts tiers. Vous pourriez tout aussi bien ne pas le faire, mais c'est sympa d'avoir un peu de choix, non ? J'ai ajouté le dépôt « backports » pour avoir accès à un noyau récent, vous n'êtes, là encore, pas obligé de le faire.
root@Janus:/# nano /etc/apt/sources.list deb http://ftp2.fr.debian.org/debian/ squeeze main ## Mises-à-jour de sécurité deb http://security.debian.org/ squeeze/updates main deb http://ftp2.fr.debian.org/debian/ squeeze-updates main ## Rétroportages - http://backports-master.debian.org/ deb http://debian.advalem.net/debian-backports/ squeeze-backports main ## Debian Multimedia - http://deb-multimedia.org/ deb http://debian-multimedia.tryphon.eu/ squeeze main
Si vous décidez d'ajouter les dépôts Multimedia, il peut être intéressant de créer un fichier preferences pour leur attribuer une priorité moins importante que les dépôts officiels de Debian. De cette façon vous éviterez des problèmes de compatibilité entre versions.
root@Janus:/# nano /etc/apt/preferences Package: * Pin: release o=Unofficial Multimedia Packages Pin-Priority: 400
Mettons à jour :
root@Janus:/# apt-get update
Vous obtiendrez probablement cette erreur :
W: Erreur de GPG : http://debian-multimedia.tryphon.eu squeeze Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
Dans ce cas la solution est simple :
root@Janus:/# apt-get install deb-multimedia-keyring && apt-get update ATTENTION : les paquets suivants n'ont pas été authentifiés. deb-multimedia-keyring Faut-il installer ces paquets sans vérification (o/N) ? o root@Janus:/# apt-get upgrade
Si le paquet deb-multimedia-keyring n'existe pas sur le serveur que vous utilisez, remplacez-le dans les commandes précédentes par debian-multimedia-keyring.
Clavier
Configurons maintenant le clavier
root@Janus:/# apt-get install console-data
Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-fr… Dans le chroot il ne doit pas détecter autre chose…
Looking for keymap to install: mac-usb-fr
Rectifions :
root@Janus:/# dpkg-reconfigure -plow console-data (option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard Looking for keymap to install: fr-latin9 (cette fois-ci c'est bon)
hostname et fstab
root@Janus:/# exit
Nous sommes sortis du chroot, quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…
root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/squeeze_i386_sda4/etc/ root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/network/interfaces /var/chroot/squeeze_i386_sda4/etc/network/ root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/fstab /var/chroot/squeeze_i386_sda4/etc/ root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4/
+ Réglage du fsab
root@Janus:/# blkid (cette commande permet de récupérer le UUID de vos disques pour votre nouveau fstab… Ne vous faites pas prendre, le formatage change l'UUID…) /dev/sda1: UUID="83953ec9-f173-4bde-84b4-77cfa0ad5d95" TYPE="ext4" /dev/sda2: UUID="cfe0a0d6-3280-4104-878d-efede6cce024" TYPE="swap" /dev/sda3: UUID="57a6f7ec-8de6-4f47-a244-f171c6a41ab3" TYPE="ext4" /dev/sda4: UUID="34bf3784-2c97-48e3-92ce-025e3cd6344c" TYPE="ext4"
root@Janus:/# nano /etc/fstab (à rectifier en fonction de votre configuration) proc /proc proc defaults 0 0 UUID=34bf3784-2c97-48e3-92ce-025e3cd6344c / ext4 errors=remount-ro 0 1 UUID=57a6f7ec-8de6-4f47-a244-f171c6a41ab3 /home ext4 defaults 0 2 UUID=cfe0a0d6-3280-4104-878d-efede6cce024 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/scd1 /media/cdrom1 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix…)
root@Janus:/# mkdir /media/cdrom0 /media/cdrom1 /media/floppy0
L'environnement graphique
Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… Gnome, Kde, aucun…)
N'oubliez pas d'installer aussi un gestionnaire de connexion !
root@Janus:/# apt-get install xfce4 gdm
Le noyau et Grub2
Installons un noyau… Ce serait bête d'oublier :wink:
root@Janus:/# apt-cache search linux-image (choisissez dans la liste qu'il vous propose, celui que je cite n'est qu'un exemple que vous n'êtes pas forcés de suivre…) (…) linux-image-3.2.0-0.bpo.2-686-pae - Linux 3.2 for modern PCs (…)
Ici il faut récupérer votre kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.
Ce fichier n'existe pas dans le système créé par debootstrap.
La ligne intéressante : do_initrd = yes
root@Janus:/# exit root@Janus:/var/chroot/squeeze_i386_sda4# cp /etc/kernel-img.conf /var/chroot/squeeze_i386_sda4/etc/kernel-img.conf root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4 root@Janus:/# apt-get install -t squeeze-backports linux-image-3.2.0-0.bpo.2-686-pae root@Janus:/# exit
Maintenant… Modifions notre grub pour que ce nouveau système soit opérationnel :
Attention, je suis sous Grub2. Si vous êtes sous Grub "legacy" la commande est différente évidemment…
root@Janus:/var/chroot/squeeze_i386_sda4# apt-get install os-prober root@Janus:/var/chroot/squeeze_i386_sda4# update-grub (…) Found Debian GNU/Linux (6.0.4) on /dev/sda4 (…)
Divers - mots de passe
Derniers "fignolages"… J'installe un navigateur Web (Iceweasel), et GParted.
Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels !
root@Janus:/var/chroot/squeeze_i386_sda4# chroot /var/chroot/squeeze_i386_sda4 root@Janus:/# apt-get install gparted iceweasel iceweasel-l10n-fr
Enfin, les mots de passe…
Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?
root@Janus:/# nano /etc/passwd (…) legoth:x:1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh (…)
Vous enlevez le x pour que cela ressemble à ça :
legoth::1000:1000:Le Gonidec,,,:/home/legoth:/bin/sh
Ceci afin de pouvoir connecter vos utilisateurs "normaux". Il faut maintenant créer les mots de passe.
root@Janus:/# passwd Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès root@Janus:/# su legoth -c passwd Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès root@Janus:/# exit root@Janus:/var/chroot/squeeze_i386_sda4# reboot
Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !
Tasksel
Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire Tasksel.
La commande suivante détaille les "tâches" que Tasksel peut réaliser pour vous… (vous remarquerez que ce sont les mêmes choix que dans une installation "classique" qui sont proposés)
root@Janus:/# tasksel --list-tasks u desktop Graphical desktop environment u web-server Web server u print-server Print server u dns-server DNS server u file-server File server u mail-server Mail server u database-server SQL database u ssh-server SSH server u laptop Laptop u manual manual package selection
Chaque "tâche" installe un ensemble de paquets utiles pour certaines utilisations. "u" pour non installé. Une tâche installée commence par "i".
Il ne vous reste plus qu'a taper dans la console :
root@Janus:/# tasksel --task-packages nom_tache
Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :
tasksel install standard
Cette commande installe un ensemble de paquets "standards". Je vous renvoie à la page Tasksel pour plus de détails.
Versions des programmes utilisés dans ce tutoriel
bash 4.1-3
apt 0.8.10.3+squeeze1
e2fsprogs 1.41.12-4stable1
coreutils 8.5-1
mount 2.17.2-9
debootstrap 1.0.26+squeeze1
nano 2.2.4-1
grep 2.6.3-3
os-prober 1.42
grub-pc 1.98+20100804-14+squeeze1
sysvinit 2.88dsf-13.1
--Vv222 8 mai 2012 à 22:00 (CEST)