Есть ли способ для grub автоматически перезагружаться в Windows из Windows?

11

У меня есть настройка двойной загрузки:

  1. Ubuntu 16.04 LTS
  2. Windows

В настоящее время, когда я хочу перейти rebootиз Ubuntu в Windows, я использую grub-rebootсоответствующий номер в качестве аргумента. Это хорошо работает.

Однако иногда Windows требуется перезагрузка, чтобы можно было установить или обновить определенную программу, и мне пришлось вручную выбрать нужный пункт меню загрузки. Есть ли аналогичный способ (из пользовательского интерфейса Windows) сказать grub, какую запись загружать?

Я предполагаю, что grub-rebootкоманда передает аргумент в файл, который, в свою очередь, читает grub reboot.

edit (относительно моего выбранного ответа): в настоящее время я изучаю монтирование диска ext4, содержащего / boot, и создание сценариев редактирования. это может занять довольно много времени, так как я делаю это в свободное время, помимо своей нетехнической работы 40 часов в неделю. ^^

амон сан
источник
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Тердон
Пожалуйста, обновите ваш вопрос в будущем тем, что вы сделали, чтобы grub автоматически перезагрузился в Windows. Мне интересно узнать, какой метод работает для вас, и увидеть сценарий Windows (если есть), который вы написали. Я уверен, что многие другие тоже заинтересованы.
WinEunuuchs2Unix
@ WinEunuuchs2Unix в настоящее время я работаю над этим. как сказал Оли - скриптинг в windows - это королевская PITA.
Amon San
@amonsan Я обновил свой ответ с помощью reboot-to-windowsфункции, которая является компромиссом по сравнению с использованием ext2fsd, которая разрушает суперблоки ext4 .
WinEunuuchs2Unix
@amonsan Есть ли у вас сейчас системные настройки для перезагрузки Windows Update, чтобы автоматически вернуться в Windows?
WinEunuuchs2Unix

Ответы:

8

Вы можете повторить то, что grub-rebootделает. Это просто скрипт, который в итоге вызывает:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Где Windowsимя вашего пункта меню Grub. Это может быть не так

Я управлял этим. Все это он вставляет next_entry=Windowsв /boot/grub/grubenv. В строке 2. Итак, если это просто файл, в файловой системе вы можете делать то же самое из Windows . Это проблема Windows, которую нужно решить, но вот общий обзор:

  • Смонтируйте диск, на котором находится boot. Это, наверное, самое сложное, потому что это, вероятно, ext4. Это может помочь, но не исключено, что вам может понадобиться Linux с Windows для его редактирования.

    Как указывает Муру, это не должно быть так сложно. Вы можете перейти /bootк собственному разделу FAT32 . Это упрощает монтирование в Windows.

  • Вставьте next_entry=Windows(или что-то еще) в файл после комментария, до хэшей.

  • Отсоединение.
  • Перезагрузка.

Сценарии, которые в Windows находятся далеко за пределами моей зоны комфорта, а не то, что мы здесь делаем. Но это должно быть все, что вам нужно сделать.

Оли
источник
1
В этом методе, как я уже сказал в комментарии, теперь перенесенном в чат, лучше всего перейти в отдельный /bootраздел и отформатировать его в FAT32 или NTFS, а затем удобно отредактировать их в Windows. В этом нет ничего /bootособенного, требующего возможностей Unix-y. Сценарии этого с использованием Powershell должны быть простыми.
Муру
19

Самый простой способ с Grub

Это громоздкое управление grubиз Windows. Требуется стороннее приложение для доступа к Ubuntu из Windows и некоторый взлом. Однако из верхней части этого поста: Как изменить порядок в моих дистрибутивах с двойной загрузкой , вы можете настроить grubавтоматическую перезагрузку до последней опции меню. Поэтому, когда вы изначально загружаетесь с Windows, и он просыпается в 2 часа ночи для запуска обновлений, grubперезагрузите Windows, чтобы он мог корректно завершить обновления.

Когда вы вручную перезагружаетесь и выбираете Ubuntu из grubвсех ваших следующих перезагрузок, автоматически загружается Ubuntu. Эта функция работает одинаково хорошо, если у вас есть ошибки в текущем ядре и вы хотите grubавтоматически перезагрузиться в старую версию ядра, которую вы выбрали.

Как заставить Grub повторить выбор последней загрузки

Это довольно просто. Используя sudoполномочия, отредактируйте /etc/default/grubи измените следующее:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Первая строка, которую вы будете комментировать, и прямо под ней вставляются следующие две строки.

Сохраните файл и введите в терминале:

sudo update-grub

Командная строка Ubuntu для перезагрузки в Windows

В настоящее время вы используете что-то вроде этого:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

Из этого измененного ответа Stack Exchange вы можете использовать grub default для перезагрузки в Windows. Скопируйте этот код в ваш ~/.bashrcфайл:

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • Сохраните ~/.bashrcфайл с новой reboot-to-windowsфункцией.
  • Закройте текущий сеанс терминала.
  • Откройте новую терминальную сессию, чтобы изменения ~/.bashrcбыли загружены.
  • Вы можете напечатать, : ~/.bashrcчтобы перезагрузить его в существующий сеанс терминала, но некоторые люди рекомендуют не делать этого.

Для перезагрузки в Windows из командной строки используйте:

reboot-to-windows

Если Windows автоматически перезагружается, когда вы не смотрите, Windows перезагружается. Это позволяет автоматически обрабатывать автоматические обновления Windows в течение нескольких циклов перезагрузки, которые иногда использует Windows.

WinEunuuchs2Unix
источник
1
Этот вопрос не имеет ничего общего с порядком загрузки.
Дженнифер
2
@ Дженнифер Вопрос, однако, является примером проблемы XY. Так что этот ответ полезен. Кроме того, речь идет о порядке загрузки, поскольку в нем запрашивается способ временного изменения порядка загрузки из интерфейса Windows.
wizzwizz4
2

grub-set-defaultдолжен сделать то же самое, что и grub-reboot, но сделать настройку постоянной. Как вы и просили, это не совсем из интерфейса Windows, но, возможно, это работает для вас.

Себастьян Старк
источник
Этот вопрос не имеет ничего общего с порядком загрузки.
Дженнифер
Я не совсем понимаю, что вы имеете в виду под этим комментарием, вы можете объяснить?
Себастьян Старк
Amon San не спрашивает, как мне установить grub по умолчанию для windows - ze спрашивает, если windows уже загружен, как вызвать перезагрузку сейчас и выбрать, в какую ОС загружаться.
Дженнифер
@Jennifer OP не спрашивает "как перезагрузиться сейчас в Windows". В этом случае OP может просто выбрать Windows Restart, а затем выбрать Windows в меню grub. ОП спрашивает: «Когда Windows автоматически перезагружается, когда меня там нет, как я могу гарантировать, что он перезагружается обратно в Windows, а не по умолчанию в меню grub». По крайней мере, так я вижу главную проблему.
WinEunuuchs2Unix
Да, OP может просто выбрать Windows Restart, а затем выбрать Windows в меню grub. Но OP специально спрашивает, как мне автоматически вернуться в Windows без необходимости выбирать Windows в меню загрузки - другими словами, как это сделать без моего вмешательства? Слишком много Х Ин!
Дженнифер
1

Вы не сказали, какая версия Windows или используете UEFI.

Если вы используете правильную загрузку UEFI (а не устаревшую загрузку), можно временно выполнить загрузочную запись Windows UEFI. В Linux это можно сделать с помощью таких инструментов, как efibootmgr. В Windows я лично использую EasyUEFI . Это бесплатно для личного использования с графическим интерфейсом, но не для корпоративного или CLI. Я не могу ручаться за его безопасность. Это также, кажется, немного медленно, но, похоже, работает

В моей собственной установке, которая использует Arch Linux (ядро EFI shim, без GRUB) и Windows 10, это выглядит так, после выбора «Manage EFI Boot Option» на стартовом экране:

Изображение, показывающее вариант однократной загрузки

Если вы используете загрузку UEFI, вы должны увидеть нечто похожее для Windows, плюс одну запись для Ubuntu (которая загружает GRUB), а также некоторые другие специфичные для устройства опции. Параметр однократной загрузки может затем использоваться для однократной загрузки в загрузочную запись UEFI для Windows, а затем после этого обратно в GRUB. После установки вы перезапустите как обычно.

Мур
источник
1
спасибо, но это требует слишком много ручного взаимодействия каждый раз, на мой вкус.
Amon San
1
Shrug. В любом случае вы должны перейти /bootна NTFS или FAT32 вместо того, чтобы редактировать его как ext4. Писать поддержку ext4 в Windows сложно, вы слишком рискуете.
Муру