7.6. Utiliser et configurer les scripts de démarrage de System V

7.6.1. Comment fonctionnent les scripts de démarrage de System V ?

Linux utilise un service de démarrage spécial nommé SysVinit qui est basé sur un concept de niveaux d'exécution. Il peut être très différent d'un système à un autre, du coup, il ne peut pas être supposé que parce que cela fonctionne sur une distribution Linux particulière, cela fonctionnera de la même façon dans LFS. LFS a sa propre façon de le faire mais il respecte généralement les standards établis.

SysVinit (qui sera nommé par la suite « init ») fonctionne en utilisant un schéma de niveaux d'exécution. Ils sont au nombre de sept (numérotés de 0 à 6). En fait, il en existe plus mais ils sont réservés à des cas spéciaux et ne sont généralement pas utilisés. Voir init(8) pour plus de détails. Chacun d'entre eux correspond à des actions que l'ordinateur est supposé effectuer lorsqu'il démarre. Le niveau d'exécution par défaut est 3. Voici les descriptions sur l'implémentation des différents niveaux d'exécution :

0: arrête l'ordinateur
1: mode mono-utilisateur
2: mode multi-utilisateur sans réseau
3: mode multi-utilisateur avec réseau
4: réservé pour la personnalisation, sinon identique à 3
5: identique à 4, il est habituellement utilisé pour la connexion GUI (comme xdm de X ou kdm de KDE)
6: redémarre l'ordinateur

7.6.2. Configuration de Sysvinit

Lors de l'initialisation du noyau, le premier programme qui se lance est soit spécifié sur la ligne de commande, soit, par défaut, init. Ce programme lit le fichier d'initialisation /etc/inittab. Créez ce fichier avec :

cat > /etc/inittab << "EOF"
# Début de /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc S

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# Fin de /etc/inittab
EOF

Vous trouverez une explication de ce fichier d'initialisation dans la page de manuel de inittab. Pour LFS, la commande clé qui se lance est rc. Le fichier d'initialisation ci-dessus demandera à rc de lancer tous les scripts commençant par un S qui sont dans le répertoire /etc/rc.d/rcS.d, puis tous les scripts commençant par un S du répertoire /etc/rc.d/rc?.d où le point d'interrogation est spécifié par la valeur initdefault.

Par commodité, le script rc lit une bibliothèque de fonctions dans /lib/lsb/init-functions. Cette bibliothèque lit aussi un fichier de configuration facultatif, /etc/sysconfig/rc.site. Tous les paramètres du fichier de configuration du système décrits dans les sections suivantes peuvent être mis dans ce fichier, ce qui permet de rassembler tous les paramètres systèmes dans un seul fichier.

Pour faciliter le débogage, le script functions enregistre aussi toute la sortie dans /run/var/bootlog. Le répertoire /run étant un tmpfs, ce fichier n'est pas persistant entre les redémarrages, il est cependant envoyé dans le fichier plus permanent /var/log/boot.log à la fin du processus de démarrage.

7.6.2.1. Modifier les niveaux d'exécution

La commande utilisée pour modifier le niveau d'exécution est init <[niveau_exécution]>, où <[niveau_exécution]> est le niveau d'exécution cible. Par exemple, pour redémarrer l'ordinateur, un utilisateur pourrait lancer la commande init 6 qui est un alias de la commande reboot. De même, init 0 est un alias pour la commande halt.

Il existe un certain nombre de répertoires sous /etc/rc.d qui ressemble à rc?.d (où ? est le numéro du niveau d'exécution) et rcsysinit.d, tous contenant un certain nombre de liens symboliques. Certains commencent par un K, les autres par un S, et tous ont deux nombres après la lettre initiale. Le K signifie l'arrêt (kill) d'un service et le S son lancement (start). Les nombres déterminent l'ordre dans lequel les scripts sont exécutés, de 00 à 99 — plus ce nombre est petit, plus tôt le script correspondant sera exécuté. Quand init bascule sur un autre niveau d'exécution, les services appropriés sont soit lancés soit tués, suivant le niveau d'exécution choisi.

Les vrais scripts sont dans /etc/rc.d/init.d. Ils font le vrai boulot et les liens symboliques pointent tous vers eux. Les liens K et les liens S pointent vers le même script dans /etc/rc.d/init.d. Ceci est dû au fait que les scripts peuvent être appelés avec différents paramètres comme start, stop, restart, reload et status. Quand un lien K est rencontré, le script approprié est lancé avec l'argument stop. Quand un lien S est rencontré, le script approprié est lancé avec l'argument start.

Il y a une exception à cette explication. Les liens qui commencent avec un S dans les dossiers rc0.d et rc6.d ne vont rien faire pour être démarrés. Ils seront appelés avec le paramètre stop pour arrêter quelque chose. La logique sous-jacente est que quand un utilisateur est en train de redémarrer ou arrêter le système, rien ne nécessite d'être démarré. Le système a seulement besoin d'être arrêté.

Voici les descriptions de ce que font les arguments des scripts :

start

Le service est lancé.

stop

Le service est stoppé.

restart

Le service est stoppé puis relancé.

reload

La configuration du service est mise à jour. Ceci est utilisé après modification du fichier de configuration d'un service, quand le service n'a pas besoin d'être redémarré.

status

Indique si le service est en cours d'exécution ainsi que les PID associés.

Vous êtes libre de modifier la façon dont le processus de démarrage fonctionne (après tout, c'est votre système LFS). Les fichiers donnés ici sont un exemple d'une façon de faire.

7.6.3. Les scripts de démarrage Udev

Le script de démarrage /etc/rc.d/init.d/udev lance udevd, récupère les périphériques "branchés à froid" créés d'ores et déjà par le noyau et attend des règles pour se terminer. Le script supprime aussi du gestionnaire d'uevent le réglage par défaut /sbin/hotplug . On fait cela car le noyau n'a plus besoin de faire appel à un binaire externe. Par contre, udevd va écouter sur un socket netlink les uevents engendrés par le noyau.

Le script de démarrage /etc/rc.d/init.d/udev_retry se charge de récupérer les événements des sous-systèmes dont les règles s'appuient sur des systèmes de fichiers non montés jusqu'à ce que le script mountfssoit lancé (en particulier, /usr et /var peuvent avoir cet effet). Ce script s'exécute après le script mountfs, donc ces règles (si elles sont de nouveau récupérées) devraient s'appliquer la deuxième fois. Il se configure à partir du fichier /etc/sysconfig/udev_retry ; donc tout mot autre que des commentaires dans ce fichier est vu comme un nom de sous-système à rattraper lorsqu'il lance le nouvel essai. Pour trouver le sous-système d'un périphérique, utilisez udevadm info --attribute-walk <périphérique> où <périphérique> est un chemin absolu dans /dev ou /sys comme /dev/sr0 ou /sys/class/rtc.

7.6.3.1. Chargement d'un module

Les pilotes de périphériques compilés en tant que modules peuvent avoir des alias compilés en eux. Les alias sont visibles dans la sortie du programme modinfo et ils sont généralement liés aux identifiants spécifiques des bus de périphériques supportés par un module. Par exemple, le pilote snd-fm801 supporte les périphériques PCI de la marque dont l'ID est 0x1319 et l'ID du périphérique est 0x0801, et son alias est « pci:v00001319d00000801sv*sd*bc04sc01i* ». Pour la plupart des périphériques, le pilote du périphérique exporte l'alias du pilote qui gérerait le périphérique via sysfs. Par exemple, le fichier /sys/bus/pci/devices/0000:00:0d.0/modalias pourrait contenir la chaîne « pci:v00001319d00000801sv00001319sd00001319bc04sc01i00 ». Les règles par défaut fournies avec Udev amèneront udevd à faire appel à /sbin/modprobe avec le contenu de la variable d'environnement de l'uevent MODALIAS (qui devrait être le même que celui du fichier modalias dans sysfs), d'où il résulte ainsi que tous les modules dont les alias correspondent à cette chaîne, après le développement des jokers.

Dans cet exemple, cela signifie que, outre snd-fm801, le pilote obsolète (et qu'on ne veut pas) forte sera chargé s'il est disponible. Voir ci-dessous les façons dont on peut empêcher le chargement de pilotes non souhaités.

Le noyau lui-même peut également charger des modules pour les protocoles réseaux, les systèmes de fichiers et le support NLS, à la demande.

7.6.3.2. Gérer les périphériques qu'on branche à chaud/dynamiques

Quand vous branchez un périphérique, comme un lecteur MP3 USB (Universal Serial Bus) (USB), le noyau identifie que le périphérique est connecté et il génère un uevent. Cet uevent est alors géré par udevd comme indiqué ci-dessus.

7.6.4. Configurer l'horloge du système

Le script setclock lit l'heure à partir de l'horloge matérielle, appelée aussi horloge BIOS ou Complementary Metal Oxide Semiconductor (CMOS). Si l'horloge matérielle est réglée sur UTC, ce script convertira l'heure de l'horloge matérielle en heure locale en utilisant le fichier /etc/localtime (qui indique au programme hwclock le fuseau horaire de l'utilisateur). Il n'y a aucun moyen de détecter si l'horloge matérielle est réglée sur UTC, donc vous devez le configurer manuellement.

Le script setclock se lance via udev quand le noyau détecte le matériel au démarrage. Vous pouvez aussi le lancer à la main avec le paramètre stop pour stocker l'heure du système dans l'horloge CMOS.

Si vous ne vous rappelez pas si l'horloge matérielle est réglée sur UTC, assurez-vous-en en lançant la commande hwclock --localtime --show. Cela affichera l'heure actuelle selon l'horloge matérielle. Si elle correspond à ce qu'indique votre montre, l'horloge matérielle est en heure locale. Si la sortie de hwclock n'est pas l'heure locale, il y a des chances qu'il s'agisse de l'heure UTC. Vérifiez-le en ajoutant ou enlevant le bon nombre d'heures du fuseau horaire de l'heure affichée avec hwclock. Par exemple, si vous êtes dans le fuseau MST, connu aussi sous le nom GMT -0700, ajoutez sept heures à l'heure locale.

Passez la valeur de la variable UTC ci-dessous à la valeur 0 (zéro) si vhorloge matérielle n'est pas réglée sur l'heure UTC.

Créez un nouveau fichier /etc/sysconfig/clock en lançant ce qui suit :

cat > /etc/sysconfig/clock << "EOF"
# Début de /etc/sysconfig/clock

UTC=1

# Mettez ici les options que vous pourriez devoir donner à hwclock,
# comme le type de l'horloge matérielle de la machine pour les Alphas.
CLOCKPARAMS=

# Fin de /etc/sysconfig/clock
EOF

Une bonne astuce expliquant la gestion de l'heure sur LFS est disponible sur http://www.fr.linuxfromscratch.org/view/astuces/heure.txt. Elle traite de sujets tels que les fuseaux horaires, UTC et la variable d'environnement TZ.

[Note]

Note

Vous pouvez aussi régler les paramètres CLOCKPARAMS et UTC dans le fichier /etc/sysconfig/rc.site.

7.6.5. Configurer la Console Linux

Cette section discute de la configuration du script de démarrage console, initialisant la disposition du clavier, la police de la console et le niveau de journalisation du noyau. Si des caractères non-ASCII (par exemple le symbole du copyright, de la livre sterling et de l'euro) ne seront pas utilisés et que le clavier est américain, la plupart de cette section peut être sautée. Sans ce fichier de configuration, (ou des options équivalentes dans rc.site), le script de démarrage console ne fera rien.

Le script console lit les informations de configuration du fichier /etc/sysconfig/console. Il décide de la disposition de clavier et de la police de la console à utiliser. Différents guides pratiques spécifiques aux langues peuvent aussi être d'une grande aide (voir http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html). Si vous avez toujours des doutes, jetez un œil dans les répertoires /usr/share/keymaps et /usr/share/consolefonts pour des dispositions de clavier valides et des polices d'écran. Lisez les pages de manuel loadkeys(1) et setfont(8) pour déterminer les bons arguments pour ces programmes.

Le fichier /etc/sysconfig/console devrait contenir des lignes de la forme : VARIABLE="valeur". Les variables suivantes sont reconnues :

LOGLEVEL

Cette variable spécifie le niveau de traçage pour les messages du noyau envoyés à la console, selon le paramétrage de dmesg. Les niveaux valides vont de « 1 » (aucun message) à « 8 ». Le niveau par défaut est « 7 ».

KEYMAP

Cette variable spécifie les arguments du programme loadkeys, en général, le nom de l'arrangement du clavier à charger, comme « it ». Si cette variable n'est pas initialisée, le script de démarrage ne lancera pas le programme loadkeys et l'arrangement par défaut du noyau sera utilisé. Remarquez qu'une petit nombre d'arrangements ont plusieurs versions avec le même nom (cz avec ses variantes dans qwerty/ et qwertz/, es dans olpc/ et qwerty/, et trf dans fgGlod/ et qwerty/). Dans ce cas, le répertoire parent doit être spécifié (par exemple qwerty/es) pour s'assurer que l'arrangement adéquat est chargé.

KEYMAP_CORRECTIONS

Cette variable (rarement utilisée) spécifie les arguments du second appel au programme loadkeys. C'est utile si la disposition du clavier stocké n'est pas totalement satisfaisant et que vous devez faire un petit ajustement. Par exemple, pour inclure le signe Euro dans une disposition de clavier qui ne l'a normalement pas, réglez cette variable à « euro2 ».

FONT

Cette variable spécifie les arguments du programme setfont. En principe, ceci inclut le nom de la police, « -m » et le nom de la disposition de clavier de l'application à charger. Par exemple, pour charger la police « lat1-16 » avec la disposition de clavier de l'application « 8859-1 », (comme il convient aux États-Unis), réglez cette variable à « lat1-16 -m 8859-1 ». En mode UTF-8, le noyau utilise la disposition de clavier de l'application pour la conversion de codes de touche 8-bits composés dans la disposition de clavier en UTF-8, et ainsi vous devriez initialiser l'argument du paramètre "-m" à l'encodage des codes de touche composés dans la disposition de clavier.

UNICODE

Réglez cette variable à « 1 », « yes » ou « true » afin de mettre la console en mode UTF-8. Ceci est utile pour les locales basées sur UTF-8 et nuisible sinon.

LEGACY_CHARSET

Pour beaucoup de types de clavier, il n'y a pas de disposition de clavier pour le stock Unicode dans le paquet Kbd. Le script de démarrage console convertira une disposition de clavier disponible en UTF-8 au vol si cette variable est réglée à l'encodage de la disposition du clavier non UTF-8 disponible.

Quelques exemples :

  • Pour une initialisation non Unicode, en général seules les variables KEYMAP et FONT sont nécessaires. Par exemple, pour l'initialisation en polonais, on utiliserait :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    KEYMAP="pl2"
    FONT="lat2a-16 -m 8859-2"
    
    # Fin de /etc/sysconfig/console
    EOF
  • Comme mentionné ci-dessus, il est parfois nécessaire d'ajuster légèrement une disposition de clavier stockée. L'exemple suivant ajoute le symbole Euro a la disposition allemande du clavier :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    KEYMAP="de-latin1"
    KEYMAP_CORRECTIONS="euro2"
    FONT="lat0-16 -m 8859-15"
    
    # Fin de /etc/sysconfig/console
    EOF
  • Ce qui suit est un exemple avec l'Unicode activé pour le bulgare, où une disposition du clavier UTF-8 stockée existe :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    UNICODE="1"
    KEYMAP="bg_bds-utf8"
    FONT="LatArCyrHeb-16"
    
    # Fin de /etc/sysconfig/console
    EOF
  • Du fait de l'utilisation d'une police 512-glyph LatArCyrHeb-16 dans l'exemple précédent, les couleurs brillantes ne sont plus disponibles sur la console Linux à moins qu'un framebuffer soit utilisé. Si vous voulez avoir les couleurs brillantes sans framebuffer et que vous pouvez vivre sans caractère n'appartenant pas à votre langue, il est encore possible d'utiliser une police 256-glyph spécifique à votre langue, comme illustré ci-dessous :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    UNICODE="1"
    KEYMAP="bg_bds-utf8"
    FONT="cyr-sun16"
    
    # Fin de /etc/sysconfig/console
    EOF
  • L'exemple suivant illustre l'auto-conversion de la disposition de clavier d'ISO-8859-15 vers UTF-8 et l'activation des touches mortes en mode Unicode :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    UNICODE="1"
    KEYMAP="de-latin1"
    KEYMAP_CORRECTIONS="euro2"
    LEGACY_CHARSET="iso-8859-15"
    FONT="LatArCyrHeb-16 -m 8859-15"
    
    # Fin de /etc/sysconfig/console
    EOF
  • Certaines dispositions de codage ont des touches mortes (c-à-d que les touches qui ne produisent pas un caractère en elles-mêmes, mais mettent un accent sur le caractère produit par la touche suivante) ou définissent des règles de comportement (comme : « Appuyez sur Ctrl+. A E pour obtenir Æ » dans la disposition du clavier par défaut). Linux-4.7.2 n'interprète correctement les touches mortes et les règles de composition que quand les caractères source qui seront composés ensemble sont multi-octet. Ce défaut n'affecte pas les dispositions de clavier pour les langues européennes, car il y a des accents ajoutés à des caractères ASCII non accentués, ou deux caractères ASCII sont composés ensemble. Néanmoins en mode UTF-8, c'est un problème, comme pour la langue grecque, où on a parfois besoin de mettre un accent sur la lettre « alpha ». La solution consiste soit à éviter d'utiliser UTF-8, soit à installer le système de fenêtrage X qui n'a pas cette limitation dans sa gestion de l'entrée.

  • Pour le chinois, le Japonais, le Coréen et certaines autres langues, la console Linux ne peut pas être configurée pour afficher les caractères nécessaires. Les utilisateurs qui ont besoin de telles langues devraient installer le système de fenêtrage X, dont les polices couvrent la plage de caractères nécessaire et qui a la bonne méthode d'entrée (par exemple SCIM prend en charge une large variété de langues).

[Note]

Note

Le fichier /etc/sysconfig/console ne contrôle que la localisation de la console texte de Linux. Cela n'a rien à voir avec le bon paramétrage du type de clavier et des polices du terminal dans le système de fenêtrage X, avec les sessions ssh ou une console série. Dans de telles situations, les limitations mentionnées dans les deux derniers points de la liste ci-dessus ne s'appliquent pas.

7.6.6. Créer des fichiers au démarrage

Parfois, on veut créer des fichiers lors du démarrage. Par exemple, vous pouvez souhaiter un répertoire /tmp/.ICE-unix. Vous pouvez le faire en modifiant une entrée du script de configuration /etc/sysconfig/createfiles. Le format ce ce fichier est indiqué dans les commentaires du fichier de configuration par défaut.

7.6.7. Configurer le script sysklogd

Le script sysklogd invoque le programme syslogd faisant partie de l'initialisation par System V. L'option -m 0 désactive la marque périodique que syslogd écrit par défaut dans les fichiers journaux toutes les 20 minutes. Si vous voulez activer cet horodatage, éditez /etc/sysconfig/rc.site et définissez la variable SYSKLOGD_PARMS à la valeur désirée. Par exemple, pour supprimer tous les paramètres, réglez la variable à la valeur null :

SYSKLOGD_PARMS=

Voir man syslogd pour plus d'options.

7.6.8. Le fichier rc.site

Le fichier facultatif /etc/sysconfig/rc.site contient les paramètres réglés automatiquement pour chaque script de démarrage de System V. Il peut aussi contrôler les valeurs des fichiers hostname, console et clock du répertoire /etc/sysconfig/. Si les variables associées se trouvent à la fois dans ces fichiers distincts et dans rc.site, les valeurs des fichiers spécifiques ont la préséance.

rc.site contient aussi des paramètres pour personnaliser d'autres aspects du processus de démarrage. Le réglage de la variable IPROMPT permettra un lancement sélectif des scripts de démarrage. D'autres options sont décrites dans les commentaires du fichier. La version par défaut du fichier est ci-dessous :

# rc.site
# Optional parameters for boot scripts.

# Distro Information
# These values, if specified here, override the defaults
#DISTRO="Linux From Scratch" # The distro name
#DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
#DISTRO_MINI="LFS" # Short name used in filenames for distro config

# Define custom colors used in messages printed to the screen

# Please consult `man console_codes` for more information
# under the "ECMA-48 Set Graphics Rendition" section
#
# Warning: when switching from a 8bit to a 9bit font,
# the linux console will reinterpret the bold (1;) to
# the top 256 glyphs of the 9bit font.  This does
# not affect framebuffer consoles

# These values, if specified here, override the defaults
#BRACKET="\\033[1;34m" # Blue
#FAILURE="\\033[1;31m" # Red
#INFO="\\033[1;36m"    # Cyan
#NORMAL="\\033[0;39m"  # Grey
#SUCCESS="\\033[1;32m" # Green
#WARNING="\\033[1;33m" # Yellow

# Use a colored prefix
# These values, if specified here, override the defaults
#BMPREFIX="     "
#SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL}"
#FAILURE_PREFIX="${FAILURE}*****${NORMAL}"
#WARNING_PREFIX="${WARNING} *** ${NORMAL}"

# Manually seet the right edge of message output (characters)
# Useful when resetting console font during boot to override
# automatic screen width detection
#COLUMNS=120

# Interactive startup
#IPROMPT="yes" # Whether to display the interactive boot prompt
#itime="3"    # The amount of time (in seconds) to display the prompt

# The total length of the distro welcome string, without escape codes
#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"

# The total length of the interactive string, without escape codes
#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"

# Set scripts to skip the file system check on reboot
#FASTBOOT=yes

# Skip reading from the console
#HEADLESS=yes

# Write out fsck progress if yes
#VERBOSE_FSCK=no

# Speed up boot without waiting for settle in udev
#OMIT_UDEV_SETTLE=y

# Speed up boot without waiting for settle in udev_retry
#OMIT_UDEV_RETRY_SETTLE=yes

# Skip cleaning /tmp if yes
#SKIPTMPCLEAN=no

# For setclock
#UTC=1
#CLOCKPARAMS=

# For consolelog (Note that the default, 7=debug, is noisy)
#LOGLEVEL=7

# For network
#HOSTNAME=mylfs

# Delay between TERM and KILL signals at shutdown
#KILLDELAY=3

# Optional sysklogd parameters
#SYSKLOGD_PARMS="-m 0"

# Console parameters
#UNICODE=1
#KEYMAP="de-latin1"
#KEYMAP_CORRECTIONS="euro2"
#FONT="lat0-16 -m 8859-15"
#LEGACY_CHARSET=

7.6.8.1. Personnaliser les scripts de démarrage et d'extinction

Les scripts de démarrage LFS démarrent et arrêtent un système d'une façon très efficace, mais vous pouvez faire quelques bidouillages dans le fichier rc.site pour améliorer encore davantage la vitesse et ajuster les messages selon vos préférences. Pour cela, ajustez les paramètres du fichier /etc/sysconfig/rc.site ci-dessus.

  • Pendant le script de démarrage udev, un appel à udev settle demande du temps pour s'achever. Ce temps peut être ou pas nécessaire pour des périphériques présents dans votre système. Si vous n'avez que des partitions simples et une seule carte ethernet, le processus de démarrage n'aura probablement pas besoin d'attendre cette commande. Pour la sauter, définissez la variable OMIT_UDEV_SETTLE=y.

  • Le script de démarrage udev_retry lance aussi par défaut udev settle. Cette commande n'est nécessaire par défaut que si le répertoire /var est monté séparément. Ceci car la vérification a besoin du fichier /var/lib/hwclock/adjtime. D'autres personnalisations peuvent nécessiter d'attendre qu'udev se termine mais dans beaucoup d'installations, ce n'est pas nécessaire. Sautez la commande en définissant la variable OMIT_UDEV_RETRY_SETTLE=y.

  • Par défaut, les vérifications des systèmes de fichiers sont sans message. Cela peut être vu comme un délai pendant le processus de démarrage. Pour activer la sortie de fsck, définissez la variable VERBOSE_FSCK=y.

  • Lors du redémarrage, il se peut que vous vouliez sauter la vérification du système de fichiers, fsck, complètement. Pour cela, soit créez le fichier /fastboot, soit redémarrez le système avec la commande /sbin/shutdown -f -r now. Inversement, vous pouvez forcer la vérification de tous les systèmes de fichiers en créant /forcefsck ou en lançant shutdown avec le paramètre -F plutôt que -f.

    La définition de la variable FASTBOOT=y désactivera fsck lors du processus de démarrage jusqu'à ce qu'il soit supprimé. Ce n'est pas recommandé de façon permanente.

  • En principe, tous les fichiers du répertoire /tmp sont effacés au moment du démarrage. Selon le nombre de fichiers ou de répertoires présents, cela peut provoquer un délai important dans le processus de démarrage. Pour sauter la suppression de ces fichiers, définissez la variable SKIPTMPCLEAN=y.

  • Lors de l'extinction, le programme init envoie un signal TERM à chaque programme qu'il a démarré (comme agetty), il attend un moment de définition (par défaut, 3 secondes), et il envoie à chaque processus un signal KILL puis attend de nouveau. Ce processus se répète dans le script sendsignals pour tous les processus non terminés par leurs propres scripts. Le délai de init peut être défini en passant un paramètre. Par exemple, pour supprimer le délai dans init, passez le paramètre -t0 lors de l'extinction ou du redémarrage (comme /sbin/shutdown -t0 -r now). Le délai du script sendsignals peut être sauté en définissant le paramètre KILLDELAY=0.