MacBookの起動には20秒かかる

MacBookの起動には20秒かかる

Macbook Air 上の Kubuntu 20.04 は正常にサスペンドしますが、毎回起動するのに約 20 秒と時間がかかりすぎます。

systemctl suspend同じ動作がトリガーされることを考えると、休止状態ではなく、通常のサスペンド/スリープの場合と思われます。

それを実行して、起きて、そして実行する

journalctl -b --since "1min ago"

私はこれ(Pastebin 上)。そこには休止状態については何も記載されていません。

メモリとスワップに関しては、RAM は十分あると思います。

~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3,8Gi       703Mi       1,7Gi       162Mi       1,4Gi       2,7Gi
Swap:          2,0Gi       440Mi       1,6Gi

答え1

短い答え:

22.04では:

echo deep | sudo tee -a /sys/power/mem_sleep

上記が 22.04 で機能しない場合、または 22.10、23.04 以降でこの問題が発生する場合:

echo s2idle | sudo tee -a /sys/power/mem_sleep

このソリューションはカーネルのアップデート後や再起動後でも機能しなくなる可能性があるため、必要なコマンドを含むスクリプトは再起動時に実行できます

最初の部分は少し矛盾している。なぜなら、deep常に長いウェイクアップとs2idle短いウェイクアップをトリガーする必要があるからだ。ここおそらく私の 22.04 では何かバグがあったのでしょう。少なくとも明らかに逆のことが時々起きていました。


長い答え:

この質問を投稿してすぐに、ubuntuforumsでうまくいくと思われる解決策を見つけました。ここそれに答えてさらにアドバイスをすると、ここ

これがどのように機能するかはよくわかりません。バグが関係している可能性があります。その投稿では、解決策は から に切り替えることだと書かれています。/sys/power/mem_sleepそのファイルを調べると、次の 1 行しか含まれていなかったため、私にはわかりませんでした。s2idledeep

s2idle [deep]

つまりdeep すでに選択されています(!!) — 言うまでもなく、上で述べたように、反対の行動が予想されていました。 —

私はそれについて尋ねた後、そのコマンドが何をするのか理解しましたここ

最初の ubuntuforums のコメントで指示されているように、私はそのファイルを変更しようとはしていませんが、次のコマンドを使用しました (2 番目のコメントにも基づいています)。

echo deep | sudo tee -a /sys/power/mem_sleep

そのファイルをもう一度見てみると、変更されていないようでした。再起動後もまだ変更されていませんでしたs2idle [deep]が、その時点でサスペンドからの復帰は瞬時に行われた! (振り返ってみると、これは、前述したように、予想とは反対のことでした。つまり、deep長い起床時間を意味するはずです!)

そのコマンドによってファイルは変更されていないようですが、何か変更されました - そのファイルに関連するかどうか。

これを[s2idle] deep対応するコマンドに変更するecho s2idle | sudo tee -a /sys/power/mem_sleepと(リンクされた質問に関連するコメントで議論されているように、これを少し調査するために)、20秒間の長時間の覚醒問題はない再び現れる。

おそらく、追跡できない何らかのバグが影響していたのでしょう。

カーネルのアップデート後、最初の問題が再び発生し、同じ方法で修正されました。(実際、ファイルは/sys/power/mem_sleep既にコマンドがトリガーするはずの形式でしたが、それでも後者は必要です。)


更新(2022年10月24日):

新しいアップデート後、上記の解決策は機能しなくなりましたが、反対の解決策は機能しましたecho s2idle | sudo tee -a /sys/power/mem_sleep逆に私の情報源が私にそうするように促したことに従って。

その時は奇妙に思えましたが、今では、実はこれが最初から予想されていた動作だったのだということが分かります。以前起こったことは奇妙でバグだらけでしたが、新しいアップデートでそれが修正され、s2idleすぐに起動できるようになったはずです。

「通常の」22.10リリースにアップデートした後、問題はしばらくの間解決されたように見えましたが、ファイルは/sys/power/mem_sleepにリセットされたように見えましたdeep。しかし、20秒のウェイクアップ遅延の問題が再び発生し、上記のアップデート2で述べたように修正されました。Kubuntu 22.10のクリーンインストール後に再度確認しました。問題を1か月間許容した後(他の方法で修正されるかどうかを確認するため)、最初のコマンドは役に立たなかったが、2番目のコマンドは役に立った(2023年2月)。


この問題が引き続き発生するため (たとえば 23.04 では、更新の合間にかなり頻繁に再発します)、次の形式のスクリプト ファイルを作成して、アプリケーション ランチャーからそのコマンドを実行するより迅速な手順を設定しましたfix_suspend

#!/bin/sh
echo s2idle | sudo tee -a /sys/power/mem_sleep

~/.local/share/applications/Fix suspend.desktop次の行を含むファイル(Plasma 用に適合):

Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /path/to/fix_suspend

しばらくすると、再起動後にソリューションが機能しなくなったため、冒頭の短い回答に示されているように、再起動時にスクリプトを実行する必要がありました。

関連情報