オペレーティングシステムのバージョン:5.9.14-arch1-1カーネル
/
起動時にディレクトリ全体をRAMにロードする方法を見つけようとしています。ここで小さなヘルパーを見つけました。
https://github.com/arcmags/ramroot
したがって、ramroot
フックが実行を開始するとzramモジュールが設定されます。
modprobe zram
次にメモリを割り当てます。
zramctl -f -s 10M
OSが起動すると、このコマンドが正しく実行され、デバイスをマウントできますzram0
。ただし、このブートモードでは、次のエラーが発生します。
/dev/zram0: failed to set disksize (.... bytes): Cannot allocate memory
問題がどこにあるかを知っている人はいますか?タスクを完了するために欠けているモジュールはありますか?
私の現在のフックの順序は次のとおりです。
HOOKS=(base udev ramroot autodetect modconf block filesystems keyboard fsck)
答え1
あなたが望むものと同じことをするフックを作成し、最初はうまくいきましたが、カーネルの更新後に同じエラーメッセージが表示され始めました。
zram
原因は基本圧縮アルゴリズムの変更である可能性があると思います。最新のカーネルバージョンがzstd
新しいデフォルトとして使用され始めたと思います。
私に役立ったのは、.hookを使用してフック機能zstd
にモジュールを追加することでした。build()
add_module zstd
もちろん、他のモジュールを使用する予定がない場合は、zstd
このモジュールを追加してください。
エラーメッセージは非常に誤解を招くかもしれませんが、従うことができました。これ