La ligne de commande du noyau permet de lancer l'installation du noyau depuis le chargeur de démarrage (grub). La ligne de commande accepte des paramètres à destination du noyau, des modules, du chargeur de démarrage ou du programme d'initialisation (systemd). Ce document fournit quelques exemples d'utilisation.
Références
Man pages : man -L -C bootparam
Paramètres du noyau : https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
Core OS arguments : https://www.freedesktop.org/software/systemd/man/kernel-command-line.html
La ligne de commande du noyau est définie dans le fichier de configuration de grub et apparaît, lors du démarrage du système, dans le menu de grub. Elle se présent sous la forme :
$ cat /boot/grub/grub.cfg |grep vmlinuz
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet
....
Elle est composée
d'un en-tête (linux /boot/vmlinuz) indiquant l'emplacement du noyau
et de paramètres. Dans l'exemple ci-dessus, 3 paramètres sont présents : root= ro et quiet
root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297
root=/dev/sda1
root=LABEL=debian8
Les paramètres peuvent être regroupés en 3 groupes
Les paramètres noyau qui agissent sur le déroulement du chargement, tels que ro, quiet. Voir le site du noyau linux : https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html pour une liste détaillée.
Les paramètres modules qui agissent sur le chargement des modules (blacklistage) ou qui modifient la valeur par défaut de leurs paramètres, par exemple
module_blacklist=pcskr,fan i915.modeset=0
Certaines commandes de systemd, voir : https://www.freedesktop.org/software/systemd/man/kernel-command-line.html
Pour ajouter / supprimer des paramètres,
soit, modifier la liste des paramètres de la ligne GRUB_CMDLINE_LINUX_DEFAULT du fichier /etc/default/grub,
$ cat /etc/default/grub |grep "GRUB_CMDLINE_LINUX_DEFAULT"
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
puis mettre à jour le fichier grub.cfg avec la commande
# update-grub
Voir Personnalisation de Grub pour plus de détails.
soit, de façon temporaire, uniquement pour le démarrage courant, éditer la ligne de commande du noyau dans le menu affiché par grub, lors du démarrage.
Une fois démarré, il est toujours possible de vérifier quelle ligne de commande et quels paramètres ont été utilisés :
dans le log du noyau
# dmesg |grep "Kernel command line"
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet
ou dans /proc/cmdline :
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet
La ligne de commande standard comprend les paramètres ro et quiet
ro : Mount root device read-only on boot
quiet : Disable most log messages
Exemple :
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet
Lorsque plymouth est installé et configuré, utiliser les paramètres quiet et splash pour utiliser plymouth
Exemple :
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet splash
Pour lister des modules à ne pas charger, utiliser le paramètres module_blacklist :
module_blacklist= : Do not load a comma-separated list of modules. Useful for debugging problem modules.
Exemple : bloquer le chargement des modules bluetooth et webcam
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet module_blacklist=btusb,uvcvideo
Pour spécifier la valeur du paramètre d'un module, utiliser le paramètre module.paramètre=valeur :
Exemple : passer le paramètre bt_coexactive du module iwlwifi à N
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet iwlwifi.bt_coex_active=N
Pour désactiver le modesetting, activé par défaut avec les processeurs graphiques intel, radeon, et nvidia (module nouveau seulement), désactiver le paramètre modeset du module ou par défaut des trois modules :
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet i915.modeset=0 radeon.modeset=0 nouveau.modeset=0
L'activation d'un mode VGA donné nécessite
la désactivation du modesetting
l'utilisation du mode 16 bits de démarrage (linux16 et initrd16)
l'utilisation du paramètre vga= . Utiliser la valeur ask pour faire afficher la liste des résolutions possibles et les codes VGA correspondants :
linux16 /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro quiet i915.modeset=0 radeon.modeset=0 nouveau.modeset=0 vga=ask
initrd16 /boot/initrd.img-4.8.0-0.bpo.2-amd64
Pour démarrer dans un mode spécifique (différent du mode par défaut), utiliser le paramètre
systemd.unit=TARGET.target, où TARGET est le niveau visé exprimé littéralement (rescue, multi-user, graphique)
ou systemd.unit=runlevelN.target où N est le niveau visé exprimé numériquement (1,3,5)
Les différents niveaux possibles sont :
rescue (ou niveau 1) = mode de secours avec shell limité
multi-user (ou niveau 3) = mode multi-utilisateur en interface de commande
Exemple : Démarrage en mode multi-utilisateur:
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro systemd.unit=multi-user.target
qui est équivalent à
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 ro systemd.unit=runlevel3.target
Le niveau 1 peut également être spécifié avec simplement la lettre s ou S (pour single).
Le principe est de se loger sans avoir à entrer de mot de passe, puis de définir un nouveau mot de passe. Utiliser les paramètres S, init=/bin/bash et rw :
init= : Format: <full_path>. Run specified binary instead of /sbin/init as init process.
rw : Mount root device read-write on boot
Exemple :
linux /boot/vmlinuz-4.8.0-0.bpo.2-amd64 root=UUID=a42b8919-e6a8-49e0-845e-6feb76b02297 rw S init=/bin/bash
Au prompt, entrer la commande passwd (vérifier que le clavier est dans la bonne disposition, sinon en tenir compte pour taper la commande et entrer le mot de passe)
root@(none):/# passwd
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : password updated successfully
Redémarrer (avec le bouton secteur)