Данная статья должна была быть написана еще полгода назад, но всё никак.
Речь пойдёт о том, как установить ОС Linux второй ОС на новые ноутбуки с UEFI и предустановленной Windows. При условии, что обычная установка не дает нужного результата, а именно — после корректной установки Линукса «рядом» с Виндой всё равно загружается только ОС Windows.
Для начала, как уже стало традицией, поставим все точки над Ё.
Проблема.
Имеем ноутбук (возможно и десктоп, но автор имел дело лишь с ноутбуком), на котором используется UEFI и имеется предустановленная ОС Windows (скорей всего 8.1, хотя ныне уже 10). Хотим установить на этот самый ноутбук ОС Linux (речь пойдет об Linux Mint, но для остальных ситуация должна быть аналогична) второй операционной системой (с двойной загрузкой: возможностью использовать и Windows и Linux на выбор пользователя). Устанавливаем Linux обычным способом* (про который я тоже когда-нибудь напишу, но в Интернетах подобных инструкций полно), перезагружаемся и обнаруживаем собственно нашу проблему:
всегда загружается упрямая Винда, никакого Grub’а, ни намека на какую-то там двойную загрузку.
*На самом деле существует как минимум две важные особенности для установки Linux на компьютеры с UEFI. 1) Перед установкой в этом самом UEFI необходимо отключить опцию безопасной загрузки — Security Boot Control (или что-то похожее, зависит от версии UEFI). Иначе носитель информации с дистрибутивом Linux почти наверняка не сможет запустится. 2) Загрузчик (Grub) должен быть установлен на EFI\ESP раздел, обычно имеющий название sda2, а не просто sda, как-то было раньше, в эпоху BIOS. Данная опция регулируется в процессе установки Линукса, обычно где-то в районе шага разметки диска.
Быстрое решения для счастливчиков.
Если вам повезет больше, чем автору статьи, то данную проблему можно решить за минуту.
Для начала попробуйте зайти в UEFI (кнопка F2 или DEL ДО старта Винды). Там найдите раздел с указанием списка загрузки. В нем должны быть элементы: как минимум жесткий диск и Windows Loader. Последний обычно имеет наивысший приоритет загрузки. Просмотрите остальные элементы в данном списке, если там есть что-то вроде Ubuntu Loader (или что-то иное, в зависимости от устанавливаемого вами дистрибутива Linux), то улыбаемся и машем выставляем его самым приоритетным и перезагружаемся. После перезагрузки должен появится долгожданный интерфейс Grub с выбором ОС для загрузки.
Если никаких других «лоадеров» нет, то вам не повезло как и мне: ваш ноутбук продал душу корпорации Microsoft и не желает видеть другие загрузчики. Или, что куда менее вероятно, загрузчик Grub установлен неверно (читаем примечания к предыдущему разделу и делаем всё по фен-шую).
Мат.часть и необходимые знания.
Про то, что такое UEFI и BIOS, зачем они нужны. Про разницу между MBR и GPT, а также про их смысл довольно подробно описано вот тут. Повторятся не будем. Данной информации вполне должно хватить для понимания данной статьи.
Также от читателя потребуются базовые знания установки ОС Linux. Читаем где-то там же.
Еще нужны будут базовые навыки владения данной ОС, в частности управлением файловой системой с помощью Midnight Commander (MC) (обзор основных возможностей и команд) и самые азы работы в консоли Linux (для Ubuntu-образных линуксов хорошая инструкция для новичков вот тут).
Понадобится установить MC (в том же Мятном Линуксе его по умолчанию нет), запустить его от имени рута (администратора), внести изменений в текстовый файл и выполнить еще пару несложных команд в консоли.
Если всё это вам по силам и без вышеприведенных инструкций — я рад за вас, можем двигаться дальше. Инструкции эти приведены на всякий случай, дабы избежать вопросов, в них освященных.
Решение.
Учтите, что весь алгоритм построен для ОС Linux Mint. В других Линуксах (не основанных на Ubuntu или Debian) названия каталогов и команды могут несколько отличаться.
- Установить Линукс рядом с Windows, используя для этого соответствующую опцию в одном из первых шагов установки или (если данная опция не появилась) разметив жесткий диск должным образом (заслуживает отдельной статьи, на убунту-вики про это тоже уже написано).
- НЕ ПЕРЕЗАГРУЖАТЬ компьютер после установки. Если перезагрузили — ничего страшного, просто снова придется загрузиться с live-cd\usb\dvd (ведь линукс-то у вас не запускается?).
- На всякий случай в консоли выполнить команду sudo update-grub (введя пустой пароль при запросе).
- Открыть консоль\терминал или иными средствами (например, с помощью менеджера программ в Ubuntu\Linux Mint) установить mc. В консоли (для систем с apt) это делается следующим образом: sudo apt-get install mc (после чего потребуется ввод пароля, напомню, в лайв-режиме пароля нет, просто жмем Enter и соглашаемся на установку).
- Запустить mc от имени рута: sudo mc (и снова пустой пароль, если спросит).
- Найти в файловой системе следующий каталог: /boot/efi/EFI.
- Переименовать каталог (комбинация ctrl+F6 в mc) Microsoft во что-нибудь другое, например в Microsoft2.
- Создаем новый каталог с именем Microsoft (клавиша F7).
- Заходим в только что созданный каталог Microsoft и частично (см.далее) создаем внутри его иерархию папок аналогичную старому Microsoft (тому, что переименовали). В моем случае он имел такую структуру папок: /boot/, затем куча папок и файл bootmgfw.efi рядом с ними. Нужно воссоздать структуру папок ровно до этого файла. Т.е. всё, что лежит рядом с ним — не нужно, а всё, что идет до него (т.е. родительские папки, соседние с ними тоже не нужны) воссоздаем в нашей новой папке Microsoft. В моем случае понадобилось создать только папку boot, итоговый путь до нового каталога вышел таким: /boot/efi/EFI/Microsoft/boot .
- Находим в каталоге из шага 6 папку с именем нашего дистрибутива линукса, в нашем случае это ubuntu. Копируем (оригиналы файлов и папку ubuntu на всякий случай оставляем, не помешают) все файлы из данной в папки в итоговый каталог, созданный на предыдущем шаге (в /boot/efi/EFI/Microsoft/boot).
- В получившейся файловой системе (в созданном на 9-ом шаге каталоге и перемещенных в него на 10-ом шаге файлах) находим файл grubx.efi или grubx64.efi (будет только один из них: в зависимости от разрядности установленного линукса). Переименовываем его в bootmgfw.efi .
- Находим файл /boot/grub/grub.cfg . Открываем его для редактирования (клавиша F4). Внутри него находим (клавиша F7 вызывает форму поиска по тексту) слово «Microsoft» в контексте строки, начинающейся с «chainloader» и заменяем это слово (должно быть только одно вхождение и именно в строке с «chainloader», так что не ошибетесь) на название каталога, в который мы переименовали Microsoft на 7-ом шаге (т.е. на Microsoft2 в нашем примере). Сохраняем изменения в файле (клавиша F2 — сохранить).
Вот и всё. Выглядит очень сложно, но если выполнять всё точно по шагам (которые расписаны максимально подробно!), то всё получится без каких-либо проблем. И, после перезагрузки и последующей загрузки уже с жесткого диска (а не с лайв-носителя) мы увидим вожделенный экран с меню выбора ОС. Ура, товарищи!
Что мы только что сделали?
Поясняю. Как видно, производитель вашего (и моего, у меня Acer если что) ноутбука продал душу Мелкософтам, как я уже говорил ранее. А именно, ноутбук на уровне UEFI не желает загружать что-либо отличное от файла /boot/efi/EFI/Microsoft/bootbootmgfw.efi, в котором располагается загрузчик Windows. Такая вот дискриминация!
Подменив файл грабовским, мы тем самым обманули и ноутбук и Майкрософт. Заставили грузить наш любимый Grub, вместо злой и упрямой винды.
Что делать дальше? + Меры предосторожности при обновлениях.
Живите и радуйтесь. Но ровно до тех пор, пока grub не захочет обновиться. Или же, вы не захотите согрешить и обновить свою винду
Сперва об обновлении Grub.
Дело в том, что после обновления Grub запускает команду update-grub, которая в созданной нами иерархии папок не находит загрузчика Windows (по непонятным мне причинам). И, тем самым, после обновления grub и последующей перезагрузки ПК в списке выбора ОС не будет вредной Windows (и поделом ей!). Решается это путанно, но алгоритм знакомый
- Переименовываете папку Microsoft (в которой сейчас файлы от граба и линукса) во что-нибудь временное, например в MicrosoftLinux.
- Старую добрую папку Microsoft2 (в которой находится загрузчик Windows), переименовываете в просто Microsoft, возвращая ее тем самым в изначальное состояние.
- Выполняете команду sudo update-grub.
- Возвращаете имена папок, придавая им вид из решения. Т.е. MicrosoftLinux переименовываем назад в Microsoft, Microsoft обратно в Microsoft2.
- Повторяем шаг номер 12 из решения и снова радуемся появившейся Windows в списке ОС при загрузке компьютера.
Да, пока что только так. Это дело бы автоматизировать, но пока мне было очень лень. В конце концов grub не так часто обновляется. Да и ручное описание решения лишним никогда не будет, потом пригодится для автоматизации.
Теперь о том, что нужно знать, если вы собрались обновить винду.
Большинство обновлений Windows требует перезагрузки. У меня Windows 8.1 после такой перезагрузки ожидаемо не сумела загрузиться, ибо не нашла своего загрузчика по адресу /boot/EFI/Microsoft (там же у нас теперь линукс живёт). Поэтому, обязательно перед установкой обновлений винды — верните ее загрузчик на место. Т.е. в папку Microsoft в нашем примере. Да, после этого вся проблема вернется, ибо загружаться вновь будет только винда, но ведь второй раз выполнить алгоритм из решения будет уже проще?;)
А иначе никак, если винда после обновлений уйдет в перезагрузку, но загрузчика не найдет — получите вы ошибку с невозможностью дальнейшей загрузки. И после этого, даже если поместить виндовый загрузчик на место — оно всё равно не заведётся. Поможет только восстановление загрузки с диска с вашей ОС Windows. Поэтому данный всегда желательно иметь под рукой (взять оригинальные образы дисков можно где-нибудь на торрентах).
После обновлений выполняем алгоритм из решений и радуемся.
Послесловие.
Да, вышло сложно и путанно. Но я постарался максимально подробно разложить всё по полочкам. Никакие иные решения (а встречаются автоматизированные варианты, которые делают что-то с грабом и прочие вещи) лично мне не помогли. А раз есть один случай, то наверняка найдется и еще один.
Если вы знаете способ решения подобной проблемы куда более простой и быстрый — прошу, пожалуйста, поделитесь. Укажу ссылку (при наличии) и оставлю авторство за вами;)
Полянка ссылок.
- Особенности установки ubuntu на платы с UEFI (help.ubuntu.ru);
- Установка Ubuntu (help.ubuntu.ru);
- MC: обзор возможностей и команд;
- Командная строка Ubuntu (help.ubuntu.ru);
- Разметка диска для Ubuntu (help.ubuntu.ru).
Слава макаронному монстру, что он послал мне эту статью. Я только осваиваю unix и бился недели с uefi, который никак не хотел находить что-то кроме загрузчика винды. У меня тоже ноут Aser. Спасибо тебе добрый человек
Автор, ты мне нереально помог! Та же фигня, только со стацеонарником от Aser. 3 дня возились что это может быть, и тут это статья как последний шанс. Есть предположение что именно Aser и продался грёбаному Мелкософту. Не без нюансов, но твои указания наставили на путь истинны. Огромный респект и уважение! Спасибо за подробное изложение проблемы!
Большое спасибо за решение. Очень благодарен.
Больше часа пытался понять, что не так с моим ноутом) Спасибо за решение)
Тоже возюкался. Поставил Arch. Проблема та же, после установки поверх десятки не видет загрузчик GRUB. Ноут HP Pavilion dv6. Автор, спасибо большое за мануал!
Благодарю автора за подробное и действенное решение. Все заработало. Осталось найти, как настроить grub так, чтобы при его обновлении все не ломалось.
Всегда рад!
Если найдете — буду рад ссылочке 🙂
Мне все еще лень попытаться автоматизировать этот процесс, т.к. не очень часто приходится.
И, самое неприятное, не обновившейся grub, а обновляющая винда, которая перетирает настроенный EFI раздел и все ломает 🙁 На такой случай, кстати, крайне рекомендую иметь бекап рабочего и настроенного EFI раздела (лучше на внешнем носителе или в облаке каком-нибудь).
Два дня сношался с ноутом, пытаясь установить Debian (нужен по работе), пока не нашел эту статью. Здоровья тебе и удачи хороший человек!!!
А что делать если ситуация обратная — установил openSUSE и исчезла Виндоус. Причем даже из bios — нет упоминания о windows bootloader
Здравствуйте!
Вероятно, по какой-то причине openSUSE вообще снесла виндовый загрузчик из /boot/efi/EFI/Microsoft/ ?
Проверьте этот раздел (/boot/efi/EFI/), если там вообще нет упоминаний про Windows или Microsoft — большая вероятность, что проблема именно в этом.
В таком случае, могу посоветовать поискать владельцев ноутбуков той же модели и выудить у них /boot/efi/<загрузчик винды>.
Еще можно обратиться в тех.поддержку ноутбука и на какие-нибудь форумы (есть форумы держателей Acer, например, там обычно выкладывают весь предустановленный софт и проче). После нахождения загрузчика — подсунуть его в нужное место(скорей всего /boot/efi/EFI/Microsoft/), должно завестись.
Другой вариант — вы отключили в UEFI «Security boot» или перевели UEFI в режим работы Legacy. Попробуйте поменять эти параметры.
Если все мимо — нужно разбираться в Вашем случае более детально. Можете написать мне на почту: leonius@lbad.ru . Возможно, смогу чем-то помочь.
Если проблема решится, буду рад увидеть здесь комментарий о способе, который помог 🙂
Спасибо!
Всё бы хорошо но вот только с windows 7 такой фокус не проходит 🙁 загрузчик ищет файл BCD по старому пути…
Здравствуйте. Можете конкретней описать проблему? Что получается, на каком шаге все ломается? Что за ноут(модель) ?
У меня нет ноута с предустановленной 7-кой, проверить не смогу.
НО, у ноутов с 7-кой подобное вообще случаться не должно =(
такая же проблема, после всех описанных действий при включении BIOS сообщает об ошибке «File: /EFI/Microsoft/Boot/BCD» и «status: 0xc000000f», т.е. требует файл BCD содержащийся в оригинальном каталоге Microsoft, есть мысли как решить проблему, спасибо
Если раздел не смонтировался автоматически:
определить диск EFI
sudo fdisk -l
монтировать
sudo mkdir /mnt/sda1
sudo mount /dev/sda1 /mnt/sda1
Можно обойтись и без nemo. Инструкция станет короче.
Мат.плата ASrock 970 Pro3 R2.0 прошивка версии P2.80. Если после установки постоянно загружать линукс, то всё ОК — видит оба загрузчика. Как только загружаюсь в 10ю винду, вариант с убунтой из меню UEFI пропадает — только HDD и WindowsBootManager.
ИЧСХ винда после первой перезагрузки тоже перестает работать. Приходится грузиться с флешки и юзать bcdboot.
Здравствуйте!
Описанная Вами проблема выглядит так, будто 10-ка при каждой перезагрузке пытается вернуть себе свое (перезапись/»восстановить» свой загрузчик в место по умолчанию).
Вариант 1.
10-ка известна своими агрессивными обновлениями. Быть может, установка линукса как раз пришлась на одно или несколько обновлений, которое требует перезагрузки? Если ещё не пробовали — попробуйте вернуть загрузчик винды на место (как было до линукса) и дать винде в волю наообновляться. А потом вновь «линукснуть» загрузчик и отключить автоматические обновления винды.
Обновлять винду придётся вручную и оптом (каждый раз возвращая родной загрузчик).
Вариант 2.
С 10-ками я пока данную инструкцию так и не пробовал. Вполне может быть, что Microsoft стали хитрее и коварнее со времен 8-ок и теперь винда при старте осуществляет некую проверку загрузчика на определённых моделях ноутбуков / материнок.
То, что проверка и фикс загрузчика выполняется на уровне материнки — думаю, можно исключить, т. к. все работает до ребута из винды.
Что делать в этом случае — пока не подскажу. Имеет смысл поковырять настройки винды про что-нибудь связанное с загрузкой/перезагрузкой и тп.
Пожалуйста, напишите о результатах своих изысканий и с наступившим Вас Новым годом 🙂
день добрый, вопрос, если после попытки изменить файл grub.cfg mc не дает войти в каталог /boot/efi «ошибка невозможно сменить каталог», да и файл не открылся, подскажите что делать? спасибо
Здравствуйте. Со старым новым годом Вас ! 🙂
Судя по всему, проблема с правами доступа. Такие, системные, каталоги обычно позволяется править лишь суперпользователям.
Чтобы наверняка попасть в каталог и иметь возможность сменить файл — запустите mc от имени суперпользователя: sudo mc (после чего потребуется ввести пароль этого самого суперпользваоетеля\пользователя root, на убунту он часто по умолчанию совпадает с паролем Вашего пользователя).
Можете погуглить про команду sudo и root пользователя в Linux, дабы лучше понимать, о чем идет речь.
да, со старым новым годом, уже разобрался с этим вопросом, остался только вопрос по «File: /EFI/Microsoft/Boot/BCD», спасибо еще раз
Установка Ubuntu с USB
В РЕШЕНИИ в 4 этапе после команды выдает:
Package mc is not available, but is referring to by another package.
This may mean that package is missing, has been obsoleted, or is onle available from another aourse
E: Package ‘mc’ has no installation candidate
Вероятно, у вас проблемы с репозиториями, т.к. в них не находится стандартный пакет MC.
Тут уже более общая линуксовая проблема. Попробуйте погуглить что-нибудь вроде: «установка mc на <название вашего дистрибутива (ubuntu, debian и т.д.)>«
Всем привет, та же ситуация с Aser. Н
Только не могу найти каталог efi, но присутствует /boot/grub. Как поступать в таком случае?
Здравствуйте.
У Вас точно включен режим EFI , а не загрузочный сектор (mbr) как было на старых моделях материнок?
Если да, то, вероятно, efi раздел смонтировался не туда\не так\не очевидно. У Вас Ubuntu?
Попробуйте запустить с live cd программу Gparted и найти там инфу про EFI. Либо ввести команду вроде df -h , которая также должна дать нужную информацию.
Захожу в /boot а там папки grub и lost+found никакого каталога /boot/efi/EFI там нет (но я смог загрузить линукс с компа — в биосе переключил uefi на legansy ).
Сделал как написано в теме «Установка Linux на Acer ES1-533» на Форуме русскоязычного сообщества Ubuntu (ссылку не даю, чтобы сообщение в спам не ушло, кому надо, тот сам нагуглит), и всё завелось. Может, кому-то пригодится эта инфа.
Здравствуйте! Столкнулся с такой же проблемой на ноуте Acer. Возможно глупый вопрос, но если снести целиком винду, то Linux нормально встанет как единственная система? Загрузчик будет распознаваться? Заранее спасибо.
Привет. Прошу прощения за задержку с ответом.
Не пробовал удалить винду полностью, не смогу сказать точно.
Но, исходя из того, что загрузчик упрямо смотрит на конкретный путь в UEFI разделе и только — предполагаю(!), что линукс будет нормально запускаться и работать, если поместить загрузчик в раздел, указанный в статье. Наличие винды оно вроде не проверяет.
Но это лишь предположение.
Если решите проверить, то на всякий случай НЕ удаляйте раздел с бекапом винды (он должен быть по умолчанию), а еще лучше как-нибудь забекапьте текущее состояние диска с виндой (акронисом каким-нибудь или т.п.), чтобы потом можно было вернуть как было.
Буду рад, если поделитесь опытом.
стоит федора 27, загрузчик grub2. не нашел grub.cfg. теперь у меня linux грузиться а windows нет. есть папка grub2, но там нет нужного файла. подскажите где искать?
А остальное делали по инструкции, т.е. описанная в статье проблема — ваша?
Насколько я понимаю, Вам необходимо найти каталог UEFI, а внутри него папку Windows с родными виндовыми файлами, потом прописать этот путь в конфиге граба (куда делся конфиг — к сожалению, не скажу, можно сделать поиск по всем файлам, как вариант) и сделать update-grub.
Если не можете найти файлы винды или случайно потерли их (опасно…) — предлагаю обратиться к владельцам ноутбука той же модели на какой-нибудь форум, наверняка помогут.
Все великолепно, грузится ubuntu.
И мне нужно чтобы в меню grub была возможность выбора винды 10, как это реализовать учитывая проделанные настройки в статье? Т.к. задача использовать две ОС
Здесь описан процесс переконфигурирования через bcdedit https://h30434.www3.hp.com/t5/Notebooks-Archive-Read-Only/Changing-Boot-Order-on-Dual-Boot-Windows-8-and-Ubuntu/td-p/2503733
Но лично я забил и на планшет irbis tw88 воткнул linux mint 20 xfce 64bit, затем заменил виндовый загрузчик на bootia32 и grubia32. Если уж совсем припрёт, в линуксе есть Wine, а также VirtualBox+ReactOS 14.
Ubuntu Cinnamon Remix поставил таким способом