Grub 2: исцеление системного загрузчика
Содержание:
Восстановление основного загрузчика[править]
Основной загрузчик чаще всего бывает повреждён на компьютерах с несколькими операционными системами, если он расположен в MBR. Это связано с тем, что некоторые ОС переписывают содержимое MBR при установке, что делает невозможным загрузку других ОС. Следует понимать, что возврат старого загрузчика, в свою очередь, может сделать недоступной установку той самой «другой ОС». Иной способ повредить загрузчик — передвинуть разделы. Например, lilo грузит ядро и initrd, ориентируясь на абсолютное расположение файлов на носителе, заданное посекторно при установке загрузчика.
Процесс состоит из двух этапов. Первый — это сбор дерева файловой системы в произвольной точке монтирования и выполнение команды chroot в эту точку. В результате этой операции получается рабочая (ранее недоступная) система. Надо заметить, что восстановление загрузчика — не единственное применение chroot. Второй этап — собственно работы по переустановке (с возможным переконфигурированием) нужного загрузчика, выполняемые во временно реанимированной посредством chroot системе.
Подготовка chrootправить
Загрузитесь с установочного диска ALT Linux в режиме «Rescue». После загрузки мы получаем терминал с командной оболочкой от имени суперпользователя root.
В автоматическом режимеправить
Воспользуйтесь утилитой mount-system, находящейся, как и fixmbr, в rescue-образе. Как и fixmbr, она запускается без параметров. В случае успешного выполнения достаточно будет выполнить chroot в указанную точку монтирования (для первой обнаруженной системы это может быть /mnt/system1). В противном случае потребуется сделать то же самое в ручном режиме.
chroot /mnt/system1
В ручном режимеправить
Ручная подготовка chroot состоит из следующих этапов:
- Уточняем информацию о том, на каком устройстве находится корневой раздел. Для этого можно воспользоваться утилитой fdisk (или своей памятью, или заранее заготовленными записями). Если будет обнаружено несколько разделов c Linux, возможно, придётся проверять их подряд. Для определённости будем считать, что корневой раздел находится на /dev/sda1
- Монтируем корневой раздел с жёсткого диска к файловой системе RescueCD:
mount /dev/sda1 /mnt
Убеждаемся, что смонтировали действительно тот раздел
ls /mnt/
Монтируем виртуальные ФС (потребуются для установки загрузчика либо иных задач по прямой работе с диском):
mount --bind /proc /mnt/proc mount --bind /dev /mnt/dev mount --bind /sys /mnt/sys
Выполняем chroot в собранную ФС:
chroot /mnt
Примечание: Дальнейшие операции будут выполняться относительно нового корня и будут требовать как минимум наличие /dev, про который было написано ранее
Если есть отдельный раздел с /boot, монтируем его в точку /boot
mount /dev/sda2 /boot
Вместо предыдущего пункта можно использовать
mount -a
это смонтирует все ФС, которые описаны в /etc/fstab, включая отдельный /boot
Восстановлениеправить
liloправить
Восстановление lilo, как правило, сводится к запуску команды lilo без параметров (иногда требуется предварительная правка файла /etc/lilo.conf):
/sbin/lilo
grubправить
После того как проведены подготовительные действия и сделан сhroot, необходимо перегенерировать конфиг grub:
grub-mkconfig -o /boot/grub/grub.cfg
после чего, если используется обычный BIOS-режим, следует заново установить GRUB в MBR:
grub-install /dev/sda # заменить /dev/sda на то устройство, куда хочется установить GRUB
если же используется EFI-режим, может потребоваться восстановить загрузчик в ESP-разделе (EFI System Partition), который монтируется в /boot/efi:
mount -a # достаточно смонтировать точку монтирования /boot/efi grub-efi-autoupdate
Загрузчик grub обладает очень широкими возможностями. Вероятно, нелишним будет почитать про него предварительно.
Немного теории
Как я уже сказал, основная задача загрузчика — предоставить возможность выбора операционной системы перед загрузкой. Не думайте, что в Windows загрузчик не используется, там он тоже есть и работает, подобно тому, как работает Grub.
Загрузчик может быть установлен в различные таблицы разделов диска. Сейчас самые используемые это GPT и MBR. Установка загрузчика Grub немного отличается для каждой из этих таблиц, учитывая их особенности. Подробнее об отличиях MBR vs GPT можно почитать в отдельной статье. Тут же я скажу, что GPT — более новая и функциональная таблица разделов, MBR — уже устаревшая, но до сих пор часто используемая.
В MBR вариантов немного, Grub записывается в область MBR на диске. Размер сектора MBR занимает первых 512 байт и этого вполне достаточно для того, чтобы установить туда загрузчик.
GPT предоставляет более широкие возможности. Во-первых, для совместимости в GPT эмулируется сектор MBR, и мы можем установить GRUB туда, но такой вариант очень ненадежный и не рекомендуемый. Во-вторых, теперь появилась возможность устанавливать Grub на раздел диска. Мы просто создаем раздел на диске размером 1 Мб и записываем туда то, что раньше записывалось в MBR, это делает установку загрузчика более надежной и защищенной от сбоев.
UEFI предоставляет совсем иной способ установки загрузчика. Тут его не нужно никуда записывать, загрузчик — это обычное приложение EFI, которое помещается на раздел EFI и уже там полностью успешно работает наряду с другими приложениями.
Для установки Grub будет использоваться команда grub-install, во всех случаях. Давайте кратко рассмотрим ее синтаксис и параметры. Синтаксис:
$ grub-install опции диск
Параметров здесь достаточно много, но нам будут нужны только некоторые:
- —compress — сжать файлы загрузчика;
- —install-modules=модули — установить только эти модули;
- —modules — записать эти модули в MBR;
- —boot-directory — использовать другой каталог для файлов Grub;
- —bootloader-id — имя загрузчика в меню EFI;
- —core-compress — сжимать образ, загружаемый в MBR;
- —efi-directory — использовать системный раздел EFI;
- —force — установить несмотря на ошибки;
- —recheck — удалить существующую карту устройств, помогает если возникают ошибки;
- —removable — установка grub на флешку (только EFI);
Основу разобрали. Теперь перейдем к установке. Дальше я буду предполагать, что все действия выполняются из системы, для которой нужно установить загрузчик или из chroot окружения этой системы.
Роль GRUB
Если быть предельно точным, то современные версии Linux используют не GRUB, а его более современную версию GRUB 2. Чтобы избавиться от неудобной цифры в названии, старая версия получила наименование GRUB Legacy, а новая именуется привычным для линуксоидов названием. Не будем и мы отступать от установившегося обозначения.
Начать последнюю использованную систему
Через несколько минут вы должны получить графический интерфейс и окно, подобное этому. Конфигурация этой новой версии заслуживает некоторых объяснений
Важно: перед редактированием файлов создайте копии. Простой командный язык, чтобы «догнать» загрузку, которая пошла бы неправильно, из-за неправильной адресации раздела, например, и которая также позволяет напрямую изменять жесткий диск
Нет меню, нет интерфейса, нет реакции на команды клавиатуры. Короче говоря, мы никогда не будем в безопасности от разбивки своего загрузчика!
Разобравшись с терминологией, рассмотрим возможности GRUB. Загрузчик Windows 7, самой распространенной в семействе Microsoft, как, впрочем, и всех других ее версий, не способен правильно определять файловые системы других ОС. GRUB с этой задачей справляется.
Следовательно, если на вашем компьютере установлены одновременно Linux и Windows, восстановление загрузчика надо проводить для Linux. В противном случае вы не получите возможности выбора ОС при включении компьютера.
Тогда возникает вопрос: это очень красиво и очень интересно, но технически ли это возможно? Давайте перейдем к практике и посмотрим, что делать, чтобы сделать ваши 2 жестких диска загрузочными. Вы не обязательно хотите удалить его, чтобы заменить его другим, поэтому вы можете убедиться, что у вас есть обе системы, поэтому у вас есть выбор между каждым из них при запуске компьютера. В большинстве случаев вы можете создавать резервные копии своих персональных данных. Большинство разделов и установок работают хорошо, но проблемы все еще могут возникать.
Восстанавливаем загрузчик Linux
загрузчик Grub 2
Эта инструкция поможет когда:
- Переустанавливали Windows и кроме него был ещё linux, который стал невиден
- Linux перестал загружаться, даже будучи единственной ОС
1) Загружаемся с LiveCD (LiveDVD, LiveUSB)
2) Смотрим таблицу разделов:
$ sudo fdisk -l Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 13 102400 7 HPFS/NTFS Раздел 1 не заканчивается на границе цилиндра. /dev/sda2 14 7749 62139420 7 HPFS/NTFS /dev/sda3 7750 23607 127377020 7 HPFS/NTFS /dev/sda4 23607 30402 54577153 5 Расширенный /dev/sda5 23607 30119 52301824 83 Linux /dev/sda6 30119 30402 2274304 82 Linux своп / Solaris /dev/sdb1 * 1 5099 40957686 7 HPFS/NTFS /dev/sdb2 5100 16142 88701952 7 HPFS/NTFS /dev/sdb3 16143 19457 26627737+ 83 Linux /dev/sdc1 1 30401 244196001 7 HPFS/NTFS
Ответ команды сокращён для наглядности. Видно, что в системе есть три диска. На двух первых есть загрузочные области и несколько разделов как Linux так и Windows (HPFS/NTFS). Нужно определиться какой из них будет восстанавливать (можно по очереди, отключив временно остальные диски). В случае с одним жёстким диском ситуация проще. Это будет /dev/sda
3) Монтируем Linux-раздел (здесь sda5, но если есть отдельный boot рездел, то нужно монтировать его), добавляем в него устройства и процессы, переходим в него, таким образом попадая в окружение ОС, которая установлена на компьютере:
$ sudo mount /dev/sda5 /mnt $ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /proc /mnt/proc $ sudo chroot /mnt
После перехода вам не придется использовать sudo, т.к. теперь все команды выполняются от рута (root):
4) Устанавливаем загрузчик
# grub-install /dev/sda
Если получили сообщение об ошибке, то обновляем информацию об устройсве /dev/sda и пробуем установить снова:
# grub-install --recheck /dev/sda # grub-install /dev/sda
5) Выходим в окружение LiveCD ОС, отмонтируем разделы и перезагружаем компьютер:
# exit $ sudo umount /mnt/dev $ sudo umount /mnt/proc $ sudo umount /mnt $ sudo reboot
последняя команда может быть заменена на альтернативную:
$ sudo shutdown -r now
Сноски
- Программа Bootsect.exe обновляет основной загрузочный код разделов диска, чтобы обеспечить переключение между Bootmgr и загрузчиком NT (NTLDR). Это средство можно использовать для восстановления загрузочного сектора компьютера. Это средство заменяет FixFAT и FixNTFS.
Восстановление Grub2
В этой статье мы поговорим про Восстановление Grub2. Расскажем про основные способы восстановления этого загрузчика на вашем устройстве. Кстати мы уже писали о том, как удалить загрузчик Grub. Почитайте, возможно вам будет это также интересно.
Но, Вы можете легко восстановить GRUB2 с Ubuntu live CD или USB-накопителя. Этот процесс отличается от восстановления устаревшего загрузчика GRUB в старых дистрибутивах Linux.
Графический метод — восстановление загрузки
Boot Repair — графический инструмент, который может восстановить GRUB2 одним щелчком мыши. Это идеальное решение для проблем с загрузкой для большинства пользователей.
Этот метод является самым простым для и понятным для новичков, так как все происходит в графическом окне.
Если у вас есть флэшка, на которую вы заранее установили Ubuntu, вставьте ее в свой компьютер и перезапустите. Если вы этого не сделаете, загрузите образ Ubuntu live и запишите его на диск или установите на флешку. Вы также можете скачать специальный компакт-диск Boot Repair с официального сайта разработчиков.
После загрузки в живую среду Ubuntu откройте терминал из Dash и выполните следующие команды для установки Boot Repair:
sudo apt-add-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair
Окно Boot Repair появится после запуска команды boot-repair. После того, как он сканирует вашу систему, нажмите кнопку Рекомендуемый ремонт, чтобы восстановить GRUB2 одним щелчком.
Вы также можете щелкнуть заголовок Дополнительные параметры, чтобы настроить параметры GRUB2 без изучения его синтаксиса командной строки.
Перезагрузите компьютер после использования средства восстановления загрузки. Ubuntu должен загружаться нормально.
Метод терминала
Восстановление Grub2 включает также способ через «Терминал».
Если вы предпочитаете испачкать руки, то вы можете сделать это через «Терминал» операционной системы. Вам нужно будет загрузиться с Live CD или USB-накопителя, как в графическом методе выше. Убедитесь, что версия Ubuntu на компакт-диске совпадает с версией Ubuntu, установленной на вашем компьютере, например, если у вас установлен Ubuntu 17.04, убедитесь, что вы используете live CD с Ubuntu 17.04.
Откройте терминал после загрузки в живую среду. Идентификация раздела Ubuntu устанавливается с использованием одной из следующих команд:
Вот результат работы обеих команд. В команде fdisk -l раздел Ubuntu идентифицируется словом Linux в столбце System. В команде blkid раздел идентифицируется файловой системой ext4.
Выполните следующую команду для монтирования раздела Ubuntu в / mnt, заменив / dev / sdX # на имя вашего раздела Ubuntu из приведенных выше команд:
Например, используйте / dev / sda1 для первого раздела первого жесткого диска.
Важно: Если у вас есть отдельный загрузочный раздел, пропустите указанную выше команду и смонтируйте загрузочный раздел в / mnt / boot. Если вы не знаете, есть ли у вас отдельный загрузочный раздел, вы, вероятно, этого не сделаете
Выполните следующую команду, чтобы переустановить grub с live CD, заменив / dev / sdX на имя устройства на жестком диске выше. Опустите число. Например, если вы использовали / dev / sda1 выше, используйте / dev / sda здесь.
Перезагрузите компьютер, и Ubuntu должен загрузиться правильно.
Выводы
Основная идея этого руководства – помочь пользователям при восстановлении загрузчика Grub2. Если у вас есть вопросы, отправляйте их в форму комментариев на нашем сайте. Помогайте нам вместе улучшать Linux и делайте то, что будет развивать наше сообщество: спрашивайте, предлагайте и вносите свой вклад.
Создание дополнительного меню загрузки
Суть в том, что вместо уже знакомого «grub.cfg» можно загрузить свой файл настройки загрузочного меню со своей конфигурацией. Это позволяет создать дополнительное меню с другими пунктами, настройками, оформлением и т.д. Итак, создадим наш новый файл конфигурации. Создавать с нуля не будем, а скопируем «grub.cfg», дав новое имя:
sudo cp /boot/grub/{grub,custom}.cfg
Поскольку файл скопируется с правами 444, выставим ему права на запись:
sudo chmod 744 /boot/grub/custom.cfg
Теперь открываем его в любимом текстовом редакторе и изменяем:
sudo gedit /boot/grub/custom.cfg
Если вы в достаточной мере знаете структуру «grub.cfg» и понимаете, какие строки что делают, можно значительно сократить свой файл, убрав лишнее и привести его к более удобочитаемому виду.
- задаем пункт меню по умолчанию, указав или его номер или точное название.
-
здесь задается разрешение экрана в привычном формате WxH. Можно также указать глубину цвета, например «1024x768x32». можно указать несколько вариантов, при этом если первый не сможет быть установлен, будет загружен второй, если и он не сработает — третий и т.д. Например:
set gfxmode=1024x768x32,1024x768x24,1024x768
-
Теперь зададим время отображения меню, для этого ищем строку , и устанавливаем значение -1 для отключения таймера.
Для задания фонового изображения найдем строку с (подразумевается, что в вашем «grub.cfg» используется фоновое изображение. Если нет — смотрите пример файла в конце раздела). После команды прописан путь к файлу картинки, поменяйте его на нужный файл.
Обратите внимание, что разрешение картинки должно соответствовать заданному выше разрешению экрана!
Строкой ниже мы можем задать цвета текста. Изменяются они так же, как и в »/etc/grub.d/05_debian_theme« (см. Настройка внешнего вида загрузчика GRUB). Можно проделать один интересный трюк: уберите строки с и теперь настройка будет такой:
- задает цвет/фон текста сверху и снизу (версия grub и комментарии) и текста в консоли
- отвечает за цвет пунктов меню и фон прямоугольника, в котором они находятся
- задает цвет/фон выделенного пункта меню.
Закончив с настройкой, перейдем к пунктам меню, они идут ниже. Измените их, удалите ненужные и добавьте новые, пересортируйте на свой вкус.
Настроив свой файл, сохраните его Ctrl+Shift и закройте.
Теперь необходимо добавить дополнительное меню. Для этого в файле »/etc/grub.d/40_custom« добавим запись такого вида:
menuentry "Название меню"{ configfile /boot/grub/custom.cfg }
Если ваш путь к файлу отличается — исправьте его.
Если вы используете отдельный boot-раздел, путь будет таким: »/grub/custom.cfg«.
Также учтите, что «40_custom» должен заканчиваться пустой строкой!
Если вы хотите, чтобы ваше новое меню загружалось вместо стандартного «grub.cfg», установите новый пункт в качестве пункта по умолчанию, но перед этим проверьте новое меню на работоспособность.
Обновите свой «grub.cfg» выполнив команду:
sudo update-grub
Теперь пункт перехода в дополнительное меню появится в главном, для того чтобы выйти обратно в главное меню, достаточно нажать Esc
В качестве образца пример файла «custom.cfg» (файл урезан до необходимого минимума):
have_grubenv=true load_env ### выбранный пункт по умолчанию set default=0 ### таймаут меню set timeout=2 ### разрешение set gfxmode=800x600x32,800x600x24,800x600 insmod ext2 search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else terminal gfxterm; fi insmod png ### фоновое изображение background_image /usr/share/images/grub/yellow.png ### настройка цветов set color_normal=black/black set menu_color_normal=green/light-blue set menu_color_highlight=red/blue menuentry "9.10 @ 2.6.32" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash initrd /boot/initrd.img-2.6.32-020632-generic } menuentry "9.10 @ 2.6.32 (recovery)" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro single initrd /boot/initrd.img-2.6.32-020632-generic } menuentry "windooz"{ search -u AC9C75E59C75AA8A -s chainloader +1 }
Удаляем Grub
Некоторые юзеры затрудняются в вопросе, как удалить Grub, так как он подменяет собой стандартный загрузчик, и при удалении Linux перестают загружаться также и оставшиеся операционные системы. Хотя сам процесс несложный, применимы различные способы, зависящие от установленной второй системы.
Удаление при установленной Windows XP
Если на ПК стоит Windows XP, проблема, как удалить Grub, решается не так быстро, но без особых сложностей. Запустите менеджер жёсткого диска, который удалит программные компоненты, отмеченные ext. Хорошо подходит для процедуры удаления Power Quest PartitionMagic 8.0. Затем вам потребуется восстановление загрузчика Windows для работы ПК после удаления Linux. Действуйте по алгоритму.
С помощью утилиты удалите разделы с меткой ext
- Внизу окна приложения цветовое обозначение разделов. Удалив эксплуатируемые Linux, освободите место, оно выделится серым.
- Умная машина станет перезагружаться, высветится сообщение: «NTLDR is missing». Оно говорит, что система не может запустить ОС Windows, требуется восстановить файлы.
- Запустите консоль восстановления и подключите компакт-диск либо загрузочную флешку.
- Консоль запросит указать, в какую копию ОС следует войти. Ставьте «1».
- У вас запросят пароль администратора, введите его.
- Затем введите команду fixmbr, восстанавливающую таблицы разделов, перезаписывающую загрузочную область.
- Консоль выведет предупреждение и запросит подтверждения процесса, введите «Y».
- Загрузочная область создаётся, введите затем команду fixboot для записи загрузочного сектора на основной диск.
- Подтвердите по запросу операцию, набрав «Y».
Компьютер перезагрузится, восстановление загрузчика будет успешно завершено, запустится Windows XP.
Удаление при установленных Windows 7, 8
Процедура при установленных Windows 7-8 проще, чем вышеописанная. В данном случае вам не понадобятся загрузочные флешки, запуск консоли. Действуйте по алгоритму:
- Заходите в «Пуск» — «Выполнить».
- В поле окна открытия утилит впишите list disk, нажмите Enter, после чего увидите список устройств, имеющихся у вашего ПК.
- Впишите «select disk №…», указав номер диска с установленным Grub.
- Нажмите Enter. Выйдет сообщение о выборе диска.
- Вбейте команду «clean» — «Enter».
- Появится сообщение об успешной очистке диска.
Если вы уже удалили Linux, то Windows не сможет загрузиться. Поэтому нужен установочный диск или флешка с системой. Настройте BIOS на загрузку с нужного устройства и загрузитесь с диска или флешки. Вместо установки выберите восстановление системы, а затем командную строку. В этой строке введите поочередно такие команды:
- EXE /FixBoot
- BOOTREC.EXE /FixMBR
После этого файловая система будет исправлена и в загрузочном секторе появится запись, что компьютер должен загружаться с системы Windows. Собственно, этот же процесс происходит при новой установке системы, но теперь вы вместо этого только исправили загрузчик.
Удаление при FreeDos
При установленной FreeDos программу-загрузчик удалить возможно посредством командной строки. Вы просто форматируете диск с загрузочной областью.
- Запустите командную строку.
- Просмотрите содержание дисков, дав команду «dir».
- Обнаружив загрузочный сектор, отформатируйте весь раздел, вбив команду «format» и указав на этой же строчке нужный диск, например, «с:».
- После выполнения процедуры Grub будет убран с жёсткого диска.
Удаление Grub4Dos
Если у вас установлен загрузчик Grub4Dos, его удалить легко через командную строку. Набираете там команду «sudo apt-get purge grub2 grub-pc», и Grub удалит себя. Далее с помощью загрузочного диска, специальной консоли выполняете восстановление загрузчика, запуск имеющейся ОС.
Хотя Linux имеет много преимуществ перед другими системами, часто выбирают современные ОС либо устанавливают две системы. Но переходы между ними затруднены, возникают конфликты в программном обеспечении, и приходится удалять такой привычный, удобный Linux. Выше мы подробно описали, каким образом выполнить удаление, не нарушив работы второй системы. Теперь вы сможете, удалив Grub, оставить на ПК только одну ОС; знаете, как восстановить загрузчик Windows. Внимательно выполняйте операции, действуйте по руководству, прилагаемому к загрузчику, и вы успешно сделаете всё необходимое.
Main changes
The last Rescatux stable version was released on October 2012. That’s about eight years ago.
Many changes have happened to Rescatux since then. UEFI options which became mainstream at 2015 have been added. Secure Boot support has been added. Rescapp is now its own program.
Rescapp 0.56 main menu featured at Rescatux 0.73
Rescapp had some serious usability flaws that have been fixed. When you run an option you never knew if it was working ok. Now you have an status for the option.
Rescapp 0.56 – Status label shows that the Easy GNU/Linux boot option is being run
Finally the complete nightmare of pop-ups that were shown when an option is run have been replaced by nice coloured scrolling messages.
Rescapp 0.56 – Nice scrolling coloured messages show what the option does
One of the best improvement has been done recently. Rescapp has been improved so that every option is properly documented (as well as a non native English speaker can write).
Not only every question explains all the steps that it performs and the questions they are going to make but some scenarios are explained so that you can understand what’s the most suitable scenario when to use the option.
Rescapp 0.56 – Now every option has its own documentation with examples of use