Ссылка для перезагрузки из Windows в Ubuntu

10

У меня стандартная система двойной загрузки: Ubuntu и Windows. Grub настроен на запуск Windows по умолчанию.

Есть ли способ создать какую-то ссылку в Windows, которая бы:

  1. перезагрузите Windows
  2. загрузиться в Ubuntu
Дмитрий Беркутов
источник
Сомневаюсь, что есть выход
Тим
1
Это возможно, но не простым способом .... Не знаете о возможностях этого: sourceforge.net/projects/grub2win/files попробуйте, если хотите, или de.mcbf.net/david/grubchoosedefault, и вы получите 100 % нужен этот ext2fsd.com . А также вы можете прочитать эту linuxquestions.org/questions/linux-software-2/...
RiddleMeThis
1
@ Тим, где есть воля (или тонны денег), есть способ: D
Уилф

Ответы:

8

Вам не нужно изменять, /boot/grub/grub.cfgкак предложил Михал Хагара. Это может сломать Ubuntu, если вы установите новое ядро ​​и не обновите e:\home\user\Grubshift\ubuntudefault\grub.cfg.

Все, что вам нужно сделать, это создать / скопировать файл /boot/grub/grubenvсо следующим содержанием

# GRUB Environment Block
next_entry=2
###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

Где next_entryнаходится строка следующего пункта меню grub, которая должна быть запущена в следующий раз (начиная с нуля). Так next_entry=2будет 3-я строка.

Grub автоматически удалит это значение после загрузки, поэтому в следующий раз вы снова загрузитесь в свою ОС по умолчанию.

Вот как это grub-rebootработает.

Germar
источник
Это гораздо более удобное решение, спасибо!
Дмитрий Беркутов
Не знал об этой функциональности:) ... Как вы могли заметить, я указывал, что возиться с grub.cfg не самый мудрый ...
RiddleMeThis
Вы уверены, что требуется 987 раз #? Я думаю, что 462 раза достаточно :-D
Jounathaen
2

Вот что я имею в виду:

  • http://www.ext2fsd.com/ (он должен иметь возможность записи в раздел EXT, «монтирования» и назначения буквы при загрузке)
  • Затем я подготовил бы модифицированный файл GRUB, где Ubuntu установлена ​​в качестве ОС по умолчанию (этот файл также будет храниться в разделе Linux)
  • Скрипт Windows BATCH (выполняется по желаемому ярлыку), который:
    1. Резервное копирование OLD GRUB (Windows по умолчанию)
    2. скопировать измененный GRUB (по умолчанию Ubuntu) поверх старого (по умолчанию Windows)
    3. Перезагрузите компьютер
  • Linux BASH-скрипт, который изменяет и обновляет GRUB при запуске (или перезагрузке), чтобы вернуть Windows в качестве ОС по умолчанию

Я могу быть совершенно неправ с этим подходом, но я не понимаю, почему он не должен работать.

РЕДАКТИРОВАТЬ:

А также есть: http://www.paragon-drivers.com/extfs-windows/, который я никогда не пробовал.


ПРОГРЕСС

1. Сочетание клавиш для перезагрузки Windows и загрузки Ubuntu

Хорошо, минусом этого является то, что нам придется изменить grub.cfg (/boot/grub/grub.cfg) напрямую (рекомендуется против - https://askubuntu.com/a/437341/402801), так как есть нет способа запустить update-grubиз Windows ... если вы можете жить с этим, читайте дальше.

  • Как я уже упоминал ранее, установите Ext2Fsd , сделайте его автоматическое монтирование и назначьте букву при запуске
  • Я создал свою «Папку резервного копирования» /home/user/Grubshiftс 3 подкаталогами: резервное копирование (для резервного копирования фактического /boot/grub/grub.cfg), ubuntudefault (для хранения grub.cfg с Ubuntu по умолчанию), windowsdefault (у вас есть идея)

После установки Ubuntu устанавливается по умолчанию, поэтому скопируйте его grub.cfgв нужный каталог. У меня есть конфигурация «Windows по умолчанию», изменив GRUB с помощью grub-customizer (на мой взгляд, это безопаснее), после этого скопируйте Windows grub.cfgв нужный каталог

После этого откройте блокнот и вставьте:

copy e:\boot\grub\grub.cfg /y e:\home\user\Grubshift\backup
copy e:\home\user\Grubshift\ubuntudefault\grub.cfg /y e:\boot\grub
shutdown /r /t 0

/y- опция copyкоманды, подавляет запрос на подтверждение, что вы хотите перезаписать существующий файл назначения

/r /t 0 - варианты выключения, 1. означает перезагрузку, 2. означает немедленно, без появления неприятных сообщений

Измените путь соответственно !!!

  • Сохраните этот файл (я использовал UTF-8) и измените расширение на *.bat
  • Создать ярлык на рабочем столе для shift.bat, щелкните правой кнопкой мыши по Shortctur -> Свойства -> вкладка ярлыка -> Выполнить: свернуто (это избавит от появления CMD)

Я пробовал это по крайней мере 8 раз, устанавливая Windows по умолчанию с grub-customizer...

Я не говорю, что это безопасно, но ЭЙ !, мы возимся с загрузчиком ... это не безопасно

Когда он полностью заработает, мы сможем полностью избавиться от меню GRUB, потому что оно всегда будет загружаться в нужную ОС ...

RiddleMeThis
источник
Логика выглядит хорошо, к сожалению, ext2fsd не полностью поддерживает ext4.
Дмитрий Беркутов
1
Также, если сценарий испортится (как будто Windows когда-либо сделает это), компьютер не загрузится - хорошая идея. Хороший пример: сценарий Linux запускается при загрузке, но компьютер выключается во время загрузки и просто выполняет этот сценарий, а затем ...
Уилф
0

Вот как я настроил свою конфигурацию:

Подводя итог: система перезагружает систему по умолчанию до последней активной, перезагружается из windows в linux и наоборот, используя простой скрипт.

Установите grub, чтобы всегда загружать последний выбранный:

Под Linux:

  • введите GRUB_DEFAULT=savedи GRUB_SAVEDEFAULT=trueв / etc / default / grub
  • обновить конфигурацию с помощью sudo update-grub

Установите драйвер Paragons extfs

см. http://www.paragon-drivers.com/extfs-windows/

Создать reboot-скрипты:

Если / boot / grub / grubenv не существует, создайте его, используя ответ Germar

Пакетный файл для перезагрузки из Windows в Linux:

@echo off
"C:\Program Files (x86)\Paragon Software\ExtFS for Windows\extmounter" /mount disk1 L:

:CheckForFile
IF EXIST "L:\boot\grub\grubenv" GOTO FoundIt
GOTO CheckForFile
:FoundIt

sed -i -e '/next_entry/c\next_entry=0' L:/boot/grub/grubenv
"C:\Program Files (x86)\Paragon Software\ExtFS for Windows\extmounter" /umount disk1 L:
echo press enter to reboot
pause
shutdown -r -t 00
  • замените /mount disk1 L:что-то конкретное для вашей системы. Вы можете найти доступные диски, используя extmounter /listкоманду и букву диска. Кроме того, L:не должны быть уже приняты.
  • сохранить как например reboot-linux.bat
  • Вы можете щелкнуть правой кнопкой мыши на летучей мыши и выберите, run as administratorчтобы выполнить его

Сценарий оболочки для перезагрузки из Linux в Windows:

sudo sed -i -e '/next_entry/c\next_entry=2' /boot/grub/grubenv
sudo reboot
  • замените next_entry=2на то, что ваша запись Windows.
  • сохраните его как например ~/reboot_windowsи отметьте как исполняемый файл:chmod +x ~/reboot_windows
Доминик Андреас
источник