Как удаленно контролировать, какая ОС Grub загружается?

10

Рассмотрим следующую настройку двойной загрузки:

  • Grub установлен в /dev/sda
  • /dev/sda1 смонтирован как /boot
  • /dev/sda6 смонтирован как /
  • Windows 10 установлена ​​на /dev/sdb2

Сейчас Grub выбирает Ubuntu по умолчанию при загрузке, и я могу удаленно войти через SSH. Также можно выбрать Windows при запуске Grub, и я могу удаленно войти через RDP.

Проблема в том, что у меня нет возможности выбрать, какую ОС загружать, когда я физически не присутствую.

В этом вопросе описан метод автоматической загрузки Grub последней выбранной операционной системы. Однако это не сработает . Если я выберу Windows, у меня нет возможности удаленно перезагрузить компьютер и загрузить Ubuntu.

Есть ли способ удаленно контролировать, какая ОС загружается?

Натан Осман
источник
@ Таккать со стороны Windows, хотя? (Могу ли я работать под управлением Windows, и есть ли какая-нибудь программа или скрипт, инструктирующий Grub загружать Ubuntu?)
Натан Осман
@ Таккать, я понимаю, что ты говоришь ... это может сработать.
Натан Осман
Вы думали о загрузке через PXE? Тогда вы могли бы оставить свою загрузочную конфигурацию на другом сервере, к которому вы могли бы получить доступ в любое время и внести соответствующие изменения, а затем перезагрузить другую машину, чтобы запустить указанную ОС?
Зиазис

Ответы:

11

Мы можем перезагрузиться к данной загрузочной записи меню Grub, используя grub-reboot . Это также может быть сделано из удаленного сеанса, например, через SSH.

Для загрузки в другую ОС выберите позицию, представленную в меню Grub, начиная с 0:

sudo grub-reboot <num>

введите описание изображения здесь

В этом случае моя Windows находится на позиции 4. Так что при выдаче

sudo grub-reboot 4 && sudo reboot

Машина перезагрузится в Windows после истечения времени, которое мы определили в настройках Grub.

После перезагрузки из Windows машина загрузится в ОС по умолчанию. Это можно определить с помощью

sudo grub-set-default <num>

Чтобы заставить это работать, нам, возможно, придется определить GRUB_DEFAULT=savedв нашей, /etc/default/grubно в моей системе это также работало с настройками по умолчанию.

К сожалению, перезагрузка Windows из Windows не может быть сделано этим.

Takkat
источник
3

Еще одна идея, благодаря ответу Такката :

  1. Загрузка по умолчанию - Ubuntu
  2. grub-reboot Nгде Nнаходится загрузочная запись Windows
  3. Перезагрузка Windows вернет вас к загрузке по умолчанию: Ubuntu.

Недостаток : чтобы перезагрузить Windows, вам нужно перезагрузить компьютер дважды: перезагрузите Windows, дайте Ubuntu загрузиться и grub-reboot Nснова! :-(

Fabby
источник
Больше идей, пожалуйста. :)
AB
1

Вы можете установить ОС по умолчанию с grub в зависимости от времени, см. Можно ли запланировать GRUB? Это означает: автоматическое изменение «записи» по умолчанию (автоматический вход в систему) через определенные промежутки времени? , Так, например, вы можете настроить grub для загрузки в Windows, если $ MINUTE нечетно, и в Linux, если $ MINUTE - нечетно.

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

Если вы хотите конкретную ОС; просто подожди, пока придет время.

При использовании этого метода следует учитывать время, необходимое для достижения Grub. Использование временного интервала в 5 минут, вероятно, более надежно.


Я думаю, что также возможно чередовать загрузочные записи. Что-то типа :

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

когда grub настроен на запоминание последней загруженной ОС ( как заставить grub2 запомнить последний выбор? )

Если ваш компьютер не загружается в нужную вам ОС, просто перезагрузите компьютер.

Максимум
источник