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

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

Linux utilise un outil de démarrage spécial nommé SysVinit, qui se base sur une série de niveaux d'exécution. Le processus de démarrage peut varier d'un système à un autre, et donc si il fonctionne sur une distribution Linux en particulier, il n'est pas garanti qu'il fonctionnera de la même matière dans LFS. LFS a son propre fonctionnement, mais il respecte généralement les standards établis.

Il existe un autre processus de démarrage appelé systemd. Nous n'aborderons pas ce processus plus en détail. Pour plus d'informations, consultez https://www.linux.com/training-tutorials/understanding-and-using-systemd/.

SysVinit (qui appellerons « init » à partir de maintenant) fonctionne avec des niveaux d'exécution. Ils sont au nombre de sept, numérotés de 0 à 6. (En réalité, il en existe d'autres, 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 doit effectuer lorsqu'il démarre ou s'éteint. Le niveau d'exécution par défaut est 3. Voici les descriptions des différents niveaux d'exécution implémentés dans LFS :

0 : éteint l'ordinateur
1 : mode mono-utilisateur
2 : réservé pour la personnalisation, mais autrement identique au 3
3 : mode multi-utilisateur avec réseau
4 : réservé pour la personnalisation, mais autrement identique au 3
5 : identique au 4, habituellement utilisé pour la connexion GUI (comme la commande gdm de GNOME ou la commande lxdm de LXDE)
6 : redémarre l'ordinateur

[Note]

Note

Traditionnellement, le niveau d'exécution 2 ci-dessus était qualifié de « mode multi-utilisateur sans réseau », comme c'était le cas il y a plusieurs années, quand plusieurs utilisateurs pouvaient se connecter à un système via les ports série. Aujourd'hui, cela n'a plus de sens et le niveau est donc « réservé ».

9.6.2. Configuration de Sysvinit

Lors de l'initialisation du noyau, init est le premier programme qui se lance (s'il n'est pas remplacé sur la ligne de commande). 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:S06:once:/sbin/sulogin
s1:1:respawn:/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. Dans LFS, rc est la commande clé. Le fichier d'initialisation ci-dessus demande à rc de lancer tous les scripts commençant par un S 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 le répertoire /lib/lsb/init-functions. Cette bibliothèque lit aussi un fichier de configuration facultatif, /etc/sysconfig/rc.site. Tous les paramètres de configuration du système décrits dans les sections suivantes peuvent être placés dans ce fichier, permettant de rassembler tous les paramètres système dans un seul fichier.

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

9.6.2.1. Modifier les niveaux d'exécution

La commande init <niveau_exécution> permet de modifier le niveau d'exécution (<niveau_exécution> correspond au niveau d'exécution souhaité). Par exemple, pour redémarrer l'ordinateur, un utilisateur peut exécuter la commande init 6 qui est un alias de la commande reboot. De même, init 0 est un alias de la commande halt.

Il existe un certain nombre de répertoires sous /etc/rc.d qui ressemblent à rc?.d (le point d'interrogation correspond au le numéro du niveau d'exécution) et rcS.d, tous contenant un certain nombre de liens symboliques. Certains liens commencent par un K, les autres par un S, mais ils comportent tous deux chiffres après la lettre initiale. Le K signifie l'arrêt (kill) d'un service et le S son démarrage (start). Les chiffres 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 est exécuté. Quand init bascule sur un autre niveau d'exécution, les services appropriés sont soit lancés soit arrêtés, suivant le niveau d'exécution choisi.

Les vrais scripts sont dans /etc/rc.d/init.d. Ce sont eux qui font le vrai travail 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.

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

start

Le service est lancé.

stop

Le service est arrêté.

restart

Le service est arrêté puis relancé.

reload

La configuration du service est mise à jour. Cette commande est utilisée après la 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 le sont à titre d'exemples.

9.6.3. Les scripts de démarrage Udev

Le script de démarrage /etc/rc.d/init.d/udev lance udevd, déclenche les périphériques « coldplug » déjà créés par le noyau et attend que les règles se terminent. Le script désactive aussi le gestionnaire d'uevent dans les réglages par défaut du fichier /sbin/hotplug . Cette action est due au fait que le noyau n'a plus besoin de faire appel à un binaire externe. Par contre, udevd va écouter sur un socket netlink les uevents récupérés par le noyau.

Le script /etc/rc.d/init.d/udev_retry se charge de re-déclencher 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 re-déclenchées) doivent s'appliquer la deuxième fois. Le script se configure à partir du fichier /etc/sysconfig/udev_retry ; tout mot qui n'est pas un commentaire dans ce fichier est considéré comme un nom de sous-système à déclencher lors d'un nouvel essai. Pour trouver le sous-système d'un périphérique, utilisez la commande udevadm info --attribute-walk <périphérique> (<périphérique> étant un chemin absolu dans /dev ou /sys, comme /dev/sr0 ou /sys/class/rtc).

Pour plus d'informations sur le chargement des modules du noyau et udev, consultez Section 9.3.2.3, « Chargement d'un module ».

9.6.4. Configurer l'horloge du système

Le script setclock lit l'heure à partir de l'horloge matérielle, aussi appelée 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 à l'aide du 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 configurer ce paramètre manuellement.

Le script setclock se lance via udev quand le noyau détecte le matériel au démarrage. Vous pouvez aussi le lancer manuellement 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, exécutez la commande hwclock --localtime --show. Elle affichera l'heure actuelle en se basant sur l'horloge matérielle. Si elle correspond à ce qu'indique votre montre, l'horloge matérielle est réglée à l'heure locale. Si la sortie de hwclock ne correspond pas à l'heure locale, il y a des chances pour qu'il s'agisse de l'heure UTC. Pour le vérifier, ajoutez ou retirez le bon nombre d'heures du fuseau horaire de l'heure affichée par hwclock. Par exemple, si vous êtes dans le fuseau MST, aussi appelé GMT -0700, ajoutez sept heures à l'heure locale.

Changez la valeur de la variable UTC ci-dessous en 0 (zéro) si l'horloge 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 avoir besoin de 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 qui explique 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.

9.6.5. Configurer la Console Linux

Cette section traite de la configuration du script de démarrage console, qui initialise la configuration du clavier, la police de la console et le niveau du journal du noyau. Si vous n'utilisez pas les caractères non-ASCII (par exemple le symbole du copyright, de la livre sterling et de l'euro) et que votre clavier est nord-américain, vous pouvez passer une grande partie de cette section. Sans le fichier de configuration (ou des options équivalentes dans le fichier 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 configuration du clavier et de la police de la console à utiliser. Différents guides pratiques spécifiques à votre langue peuvent vous être d'une grande aide (voir https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html). Si vous avez toujours des doutes, jetez un œil au contenu des répertoires /usr/share/keymaps et /usr/share/consolefonts pour consulter des configurations de clavier et des polices d'écran valides. Lisez les pages de manuel loadkeys(1) et setfont(8) pour déterminer les arguments à passer à 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 -n. 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, généralement, le nom de la configuration 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 la configuration du clavier par défaut du noyau sera utilisée.Peu de configurations du clavier ont plusieurs versions avec le même nom (cz et ses variantes en qwerty/ et en qwertz/, es en olpc/ et en qwerty/, et trf en fgGlod/ et en qwerty/). Dans ce cas, le répertoire parent doit être spécifié (par exemple qwerty/es) pour s'assurer que la configuration de clavier adaptée est chargée.

KEYMAP_CORRECTIONS

Cette variable (rarement utilisée) spécifie les arguments du second appel au programme loadkeys. Elle est utile si la configuration du clavier par défaut n'est pas totalement satisfaisante et que vous devez faire un petit ajustement. Par exemple, pour inclure le symbole euro dans une configuration de clavier qui ne le prend pas en charge, réglez cette variable à euro2.

FONT

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

UNICODE

Réglez cette variable à 1, yes ou true afin de mettre la console en mode UTF-8. Cette variable est utile pour les paramètres géographiques basés sur UTF-8, mais elle peut être dangereuse dans le cas contraire.

LEGACY_CHARSET

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

Quelques exemples :

  • Nous allons utiliser C.UTF-8 comme paramètre linguistique pour les sessions interactives dans la console Linux dans Section 9.7, « Configuration des paramètres régionaux du système, », donc nous devrions paramétrer UNICODE à 1. De plus, les polices de console fournies par le paquet Kbd contenant les glyphes pour tous les caractères des messages des programmes dans le paramètre linguistique C.UTF-8 sont LatArCyrHeb*.psfu.gz, LatGrkCyr*.psfu.gz, Lat2-Terminus16.psfu.gz et pancyrillic.f16.psfu.gz dans /usr/share/consolefonts (les autres polices fournies n'ont pas certains caractères comme le guillemet Unicode ou le tiret quadratin). Pour utiliser l'une d'entre elles, par exemple Lat2-Terminus16.psfu.gz comme police de console par défaut :

    cat > /etc/sysconfig/console << "EOF"
    # Début de /etc/sysconfig/console
    
    UNICODE="1"
    FONT="Lat2-Terminus16"
    
    # Fin de /etc/sysconfig/console
    EOF
  • 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 la configuration de clavier stockée. L'exemple suivant ajoute le symbole euro à la configuration allemande du clavier :

    cat > /etc/sysconfig/console << "EOF"
    # Begin /etc/sysconfig/console
    
    KEYMAP="de-latin1"
    KEYMAP_CORRECTIONS="euro2"
    FONT="lat0-16 -m 8859-15"
    UNICODE="1"
    
    # Fin de /etc/sysconfig/console
    EOF
  • Ce qui suit est un exemple où l'Unicode est activé pour le bulgare, et où une configuration du clavier UTF-8 par défaut 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 glyphes LatArCyrHeb-16 dans l'exemple précédent, les couleurs claires ne sont plus disponibles sur la console Linux à moins d'utiliser un framebuffer. Si vous voulez avoir les couleurs claires sans framebuffer et que vous n'avez pas forcément besoin des caractères n'appartenant pas à votre langue, il est encore possible d'utiliser une police 256 glyphes 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 configuration 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 configurations du clavier comportent des touches mortes (c'est-à-dire des touches qui ne génèrent pas un caractère en elles-mêmes, mais qui permettent d'ajouter un accent au caractère généré par la touche suivante) ou définissent des règles de comportement (comme : « Appuyez sur Ctrl+. A E pour obtenir Æ » dans la configuration du clavier par défaut). Linux-6.7.4 n'interprète correctement les touches mortes et les règles de composition que lorsque les caractères sources qui seront composés ensemble sont multi-octets. Ce défaut n'affecte pas les configurations de clavier pour les langues européennes, car les accents sont ajoutés à des caractères ASCII non accentués, ou deux caractères ASCII sont composés ensemble. Cependant, en mode UTF-8, c'est un problème, comme pour le grec, où on a parfois besoin de placer un accent sur la lettre α. 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 ces langues doivent installer le système de fenêtrage X, dont les polices couvrent la plage de caractères nécessaire et qui a la méthode d'entrée adaptée (par exemple, SCIM prend en charge une grande 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 limites mentionnées dans les deux derniers points de la liste ci-dessus ne s'appliquent pas.

9.6.6. Créer des fichiers au démarrage

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

9.6.7. Configuration du 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.

9.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 également configurer 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 le fichier rc.site, les valeurs contenues dans les fichiers spécifiques au script sont prioritaires.

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@lists.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 set 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=

9.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 de manière très efficace, mais vous pouvez faire quelques modifications dans le fichier rc.site pour améliorer davantage leur rapidité et ajuster les messages selon vos préférences. Pour ce faire, modifiez les paramètres du fichier /etc/sysconfig/rc.site ci-dessus.

  • Pendant le script de démarrage udev, un appel à udev settle demande un certain temps pour s'achever. Ce délai peut être nécessaire, ou non, selon les périphériques présents dans le 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 passer, définissez la variable OMIT_UDEV_SETTLE=y.

  • Le script de démarrage udev_retry lance aussi udev settle par défaut. Cette commande n'est nécessaire que si le répertoire /var est monté séparément. En effet, 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. Passez 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 retard 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 passer complètement la vérification du système de fichiers, fsck. Vous pouvez pour cela soit créer le fichier /fastboot, soit redémarrer 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 exécutant 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 retard important dans le processus de démarrage. Pour passer la suppression de ces fichiers, définissez la variable SKIPTMPCLEAN=y.

  • Lors de l'arrêt, le programme init envoie un signal TERM à chaque programme qu'il a démarré (comme agetty), attend une durée déterminée (par défaut, 3 secondes), puis 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 de init, passez le paramètre -t0 lors de l'arrêt ou du redémarrage (comme /sbin/shutdown -t0 -r now). Le délai du script sendsignals peut être passé en définissant le paramètre KILLDELAY=0.