Чи є спосіб, щоб grub автоматично перезавантажився в Windows з Windows?


12

У мене подвійне налаштування завантаження:

  1. Ubuntu 16.04 LTS
  2. Windows

В даний час, коли я хочу перейти rebootз Ubuntu в Windows, я використовую grub-rebootвідповідне число в якості аргументу. Це добре працює.

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

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

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


Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
тердон

Будь ласка, оновіть своє запитання в майбутньому тим, що ви закінчили, щоб grub автоматично перезавантажився в Windows. Мені цікаво дізнатися, який метод працював для вас, і побачити написаний вами сценарій Вікна (якщо такий є). Я впевнений, що цікавляться і багато інших людей.
WinEunuuchs2Unix

@ WinEunuuchs2Unix в даний час я працюю над цим. як сказав Олі - сценарій у вікнах - це королівський ПІТА.
amon san

@amonsan Я оновив свою відповідь reboot-to-windowsфункцією, яка є компромісом щодо використання ext2fsd, що пошкоджує ext4 суперблоки .
WinEunuuchs2Unix

@amonsan У вас зараз налаштована система для перезавантаження Windows Update, щоб автоматично повернутися в Windows?
WinEunuuchs2Unix

Відповіді:


19

Найпростіший спосіб - з Grub

Це громіздкий контроль grubз Windows. Потрібна додаткова програма для доступу до Ubuntu з Windows та деяке злому. Однак з верхньої частини цього повідомлення: Як змінити порядок на моїх подвійних дистрибутивах завантаження , ви можете налаштувати grubавтоматичне перезавантаження до останнього параметра меню. Отже, коли ви спочатку завантажуєтеся з Windows, і він прокидається о другій ранку, щоб запустити оновлення, 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 , відповідь ви можете використовувати потайний по замовчуванням для перезавантаження в 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 іноді використовує.


1
Це питання не має нічого спільного з порядком завантаження.
Дженніфер

2
@Jennifer Питання, однак, є випадком проблеми XY. Тож ця відповідь корисна. Плюс, насправді йдеться про порядок завантаження, оскільки він просить способу тимчасової зміни порядку завантаження з інтерфейсу Windows.
wizzwizz4

в даний час це те, на що я дотримуюся, і це прекрасно працює для мене в понад 90% випадків мого використання
Амон Сан

@amonsan чи можете ви детальніше зупинитися на 10 відсотках, де це не працює?
WinEunuuchs2Unix

Я здебільшого гра на цій машині з подвійним завантаженням, а Linux працює там для якоїсь іншої роботи, яку я не роблю щодня. до тих пір, поки гріб запам'ятає останнє завантаження - це windows, я в порядку. Мені просто потрібно вручну вибрати, коли я завантажуюся після використання Linux, щоб повернути стандарт до Windows і навпаки. це трапляється не так часто. на жаль, випадки мого використання по суті висвітлюються цим.
Амон Сан

8

Ви можете повторити те, що grub-rebootробить. Це просто сценарій, який врешті-решт викликає:

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

Звідки Windowsназва вашого меню в грубі. Це може бути не так

Я пробіг це. Все, що він робить, він вставляється next_entry=Windowsв /boot/grub/grubenv. Рядок 2. Отже, якщо це лише файл, у файловій системі ви можете зробити те саме, що в Windows . Вирішити проблему з Windows, але ось огляд високого рівня:

  • Встановіть диск, де живе завантаження. Це, мабуть, найскладніший біт, тому що це, мабуть, ext4. Це може допомогти, але це нецікаво, що для редагування цього вам може знадобитися Linux під керуванням Windows.

    Як вказує Муру, це не повинно бути таким важким. Ви можете перейти /bootдо власного розділу FAT32 . Це робить тривіальним для монтажу в Windows.

  • Вставте next_entry=Windows(або що завгодно) у файл після коментаря, перед хешами.

  • Відключити.
  • Перезавантажте.

Сценарій, що в Windows знаходиться далеко поза моєю зоною комфорту, і не дуже, що ми тут робимо. Але це має бути все, що вам потрібно зробити.


1
У цьому способі, як я вже говорив у коментарі, перенесеному до чату, найкраще перейти на окремий /bootрозділ і відформатувати його на FAT32 або NTFS, а потім зручно редагувати їх у Windows. Нічого в /bootцьому особливо не вимагає функцій Unix-y. Сценарій цього за допомогою Powershell повинен бути простим.
муру

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

Так, ОП може просто вибрати перезапуск Windows, а потім вибрати меню Windows в меню. Але ОП спеціально запитує, як мені автоматично повернутися в 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
Потиснути плечима. У будь-якому випадку вам слід перейти /bootна NTFS або FAT32, а не редагувати його як ext4. Підтримка записів для ext4 в Windows - це не так, ви занадто сильно ризикуєте таким чином.
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.