Fix grub after windows installation

Восстановление GRUB после установки Windows или «как не стоит делать»

Часа в 2 ночи мне написала подруга с просьбой одолжить ей нетбук на пару дней. Я, конечно, согласился, после чего она попросила меня поставить на него Windows с определенным софтом. Недолго думая, я накатил винду, совершенно забыв, что на нетбуке стояла Ubuntu 13.04. И все бы ничего, да вдруг вспомнил, что забыл на разделе убунты пару нужных мне файлов. Тут все и началось.

Предыстория

Ни для кого не секрет, что Windows при установке ставит свой загрузчик, не видя рядом стоящих систем. Когда я об этом вспомнил, на меня уже смотрел чистый рабочий стол Windows. Здесь был логичный выход из положения-скачать образ любого Linux-дистрибутива и запустить его в liveUSB, после чего обновить GRUB, но мне было слишком лень качать образ и записывать его на флешку. Поэтому я пошел более трудным путем. При установке Ubuntu диск был абсолютно чистым. Предвидя, что Windows рано или поздно вернется на нетбук я оставил часть диска неразмеченной. Обычно, я всегда создавал один раздел для » / » (hd0,0 в будущем) и swap (hd0,2), но в этот раз я решил поэкспериментировать и создал еще один раздел для » /home » (hd0,1).Спустя некоторое время была установлена Windows (hd0,3)

Запуск ядра

и как по волшебству ядро запустилось. Но и тут не все так просто.

Initramfs

mkdir /mnt
busybox mount /dev/sda1 /mnt
busybox mount /dev/sda2 /mnt/home
chroot /mnt

mkdir /mnt/dev
mount —bind /dev /mnt/dev
chroot /mnt
# update-grub
# exit
reboot

и получил возможность загружаться в Windows.

P.S. Предположу, что местные обитатели смогут и сами выкрутиться из подобной ситуации, поэтому статья ориентирована на тех, кто не особо дружит с Linux, но хочет подружиться, либо на тех, у кого нет второй машины или свободных флешек под рукой.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Восстановление GRUB

Содержание

GRUB — это основной загрузчик Ubuntu начиная с версии 9.10. Ранее он был известен как GRUB2 и пришёл он на смену старой версии GRUB, известной теперь как GRUB Legacy. Если вам необходимо восстановить GRUB Legacy, например поскольку у Вас стоит версия Ubuntu старше 9.10, то вам необходимо прочитать соответствующую статью.

На любом загрузочном винчестере есть так называемая Главная загрузочная запись (англ. master boot record, MBR), к которой обращается BIOS при загрузке компьютера. В эту область загрузчик системы и должен записать информацию об основных файлах, которые хранятся уже на разделах винчестера.

Восстановление с помощью LiveCD/USB

Первый способ

Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

На экран должна быть выведена примерно такая таблица:

Из таблицы видим, что Linux (загрузочный /-корень отмечен звёздочкой) стоит, в нашем случае, на разделе /dev/sdc1.

Теперь подключим этот раздел в /mnt следующей командой (следим за пропусками между кодами и порядковыми номерами разделов):

Затем, для записи grub в MBR, вводите следующую команду:

В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно, закрываем терминал и перезагружаем.

Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:

Восстановление используя chroot

Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

На экран должна быть выведена примерно такая таблица:

Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:

Теперь перейдем в окружающую среду chroot:

Теперь необходимо установить GRUB, используя команду:

Также в некоторых случаях может помочь вариант:

Если все прошло успешно, выходим из chroot командой:

Теперь необходимо отмонтировать разделы:

Если Вы монтировали раздел /boot воспользуйтесь командой:

Затем перезагрузим Ваш компьютер командой:

При необходимости Вы можете обновить меню загрузчика командой:

Восстановление в rescue mode

При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом: сначала нужно подгрузить все модули, чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела. Как известно, Grub состоит из двух частей. Первая часть записана в MBR диска. Она содержит базовую функциональность, то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить, на каком разделе находится вторая часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела. В rescue mode доступно всего четыре команды:

Читайте также:  Hive os или windows для майнинга

Вначале следует дать команду:

В ответ она выведет, например, следующее:

Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.

Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) — первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов — с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команду:

Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:

если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно. Подгружаем модули:

После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.

Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:

Где sdX, диск, на который нужно установить Grub.

Ubuntu Documentation

This page documents how to restore or recover the boot-loader (GRUB) after installing Windows. Some reasons to repair your boot-loader might include installing Microsoft Windows after you have installed Ubuntu, adding or removing a hard drive, or changing hard drive settings.

Note: this tutorial does not apply if you had installed Ubuntu inside Windows (via the Wubi installer). In this case, please read this page.

Using the Ubuntu CD (Recommended)

The graphical way

    Insert your Ubuntu CD, reboot your computer and set it to boot from CD in the BIOS and boot into a live session. You can also use a LiveUSB if you have created one in the past.

Install and run Boot-Repair

  • Click «Recommended Repair».
  • Now reboot your system. The usual GRUB boot menu should appear. If it does not, hold Left Shift while booting. You will be able to choose between Ubuntu and Windows.
  • The terminal way

    * Open a terminal. As of Ubuntu 11.10 and 11.04, this can be done by opening the Unity Dash (you can click the Ubuntu logo in the top panel or use the Windows key on your keyboard) and typing in «Terminal», and clicking what comes up. On earlier versions, you can achieve this by going to Applications -> Accessories -> Terminal. Alternately use the Keyboard Shortcut: CTRL + ALT + T.

    For full details on using terminal to fix grub on hard drive from Live Installer DVD or Flash: https://help.ubuntu.com/community/Grub2/Installing#via_the_LiveCD_terminal

    • You are then presented with a standard bash prompt, type — this only works to reinstall to MBR of a working system:

    where XXX is the device of your Ubuntu install. (eg: grub-install /dev/sdb). Hint: You can also use /dev/disk/by-label/ if the partition you installed on has a label. You can determine the /dev node for such a device by running:

    This will give the output of something like:

    You can also use fdisk if you do not see the /dev/disk/by-label:

    From here, find only the drive name, ignore the partition number, that is, for partitions labeled «root», «data2», «fat», «home» and «swap» it’s all still just sda. This is due to the fact that GRUB is installed in the MBR of the drive, and not on a partition.

    Trouble? If other things are messed up, e.g. if you have deleted the partition from where Grub was previously installed, grub-install may return an error message such as «cannot find a device for /. (is /dev mounted?)». You may have to do grub-install a bit differently. Refer to the handy guide on fixing a broken system

    Now reboot your system. The usual GRUB boot menu should appear. If it does not, hold Left Shift while booting. You will be able to choose between Ubuntu and Windows.

    Читайте также:  What is linux 2015

    Using the Ubuntu Alternate CD

      Boot your system from the Ubuntu Alternate CD.

    When the Ubuntu splash screen comes up with the boot: prompt, type in rescue and press enter.

  • Choose your language, location (country) and then keyboard layout as if you were doing a fresh install.
  • Enter a host name, or leave it with the default (Ubuntu).

    At this stage you are presented with a screen where you can select which partition is your root partition (there is a list of the partitions on your hard drive, so you are required to know which partition number Ubuntu is on). This will be dev/discs/discY/partX, where the X is a partition number and Y is the number of the drive.

  • Now proceed as described in «The terminal way» above.
  • See also

    RecoveringUbuntuAfterInstallingWindows (последним исправлял пользователь mcchots 2015-01-27 14:44:04)

    The material on this wiki is available under a free license, see Copyright / License for details
    You can contribute to this wiki, see Wiki Guide for details

    Не загружается Linux, чиним загрузчик GRUB

    Любите экспериментировать? Наверняка вы когда-либо пытались произвести какие-то действия со своей Linux-системой, причем не так важно какие были цели: изучение и познание новых возможностей или же какая-то более конкретная цель, в виде исправления той или иной ошибки. В любом случае, при работе с дистрибутивами Linux, для загрузки которых, в большинстве случаев, и используется Grub, с последним могут возникать неприятные проблемы, ввиду которых дальнейшая эксплуатация системы просто-напросто невозможна. В этой статье вы узнаете, что делать, если не загружается Linux. Как вести себя в подобной ситуации и какие действия производить, чтобы починить загрузчик Grub. Пожалуй, начнем.

    Что такое Grub

    Grub (или GRand Unified Bootloader) — загрузчик операционных систем с открытым исходным кодом. Распространяется он под лицензией GNU GPL, в полностью свободном виде. С помощью этого замечательного лоадера можно сделать много всего — основная же функция не ограничивается загрузкой лишь одной операционной системы. Вы можете иметь куда больше операционных систем на своем ПК, загружая любую из них с помощью Grub. На скриншоте выше вы можете видеть как примерно Grub выглядит. Кстати говоря, если вы захотите установить Ubuntu 18.04 рядом с Windows , вам определенно понадобится помощь Grub.

    Grub используется в большинстве дистрибутивов Linux в качестве загрузчика по-умолчанию. Разумеется и с ним иногда возникают проблемы. Этим самые проблемы чреваты полным отказом операционной системы. Поэтому для починки Grub нам понадобятся дополнительные инструменты. Какие именно — узнаете далее.

    От чего могут возникнуть проблемы

    Одна из самых распространенных причин — это неправильный порядок установки двух операционных систем (Linux и Windows). Допустим, если вы захотите установить две этих операционных системы на свой ПК — вам непременно стоит знать правильную последовательность:

    • Сначала устанавливаем Windows
    • И только потом уже Linux

    Если, например, сделать наоборот, то как раз-таки Grub будет поврежден; система будет грузиться напрямую в Windows, а дистрибутив Linux останется недоступным.

    Grub может сломаться и по другим причинам. Например, из-за попыток ручного изменения параметров запуска (при недостатке опыта), в таком случае нужно будет либо вручную убирать лишнее, либо полностью переустанавливать Grub.

    Восстановление Grub с помощью LiveCD/USB

    Для этого способа нам понадобится флешка с дистрибутивом Linux на борту. Подойдет любой: от Ubuntu, Arch или даже Linux Mint. Здесь нужен только терминал, поэтому подойдет даже версия без графической оболочки.

    Как создать LiveCD/USB

    Само собой, нам понадобится носитель, на который мы временно (а может и нет) запишем систему. Сохраните все важные файлы, которые были на этом носителе, после чего (имеется ввиду на другом ПК, желательно под управлением Windows) запишите загруженный образ дистрибутива на носитель. В качестве примера мы будем использовать дистрибутив Ubuntu.

    Идем на официальную страницу загрузки . Загружаем любую понравившуюся версию (лучше взять новейшую для десктопа), после чего записываем ее на USB/CD.

    С помощью Rufus:

    Последняя версия приложения доступна на официальном сайте . Сразу после загрузки и запуска/установки мы увидим такое окно:

    Вставляем носитель, выбираем его в соответствующем меню. Далее выбираем нужную схему раздела и тип системного интерфейса, и после уже открываем файловый менеджер с помощью этой кнопки:

    Находим загруженный образ через менеджер, после чего жмем «Старт».

    С помощью Etcher:

    Опять же, идем на официальный сайт , где скачиваем последнюю версию утилиты. Далее делаем все так, как показано на этой гифке:

    Ну а теперь, собственно, можно переходить к восстановлению Grub. Вставляем флешку в наш ПК (где сломан загрузчик), после чего перезагружаем его с этой самой флешки. Как только мы войдем в лайв-систему, сразу открываем терминал, после чего проделываем следующие действия:

    Открываем таблицу разделов с помощью команды:

    Примерно такая таблица будет выведена на экран:

    Читайте также:  Серийный номер для windows sp1

    /dev/sda1 27 7683 66999082+ 83 Linux
    /dev/sda2 * 8450 13995 45430855 7 HPFS/NTFS
    /dev/sda3 11885 16574 6503497 5 Extended

    По этой таблице мы видим, что Linux, в нашем случае, расположен на разделе /dev/sda1.

    С помощью следующей команды мы смонтируем этот раздел в /mnt:

    sudo mount /dev/sda1 /mnt

    Теперь, для записи grub в MBR, нужно ввести следующую команду:

    sudo grub-install —root-directory=/mnt /dev/sda

    Если нужно только восстановить MBR диска (после переустановки Windows, к примеру), то этих действий будет вполне достаточно.

    Если же необходимо обновить и меню grub (после установки Windows), то нужно выполнить еще и эту команду:

    sudo update-grub —output=/mnt/boot/grub/grub.cfg

    Вот и все, восстановление закончено!

    Восстановление с помощью chroot

    Помимо вышеописанного способа, при восстановлении Grub с помощью LiveCD можно использовать и этот. Тут мы будем использовать утилиту chroot.

    Здесь нам, опять же, понадобится таблица разделов. Вводим уже известную команду:

    В выводе снова будет эта таблица. Теперь нам надо присмотреться к ней еще внимательнее.

    /dev/sda1 27 7683 66999082+ 83 Linux
    /dev/sda2 * 8450 13995 45430855 7 HPFS/NTFS
    /dev/sda3 11885 16574 6503497 5 Extended

    В этом способе нам необходимо примонтировать системный, а также нескольких других важных разделов. Для этого вводим эти команды:

    sudo mount /dev/sda1 /mnt
    sudo mount —bind /dev /mnt/dev
    sudo mount —bind /proc /mnt/proc
    sudo mount —bind /sys /mnt/sys

    Обратите внимание , что если если разделы /boot или /var находятся отдельно, то Вам нужно будет примонтировать их в /mnt/boot и /mnt/var.

    Далее мы переходим в окружающую среду chroot с помощью команды:

    sudo chroot /mnt

    И теперь, наконец-таки переустанавливаем Grub с помощью следующей команды:

    Если вы на этом этапе получаете какие-то сообщения об ошибках, то попробуйте использовать эти команды:

    grub-install —recheck /dev/sda

    grub-install —recheck —no-floppy /dev/sda

    Если все прошло успешно, выходим из chroot, используя команду:

    Далее нужно отмонтировать все разделы. Для этого вводим в терминал:

    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    sudo umount /mnt

    В случае, если вы монтировали раздел /boot введите команду:

    sudo umount /mnt/boot

    Теперь перезагружаем систему с помощью:

    Можно также обновить меню Grub, используя команду:

    Восстановление Grub в rescue mode

    Если по каким-то причинам у вас нет доступа к LiveCD/USB-носителю, а также к компьютеру, с помощью которого этот самый носитель можно было бы сделать, то этот способ для вас.

    Само восстановление проходит таким образом: сначала мы подгружаем все модули, чтобы открыть доступ ко всей функциональной части Grub, после чего запуститься с нужного раздела. Надо понимать, что Grub состоит из двух частей:

    Одна из этих частей (первая) записана в MBR диска. В ней присутствует базовый функционал и ничего больше (консоль в rescue mode).

    Стало быть, нам нужно определить, в каком разделе находится вторая часть Grub (находится в каталоге /boot/grub), и после чего подгрузить все недостающие модули. А вот уже после этого мы сможем запустить загрузчик с нужного раздела. В rescue mode есть всего четыре команды:

    Для начала вводим следующую команду:

    В выводе будет что-то подобное:

    (hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)

    В некоторых случаях Grub неправильно опеределяет файловые системы находящиеся на разделах дисков. В данном примере загрузчик показывает их как msdos. Мы должны попытаться угадать диски, которые видим. В примере доступно два диска. Диск с индексом 0 содержащий три раздела, и диск с индексом 1 содержащий два раздела. Если вы знаете структуру своих дисков, определить нужный труда не составит.

    В загрузчике Grub разделы нумеруются в обратном исчислении. Не очень ясно какой именно из разделов назван, к примеру (hd0,msdos3). Чтобы было более понятно, можно использовать вид (hd0,1). Если в грабе отсчет дисков идет с 0, а разделов с 1, то можно определить, что операционная система установлена в первый раздел первого раздела — (hd0,1). Используем следующую команду:

    set prefix=(hd0,1)/boot/grub
    set root=(hd0,1)

    С помощью этих команд мы приказываем системе использовать какой-то конкретный диск, для выполнения всех остальных операций (в нашем случае, это диск (hd0,1)). Чтобы проверить есть ли на данном диске загрузчик, введем эту команду:

    Если в выводе будет список файлов и папок, значит мы все сделали правильно. Теперь можно загрузить все необходимые модули. Для этого выполним команды:

    insmod ext2
    insmod normal
    normal

    После выполнения команд Grub загрузится в полнофункциональном режиме. Будут найдены все операционные системы, которые установлены на компьютере, после чего будет показано стандартное меню загрузки.

    Чтобы закрепить результат (и не проделывать все то же самое после перезапуска ПК), нужно зайти в терминал своего дистрибутива Linux, где с root правами выполнить следующую команду:

    sdX — диск, на который должен быть установлен Grub.

    Если операционная система расположена на разделе с файловой системой btrfs , то нам необходимо выполнить следующие команды:

    set prefix=(hd0,1)/@/boot/grub
    set root=(hd0,1)

    Оцените статью