Installation lenny chroot debootstrap

De wiki.debian-fr

Installation d'une Lenny avec debootstrap et chroot

L'objectif est d'installer une Lenny (sur une nouvelle partition) à partir d'une SID, 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[modifier]

Prérequis : Installer debootstrap (chroot se trouve dans le paquet coreutils normalement déjà installé dans votre Debian). Installer un noyau qui supporte le ext4 si vous avez l'intention de choisir ce système de fichiers.

deb501# apt-get install debootstrap

Formatage de la partition qui va recevoir la Lenny : J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

deb501# mkfs -V -t ext4 /dev/sda1

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/lenny_amd64_sda1. Un petit « ls » à la fin pour vérifier que la partition est bien montée.

deb501# mkdir /var/chroot
deb501# mkdir /var/chroot/lenny_amd64_sda1
deb501# cd /var/chroot/lenny_amd64_sda1
deb501# mount /dev/sda1 /var/chroot/lenny_amd64_sda1 
deb501# cd /var/chroot/lenny_amd64_sda1 
deb501# ls
lost+found

Installation avec debootstrap[modifier]

Installation de la Lenny avec debootstrap (j'ai choisi une Lenny amd64, rien ne vous empêche de choisir une Etch i386 ou bien même une Sid...) Vous remarquerez que j'ai ajouté "192.168.0.1:9999/" à mon adresse de dépôt... Explication : j'utilise un dépôt local. Détails ici sur le forum.debian-fr.org Si vous ne l'avez pas (apt-cacher-ng) modifiez comme suit :

http://ftp.debian.org/debian/

Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer par file:/cdrom/debian/

deb501# debootstrap --arch amd64 lenny /var/chroot/lenny_amd64_sda1 http://192.168.0.1:9999/ftp.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: Checking component main on http://192.168.0.1:9999/ftp.debian.org/debian...                        
I: Retrieving adduser
[...]
I: Configuring aptitude...
I: Configuring tasksel-data...
I: Configuring tasksel...
I: Base system installed successfully.

Si tout s'est bien passé, un "ls" vous retournera la toute nouvelle arborescence

deb501# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys tmp  usr  var

À ce niveau, votre Lenny est installée, mais elle n'est pas pleinement fonctionnelle ni « autonome ». Vous ne pourrez pas bouter dessus...

Préparation du chroot[modifier]

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /tmp, /dev et /proc Vous éditez votre fstab pour que ces répertoires soient montés (et liés - « bind ») automatiquement dans votre répertoire chroot.

deb501# nano /etc/fstab

Ajoutez :

############################################ montages chroot "liés"
# sid32 chroot
/tmp    /var/chroot/lenny_amd64_sda1/tmp        none    bind    0       0
/dev    /var/chroot/lenny_amd64_sda1/dev        none    bind    0       0
/proc   /var/chroot/lenny_amd64_sda1/proc       none    bind    0       0

Ctrl+O (enregistrez) Ctrl+X (Quittez)

deb501# mount -a (cette commande monte tout ce qui est dans votre fstab)

Pour « normaliser les comptes et groupes » de votre nouvelle Lenny (que les utilisateurs et groupes aient les mêmes « id » dans votre système "hôte" et dans votre chroot tapez les commandes suivantes :

deb501# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd >> /var/chroot/lenny_amd64_sda1/etc/passwd
deb501# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group >> /var/chroot/lenny_amd64_sda1/etc/group

Vous allez maintenant entrer dans votre environnement chroot (tadaa !)

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2#

Finalisation de l'installation et réglages de la Lenny[modifier]

Vous êtes maintenant dans votre nouvelle Lenny, mais ce n'est pas terminé, votre système est incomplet, impossible de booter dessus...

"locales"[modifier]

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... Je me suis fait prendre, une heure de vérification de disque... 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...

sh-3.2# apt-get update
sh-3.2# apt-get install locales
sh-3.2# dpkg-reconfigure locales
sh-3.2# dpkg-reconfigure tzdata
Current default timezone: 'Indian/Antananarivo'
Local time is now:      Thu Oct 15 15:02:45 EAT 2009.
Universal Time is now:  Thu Oct 15 12:02:45 UTC 2009.
sh-3.2#
sh-3.2# 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

sh-3.2# nano /etc/default/rcS

il faut modifier la ligne utc : UTC=no

sh-3.2# apt-get install ntpdate
sh-3.2# ntpdate ntp.metas.ch
15 Oct 15:04:16 ntpdate[22869]: adjust time server 162.23.41.34 offset 0.014581 sec[/code]

Le sources.list[modifier]

Nous allons maintenant compléter nos dépôts La création de apt.conf est mon « bonus » j'utilise apt-cacher-ng comme je le disais plus haut... Inutile pour vous si vous n'avez pas apt-cacher-ng installé)

sh-3.2# nano /etc/apt/apt.conf
Acquire::http { Proxy "http://192.168.0.1:9999"; };[/code]

J'ai complété avec quelques dépôts. 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 « backport » pour avoir accès à un noyau récent , vous n'êtes, là encore, pas obligé de le faire.

sh-3.2# nano /etc/apt/sources.list
deb http://ftp.debian.org/debian lenny main
###### Debian Main Repos
deb http://ftp.fr.debian.org/debian/ lenny contrib non-free
###### Debian Update Repos
deb http://security.debian.org/ lenny/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ lenny-proposed-updates main contrib non-free
deb ftp://ftp.proxad.net/mirrors/volatile.debian.net/ lenny/volatile main contrib non-free
#### Debian Backports - http://www.backports.org
## Run this command: gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C && gpg --export 16BA136C | apt-key add -
deb http://www.backports.org/debian/ lenny-backports main contrib non-free
#### Debian Multimedia - http://www.debian-multimedia.org/
## Run this command: apt-get update && apt-get install debian-multimedia-keyring && apt-get update
deb ftp://ftp.debian-multimedia.org lenny main

Ajoutons les clés des nouveaux dépots et mettons à jour :

sh-3.2# gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C && gpg --export 16BA136C | apt-key add -
sh-3.2# apt-get update
[…] Vous obtiendrez évidemment cette erreur :
W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 07DC563D1F41B907
W: Vous pouvez lancer « apt-get update » pour corriger ces problèmes.
sh-3.2# apt-get install debian-multimedia-keyring && apt-get update
[...]
ATTENTION : les paquets suivants n'ont pas été authentifiés.
  debian-multimedia-keyring
Faut-il installer ces paquets sans vérification (o/N) ? o
sh-3.2#
sh-3.2# apt-get upgrade

Clavier[modifier]

Continuons... Le paquet MC n'est pas une obligation, moi je ne peux pas m'en passer...

sh-3.2# apt-get install mc

Configurons maintenant le clavier

sh-3.2# apt-get install console-data (azerty/french)

[…] Je ne sais pour quelle raison il nous met d'office le clavier mac-usb-f.. Dans le chroot il ne doit pas détecter autre chose...

Looking for keymap to install:
mac-usb-f

Rectifions :

sh-3.2# dpkg-reconfigure -plow console-data (pour choisir le « bon » clavier)

(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)
sh-3.2# exit

Nous sommes sortis du chroot, quelques fichiers à récupérer... Pour avoir un bon hostname, le réseau, le montage correct des disques...

hostname et fstab[modifier]

deb501# cp /etc/hosts /etc/hostname /etc/resolv.conf /var/chroot/lenny_amd64_sda1/etc
deb501# cp /etc/network/interfaces /var/chroot/lenny_amd64_sda1/etc/network
deb501# cp /etc/fstab /var/chroot/lenny_amd64_sda1/etc
deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh

+ Réglage du fsab

sh-3.2# blkid (cette commande permat de récupérer le UUID de vos disques pour votre nouveau fstab... Je me suis fait prendre aussi, le formatage change l'UUID...)
/dev/sdc1: UUID="8125f9ad-fa09-415e-8b2b-1562c5791d8b" TYPE="ext3"
/dev/sdc2: UUID="0996b96e-3d86-4395-9cf5-cb744b543a52" TYPE="ext3"
/dev/sdb1: UUID="345408AD54087440" LABEL="Nouveau nom" TYPE="ntfs"
/dev/sdd1: UUID="3CE6F2CCE6F28584" LABEL="Nouveau nom" TYPE="ntfs"
/dev/sde1: LABEL="Divers" UUID="3525ee82-8d13-4caa-a27e-14de985f432d" TYPE="ext3"
/dev/sda1: UUID="248403b5-cdcd-4430-bd96-67b106327373" TYPE="ext4"
/dev/sda5: TYPE="swap"
...etc
sh-3.2# nano /etc/fstab (a rectifier en fonction de votre configuration)
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc    /proc   proc    defaults        0       0
none    /proc/bus/usb   usbfs   devgid=119,devmode=664  0       0
none    /dev/bus/usb    usbfs   devgid=1001,devmode=664 0       0
/dev/sda5       none    swap    sw      0       0
# Montage racine (/dev/sda1) ! Attention si votre partition racine est en ext4 !
UUID=248403b5-cdcd-4430-bd96-67b106327373       /       ext4    errors=remount-ro       0       1
#Entry for /dev/sda8 :
UUID=709e9380-d39f-49db-b759-cac7a87717e6       /home   ext4    relatime        0       2
...etc
# Montage DVD SATA
/dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0[/code]

Création des répertoire de montage des disques de la nouvelle machine : (en fonction de votre configuration et de vos choix...)

sh-3.2# mkdir /mnt/sda7 /mnt/Divers1 /mnt/Divers2 /mnt/XP /mnt/deb /mnt/home2 /mnt/zicmu[/code]

L'environnement graphique[modifier]

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez... Gnome, Kde, aucun...

sh-3.2# apt-get install xfce4
[...]
0 mis à jour, 275 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 132Mo dans les archives.
Après cette opération, 386Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?o
[...]
Traitement des actions différées (« triggers ») pour « initramfs-tools »...
sh-3.2#

Modification du Xorg.conf pour avoir le bon clavier au démarrage et le bon driver de votre carte vidéo. J'ai choisi nv (j'ai une nvidia vous l'aurez deviné...). Si vous ne savez pas mettez « Driver "vesa »" pour ne pas prendre de risque. Vous pourrez changer ça plus tard...

sh-3.2# nano /etc/X11/xorg.conf

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "pc105" (à changer)
        Option          "XkbLayout"     "fr" (à changer)
        Option          "XkbVariant"    "latin9" (à ajouter)
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
EndSection

Section "Device"
        Driver  "nv" (ajouter et modifier en fonction de votre carte)
        Identifier "Card0" (ajouter)
#        Identifier      "Configured Video Device"
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
EndSection

Le noyau et Grub2[modifier]

Installons un noyau... Ce serait bête d'oublier  :wink:

sh-3.2# apt-cache search linux-image (choisissez dans la liste qu'il vous propose...)
[...]
linux-headers-2.6.30-bpo.2-amd64 - Header files for Linux 2.6.30-bpo.2-amd64
[...]

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

sh-3.2# exit
deb501# cp /etc/kernel-img.conf /var/chroot/lenny_amd64_sda1/etc/kernel-img.conf
deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2# apt-get install linux-image-2.6.30-bpo.2-amd64
sh-3.2# 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...
deb501# grub-mkconfig 
Generating grub.cfg ...

Voici la nouvelle entrée qui nous intéresse...

menuentry "Debian GNU/Linux (5.0.3) (on /dev/sda1)" {
       insmod ext2
       set root=(hd0,1)
       search --no-floppy --fs-uuid --set 248403b5-cdcd-4430-bd96-67b106327373
       linux /boot/vmlinuz-2.6.30-bpo.2-amd64 root=/dev/sda1 rootfstype=ext4
       initrd /boot/initrd.img-2.6.30-bpo.2-amd64
[...]
done deb501#

Vous pouvez vérifier dans la console ou en tapant nano /boot/grub/grub.cfg (ou nano /boot/grub/menu.lst si vous êtes en grub legacy) J'ai rajouté "rootfstype=ext4". Sans ce petit morceau de code votre partition fromatée en ext4 ne démarera pas... (Invalid filesystem...)

Divers - mots de passe[modifier]

Derniers "fignolages"... J'installe un navigateur et les drivers pour que mes disque nfs soient pleinement opérationnels. Et... zsh car c'est cool !  :wink:

deb501# chroot /var/chroot/lenny_amd64_sda1 /bin/sh
sh-3.2# apt-get install gparted ntfs-3g iceweasel
sh-3.2# apt-get install zsh[/code]

Enfin, les mots de passe... Debootstrap installe un système sans mots de passe... Si vous redémarrez maintenant vous vous loguerez en root dans votre nouveau système sans montrer patte blanche... Un peu génant non ?

sh-3.2# nano /etc/passwd
laurent:x:1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Vous enlevez le x pour que cela ressemble à ça :

laurent::1000:1000:Laurent Voulzy:/home/laurent:/bin/zsh

Ceci afin de pouvoir loguer vos utilisateurs "normaux". Il faut maintenant créer les mots de passe.

sh-3.2# /usr/bin/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
sh-3.2# su - laurent
laurent@deb501 jeu oct 15 05:16:20
~/  /usr/bin/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
~/ exit
sh-3.2# exit
deb501# reboot

Voilà vous disposez d'une toute fraîche installation, fonctionnelle !

Taskel[modifier]

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)

sh-3.2# tasksel --list-tasks
u desktop       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 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

# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus[code]tasksel install standard[/code]Qui installe un ensemble de paquets "standards". Je vous renvoie au [Wiki de debian-facile] pour plus de détails.

--Lol 25 mars 2010 à 13:00 (UTC)

source