Installation squeeze chroot debootstrap

De wiki.debian-fr

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
<font class="{{{class|avertissement}}}" style="border: 2px solid #cdcdcd; border-right-width:0px; border-left-width:0px; padding: 0.4em;">'''{{{titre|Attention&thinsp;:}}}''' {{{texte|}}}</font></includeonly><noinclude>
{{/Documentation}}<!-- Métadonnées (catégories, interwikis,) en sous-page de documentation -->
</noinclude>

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…)

<font class="{{{class|avertissement}}}" style="border: 2px solid #cdcdcd; border-right-width:0px; border-left-width:0px; padding: 0.4em;">'''{{{titre|Attention&thinsp;:}}}''' {{{texte|}}}</font></includeonly><noinclude>
{{/Documentation}}<!-- Métadonnées (catégories, interwikis,) en sous-page de documentation -->
</noinclude>
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 :

<font class="{{{class|avertissement}}}" style="border: 2px solid #cdcdcd; border-right-width:0px; border-left-width:0px; padding: 0.4em;">'''{{{titre|Attention&thinsp;:}}}''' {{{texte|}}}</font></includeonly><noinclude>
{{/Documentation}}<!-- Métadonnées (catégories, interwikis,) en sous-page de documentation -->
</noinclude>
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)

source

source

source