dezix a écrit : 06 août 2020, 19:54
2. De façon permanente en éditant dans /etc/default/grub la ligne GRUB_CMDLINE_LINUX_DEFAULT="param1 param2 mon_param"
GRUB_CMDLINE_LINUX_DEFAULT ne s'applique qu'aux entrées de menu de démarrage en mode normal. Pour qu'un paramètre s'applique aussi aux entrées de de menu de démarrage en mode dépannage (recovery), il faut les ajouter à GRUB_CMDLINE_LINUX.
dezix a écrit : 06 août 2020, 19:54
Quels avantages ou risques présente cette pratique (sysctl) en comparaison de l'usage du chargeur d'amorçage ?
Ce n'est pas du tout la même chose. Les réglages sysctl n'ont aucun rapport avec les paramètres de la ligne de commande du noyau. Certains ont des équivalents, mais ce n'est pas une généralité.
Les réglages sysctl sont des pseudo-fichiers situés dans /proc/sys/ accessibles en lecture et écriture pour la plupart (certains servent à déclencher des actions et ne sont accessibles qu'en écriture, d'autres servent à publier une information et ne sont accessibles qu'en lecture).
Ceux des paramètres de la ligne de commande du noyau qui sont des paramètres de modules (de la forme <module>.<parametre>=<valeur>) peuvent se retrouver dans /sys/module/<module>/parameters/<parametre> mais d'une part ce n'est pas systématique, ça dépend des modules, et d'autre part ils ne sont pas toujours modifiables par ce biais.
dezix a écrit : 06 août 2020, 19:54
Il semble donc possible d'utiliser sysctl via un script qui serait exécuté après le démarrage,
p.ex. via une tâche de cron avec @reboot
La méthode habituelle consiste plutôt à ajouter les réglages dans /etc/sysctl.conf ou un fichier /etc/systctl.d/*.conf.
Attention : certains réglages sysctl sont liés à des modules et/ou des périphériques et ne sont disponibles que lorsque ces modules sont chargés et/ou ces périphériques sont présents, ce qui peut avoir lieu de façon asynchrone du démarrage, par exemple lorsqu'il s'agit de pilotes de périphériques chargés dynamiquement à la découverte du matériel (exemple : réglages IPv4 et IPv6 des interfaces réseau) ou de périphériques amovibles. Dans ce cas une règle udev peut être plus adaptée. D'autres modules sont chargés lorsque leur fonctionnalité est requise par un programme (exemple : réglages de netfilter utilisé par iptables). Dans ce cas on peut effectuer les réglages sysctl dans le même script que la commande. Il y a aussi la possibilité de charger des modules au démarrage de façon explicite en les listant dans le fichier /etc/modules ou un fichier /etc/modules-load.d/*.conf avec leurs éventuels paramètres.
Si on essaie de modifier un réglage sysctl lié à un module qui n'est pas chargé ou un périphérique qui n'est pas présent, cela provoque une erreur et le réglage n'est pas appliqué. Si le module est déchargé puis rechargé, la modification est oubliée et le réglage revient à sa valeur par défaut. Ce n'est pas le cas des paramètres de la ligne de commande du noyau qui sont mémorisés et appliqués le cas échéant chaque fois que le module correspondant est chargé ou le périphérique concerné est ajouté.