Installation d'un systĂšme nfsroot et le lancer via Grub2
Comment créer un systÚme nfsroot linux ubuntu avec un bootloader grub2 sur machine locale.
La premiĂšre idĂ©e quâon a quand on cherche Ă monter un systĂšme linux en rĂ©seau, est de tout lancer par le systĂšme de PXE. Mais dans certains cas, le PXE peut ĂȘtre endommagĂ©, oĂč ne peux ĂȘtre reconnu au dĂ©marage par la carte mĂšre. Dans ce genre de cas, il est nĂ©cessaire de gĂ©rer donc en local le chargement de certains fichiers indispensables au boot.
Ici je vais expliquer la marche à suivre pour pouvoir lancer un linux, stocké sur un serveur, sur une machine locale.
Dans notre cas, nous aurons aussi à monter les partitions de dossiers personnels, issus de l'ancien systÚme en place (à savoir une partition NFS stocké sur un autre serveur local).
PremiÚre Etape : Installation du serveur debian.
Pour commencer, on doit avoir une machine de type serveur vide, que ce dernier soit connecté à Internet ainsi qu'une version CD de Debian.
Pour mon cas, Debian 6.0.
Pour commencer, évidement, on installe et configure debian sur la machine serveur. Il faut cependant le configurer selon nos besoins :
-Une partition Physique « /boot » (512 Mo)
Elle stockera le systÚme de boot du serveur. Debian étant le seul systÚme installé sur le serveur, il est inutile d'en donner plus.
-Une partition Physique « / » (512 Mo)
C'est la racine de debian. Il faudra veiller à ce qu'elle ne soit pas trop chargée.
-Une partition Swap (2Go)
La swap est votre mémoire vive sur disque. En gros elle permet de délester la RAM en cas de surcharge. De façon général, on en configure le double de votre RAM réelle (i.e. Pour 1Go RAM, on met 2Go SWAP)
Une partition LVM est une partition physique qui contient plusieurs partitions virtuelles. En effet, un disque dur ne peut ĂȘtre partitionnĂ© qu'en 4 morceaux physiques. En temps normal, sur les systĂšmes d'utilisations quotidiens comme Windows ou Ubuntu, quand l'on dĂ©passe cette limite, le systĂšme prend sur lui de gĂ©rer les nouvelles partitions en LVM. Ici sous dĂ©bian, c'est nous qui allons prendre ça en charge. Voici donc les partitions virtuelles contenues dans le LVM :
-Une partition « ubuntu » (16 Go)
Cette partition sera en fait la racine de notre systÚme Ubuntu. De fait, elle contiendra aussi tout les programmes que l'on voudra installer sur le systÚmes. Dans le cadre d'une utilisations de programmes simples de développement sous linux, 16Go est donc suffisant.
-Une partition « log » (4 Go)
Cette partition aura l'emplacement /var/log. C'est a dire qu'elle contiendra les logs du serveur. Il est important à noter que la partition doit avoir comme paramÚtres : nodev, nosuid et noexec, afin d'éviter tout scripts hostiles qui pourraient se retrouver dans les logs, et exécutés de maniÚre non autorisé.
-Une partition « var » (2 Go)
Inutile d'épiloguer sur la partition de var.
-Une partition « usr » (2 Go)
-Une partition « tmp » (1 Go)
-Une partition « home » (4 Go)
La taille de votre home dépend totalement de vous. En effet, selon l'utilisation que vous voulez avoir de votre serveur, il nécessitera plus ou moins de place. Ici j'ai placé 4Go, à vous de voir.
NB : Ce sont tous des ext4 (excepté le Swap)
Une fois les partitions créées, il faut maintenant configurer leurs points de montages respectifs. Dans mon cas, j'avais oublié de le faire à la création, ce qui pose d'assez gros problÚmes par la suite, donc je vous conseille de ne rien oublier à ce moment là .
Donc, pour les points de montages, lâintĂ©rĂȘt c'est que la plupart sont radicalement explicites.
Les partitions logiques virtuelles vont avoir un nom bien particulier. Chez moi elles sont sys/home, sys/log etc...
Bref, donc les points de montage sont les suivants :
log â /var/log (nodev,noexec,nosuid)
Voila, une fois ces points de montages terminés, vous pouvez terminer l'installation de debian. Pensez à désactiver toutes les extensions (DHCP, Apache etc...) si vous n'en avez pas de besoins précis. Nous en utiliserons par principe on les téléchargera directement sur Internet afin d'avoir les derniÚres versions.
Donc, Debian est installé, on reboot, on tente un « mount » dans la console pour veiller à ce que les partitions soit bien montées, et si c'est ok, on passe a l'étape suivante.
Dans le cas oĂč vous auriez oubliĂ© de configurer les points de montage :
Ce qu'il y a de bien sous Linux, c'est qu'il y a toujours 50 façon de rĂ©cupĂ©rer une erreur (mais 100 façon de les provoquer soit mĂȘme).
Suivez simplement point par point cette manipulation.
Tout dâabord, si l'on a oubliĂ© de monter les partitions pour l'installation, il a forcĂ©ment lui mĂȘme créé et remplis les dossiers /var, /var/log etc... ProblĂšme, vous n'aviez pas rĂ©servĂ© Ă©normĂ©ment de place pour la racine, et cette derniĂšre, si vous continuez dans cette voie, va vite saturer.
Heureusement, j'ai une parade :
On va commencer par aller chercher nos partitions, car elle sont bien là , dans /dev/. Chez moi, elles sont toutes dans /dev/sys/ car le groupe LVM avait été nommé ainsi. Si vous ne vous souvenez plus comment vous avez créé votre groupe, vous pouvez toujours faire un grep home dans le dossier /dev, il vous trouvera votre partition dans ce fatras.
Une fois votre partition trouvĂ©, il faut la monter, mais attention, pas de var sur le /var actuel, sinon elle sera invisible car les deux dossier (l'actuel /var et la partition var) vont se mĂȘler.
Par conséquent, il faut y aller élément par élément.
Je vais expliquer en détail pour /var, et /var/log, il faudra ensuite l'appliquer pour les autres partitions.
NB : NâhĂ©sitez pas Ă vous faire une liste pour n'en oublier aucune.
Ensuite on copie le contenu du /var original dans la partition monté.
Ensuite, on va monter la partition log.
Et on fait de mĂȘme pour tout les autres.
Et voilĂ . Maintenant, que l'on a terminĂ© de faire toutes nos copies, c'est lĂ que ça va se corser, et qu'il faut ĂȘtre ingĂ©nieux. On aura beau configurer le fstab pour que chaque partitions prennent leur place au dĂ©marrage, elles ne feront pas plus que cohabiter, sinon marquer, les fichiers toujours prĂ©sents dans les dossiers d'origine /var etc... Seulement, ces dossiers sont important, interdiction de les supprimer dĂ©s maintenant en se disant qu'ils seront de toute façon remplacĂ©s par leurs homologues partitionnĂ©s lors du redĂ©marrage, et ceci pour plusieurs raisons ;
-Linux va vous vomir dans le crĂąne car les dossiers contiendront encore actuellement des processus en cours, et mĂȘme si vous forcez la suppression de la plupart, les processus en cours eux, refuseront de se supprimer. C'est d'ailleurs une trĂšs bonne façon aussi de faire planter son serveur, c'est aussi suicidaire que de faire un « sudo rm -rf / ».
-Parce que vous avez peut ĂȘtre omis de copier quelque chose, ou qu'un fichier s'est mal copiĂ©, bref, il peut s'ĂȘtre passĂ© n'importe quoi et cette solution couperai court Ă toute position de retrait en cas de problĂšme.
Il va donc falloir ĂȘtre plus ingĂ©nieux : Une fois le redĂ©marrage effectuĂ©, et vos partitions bien montĂ©es (vĂ©rifier avec un mount), vous allez monter votre partition / sur le /mnt.
Pourquoi ? Et bien parce qu'en montant la racine, celle ci va ĂȘtre montĂ©e indĂ©pendamment de toutes les autres partitions qui sont montĂ©es au systĂšme, et donc laisser apparaĂźtre les anciens /var, /home etc... d'origine.
Il vous suffira ensuite d'en supprimer les contenus (attention à ne pas supprimer les dossiers, sinon les points de montages ne pourront se faire si le dossier d'arrivée n'existe pas et ça puera la kernel panic) puis à démonter votre / du /mnt. Une fois le serveur de nouveau redémarré, vous aurez alors vos partitions correctement montée (mais aurez perdu 2h de travail par rapport à ceux qui ont penser à régler les partitions des l'installation, donc pensez y!)
DeuxiĂšme Ătape : Installation du linux en debootstrap et chroot.
Avant-propos sur le debootstrap et le chroot.
Ces deux outils sont des outils trÚs puissants, à manipuler avec précaution. Debootstrap permet d'installer un systÚme Linux/UNIX au sein d'un autre systÚme Linux/UNIX. Son utilité réside dans le fait d'avoir deux systÚme distincts, sans avoir nécessairement besoin d'installer une gestion de machines virtuelles. De plus, grùce au debootstrap, il est inutile d'avoir un .iso de linux, un simple acces aux mirroirs via internet suffit. Le chroot est le complément élémentaire de debootstrap car il permet de prendre en main le systÚme installé (l'application de chroot sur le dossier correspondant fera en sorte que la console deviendra alors la console de Ubuntu, et plus de debian).
Ici, nous allons installer via debootstrap, linux Ubuntu 11.04 Ă lâintĂ©rieur de notre partition /srv/ubuntu.
Installation de Ubuntu 11.04
Il faut commencer par installer sur Debian, les deux outils cité ci dessus. Jusqu'ici, rien de bien particulier. Il suffit de faire :
sudo apt-get install debootstrap dchroot
Une fois les deux outils installés, on passe aux choses sérieuses :
sudo debootstrap â-arch i386 'lsb_release -c -s' /srv/ubuntu http://archive.ubuntu.com/ubuntu/
notez ici que je sĂ©lectionne l'architecture du systĂšme linux, Ă savoir 32bits. Vous pouvez, si vous voulez, sĂ©lectionner un systĂšme en 64bits, si votre parc informatique (les ordinateurs qui seront amenĂ©s Ă dĂ©marrer sur ce linux) est 100% compatible 64bits. Pour Ă©viter les problĂšmes de compatibilitĂ©, je vous conseil cependant de vous en tenir au 32bits, mĂȘme si cette recommandation sera obsolĂšte d'ici quelques courtes annĂ©es (car le 32bit est condamnĂ© Ă mort d'ici 2038 http://fr.wikipedia.org/wiki/Bug_de_l%27an_2038, ainsi que son incapacitĂ© Ă prendre en compte une RAM supĂ©rieurs Ă 3,5Go tout les systĂšmes sont amenĂ©s Ă ĂȘtre remplacĂ©s par des 64bits).
NB : Debootstrap accepte pas seulement les URLs, il peut aussi se lancer à partir d'un fichier. Par conséquent, on est pas soumis à la derniÚre version en date, ici, publié par Ubuntu, mais on peut par exemple lui soumettre une béta ou autre. Attention cependant a ne pas se méprendre sur les architectures. Si on lui précise une architecture 32bits avec une image de linux amd64, il risque de ne pas aimer.
NB 11.10 : Debootstrap n'a pas encore Ă©tĂ© mis Ă jour pour accueillir la 11.10, Oneiric. Il faut donc crĂ©er un script spĂ©cial qui va quand mĂȘme lui permettre dâaccĂ©der aux sources. Pour ça on va dans
cd /usr/share/debootstrap/scripts/
Et maintenant vous pouvez lancer :
debootstrap --arch amd64 'oneiric' /srv/ubuntu/new/ http://archive.ubuntu.com/ubuntu/
Bref, ensuite, il faut charger certaines configurations communes de domaine de Debian jusqu'Ă Ubuntu. Pour ce faire on va balancer la commandes suivantes.
cp /etc/resolv.conf /srv/ubuntu/etc/resolv.conf
C'est trop anecdotique pour s'étaler dessus.
Ensuite, on va monter les partitions de /dev et de /proc depuis Debian jusqu'Ă Ubuntu. Ăa permet de pouvoir prendre le contrĂŽle de linux. En effet, dans l'Ă©tat actuel, linux n'est pas capable de gĂ©rer ses processus et ses pĂ©riphĂ©riques. En fait il est totalement impuissant. C'est pourquoi on va lui permettre d'utiliser les Ă©lĂ©ments de debian comme rĂ©fĂ©rences.
sudo mount â-bind /dev /srv/ubuntu/dev
sudo mount -t proc /proc /srv/ubuntu/proc
Voila, linux est maintenant prÚs pour sa prise en main. On va donc passer en chroot sur notre partition Linux fraßchement chargée (mais pas encore installée).
Pour ce faire, on va envoyer la commande suivante :
Et voilà , vous Útes dans Ubuntu. Pour faire courts, gardez à l'esprit que vous Útes à la racine de votre Ubuntu, et que donc, votre cd / vous affichera root@blahblah:/# mais qu'en réalité, du point de vue de debian, vous serez dans /srv/ubuntu. Et oui, ubuntu sera devenu la racine de votre Ubuntu.
On rajoute une partition en interne :
mount -t devpts devpts /dev/pts
Maintenant que l'on a accĂšs a notre base Linux, il va falloir l'installer. Et oui, le debootstrap n'a fait que lui donner des Ă©lĂ©ments pour pouvoir tourner en chroot, mais votre distribution est encore loin d'ĂȘtre complĂšte.
Donc une fois en chroot, et le contrĂŽle total acquit, on installe donc Ubuntu.
Voici la serie de commande à balancer pour que l'installation se passe correctement :
apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop language-pack-fr language-pack-gnome-fr nfs-client
dpkg-reconfigure console-setup
NB 11.10 : Oneiric instaure un nouveau systÚme de gestion des services, nommé upstart. Ce dernier étant totalement incompatible avec chroot (Connexion au socket impossible), il faut donc le court-circuiter via les commandes suivantes pour terminer correctement l'installation.
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
C'est un bug connu qui je l'espÚre sera remédié rapidement. Une fois l'installation finalisée à 100% (c'est a dire que vous quittez le chroot) définitivement, il faudra supprimer ce court-circuit sinon votre systÚme ne démarrera jamais. Voici les commandes de suppression
Dpkg-divert --remove /sbin/initctl
Normalement, au terme de ces commandes (et d'une attente de plus ou moins 30 minute, selon votre connexion et les capacitĂ©s de la machine), le systĂšme linux est installĂ© et fin prĂȘt Ă dĂ©marrer. Seulement, pour le moment, il n'est pas configurĂ© totalement pour le nfs, mĂȘme si dans l'apt-get install, on lui a prĂ©cisĂ© nfs-client, il n'est pas configurĂ© en natif pour pouvoir tourner avec.
Il va donc falloir modifier encore quelques détails trÚs importants.
On va donc commencer par nommé le systÚme Ubuntu en interne. On va lui donner le nom de « nfs-ub ». C'est important pour la suite de le nommer clairement.
Donc pour le nommer on fait :
echo « nfs-ub » > /etc/hostname
Ensuite, il faut configurer la boucle IP interne :
dans le fichier /etc/hosts :
Le reste doit ĂȘtre inchangĂ©.
On va ensuite configurer notre utilisateur principal. Il est impĂ©ratif de conserver prĂ©cieusement les identifiants donnĂ©s, car mĂȘme si l'on possĂšde un systĂšme de compte Ă l'origine, il va y avoir une Ă©tape de vide entre le dĂ©marrage final du nfsroot et son utilisation, et c'est durant cette Ă©tape que ce compte va servir. Pour ce faire on fait :
usermod -G admin -a NomDeCompte
Voila, à présent, le compte créé sera un compte admin de type root, ce qui permettra aussi de pouvoir appliquer facilement toutes les configuration en root.
Courage, on en voit le bout !
Maintenant on va configurer le fstab interne à Linux. Normalement, ce dernier est pour le moment vide, dans la mesure ou ce dernier s'est installé sans vraiment connaßtre ses partitions (via le chroot).
Nous allons donc fixer ça :
# <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/nfs / nfs defaults 1 1 none /tmp tmpfs defaults 0 0 none /var/run tmpfs defaults 0 0 none /var/lock tmpfs defaults 0 0 none /var/tmp tmpfs defaults 0 0
Maintenant que le fstab est configurĂ©, il faut enfin placer Ubuntu en situation de se lancer en NFS. Comme dit plus haut, mĂȘme si la version installĂ© est une version NFS, elle ne se considĂšre pas encore comme tel.
Il faut donc lui préciser.
Ăa se passe dans le fichier :
vi /etc/initramfs-tools/initramfs.conf
A partir de maintenant, la configuration du noyau linux a changĂ©, et il va pouvoir enfin dĂ©marrer en NFS. Enfin presque, puisqu'il faut quand mĂȘme reconstruire une partie du noyau :
apt-get install linux-image-generic
#dpkg-reconfigure « linux-image-'uname -r' »
Et voilĂ , normalement aprĂšs ça vous avez une image toute neuve et prĂȘte Ă fonctionner en nfs.
Ensuite, une derniĂšre chose Ă configurer : Quand un PC client va se connecter et charger le NFS, il aura d'ores et dĂ©jĂ une adresse IP, donnĂ© par le DHCP au lancement de la procĂ©dure de boot. Mais si on le laisse faire, une fois linux dĂ©marrĂ©, il pourrait cherchĂ© Ă relancer une procĂ©dure dâacquisition d'adresse, ce qui aurai pour consĂ©quence probable de faire casher Linux car ce dernier n'aurai alors plus accĂšs Ă sa base NFS. Ce serai donc trĂšs gĂȘnant d'avoir un systĂšme qui, parce qu'il marche bien, ne marcherai pas. Donc pour lâempĂȘcher de boucler bĂȘtement dans ce problĂšme, il ne faut donc pas oublier de configurer lâacquisition d'adresse IP en manuel, de façon a ce qu'elle ne s'amuse pas Ă changer quand ça lui chante.
C'est donc ici que ça se passe :
vi /etc/network/interfaces
Et voilĂ , vous pouvez lacher la prise en main de linux en quittant le chroot
Voila, fĂ©licitation, votre linux est dĂ©sormais prĂȘt Ă tourner en NFS. Cependant, rien n'est encore totalement terminĂ© sur le serveur.
TroisiĂšme Ătape : Configuration du serveur NFS
Et oui il reste encore une certaine quantité de choses à installer sur votre serveur debian. Pour commencer, il faut simplement installer le serveur nfs :
apt-get install nfs-kernel-server
Une fois ce petit outil installĂ©, il va falloir lui prĂ©ciser oĂč se situe la partition nfs Ă partager.
Ca se passe dans le fichier /etc/exports
/srv/ubuntu IpdesClients (pour moi c'est 192.168.1.* pour couvrir toute la plage IP)(rw,no_root_squash,async,subtree_check)
N'oubliez pas de relancer le service aprÚs chaque modification de ce fichier via cette commande :
sudo service nfs-kernel-server reload
Voila, votre serveur nfs est prĂȘt.
Voila, en fait on dirait pas comme ça mais vous avez terminé la configuration de votre serveur ! Alors ? Heureux ? J'espÚre ! Parce que c'est pas encore terminé, il y a encore du travail !
QuatriĂšme Ătape : Installation sur le systĂšme client.
Nous allons enfin aborder la problématique du systÚme client.
Pour ĂȘtre clair, cette solution est envisageable dans un cas particulier : vous voulez booter via un support amovible bootable du style USB avec Grub2 dessus, ou alors vous possĂ©dez dĂ©jĂ un linux d'installĂ© sur votre machine, muni de grub2 Ă©galement, et vous voulez quand mĂȘme conserver cette version.
Et oui car lâintĂ©rĂȘt de cette mĂ©thode, c'est qu'elle laisse le choix au dĂ©marrage, entre la version en LAN, ou un systĂšme local, comme Linux ou mĂȘme pourquoi pas Windows ou MacOS.
Si en plus on imagine que les fichiers personnels sont sĂ©parĂ©s, cela permet en cas de panne du serveur oĂč est contenu Linux, de pouvoir quand mĂȘme travailler via les versions installĂ©es sur les machines.
Donc, on va commencer. DĂ©jĂ , un conseil, effectuez cette technique sur une machine banchĂ© au serveur en local ; dĂ©jĂ pour pouvoir communiquer avec lui via ssh, ce qui est plus agrĂ©able que de devoir ĂȘtre sur le serveur en question, et ensuite pour Ă©viter d'avoir recours Ă des supports amovibles pour transporter les images et autres fichiers nĂ©cessaires.
On va d'abord préparer le terrain. Une fois en mode sudo, vous allez vous rendre dans le dossier /boot/grub (cd) de votre disque dur actuel, et effectuer cette commande :
Voila, on va se placer dans ce dossier pour placer les fichiers de linux en question. Maintenant assurez vous d'ĂȘtre sur le mĂȘme rĂ©seau que le serveur, et que ce dernier est bien Ă©quipĂ© de ssh.
On va aller chercher les deux fichiers de configuration de linux pour les mettre en local.
scp login@Adresse-serveur:/srv/ubuntu/boot/vmlinuz-votreversiondedistrib-generic vmlinuz
scp login@Adresse-serveur:/srv/ubuntu/boot/initrd.img-votreversiondedistrib-generic initrd.img
Voila, normalement votre dossier /boot/LAN est Ă©quipĂ© des derniĂšres images du noyau linux. Ce sont des fichiers extrĂȘmement important, car ceux sont eux qui vont avoir les compĂ©tences pour lancer le NFS.
Une fois ça fait, il va falloir aller dans les fichiers de configuration de grub2, situé dans /etc/grub.d.
Ici, vous allez créer un nouveau fichier nommé 11_OnLANLinux
touch /etc/grub.d/11_OnLANLinux
Dans ce fichier, voici ce qu'on va y mettre :
menuentry 'Ubuntu On Lan by Nak @ Your Mom'
search --no-floppy --fs-uuid
linux /boot/LAN/vmlinuz root=/dev/nfs nfsroot=AdresseIPdevotreServeurNFS:/srv/ubuntu/ ip=dhcp rw quiet splash
initrd /boot/LAN/initrd.img
Comme on est sous Grub 2, il est nécessaire de recréer à chaque modification, le fichier de configuration général. Pour ce faire, il faut effectuer la commande suivante :
Et voilĂ , normalement en dessous de vos linux habituels, vous devriez avoir votre distribution en ligne accessible.
Vous pouvez maintenant redémarrer sur ce nouveau systÚme !
CinquiĂšme Ătape : LDAP et autres configuration de comptes
Pour le moment, votre systÚme Ubuntu ne peux fonctionner qu'avec le compte que vous lui aviez paramétré pendant son installation. Quand on dispose d'une structure LDAP de comptes centralisé sur un réseau, il est alors nécessaire de lier la distribution Ubuntu avec tout ces comptes.
Mais tout lâintĂ©rĂȘt est lĂ . Vous avez entre les mains une distribution linux tout ce qu'il y a de plus normale et fonctionnelle. Par consĂ©quent, rajouter quelque chose ou installer un paquet est aussi simple que sur une distribution classique.
Pour ldap, il faut utiliser votre gestionnaire de paquet préféré :
sudo apt-get install libpam-ldap libnss-ldap
Alors par contre, attention, ldap est a manier avec prĂ©caution. Veillez Ă connaĂźtre toute la configuration de votre serveur ldap pour ĂȘtre sur de ne pas vous tromper, sinon vous risquez de perdre totalement le contrĂŽle de votre linux, et vous serez obliger de retourner en mode chroot.
Une fois ça fait, vous pourrez redémarrer, et vous logger avec votre compte stocké sur le ldap.
Ensuite, une derniÚre chose : Il est possible que certaines applications comme Thunderbird, rencontrent des problÚmes pour se lancer. Dans ce cas, veillez à installer nscd. Ce dernier générera le cache nécessaire a son bon fonctionnement.
Voila, félicitation, vous avez un Linux en ligne tout neuf !
Penser Ă fixer le serveur dĂ©bian sur une IP prĂ©cise avec le fichier /etc/network/interfaces. Ăa Ă©vite de lui courir aprĂšs sur le DNS.
Voici une petite copie du fichier de configuration.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
# The primary network interface
address 192.168.0.8 (Ă voir dans votre cas)
gateway 192.168.0.252 (idem)