5

Я ищу более элегантный способ выбора ОС для загрузки, чем использование меню, предоставляемого grub, и я думаю, что было бы неплохо переключиться на случай с двумя состояниями (например, Ubuntu и Windows), которые решают, какие ОС будет загружена. Я немного подумал, и мне кажется, что вы должны решить эту проблему, подключив переключатель к ШИМ-генератору и подключив генератор к входному контакту скорости вентилятора. Затем из grub прочитайте скорость вращения вентилятора и сделайте условный тест, который определит, какую ОС загружать.

В псевдокоде:

if (fan.speed > threshold) then
  load Windows;
else
  load Ubuntu;
end

Вот два моих вопроса:

  1. Как вы используете тест с grub, чтобы определить, какую ОС запустить?
  2. Как вы можете прочитать скорость вентилятора из Grub во время запуска?

Другие решения и идеи, конечно же, приветствуются :)

3 ответа3

4

Вам нужно написать свой собственный модуль grub2, связать его с BIOS, чтобы получить необработанную информацию о скорости вращения вентилятора, и использовать ее для интерпретации и обработки результатов. Очевидно, что GRUB не знает и не заботится о скорости вашего вентилятора, и вы не сможете сделать это без написания кода.

Лучшим решением было бы установить загрузчик (только загрузчик, ничего более) на флешку. Вы можете использовать GRUB2 или BOOTMGR - это не имеет значения.

Затем ПК сначала настраивается на загрузку с USB, и когда этот USB-накопитель вставляется в ПК, он загружается в Ubuntu; тогда как локальный диск настроен для загрузки в Windows. То есть наличие или отсутствие USB будет определять, в какую ОС загружается ваш компьютер.

На этом этапе просто использовать модифицированный USB-кабель с переключателем на одной из линий VCC. Если он активен, USB-флешка появится в BIOS и загрузится с USB-копии GRUB, загружающейся в Ubuntu. Если переключатель выключен, ПК будет загружаться "нормально" с локального диска, загружаясь в Windows.

Вы, конечно, можете замаскировать USB-флешку, модифицированный USB-кабель и VCC-коммутатор внутри коробки как единое автономное устройство. Это намного круче, чем ваша идея с ШИМ, потому что вы буквально просто вставляете ее в USB-порт, и все готово.

0

Ваш жесткий переключатель может переключать жесткие диски, помещая соответствующий жесткий диск в место, с которого BIOS/EFI ожидает загрузки.

0

Как вы используете тест с grub, чтобы определить, какую ОС запустить?

Со стандартным GRUB: нет. Технически вы можете изменить GRUB для этого, однако это может работать только для одного типа материнских плат, и есть более простые способы.

Что может быть проще, так это загрузить третью ОС. Например, крошечная установка Linux со всеми соответствующими драйверами. Тогда либо цепочка оттуда попробуйте вот такие трюки:

  • Установите для загрузки свою крошечную ОС (давайте назовем ее «ОС выбора») по умолчанию.
  • после загрузки в chooser считайте состояние вентилятора (это выполнимо, поскольку в этот момент у вас загружена полная ОС, включая соответствующие драйверы для скорости вентилятора, последовательных портов и т. д.).
  • Выберите следующую ОС для загрузки и настройте загрузчик.
  • Перезагружать.

Затем в обеих других ОС добавьте скрипт запуска, который сбрасывает загрузчик в ОС выбора.

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