再起動後もsysfsパラメータの値を保持する方法は?

再起動後もsysfsパラメータの値を保持する方法は?

毎回sysfsパラメータファイルを作成して再起動する必要があります。 initramfs中にこれらの設定を最初に自動的に設定する方法があるかどうか疑問に思います。これを行う正式な方法はありますか?

私はlsinitramfsを使ってそのsysfsを担当するモジュールをチェックします。彼らは存在します。例:asus-wmi.ko、変更したい場合/sys/class/power_supply/BAT0/charge_control_end_threshold

ノート

  • これはすべて/がマウントされる前に発生する必要があるため、/ diskよりもinitramfsに直接files / configを追加する必要がある可能性があります。
  • もしそのようなことが起こったなら、私は一番良かったでしょう。scripts/local-top/cryptroot

答え1

上記の特定のクラスはカーネルモジュールによって追加されたため、モジュールがロードされるまで変更は行われません。


いくつかのudevルールを選択できます/etc/udev/rules.dディレクトリに追加するには:

ACTION=="add", KERNEL=="asus-nb-wmi", RUN+="/bin/bash -c 'echo [TheValueOfYourchoice] > /sys/class/power_supply/BAT?/charge_control_end_threshold'"

看護:あなたが言及したAsus wmi基準寸法。上記の規則は以下に適用されます。ASUS-NB-WMI基準寸法。おそらく適応する必要があります。


またはsystemdの下にある場合は、systemdサービスを作成します。ディレクトリの下/etc/systemd/system

[Unit]
Description=Set the battery charge end threshold
After=multi-user.target
StartLimitBurst=0

[Service]
Type=oneshot
Restart=on-failure
ExecStart=/bin/bash -c 'echo [TheValueOfYourChoice] > /sys/class/power_supply/BAT0/charge_control_end_threshold'

[Install]
WantedBy=multi-user.target

すでにsystemdサービスに慣れている場合は、Restart=on-failure and StartLimitBurst=0asusモジュールがロードされる前にサービスが開始される状況を解決するために必要なトリックを知ることができます()。

もちろん、どちらの場合も変更されます。[あなたが選んだ価値]有効な数字について。

答え2

それだけです。sysfsutilsです。

すべてではなくても、ほとんどのLinuxディストリビューションにパッケージする必要があります。 Debian パッケージの説明は次のとおりです。

Package: sysfsutils
Version: 2.1.1-3
Installed-Size: 62
Maintainer: Guillem Jover <[email protected]>
Architecture: amd64
Depends: libc6 (>= 2.34), libsysfs2 (>= 2.1.1), lsb-base, pci.ids
Pre-Depends: init-system-helpers (>= 1.54~)
Description-en: sysfs query tool and boot-time setup
 The sysfs is a virtual file system found in Linux kernels 2.5+ that provides
 a tree of system devices. This package provides the program 'systool' to
 query it, which can be used to list devices by bus, class, and topology.
 .
 In addition this package ships a configuration file /etc/sysfs.conf which
 allows one to conveniently set sysfs attributes at system bootup (via an
 init script).
Description-md5: 07811d91c926da426d94db98052434b1
Multi-Arch: foreign
Homepage: https://github.com/linux-ras/sysfsutils

ところで、また参照sysctlしてくださいsysctl.confプロセスのカーネルパラメータ設定と同様の機能を提供します/proc/sys/。 Linuxではps、、、、などに付属のパッケージなので、ほぼ確実にこのパッケージがインストールされていますpgreppkilltop


/etc/modules最後に、カーネルモジュールをロードするときに特定のモジュールオプションを設定する必要がある場合、および.confファイルを使用できます/etc/modprobe.d/。たとえば、次のようなものがあります/etc/modprobe.d/zfs.conf

# use minimum 8GB and maxmum of 16GB RAM for ZFS ARC
options zfs zfs_arc_min=8589934592 zfs_arc_max=17179869184

関連情報