Como fazer com que o GRUB saia do modo de hibernação em um PC de inicialização dupla

6

Eu tenho um laptop rodando dois sistemas operacionais baseados em GNU / Linux. Cada sistema operacional tem sua partição root e home dedicada, mas compartilha a partição boot e swap. Ambos funcionam muito bem, exceto por um problema: sempre que eu hiberne a máquina e inicializo, digo no dia seguinte, e esqueci que hibernei o sistema operacional X, acabo estragando o diário do FS. Agora, eu sabia que ao compartilhar o espaço de troca, esse era um possível efeito colateral, mas fiquei com a impressão de que, assim que eu hibernar, o GRUB detectaria que o espaço de swap estava em uso e inicializaria no sistema hibernado. Este não é o caso para mim, pois tive que escrever uma solução alternativa:

edite o / etc / default / grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

execute o grub-mkconfig e, em seguida, escreva um script que altere o tempo limite de /boot/grub/grub.cfg de qualquer coisa para 0 no modo de hibernação (/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

Existe uma maneira mais "nativa" de fazer isso, ou essa é a melhor maneira de conseguir isso?

    
por SpaghettiCoder 19.09.2015 / 15:38

1 resposta

1

Como ambos são Linux, talvez você possa configurar as coisas para que o sistema operacional possa ser retomado a partir de imagens salvas por um dos sistemas operacionais? Se a imagem de hibernação inclui toda a memória do kernel, incluindo o código, então não importa qual kernel recomeça a partir dela. Não sei como isso funciona.

Além disso, talvez se o seu laptop tiver suporte a hibernação da ACPI, o Linux pode hibernar dessa maneira. Então, esperamos que ele seja retomado quando ligado, em vez de iniciar no GRUB? Mais uma vez, não tenho certeza de como as coisas funcionam.

Pode ser possível que seus sistemas operacionais sejam configurados para não usar a partição de troca se houver uma imagem de currículo nela. Isso não ajudará se ambos montarem qualquer uma das mesmas partições de não-swap read-write. Talvez haja uma opção de montagem para recusar o replay do diário (o que estragaria o estado de hibernação).

Se nada disso der certo, acho que sua solução é a melhor que você conseguirá. Eu não acho que o grub saiba como olhar para uma partição swap e descobrir se ela está em uso. Se pudesse, então talvez você pudesse ter alguma lógica em sua configuração do grub para permitir apenas a inicialização da entrada SAVEDEFAULT. (É muito improvável que o grub pudesse descobrir qual sistema operacional tinha uma imagem de hibernação, sem usar SAVEDEFAULT.)

Referências

:

  • link

  • link parece ser apenas sobre como obter o resume=... sempre na linha de comando do kernel, não mudando na hora.

por 19.09.2015 / 18:23