Arnaud Launay

vendredi 31 mars 2006

Gentoo et boot single

Sur la plupart des distributions Linux traditionnelles, le boot en single user mode se fait en passant l'argument S ou single à la ligne kernel de grub ou de lilo. Or, si vous avez essayé, vous aurez pu constater que ça ne marche pas sous Gentoo.

La réponse se trouve dans le fichier /etc/inittab, contenant la définition du runlevel 1:

l1:S1:wait:/sbin/rc single

Pour comparaison, sur une ancienne RedHat 6.2 (Zoot), on trouve:

l1:1:wait:/etc/rc.d/rc 1

Vous noterez le "S" supplémentaire que l'on trouve sur la Gentoo. Ce deuxième champ décrit le(s) runlevel(s) spécifique(s) pour lesquels la ligne doit être exécutée. Normalement, la machine devrait donc se lancer en single si 1 ou S ou single étaient passés en argument; l'expérience prouve que ce n'est pas le cas; avec 1, le boot single est correct, mais pas avec les deux autres.

Ce problème provient d'un bug de sysvinit, qui est le premier programme lancé par le noyau. Le correctif est inclus ci-dessous, et un bug Gentoo a été ouvert à ce sujet en juillet 2005. En attendant que le correctif soit intégré de base dans la gentoo, utilisez 1 sur votre ligne kernel afin de passer en single user...

--- sysvinit-2.86/src/init.c.single	2005-12-21 12:21:04.000000000 -0500
+++ sysvinit-2.86/src/init.c	2005-12-21 12:21:40.000000000 -0500
@@ -1153,7 +1153,7 @@
 		 *	See if we have a single user entry.
 		 */
 		for(old = newFamily; old; old = old->next)
-			if (strpbrk(old->rlevel, "S")) break;
+			if (strpbrk(old->rlevel, "S") && !ISPOWER(old->action)) break;
 		if (old == NULL)
 			snprintf(buf, sizeof(buf), "~~:S:wait:%s -ln", SHELL);
 		else

mardi 21 mars 2006

Linux 2.4.32 et quotas ReiserFS

Le besoin du support des quotas s'étant fait ressentir sur un serveur chez NocWorld, et dont le système de fichiers principal est un ReiserFS, quelques recherches m'ont montré que, par défaut, ReiserFS ne supporte pas les quotas sous Linux 2.4... Cet état de fait est d'ailleurs explicité dans la FAQ de ReiserFS: Is quota-support built-in in the vanilla 2.4 kernels for ReiserFS?.

Cette FAQ renvoit sur plusieurs sites contenant des patchs, qui malheureusement ne s'appliquent pas correctement à 100% à cause d'un patch pour la gestion de la mémoire haute appliqué dans le 2.4.25.

J'ai donc dû refaire le patch, en corrigeant ce léger décalage, et je l'ai concaténé en un seul, applicable au 2.4.32: Patch Quotas ReiserFS 2.4.32.

Une fois le patch appliqué, et le noyau recompilé, il faut ajouter le(s) option(s) qui vous conviennent dans le fichier /etc/fstab (par exemple userquota), puis de rebooter la machine, et de lancer quotacheck -avugm (si vous utilisez les Linux DiskQuota). Les fichiers contenant les quotas seront alors créés, et il vous suffira de les éditer en utilisant edquota.

Attention néanmoins, comme toute modification non présente par défaut dans le noyau Linux, il y a un risque d'explosion de votre système de fichiers, donc pensez à faire une sauvegarde avant de tenter l'installation des quotas. Le patch a fonctionné pour moi sans aucun problèmes, mais je décline toute responsabilité en cas de pertes de données. SAUVEGARDEZ !