systemd:zramでスワップとファイルシステムを設定するための.serviceデーモンの作成

systemd:zramでスワップとファイルシステムを設定するための.serviceデーモンの作成

私は最近SSDを搭載したラップトップを購入しましたが、SSDにあまり負担をかけないように(書き込みサイクル数が制限されていると聞きました)、スワップとファイルシステムを設定するためにシステムデバイスファイルを作成することにしました。 (後で asd で使用) デバイス zram0 および zram1 でそれぞれ使用されます。私はsystemdとudevにあまり慣れていないので、愚かな間違いをした可能性がありますが、私は見つけることができません...私のファイルは次のとおりです。etc/udev/rules.d/10-zram.rules:

 KERNEL=="zram0",SYMLINK+="zramswap" ,ATTR{disksize}="1G" ,ENV{SYSEMD_WANTS}+="zram-swap@%k.service"

 KERNEL=="zram1",SYMLINK+="zramfs",ATTR{disksize}="250m", ENV{SYSTEMD_WANTS}+="zram-fs@%k.service"

/etc/systemd/system/[Eメール保護]

[Unit]
Description="Daemon that sets xfs on %i device"

BindsTo=dev-%i.swap

After=dev-%i.device
Requires=dev-%i.device

Before=dev-%i.swap
Wants=dev-%i.swap

[Service]
Type=oneshot
ExecStart="/usr/bin/mkswap /dev/%i"

[Eメール保護]/usr/bin/mkfs.xfsを使用することを除いて、ほぼ同じです(xfsは生成速度が速いことを読んだので)

最後に、私のfstabは終了します。

/dev/zram0      swap        swap    defaults    0 0
/dev/zram1      /media/asd  xfs     defaults    0 0

問題は、私のシステムがこの設定で正しく起動しないということです。同じ原因 2 台のデバイスの取り付けと交換中にエラーが発生しました。ところで、/sysを見ると、デバイスサイズがudevルールに設定したサイズなので、ルールを読み込んで動作するようですが、問題はサービスファイルが実行されていないか動作しないようです。 。

答え1

私の問題が何であるかを見つけました。最大の問題は、zramがデフォルトでsystemdで処理されないことです。その結果、dev-zram0.device ユニットが存在しないため、満たされていない依存関係によりサービスが失敗します。解決策は追加することです。

TAG+="systemd"

私のudevルールに従ってください

デーモンのExecStart行に二重引用符が必要ない別の小さなバグがあり、エラーが発生します。

とにかく誰でも答えてくれてありがとう!

関連情報