У меня настроена двойная загрузка:
- Ubuntu 16.04 LTS
- Окна
В настоящее время, когда я хочу 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 для загрузки после этого. После настройки вы перезагрузитесь как обычно.