Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Définir au boot un paramètre dans /sys/ (mais pas dans /proc/sys/)

6 réponses
Avatar
Francois Lafont
Bonsoir à tous,

J'ai une machine sur laquelle j'ai un souci avec ntp
(mais ce n'est pas mon problème ici). En effet, la valeur
du paramètre :

/sys/devices/system/clocksource/clocksource0/current_clocksource

n'est pas correcte après le boot si bien que le synchronisation
ntp ne marche pas. Du coup, manuellement, je dois faire ceci :

-------------------------------------
service ntp stop

# Là j'indique la « bonne » valeur du paramètre
# (avec cette valeur, ça fonctionne très bien).
echo xen > /sys/devices/system/clocksource/clocksource0/current_clocksource

service ntp start
-------------------------------------

Et voilà. À partir de là, le service ntp marche comme sur des
roulettes. Ce problème là est résolu.

Mon souci, c'est que si la machine reboot, alors le paramétrage
effectué disparaît et le service ntp ne fonctionne plus à nouveau.
Ma question est donc : quelle est la *bonne* manière d'effectuer
mon paramétrage pour qu'il se fasse automatiquement au boot de la
machine ?

Attention, faire un fichier de conf dans /etc/sysctl.d/ ne fonctionne
pas car ici le paramètre se trouve dans /sys/ *pas* dans /proc/sys/
(et sysctl à ma connaissance gère les paramètres de /proc/sys/ mais
*pas* ceux de /sys/).

Enfin, je sais bien que je peux mettre les commandes ci-dessus
dans /etc/rc.local mais bon..., à travers ce fil, j'aimerais surtout
savoir comment on fait pour définir proprement au boot un paramètre
qui se trouve dans /sys/. De plus, comme le paramétrage interviendra
avant le démarrage du service ntp (enfin je suppose), je n'aurais pas
besoin de redémarrer le daemon.

Merci d'avance pour votre aide.

--
François Lafont

6 réponses

Avatar
Doug713705
Le 16-12-2014, Francois Lafont nous expliquait dans
fr.comp.os.linux.configuration
(<5490a5e8$0$2075$) :

Mon souci, c'est que si la machine reboot, alors le paramétrage
effectué disparaît et le service ntp ne fonctionne plus à nouveau.
Ma question est donc : quelle est la *bonne* manière d'effectuer
mon paramétrage pour qu'il se fasse automatiquement au boot de la
machine ?



Passer l'argument kivabien© directement au noyau par l'entremise du
fichier de conf du bootloader.

A priori l'argument correspondant s'apelle clocksource.

Par exemple pour lilo la ligne suivante devrait faire l'affaire:
append=" clocksource=xen"

https://www.kernel.org/doc/Documentation/kernel-parameters.txt

À tester.
--
Maintenant voila ton père déguisé en indien
Avec une plume dans le fion et ses cartes d'Indochine.
S'il veut refaire sur moi ce qu'il a fait au Tonkin,
Bientôt je ne serai plus qu'une vieille tache d'hémoglobine.
-- H.F. Thiéfaine, Enfermé dans les cabinets
Avatar
Francois Lafont
Le 16/12/2014 22:58, Doug713705 a écrit :

Passer l'argument kivabien© directement au noyau par l'entremise du
fichier de conf du bootloader.

A priori l'argument correspondant s'apelle clocksource.

Par exemple pour lilo la ligne suivante devrait faire l'affaire:
append=" clocksource=xen"

https://www.kernel.org/doc/Documentation/kernel-parameters.txt

À tester.



Ok, merci de ton aide. A priori, c'est bien ça. Dans mon cas,
j'utilise Grub2 sous Debian Wheezy. Du coup, la démarche est :

1. Éditer le fichier /etc/default/grub et modifier la
variable GRUB_CMD_LINE_LINUX pour avoir ceci :

GRUB_CMD_LINE_LINUX="clocksource=xen"

2. Puis lancer update-grub && reboot

Du coup, je pense que mon problème pratique est résolu (merci
Doug ;)) mais j'aimerais bien prolonger un tout petit peu la
discussion pour essayer d'avoir quelques explications sur les
points suivants si c'est possible.

1. Quelle est la différence entre /proc/sys/ et /sys/ ? J'ai
l'impression que dans les 2 cas, cela concerne des paramètres
à passer au noyau. Mais pourquoi /proc/sys/ est modifiable via
sysctl et pas /sys/ ?

2. Si l'idée est de passer des paramètres au noyau, quelle
différence ça fait si je passe le paramètre via Grub ou si je
passe par sysctl ? Par exemple, si je veux désactiver IPv6 sur
ma machine, quelle différence y a-t-il entre les 2 méthodes
suivantes ?

a) Ajouter, via Grub, « ipv6.disable=1 » dans les options de
boot du noyau (puis update-grub && reboot)

b) Ou créer un fichier /etc/sysctl.d/disable_ipv6.conf contenant :

# On va supposer que eth0 et lo sont les seules interfaces de
# ma machine.
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

puis un reboot.

--
François Lafont
Avatar
Nicolas George
Francois Lafont , dans le message
<5490bd00$0$22062$, a écrit :
1. Quelle est la différence entre /proc/sys/ et /sys/ ?



/proc/sys est ancien, /sys est récent. /proc/sys contient des paramètres
crées manuellement, avec une certaine tranversalité, /sys colle directement
à l'organisation interne des objets du noyau.

2. Si l'idée est de passer des paramètres au noyau, quelle
différence ça fait si je passe le paramètre via Grub ou si je
passe par sysctl ?



Pour passer par sysctl, il faut que le système soit déjà en fonctionnement,
donc la valeur par défaut est utilisée pendant un certain temps.
Avatar
Francois Lafont
Bonjour,

Le 17/12/2014 13:09, Nicolas George a écrit :
Francois Lafont , dans le message
<5490bd00$0$22062$, a écrit :
1. Quelle est la différence entre /proc/sys/ et /sys/ ?



/proc/sys est ancien, /sys est récent. /proc/sys contient des paramètres
crées manuellement, avec une certaine tranversalité, /sys colle directement
à l'organisation interne des objets du noyau.

2. Si l'idée est de passer des paramètres au noyau, quelle
différence ça fait si je passe le paramètre via Grub ou si je
passe par sysctl ?



Pour passer par sysctl, il faut que le système soit déjà en fonctionnement,
donc la valeur par défaut est utilisée pendant un certain temps.



Ok, merci Nicolas pour ces précisions.

Dommage que sysctl ne s'étende pas à /sys/ également car passer
des paramètres de boot du noyau via Grub est plutôt incommode je
trouve.

--
François Lafont
Avatar
Nicolas George
Francois Lafont , dans le message
<549176be$0$5126$, a écrit :
Dommage que sysctl ne s'étende pas à /sys/ également car passer



sysctl, ce n'est qu'une commande qui va lire ou écrire dans /proc/sys.
D'ailleurs, il y a l'équivalent pour /sys : systool. En général, les
distributions ont l'infrastructure pour l'appeler au boot.

des paramètres de boot du noyau via Grub est plutôt incommode je
trouve.



Ça veut quand même dire que tu auras un temps au boot où la mauvaise source
de temps est utilisée.
Avatar
Francois Lafont
Le 17/12/2014 14:23, Nicolas George a écrit :

sysctl, ce n'est qu'une commande qui va lire ou écrire dans /proc/sys.
D'ailleurs, il y a l'équivalent pour /sys : systool. En général, les
distributions ont l'infrastructure pour l'appeler au boot.



Ah oui en effet. Sur ma Debian Wheezy, pour avoir cet outil
j'ai dû faire :

apt-get install sysfsutils

Ensuite, je vois la présence d'un fichier /etc/sysfs.conf
qui est sans doute ce qui permet de faire des modifs sans
passer par Grub. Il n'y a pas de /etc/sysfs.d/ par contre
mais c'est un détail.

des paramètres de boot du noyau via Grub est plutôt incommode je
trouve.



Ça veut quand même dire que tu auras un temps au boot où la mauvaise source
de temps est utilisée.



Oui c'est vrai.
Merci encore pour toutes ces précisions.

--
François Lafont