Вопрос или проблема
Я установил Windows 7, которая перезаписала загрузочный файл Ubuntu. Теперь при запуске компьютера он сразу загружается в Windows, не давая мне возможности загрузиться в Ubuntu.
Как я могу вернуть Ubuntu?
Когда вы устанавливаете Windows, она предполагает, что является единственной операционной системой (ОС) на машине, или, по крайней мере, не учитывает Linux. Поэтому она заменяет GRUB на свой собственный загрузчик. Вам нужно заменить загрузчик Windows на GRUB. Я видел различные инструкции по замене GRUB с помощью команд GRUB или подобного, но для меня самый простой способ – это просто chroot
в вашу установку и выполнение update-grub
. chroot
великолепен, потому что позволяет работать с вашей фактической установкой, вместо того, чтобы пытаться перенаправлять вещи сюда и туда. Это действительно чисто.
Вот как:
-
Загрузитесь с live CD или live USB в режиме «Попробовать Ubuntu».
-
Определите номер раздела вашего основного раздела.
sudo fdisk -l
,sudo blkid
или GParted (который должен быть уже установлен по умолчанию в живом сеансе) могут помочь вам здесь. Я предполагаю, что это/dev/sda2
, но убедитесь, что вы используете правильный номер раздела для вашей системы!Если ваш основной раздел находится в LVM, устройство, скорее всего, будет находиться в
/dev/mapper/
, скорее всего,/dev/mapper/{volume}--{os}-root
, где{volume}
– это имя LVM-объема, а{os}
– это операционная система. Выполнитеls /dev/mapper
для получения точного имени. -
Смонтируйте ваш раздел:
sudo mount /dev/sda2 /mnt #Замените sda2 на раздел из шага 2
Если у вас есть отдельные разделы
/boot
,/var
или/usr
, повторите шаги 2 и 3, чтобы смонтировать эти разделы на/mnt/boot
,/mnt/var
и/mnt/usr
соответственно. Например,sudo mount /dev/sdXW /mnt/boot sudo mount /dev/sdXY /mnt/var sudo mount /dev/sdXZ /mnt/usr
заменив
sdXW
,sdXY
иsdXZ
на соответствующие номера разделов. -
Смонтируйте некоторые другие необходимые файлы:
for i in /sys /proc /run /dev; do sudo mount --rbind "$i" "/mnt$i"; done
-
Если Ubuntu установлена в режиме EFI (посмотрите этот ответ, если вы не уверены), используйте
sudo fdisk -l | grep -i efi
или GParted, чтобы найти ваш EFI-раздел. У него будет меткаEFI
. Смонтируйте этот раздел, заменивsdXY
на фактический номер раздела вашей системы:sudo mount /dev/sdXY /mnt/boot/efi
-
chroot
в вашу установку Ubuntu:sudo chroot /mnt
-
На этом этапе вы находитесь в своей установке, а не в живом сеансе, и действуете как root. Обновите grub:
update-grub
Если вы получите ошибки, или если переход к шагу 7 не решил вашу проблему, переходите к шагу 8. (В противном случае это необязательно.)
-
В зависимости от вашей ситуации вам, возможно, придется переустановить grub:
grub-install /dev/sda update-grub # Для нахождения и добавления Windows в меню grub.
-
Если Ubuntu установлена в режиме EFI, и UUID EFI-раздела изменился, вам может потребоваться обновить его в
/etc/fstab
. Сравните:blkid | grep -i efi grep -i efi /etc/fstab
Если текущий UUID EFI-раздела (из
blkid
) отличается от того, что в/etc/fstab
, обновите/etc/fstab
с текущим UUID. -
Если все прошло без ошибок, то вы готовы:
exit sudo reboot
-
На этом этапе вы должны быть способны загружаться нормально.
Если вы не можете загружаться нормально и не сделали шаг 8, потому что не было сообщений об ошибках, попробуйте снова выполнить шаг 8.
- Иногда предоставление GRUB2 правильной конфигурации для ваших разделов недостаточно, и вам нужно фактически установить его (или переустановить) в основной загрузочный сектор, что делает шаг 8. Опыт помощи пользователям в чате показал, что шаг 8 иногда необходим, даже если ошибок не было.
Установщик Windows не заботится о других ОС в системе. Поэтому он записывает свой собственный код в главный загрузочный сектор. К счастью, решение тоже просто.
Вам нужно восстановить MBR. Выполните следующее
Загрузитесь, используя live usb/cd Ubuntu.
Используйте boot-repair
для решения проблемы.
После загрузки с live usb/cd выполните следующую команду в терминале:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Используйте Рекомендуемое восстановление
.
Дополнительная информация – https://help.ubuntu.com/community/Boot-Repair
Загрузитесь с live USB-накопителя или CD с Ubuntu и
Установите Boot-Repair на Ubuntu, следуя шагам
Откройте терминал и выполните следующие команды
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
После завершения установки вы можете запустить его из меню Система-> Администрирование -> Boot-Repair, если вы используете Gnome, или найдите “boot-repair” в панеле поиска, если вы используете Unity. Затем следуйте приведенным ниже скриншотам:
Метод 1
- Нажмите на дополнительные параметры
- Установите галочки на показанных ниже параметрах
- Перейдите на вкладку Место загрузки и установите галочки на показанных на изображении вариантах
Нажмите Применить и перезагрузите систему
Метод 2
- Выберите рекомендуемые параметры восстановления загрузки, как показано на первом скриншоте
На системах с EFI (как на большинстве систем, поставляемых с Windows 8 и новее) Windows иногда обновляет свой загрузчик или сбрасывает его, чтобы он стал загрузчиком по умолчанию. Это особенно распространено при переустановке ОС или выполнении крупного обновления системы (например, при обновлении до последней версии Windows). Обратите внимание, что Windows, вероятно, не удалит никаких файлов GRUB на компьютере с EFI. Все, что нужно для загрузки Ubuntu, все еще на месте; просто его обходят. В таких случаях полная переустановка GRUB является чрезмерной, и на самом деле это несет (небольшой) риск создания новых проблем.
Таким образом, вместо того, чтобы переустанавливать GRUB в таких случаях, я рекомендую сбросить GRUB (или любой другой загрузчик или менеджер загрузки, который вы предпочитаете), чтобы он стал загрузчиком по умолчанию. Есть несколько способов сделать это, в том числе:
- EasyUEFI — самый простой способ изменить порядок загрузки, если система загружается прямо в Windows, это использовать EasyUEFI, бесплатный (для базовой версии) сторонний графический инструмент для управления порядком загрузки EFI. Это довольно самоочевидно — найдите элемент
ubuntu
в списке вариантов загрузки и переместите его на верх списка. В следующий раз при перезагрузке должен появиться GRUB. (Если вы используете что-то другое, кроме GRUB, вам нужно будет найти его запись.) bcdedit
— инструмент Windowsbcdedit
можно использовать, чтобы установить GRUB в порядок загрузки по умолчанию. Командаbcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
, введенная в окне командной строки с правами Administrator, сделает это; однако, если ваш компьютер загружается с активной безопасной загрузкой, потребуется использоватьbcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
. На самом деле, последняя команда будет обычно работать, даже если безопасная загрузка не используется, поэтому я сначала бы использовал эту команду. Обратите внимание, что есть более продвинутый инструмент командной строки Windows, который требует немного другой синтаксис, чем я представил, но я не помню деталей.- Однократная загрузка в Ubuntu — большинство EFI поставляют с встроенным менеджером загрузки, который можно вызвать, нажав функциональную клавишу, Esc или Enter на раннем этапе запуска системы. Скорее всего, элемент
ubuntu
для загрузки Ubuntu появится в меню этого менеджера загрузки, что позволит вам загрузиться в Ubuntu. В противном случае вы можете загрузиться в аварийный диск Ubuntu, например, установочный диск, загруженный в режиме «попробовать перед установкой». В любом случае, вы можете использоватьefibootmgr
, чтобы настроить порядок загрузки:- Введите
sudo efibootmgr
, чтобы увидеть записи загрузки. - Запомните текущую строку
BootOrder
. - Найдите запись для
ubuntu
и запомните ее номерBoot####
. - Введите
sudo efibootmgr -o xxxx[,yyyy,zzzz,....]
, чтобы изменить порядок загрузки, сделавxxxx
номером для Ubuntu. То, что будет дальше, вероятно, не так важно, хотя я заметил, что Windows, похоже, добавляет себя обратно в начало порядка загрузки, если ее нет в списке. Поэтому вам, вероятно, следует убедиться, что Windows находится в списке, и может быть безопаснее изменить порядок, чтобы все оригинальные записи были там, просто с перемещением записиubuntu
на верх списка.
- Введите
- Утилита настройки прошивки — некоторые утилиты настройки EFI позволяют вам изменить порядок загрузки. Подробности могут сильно варьироваться от одной EFI к другой, поэтому я не буду углубляться в специфику, но вы можете поискать такую опцию в вашей утилите настройки.
Существуют и другие варианты этих процедур, такие как использование bcfg
в EFI-оболочке, использование bless
в macOS, использование моего rEFInd для однократной загрузки и т.д. Я бы начал с EasyUEFI, это, вероятно, будет самым простым решением. Иногда Windows настаивает на том, чтобы каждый раз делать себя загрузчиком по умолчанию, и сообщения указывают на то, что bcdedit
может лучше справиться с этой проблемой.
Обратите внимание, что ничего из вышеперечисленного не относится к установкам в режиме BIOS; однако, поскольку большинство компьютеров, поставляемых с Windows 8 и новее, загружаются в режиме EFI, установки в режиме BIOS становятся все более редкими, поэтому во многих случаях лучше решать проблему в режиме EFI, а не слепо переустанавливая GRUB.
Просто установите easyBCD
в Windows 7 и выполните
Добавить новую запись > Linux/BSD > (выберите) Grub2 > (нажмите) Добавить запись
Тогда вы сможете выбрать Ubuntu в загрузчике Windows 7, чтобы перейти к Grub2 (предыдущий загрузчик).
Теперь есть более простое решение:
- Перезагрузите и войдите в настройки BIOS вашего компьютера (F2, или иногда F11).
- Перейдите в меню Загрузка и выберите Приоритет загрузки устройств
- Проверьте, если Диспетчер загрузки Windows выше основного загрузочного устройства (обычно SATA HDD … или IDE HDD …). Если это так, переместите приоритет загрузочного диска выше загрузчика Windows.
- Сохраните ваши настройки BIOS и выйдите (обычно F10).
Это было протестировано на ноутбуке Samsung Series 7 Chronos с двойной загрузкой Windows 8 и Ubuntu 13.10, безопасная загрузка отключена, UEFI и режим наследия включены.
Boot-Repair сработал для меня. Это очень простое в использовании графическое приложение, вам не нужно использовать командную строку, вам просто нужно нажать одну кнопку 🙂
Все доступные варианты восстановления описаны в документации Ubuntu, также есть отдельная страница, объясняющая, как запустить Boot-Repair (создавая загрузочный диск или устанавливая его на существующий живой диск Ubuntu) и как его использовать.
Просто загрузитесь с CD Ubuntu, установите Boot-Repair и запустите его.
Когда GRUB поврежден, пользователи обычно не имеют доступа к системам, поэтому восстановление необходимо выполнять из живого сеанса (live-CD или live-USB).
Существует много возможных причин поломки GRUB: Windows записывает на MBR, DRM препятствует правильной установке GRUB, ошибка установщика, изменение оборудования…
Обновление GRUB, как предложил изначально Скотт, обычно недостаточно, переустановка GRUB, как предложил Марко, более эффективна, но по-прежнему бывают различные ситуации, требующие других правок (добавление опций к ядру, раскрытие меню GRUB, изменение опций GRUB, выбор правильной архитектуры…) Другими трудностями для восстановления GRUB являются использование chroot и выбор правильных разделов/дисков.
Все это было упрощено в небольшом графическом инструменте: Boot-Repair. Он
должен быть интегрирован в CD Ubuntu 12.04 для упрощения использования, но для людей, которым это нужно сейчас, уже есть некоторые дистрибутивы с интеграцией: Ubuntu-Secured-Remix (CD с интегрированным Boot-Repair), Boot-Repair-Disk (CD, запускающий Boot-Repair при старте), …
Надеюсь, это поможет.
Ответы, данные Скоттом и Web-E, достаточно хороши и помогали много раз. Но во многих случаях инструмент boot-repair не может восстановить grub из-за проблем, связанных с платформой i386 и amd64, или ситуаций, когда grub не может найти efi
директорию.
То, что решило мою проблему более чем 10 раз, – это ручное удаление старых установок grub и установка новой.
Поэтому сначала выполните первые 6 шагов из ответа Скотта где вы можете пропустить шаг 5, если он выдает ошибку:
- Загрузитесь с живого CD или USB в режиме «Попробовать Ubuntu».
Определите номер раздела вашего основного раздела.
sudo fdisk -l
,sudo blkid
или GParted (который должен быть уже установлен по умолчанию в живом сеансе) могут помочь вам здесь. Я предполагаю
в этом ответе, что это/dev/sda2
, но убедитесь, что вы используете
правильный номер раздела для вашей системы!Если ваш основной раздел находится в LVM, устройство, скорее всего, будет находиться в
/dev/mapper/
, скорее всего,
/dev/mapper/{volume}--{os}-root
, где{volume}
– это имя LVM-объема,
а{os}
– это операционная система. Выполнитеls /dev/mapper
для
получения точного имени.Смонтируйте ваш раздел:
sudo mount /dev/sda2 /mnt #Замените sda2 на раздел из шага 2
Если у вас есть отдельные разделы
/boot
,/var
или/usr
, повторите шаги 2 и 3, чтобы смонтировать эти разделы на/mnt/boot
,
/mnt/var
и/mnt/usr
соответственно. Например,sudo mount /dev/sdXW /mnt/boot sudo mount /dev/sdXY /mnt/var sudo mount /dev/sdXZ /mnt/usr
заменив
sdXW
,sdXY
иsdXZ
на соответствующие номера разделов.Смонтируйте некоторые другие необходимые файлы:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Если Ubuntu установлена в режиме EFI ([смотрите этот ответ, если вы не уверены][efi]), используйте
sudo fdisk -l | grep -i efi
или GParted, чтобы найти
ваш EFI-раздел. У него будет меткаEFI
. Смонтируйте этот
раздел, заменивsdXY
на фактический номер раздела для вашей
системы:sudo mount /dev/sdXY /mnt/boot/efi
chroot
в вашу установку Ubuntu:sudo chroot /mnt
Затем выполняйте следующие шаги:
- Настройте все ожидающие пакеты.
sudo dpkg --configure -a
- Исправьте поврежденные пакеты.
sudo apt install -fy
- Удалите текущий grub.
sudo apt purge -y grub*-common grub-common:i386 shim-signed
Это может выдать вам предупреждение о том, что ваше устройство не будет иметь загрузчика
и может не загрузиться в следующий раз. Продолжайте и примите это. sudo apt install -y grub-pc
После выполнения этой команды вам будет предложено указать текущийsdXY
для установки загрузчика. Найдите, где установлена ваша текущая ОС, используя командуsudo fdisk -l
. Она будет помечена какLinux
. Перемещайтесь по этому окну с помощью клавиши Tab и выбирайте опцию с помощью клавиши Space.- Если все пройдет правильно, grub будет установлен корректно. Вы также можете выполнить
sudo grub-update
для дополнительной проверки.
Если проблема все еще сохраняется, вы можете прочитать вики Arch, чтобы на самом деле понять grub и решить многие другие разновидности проблем. (Да, это также помогает для Ubuntu!).
Оказывается, grub можно исправить и из Windows. Выполнение следующей команды (от имени администратора) из CMD вернуло меню grub для меня.
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Ответ Скотта Северенса является действительным и подробным, но есть решение, которое не требует внешнего загрузочного устройства и, таким образом, нет необходимости идентифицировать и вручную монтировать все ваши разделы Ubuntu перед chroot
.
В Windows 10 вы можете использовать Расширенное восстановление
, чтобы выбрать устройство (раздел?), с которого загружаться.
Перейдите в Настройки
и выберите Обновление и безопасность
:
Перейдите в Восстановление
:
Из Расширенного запуска
выберите Перезагрузить сейчас
Затем выберите Использовать устройство
, и все варианты загрузки должны быть вам представлены. Выберите раздел ‘ubuntu’, и ваш ПК должен будет загрузиться с этого раздела.
После загрузки в свою обычную среду Ubuntu я попробовал просто запустить grub-update
, но это ничего не изменило.
Затем я нашел свой /boot/efi
раздел, который был /dev/nvme0n1p1
, и выполнил sudo grub-install /dev/nvme0n1p1
, а затем sudo update-grub
.
Это восстановило мой основной загрузочный сектор множество раз, поскольку, похоже, у Windows 10 есть новая политика перезаписи загрузочной информации при мелких обновлениях.
Windows не видит разделы с форматом Linux. Вам нужно использовать gparted с liveCD и создать первичный раздел, отформатированный в NTFS с флагом загрузки.
Некоторые столкнулись с проблемами, если новый первичный раздел находится после расширенного раздела, так как Windows не всегда корректно сбрасывает таблицу разделов. Лучше всего иметь хорошие резервные копии и отдельную резервную копию таблицы разделов.
Резервное копирование таблицы разделов в текстовый файл и сохранение на внешнем устройстве.
sudo sfdisk -d /dev/sda > PTsda.txt
Это только для систем MBR (msdos). Если ваша установка Ubuntu находится на диске с GPT-разделом, вы можете установить Windows только в режиме UEFI или конвертировать диск обратно в MBR (msdos).
Только команда fsck
исправила экран grub-rescue
для меня.
Используйте Boot-Repair, чтобы загрузиться с Live-CD, затем откройте терминал
Получите правильное устройство:
sudo fdisk -l
Необходимо найти загрузочное устройство, у загрузочного устройства под категорией Boot стоит *
, как здесь:
Устройство Boot Начало Конец Секторы Размер Id Тип
/dev/sda1 2048 2000895 1998848 976M 82 Linux swap / Solaris
/dev/sda2 * 2000896 943716351 941715456 449G 83 Linux
Теперь восстановите диск, используя:
sudo fsck /dev/sda2 -y
Примечание: /dev/sda2 является загрузочным устройством в этом примере.
Перезагрузитесь, когда завершите. Готово.
У меня была другая проблема, вызванная (вероятно) тем, что boot-repair
удалил мои шаблоны /etc/grub.d/
, как указано в моем вопросе здесь: Ubuntu 18.04 не загружается после установки Windows 10
Как указал комментарий @karels, конфигурация grub генерируется с использованием файлов в /etc/grub.d
. Мой каталог содержал только /etc/grub.d/25_custom
, который содержал странные меню, указывающие на несуществующие .efi образы. Казалось, что мои шаблоны /etc/grub.d
могли быть повреждены boot-repair
.
Я исправил это следующим образом:
- Загрузитесь с Live CD (вероятно, важно использовать ту же версию Ubuntu)
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub
- Перезагрузитесь и расслабьтесь после 48 часов мучений
Ответ или решение
Как восстановить GRUB после установки Windows и вернуть доступ к Ubuntu
После установки Windows, загрузчик GRUB для Ubuntu может быть перезаписан, и при загрузке системы вы окажетесь непосредственно в Windows без возможности выбора Ubuntu. Чтобы восстановить GRUB, следуйте пошаговым инструкциям, приведенным ниже.
Способ 1: Использование Live CD/USB и командной строки
-
Загрузитесь с Live CD/USB Ubuntu. Выберите режим "Попробовать Ubuntu".
-
Определите номер раздела вашей основной Ubuntu установки. Используйте команды:
sudo fdisk -l sudo blkid
Или используйте GParted для визуализации разделов. Предположим, что ваш основной раздел – это
/dev/sda2
, но убедитесь, что вы используете правильный номер для вашей системы. -
Смонтируйте ваш раздел:
sudo mount /dev/sda2 /mnt # Замените sda2 на ваш раздел
Если у вас есть отдельные разделы для
/boot
,/var
или/usr
, смонтируйте их следующим образом:sudo mount /dev/sdXW /mnt/boot # Замените sdXW на ваш актуальный раздел
-
Дополнительно смонтируйте необходимые системные каталоги:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
-
Если Ubuntu установлен в режиме EFI, найдите и смонтируйте раздел EFI:
sudo fdisk -l | grep -i efi # Найдите раздел EFI sudo mount /dev/sdXY /mnt/boot/efi # Замените sdXY на актуальный номер
-
Используйте chroot для перехода в вашу установку:
sudo chroot /mnt
-
Обновите GRUB для обнаружения всех установленных систем:
update-grub
-
(Опционально) Если обновление не решило проблему, переустановите GRUB:
grub-install /dev/sda # Установите на MBR или на основной диск update-grub # Обновите конфигурацию
-
Выход из chroot:
exit
-
Перезагрузите систему:
sudo reboot
После этого вы должны увидеть меню GRUB с опциями загрузки Ubuntu и Windows.
Способ 2: Использование Boot-Repair
Если вам не удобна работа с командной строкой, вы можете использовать утилиту Boot-Repair:
-
Загрузитесь с Live CD/USB Ubuntu и запустите терминал.
-
Введите следующие команды:
sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair boot-repair
-
Выберите опцию "Рекомендуемое восстановление".
Boot-Repair автоматически обнаружит и исправит проблемы с загрузчиком.
Альтернативные методы
Если ваша система использует UEFI, вы также можете изменить параметры загрузки в Windows:
-
Используйте bcdedit:
Запустите командную строку от имени администратора и выполните:bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Это добавит GRUB в качестве загрузчика по умолчанию.
-
EasyUEFI: Если вашему компьютеру доступен этот инструмент, вы можете легко изменить порядок загрузки, перетаскивая записи.
Заключение
Если ни один из предложенных способов не помог, возможно, стоит обратиться к сообществу Ubuntu за дополнительной помощью, так как могут быть специфические проблемы с вашей конфигурацией оборудования или настройками BIOS/UEFI.