1

У меня есть система двойной загрузки. Мой раздел Ubuntu должен загружаться автоматически при запланированном пробуждении BIOS (и, если возможно, wakeonlan). В противном случае я хочу загрузить Windows по умолчанию. (кнопка питания)

Как можно настроить систему для загрузки в Ubuntu только после пробуждения BIOS или wakeonlan, в то время как в противном случае по умолчанию используется Windows? Можно ли настроить или скрипт grub для этого?

2 ответа2

0

Два (или три) разных способа

Использование сетевой загрузки через PXE-сервер.

Я использовал такой трюк для резервного копирования оконных станций (с помощью ntfsclone или partclone), пока пользователей нет на ночь.

  1. Создайте загрузочный сервер PXE (dhcpd + tftpd) для загрузки по сети (вы можете создать специальное меню загрузки для каждого компьютера в сети или создать группу). Меню загрузки по сети может указывать на локальный жесткий диск. )

  2. Подготовьте два разных загрузочных меню на этом сервере: одно по умолчанию для Ubuntu, а другое по умолчанию для окна.

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

  4. Подготовить сценарий пробуждения для

    1. ) Ссылка меню загрузки по умолчанию на Ubuntu, которая будет обслуживаться сервером pxe.
    2. ) Отправить Wake-On-LAN сигнал , чтобы разбудить компьютер вверх
    3. ) Дождитесь запроса меню загрузки в журналах TFTP (обратите внимание на время ожидания и ограничения, если предположить исключение).
    4. ) Ссылка меню загрузки по умолчанию на окно, обслуживаемое сервером pxe.
  5. Вы можете даже попытаться запустить то же самое через crontab, чтобы синхронизировать его с помощью BIOS wakup, но если в crontab, вы можете просто запустить скрипт, определенный в 4. ..

Это сделает работу.

(Обратите внимание, что загрузочный сервер pxe имеет небольшой размер и может быть установлен даже на raspberry pi, взломанном NAS или на маршрутизаторе DD-WRT, например.).

Использование информации dmidecode

Вы можете использовать dmidecode для запуска grub-reboot windows при загрузке с выключателя питания.

Просто создайте скрипт, содержащий что-то вроде:

/bin/sh
dmidecode  | grep -q 'Wake-up Type: Power Switch' && echo grub-reboot windows
reboot

Вы можете запускать этот скрипт при каждой загрузке, добавляя их в crontab с помощью директивы @reboot .

(Примечание: для grub-reboot вам, возможно, придется отредактировать /etc/default/grub . См. man grub-reboot)

Это будет работать, но значительно увеличит время загрузки Windows!

Чтобы избежать этого, вы можете создать специальный initramdisk мог бы выполнять эту работу, но это не так просто.

Использование ipxe (возможно)

Я не знаю этот инструмент, но я слышал хорошие отзывы.

iPXE - это лидирующая прошивка для загрузки с открытым исходным кодом. Он обеспечивает полную реализацию PXE, дополненную дополнительными функциями.

0

Это спрашивалось несколько раз за эти годы без удовлетворительного ответа:

Известно, что ОС может обнаружить причину пробуждения. Кажется разумным, что что-то вроде grub должно делать то же самое, но в настоящее время это не так.

Единственное "решение", которое мне удалось найти, - это настройка grub для двойной загрузки с Linux по умолчанию. Проснись как обычно. Войдите на компьютер (удаленно или иным способом) и вручную перезагрузите Windows, используя что-то вроде sudo grub-reboot Windows . Настройка и использование описаны здесь .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .