Как я могу предотвратить перезапись GRUB в Windows при использовании машины с двойной загрузкой

19

Я много читал о двойной загрузке, и кажется, что это так же просто, как загрузить Windows, а затем загрузить Linux с GRUB, но все говорят, что Windows любит убирать GRUB, когда у нее появляется такая возможность. Какие шаги я могу предпринять, чтобы этого не произошло (кроме использования загрузчика Windows, я хочу сделать это как можно более простым)?

Nathan2055
источник
1
Связанный: Как восстановить grub после установки Windows
Gilles 'SO- перестань быть злым'

Ответы:

17

ОС Windows перезаписывает загрузочный сектор каждый раз , когда вы установите его, обновить его до новой версии, или использовать такие инструменты , как bootrec /fixmbr, bootrec /fixbootили старше fdisk /mbr. В общем, сначала установите Windows, затем Linux. Загрузочный сектор останется на месте, пока вы не выполните одно из указанных выше действий. (И, возможно, есть и другие способы записи в MBR.) Но если вы потеряете GRUB, его легко восстановить:

  • Загрузка с живого CD (CD / DVD или флешка).
  • Станьте пользователем root или используйте sudoкоманды ниже.
  • При необходимости перечислите доступные разделы: fdisk -l
  • Windows почти наверняка будет существовать в / dev / sda1: mount /dev/sda1 /mnt
  • Переустановите GRUB в MBR: grub-install --root-directory=/mnt/ /dev/sda
  • Перезагрузка: shutdown -r now
  • Восстановите меню GRUB: update-grub

Вы также можете установить 100% Unix, Linux или BSD и просто запустить Windows на виртуальной машине, если компьютер достаточно силен для этого.

Также: BIOS вашего компьютера может иметь опцию защиты загрузочного сектора.

Кристофер
источник
Под обновлением вы подразумеваете Windows 7 до Windows 8 или просто используете Windows Update?
Nathan2055
1
@ Nathan2055 Да, как 7-8 ... новые, более высокие версии Windows. Центр обновления Windows не повлияет на MBR.
Кристофер
Я так думала. Хорошо, что я сомневаюсь, что я буду связываться с MBR под Windows, и я не смогу перейти на Windows 8 после прочтения этого .
Nathan2055
1
В качестве альтернативы, вы можете попытаться настроить загрузчик Windows для цепной загрузки в grub: oreillynet.com/pub/h/2337 Немного сложнее и, возможно, слишком много работы для слишком маленького эффекта, но если сделать это таким образом, то если Windows перезаписывает загрузчик, вы все равно сможете загружаться в Linux.
Братчли
@JoelDavis: Да, я прочитал несколько учебных пособий по этому вопросу, но для тех, кто абсолютно не имеет опыта даже в загрузке GRUB, и тот факт, что я не думаю, что Windows доставит мне проблемы, учитывая, что я не хочу обновляться, Я думаю, что я пойду с настройкой ванильного GRUB и не связываться с загрузчиком.
Nathan2055
4

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

Если вы используете какую-либо форму grub, вы возитесь с загрузчиком. GRUB расшифровывается как «великий унифицированный загрузчик». И есть две версии - grub v1 и gnn v2. Все современные системы Linux используют Grub2 автоматически. Если вы устанавливаете любую систему Linux, grub является загрузчиком по умолчанию, если вы не используете LILO, что я бы не советовал.

У меня лично есть система двойной загрузки с XP и Wheezy. Я защищаю XP от перезаписи grub, отключив опцию «восстановление Windows».

До того, как я отключил опцию восстановления, мне пришлось бы исправлять grub по крайней мере раз в неделю, так как загрузчик Windows продолжал перезаписывать grub.

Я исправляю установку Windows 8 на внешний жесткий диск через USB-порт. Я надеюсь, что это идет без сучка и не связывается с моим mbr.

Дженн
источник
1
Отключение опции восстановления Windows, кажется, исправило эту проблему для меня.
DrCord
2

Это обходной путь, который я использую, он работает с обновлениями Windows без вмешательства: переименуйте ваш EFI / Microsoft в EFI / Microsomething. Замените путь загрузки Windows в grub.cfg на EFI / Microsomething / bootmfgw.efi. Вот так:

menuentry "Microsoft Windows UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root <PROVIDE YOUR EFI DRIVE UUID>
    chainloader /EFI/Microsomething/Boot/bootmgfw.efi
}
nulleight
источник
1

Просто откройте gparted, щелкните правой кнопкой мыши по разделу с Grub, перейдите к управлению флагами и отметьте загрузку.

Джон Милионис
источник
2
Это может работать, если установка Windows просто изменила загрузочный раздел. В моем случае установка Windows 8.1 перезаписала MBR, что требует grub-installрешения Кристофера .
Натан Кидд
1

Решение, которое я нашел где-то в Интернете (unix.stackexchange.com), заключается в отключении диспетчера загрузки Windows. Войдите в Linux (либо оригинальную установку, если вы можете, либо live CD / DVD) и выполните эту команду:

efibootmgr

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

Есть также звезды * рядом с некоторыми, если не всеми, записями, помечающими их как активные.

Посмотрите на 4-значный загрузочный номер рядом с записью Windows и запустите

sudo efibootmgr --bootnum #### --inactive

Это отключит запись Windows. Кроме того, убедитесь, что теперь деактивированная Windows имеет более высокий приоритет, если это еще не сделано:

sudo efibootmgr --bootorder ####,$$$$,&&&&,%%%%

где #### - номер загрузки Windows.

Если вы перезагрузитесь сейчас, вы загрузитесь в grub, если опция Linux включена с наивысшим приоритетом.

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

Я принимал участие в локальном Linux installfest, где мы устанавливаем Linux для заинтересованных людей, чаще всего в качестве дополнительной ОС рядом с Windows. Я еще не видел, чтобы этот метод не сработал, и я попробовал его на нескольких дистрибутивах (в основном Ubuntu и Mint) и нескольких поставщиков (Asus, Acer, HP, Lenovo).

Karlovsky120
источник
0

Windows 10 перезаписывает GRUB 2 при изменении цвета текста, размера, шрифта или заголовков пунктов меню.

Есть два способа решить это.

  1. Вы можете установить Linux в устаревшем режиме («Настройки BIOS»> «Загрузка»> «Legacy Support» + «Legacy First»).

  2. Вы можете отключить восстановление Windows (также известное как Защита системы) (Панель управления> Система и безопасность> Система> Защита системы> Настроить> Отключить).

анонимное
источник