Самый простой способ — с помощью Grub

Самый простой способ — с помощью Grub

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

  1. Ubuntu 16.04 LTS
  2. Окна

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

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

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

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

решение1

Самый простой способ — с помощью 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.

решение2

Вы можете повторить то, что 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(или что-то еще) в файл после комментария, перед хэшами.

  • Размонтировать.
  • Перезагрузить.

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

решение3

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

решение4

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

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

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

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

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

Связанный контент