web-dev-qa-db-ja.com

GRUBデュアルブートPCで休止状態から再開する方法

私は2つの異なるGNU/Linuxベースのオペレーティングシステムを実行しているラップトップを持っています。各オペレーティングシステムには専用のルートパーティションとホームパーティションがありますが、ブートパーティションとスワップパーティションを共有しています。 1つの問題を除いて、どちらも非常にうまく機能します。次の日など、マシンを休止状態にして起動すると、Xオペレーティングシステムを休止状態にしたことを忘れてしまい、FSジャーナルを台無しにしてしまいます。スワップスペースを共有することで、これが副作用の可能性があることに気づきましたが、休止状態になると、GRUBはスワップスペースが使用中であることを検出し、休止状態で起動するという印象を受けました。 OS。回避策を作成する必要があったため、これは私には当てはまりません。

/ etc/default/grubを編集します:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

grub-mkconfigを実行してから、休止状態のときに/boot/grub/grub.cfgのタイムアウトを0に変更するスクリプトを記述します(/etc/pm/sleep.d/10-hibernate-script.sh)。

#!/bin/sh

 case "$1" in
    hibernate)
    cat /boot/grub/grub.cfg | sed 's/timeout=10/timeout=0/g' > /boot/grub/grub.cfg~
    mv /boot/grub/grub.cfg~ /boot/grub/grub.cfg
    ;;
    thaw)
        cat /boot/grub/grub.cfg | sed 's/timeout=0/timeout=10/g' > /boot/grub/grub.cfg~
        mv /boot/grub/grub.cfg~ /boot/grub/grub.cfg
    ;;
esac

これを行うためのより「ネイティブな」方法はありますか、それともこれを達成するための最良の方法ですか?

6
SpaghettiCoder

どちらもLinuxなので、どちらかのOSで保存されたイメージからどちらのOSでも再開できるように設定できますか?休止状態のイメージにコードを含むすべてのカーネルメモリが含まれている場合、どのカーネルがそこから再開するかは問題ではありません。それがどのように機能するのかわかりません。

また、ラップトップがACPI休止状態をサポートしている場合、Linuxはその方法で休止状態になります。次に、GRUBを起動するのではなく、電源を入れたときに常に再開することを願っていますか?繰り返しますが、物事がどのように機能するかわかりません。

再開イメージが含まれている場合は、スワップパーティションを使用しないようにOSを設定できる可能性があります。両方が同じ非スワップパーティションのいずれかを読み取り/書き込みでマウントする場合、これは役に立ちません。ジャーナルの再生を拒否するマウントオプションがあるかもしれません(休止状態を台無しにするでしょう)。


これらのいずれもうまくいかない場合、あなたの解決策はあなたが得ようとしている最高のものだと思います。 grubは、スワップパーティションを調べて、それが使用されているかどうかを判断する方法を知っているとは思いません。可能であれば、grub構成に、SAVEDEFAULTエントリの起動のみを許可するロジックを含めることができます。 (grubがwhichOSにSAVEDEFAULTを使用せずに休止状態のイメージがあることを理解できる可能性はほとんどありません。)

参照:

1
Peter Cordes