Jak zdalnie kontrolować, który system operacyjny uruchamia Grub?

11

Rozważ następującą konfigurację podwójnego rozruchu:

  • Grub jest zainstalowany na /dev/sda
  • /dev/sda1 jest montowany jako /boot
  • /dev/sda6 jest montowany jako /
  • Windows 10 jest zainstalowany na /dev/sdb2

Na obecnym etapie Grub domyślnie wybiera Ubuntu podczas uruchamiania, a ja mogę zdalnie zalogować się przez SSH. Możliwe jest również wybranie systemu Windows, gdy Grub się uruchamia, i mogę zdalnie zalogować się przez RDP.

Problem polega na tym, że nie mam możliwości wyboru, który system operacyjny ma zostać uruchomiony, gdy nie jestem fizycznie obecny.

To pytanie opisuje metodę automatycznego uruchamiania Grub przez ostatnio wybrany system operacyjny. Jednak to nie zadziała . Jeśli wybiorę system Windows, nie będę mieć możliwości zdalnego uruchomienia komputera i uruchomienia Ubuntu.

Czy istnieje sposób na zdalne sterowanie uruchamianiem systemu operacyjnego?

Nathan Osman
źródło
@Takkat od strony systemu Windows? (Czy mogę korzystać z systemu Windows i mieć jakiś program lub skrypt instruujący Gruba, aby uruchomił Ubuntu?)
Nathan Osman
@Takkat och, widzę, co mówisz ... to może zadziałać.
Nathan Osman,
Czy myślałeś o uruchomieniu za pośrednictwem PXE? Następnie możesz pozostawić konfigurację rozruchową na innym serwerze, do którego można uzyskać dostęp w dowolnym momencie i odpowiednio ją dostosować, a następnie ponownie uruchomić inny komputer, aby uruchomić określony system operacyjny?
Ziazis,

Odpowiedzi:

12

Możemy zrestartować system do danego menu startowego Grub za pomocą grub-reboot . Można to również zrobić ze zdalnej sesji, np. Przez SSH.

Aby uruchomić w innym systemie operacyjnym, wybierz pozycję, która jest reprezentowana w menu Grub, zaczynając od 0:

sudo grub-reboot <num>

wprowadź opis zdjęcia tutaj

W tym przypadku mój system Windows jest włączony 4. Więc przy wydawaniu

sudo grub-reboot 4 && sudo reboot

Maszyna uruchomi się ponownie w systemie Windows po upływie limitu czasu określonego w ustawieniach Grub.

Po ponownym uruchomieniu systemu Windows komputer uruchomi się do domyślnego systemu operacyjnego. Można to zdefiniować za pomocą

sudo grub-set-default <num>

Aby ta praca działała, być może musimy zdefiniować GRUB_DEFAULT=savedw naszym /etc/default/grubsystemie, ale w moim systemie działało to również z ustawieniami domyślnymi.

Niestety nie można tego zrobić ponownie.

Takkat
źródło
4

Kolejny pomysł dzięki odpowiedzi takkat :

  1. Domyślny rozruch to Ubuntu
  2. grub-reboot Ngdzie Njest pozycja rozruchowa systemu Windows
  3. Ponowne uruchomienie systemu Windows spowoduje powrót do domyślnego rozruchu: Ubuntu.

Wada : aby ponownie uruchomić system Windows, musisz uruchomić go ponownie dwukrotnie: Uruchom ponownie system Windows, uruchom system Ubuntu i grub-reboot Njeszcze raz! :-(

Fabby
źródło
Poproszę więcej pomysłów. :)
AB
1

Możesz ustawić domyślny system operacyjny z grub w zależności od czasu, zobacz Czy GRUB można zaplanować? Oznacza to: automatyczną zmianę domyślnego „wpisu” (automatyczne logowanie) w określonych odstępach czasu? . Na przykład możesz skonfigurować grub, aby uruchamiał się do systemu Windows, gdy $ MINUTE jest nieparzysty, i uruchamiał system Linux, gdy $ MINUTE jest parzysty.

insmod datehook
if [ $MINUTE -eq 0 -o $MINUTE -eq 2  -o $MINUTE -eq 4 -o $MINUTE -eq 6 -o $MINUTE -eq 8]; then
    set default="Ubuntu"
else
    set default="Windows"
fi

Jeśli chcesz mieć określony system operacyjny; poczekaj, aż nadejdzie czas.

Stosując tę ​​metodę należy wziąć pod uwagę czas potrzebny na dotarcie do Grub. Korzystanie z przedziału czasowego 5 minut jest prawdopodobnie bardziej niezawodne.


Myślę, że można również przełączać się między wpisami rozruchowymi. Coś jak :

if [ $default = "Ubuntu" ]; then
  set default="Windows"
else
  set default="Ubuntu"
fi

kiedy Grub jest skonfigurowany do zapamiętywania ostatniego systemu operacyjnego ( Jak zdobyć Grub2, aby zapamiętał ostatni wybór? )

Jeśli komputer nie uruchamia się w wybranym systemie operacyjnym, po prostu uruchom ponownie.

Max
źródło