Ändern Sie die Kernel-Befehlszeilenparameter für den nächsten Bootvorgang von OpenWRT

Ändern Sie die Kernel-Befehlszeilenparameter für den nächsten Bootvorgang von OpenWRT

Ich suche nach einer Möglichkeit, Kernel-Befehlszeilenparameter vom Benutzerbereich aus zu bearbeiten, ohne bei U-Boot anhalten und die Werte manuell ändern zu müssen. Ich möchte die Kernel-Parameter für den nächsten Start ändern. Wenn beispielsweise die Kernel-Befehlszeile einen Parameter mit dem Namen „ example1=true' I would like to change it to the following boot toexample1=false“ enthält,

Ich verwende ein auf OpenWRT basierendes System.

Antwort1

Eine schnelle Suche im OpenWrt-Wiki unter „Das U-Boot Environment“ …

"Das U-Boot nutzt eine kleine Menge an Speicherplatz auf dem Flash-Speicher (normalerweise auf derselben Partition, auf der es gespeichert ist), um einige wichtige Konfigurationsparameter zu speichern."

speziell...

bootargs: Der Inhalt dieser Variable wird als Boot-Argumente (auch „Befehlszeile“ genannt) an den Linux-Kernel übergeben.

Ich gehe von einigen Annahmen aus, aber Sie sollten diese Konfigurationsdatei vom laufenden Kernel aus bearbeiten können. Möglicherweise müssen Sie die Partition suchen, auf der sich u-boot und die Konfigurationsdatei befinden, und sie schreibgeschützt mounten. Darüber hinaus sollten Sie diese Konfigurationsdatei auch von der u-boot-Befehlszeile aus bearbeiten können, nur einmal, wenn Sie die Variable mit speichern saveenv.

Antwort2

Vielleicht verstehe ich das falsch, aber Sie können die Befehlszeilenargumente, die der Bootloader an den Kernel übergibt, nicht ändern, nachdem Sie den Kernel bereits ausgeführt haben, soweit ich weiß. Wenn Sie meinen, wie Kernel-Parameter zur Laufzeit konfiguriert werden, heißt das Tool sysctl.

Wenn Sie beispielsweise Folgendes ändern möchten:

sysctl -w kernel.stack_tracer_enabled=1

Diese Änderungen gehen nach einem Neustart verloren.

verwandte Informationen