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

Содержание:

Создание дополнительного меню загрузки

Суть в том, что вместо уже знакомого «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 через /boot/grub/grub.cfg

Файл /etc/boot/grub/grub.cfg управляет непосредственно работой загрузчика, здесь указаны все его параметры и настройки, а также сформировано меню. Поэтому, изменяя этот файл, мы можем настроить Grub как угодно. Сначала попытаемся разобраться с синтаксисом файла. Он очень напоминает синтаксис bash и состоит из нескольких команд, которые что-то делают, загружают и настраивают.

Команды могут быть объединены в функции или блоки с помощью инструкций if else, синтаксис которых аналогичен bash. Рассмотрим основные из этих команд:

  • load_env — загрузить переменные окружения из файла;
  • set — установить значение переменной окружения. Используется как set имя_переменной=значение;
  • insmod — загрузить модуль из папки с модулями Grub;
  • linux — загружает ядро Linux;
  • initrd — подготавливает образ initrd для загрузки ядра;
  • boot — пытается загрузить систему;
  • chainloader — запускает загрузчик из другого раздела;
  • search — установить значение переменной выполнив поиск по заданным параметрам, например, может найти диск по его UUID или метке;
  • menuentry — позволяет создать пункт меню;

Это все команды, которые вам понадобятся. Но две последние нужно рассмотреть подробнее, так как они будут использоваться чаще всего.

Команда search используется для поиска дисков и имеет такой синтаксис:

$ search опции_поиска —set=имя_переменной —hint приметы_устройства основной_параметр

  • Опции поиска задают по какому критерию нужно искать, например, —fs-uuid — искать по UUID, —label — по метке, —no-floppy — не искать в схемных носителях.
  • Приметы устройства дают программе дополнительные подсказки для более быстрого поиска;
  • Основной параметр — значение, по которому будем выполнять поиск.

Например, команда может выглядеть вот так:

Вторая команда, которая нам очень понадобится, это menuentry. Она используется для создания пунктов меню, с помощью которых будут загружаться операционные системы и дистрибутивы linux. Синтаксис этой команды такой:

menuentry имя_пункта {команды установки переменных окружениязагрузка модулейlinux файл_ядра параметры_ядраinitrd файл_initrd}

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

Теперь давайте попробуем собрать всю информацию воедино и создадим самый просто конфигурационный файл для Grub вручную:

# Время показа меню 5 секунд

set timeout=5

# Установим разрешение экрана и укажем что это же разрешение нужно сохранять для ядра:

set gfxmode=»1280×800″
set gfxpayload=keep

# Загрузим необходимые модули для работы видео режима, нужно для использования фоновой картинки

insmod vbe
insmod gfxterm
terminal_output gfxterm

# Установка шрифта с поддержкой Unicode:

font «/boot/grub2/fonts/unicode.pf2»
loadfont unicode

# Загрузим модуль работы с jpeg и зададим фоновый рисунок:

insmod jpeg
background_image «/boot/fon.jpg»

# Установим переменные окружения для настройки цвета меню:

set menu_color_normal=red/black
set menu_color_highlight=yellow/black
set color_normal=yellow/black

menuentry «Ubuntu» {
root=(hd0,1)
linux /casper/vmlinuz boot=casper noeject noprompt splash
initrd /casper/initrd.lz
}

menuentry «OpenSUSE» {
insmod gzio
insmod part_msdos
insmod ext2
set root=’hd0,msdos5′
linux /boot/vmlinuz-4.1.31-30-default root=UUID=c52ca066-e48f-4df2-bc7e-4d885a354090 resume=/dev/sda7 splash=silent quiet showopts
initrd /boot/initrd-4.1.31-30-default
}

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

Программа настройки Grub — это хорошо, но также важно понимать как все работает на низком уровне

Восстанавливаем загрузчик Windows

Эта инструкция поможет когда:

  • хотим удалить linux (любую ОС unix-подобную или нет) систему и оставить только Windows
  • после установки linux Windows не загружается
  • Windows перестал загружаться, даже будуче единственой ОС (вирусы, сбой жёсткого диска)

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

1) Загружаемся с установочного диска Windows

2) Выбираем востановление системы

3) Выбираем средство восстановления “коммандная строка”

Далее действия зависят от ОС

Для восстановления загрузчкика Windows XP выполняем команды

fixboot
fixmbr

Восстановление загрузчика Windows 7, 8

Для Windows 7 выполняем команды

bootrec /FixBoot
bootrec /FixMbr

Параметр ScanOS (bootrec /scanos) покажет обнаруженные операционные системы. Если ничего не обнаружено, то fixboot и fixmbr не помогут.

  • Для восстановления системного раздела можно также использовать утилиты (загрузившись с live-CD/DVD/USB):
    • — выполняет инициализацию системного раздела с помощью файлов из образа операционной системы, установленной на томе С:

      bcdboot C:\Windows /l ru-RU /s C:
      опции /l и /s не обязательны, если загрузчик установлен на отдельный раздел (как происходит по умолчанию), то, как правило, этот загрузочный раздел вообще не имеет буквы, поэтому опция /s не нужна.
    • bootsect /nt60 c: /mbr

Для просмотра разделов и их изменения можно использовать утилиту DiskPart

Замечания[править]

Если изменилась таблица разделовправить

Если проблемы с загрузчиком — результат перемещения/объединения разделов, то до непосредственного восстановления загрузчика потребуется скорректировать настройки загрузчика. Кроме этого, надо будет поправить /etc/fstab (для него порядок исправления неважен).

Пример для LILO (для GRUB смотреть в его описании).

Предположим, у вас был раздел sda3 с Windows, а стал раздел 1. В /etc/lilo.conf надо заменить

other="/dev/disk/by-id/ata-SAMSUNG_HM160HI_S14QJF0Q772514-part3"
        label="Windows1"

на

other="/dev/disk/by-id/ata-SAMSUNG_HM160HI_S14QJF0Q772514-part1"
        label="Windows1"

И соответственно убрать/поправить в /etc/fstab строчку вида

/dev/sda3   /mnt/sda3       ntfs-3g locale=ru_RU.UTF-8,dmask=0,fmask=0111 0 0

Если у Вас в конфигурации загрузчика и в fstab используются UUID, то для изменённых разделов, новые UUID можно посмотреть командой blkid. Не забудьте про параметр ядра resume, где указывается раздел swap.

Если нужны изменения в initrdправить

Непосредственно к восстановлению загрузочной записи это не относится, но может иметь отношение к процессу загрузки при замене контроллера HDD или иных проблемах, требующих изменений в initrd. В ALT Linux, начиная с дистрибутивов, основанных на ветках p5/5.1, используется утилита make-initrd. Вам следует узнать, какое ядро установлено по умолчанию (смотреть в конфигурации загрузчика), и пересобрать соответствующий initrd до выполнения пункта «Восстановление загрузчика». В большинстве случаев будет достаточно простого запуска make-initrd с указанием версии ядра, так как состав модулей будет определён автоматически исходя из загруженных на данный момент. Если это не поможет, придётся изучить make-initrd более подробно.

Пример:

# ls -1d /lib/modules/*
/lib/modules/3.14.22-std-def-alt1
/lib/modules/3.14.23-std-def-alt1
/lib/modules/3.16.6-un-def-alt1
/lib/modules/3.4.96-led-ws-alt0.M70P.1

В примере видны наборы модулей для четырёх ядер. Допустим, по-умолчанию используется 3.16.6-un-def-alt1. Команда на пересборку будет выглядеть так:

# make-initrd --kernel=3.16.6-un-def-alt1

В случае Lilo надо обновить конфигурацию загрузчика (просто запустить lilo), так как Lilo обращается к информации в initrd минуя файловую систему и должен знать о расположении данных на HDD, а при пересоздании файла его расположение практически всегда меняется.

Установка файлов GRUB на раздел с Linux

Иногда зачем-то бывает необходимо поставить GRUB Legacy на существующий раздел с Linux

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

Необходимо загрузиться с LiveCD Ubuntu (или Super Grub Disk) и примонтировать раздел с вашим Linux. Допустим, вы примонтировали его в каталог /mnt.

Теперь необходимо выполнить в терминале, заменив при необходимости /dev/hda на тот винчестер, в MBR которого вы хотите прописать GRUB Legacy, а /mnt — на тот каталог, куда вы смонтировали ваш раздел с Linux.

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

После этого GRUB Legacy поставится в /mnt/boot/grub и пропишет загрузку себя в MBR винчестера /dev/sda.

Если вы не знаете, что такое /dev/sda, или если у вас /boot отдельным разделом, то сначала разберитесь, что да как, а потом уже выполняйте команду

Монтирование разделов

Примонтируем корневой раздел. Выполняем команду (вместо /dev/sda2 вы должны указать свой раздел):

Мы примонтировали раздел /dev/sda2 в директорию /mnt .

Если для загрузчика у вас выделен отдельный раздел, то нужно примонтировать еще и его (вместо /dev/sdX укажите ваш boot-раздел):

Теперь можно посмотреть содержимое директории /mnt , чтобы убедиться, что мы примонтировали верный раздел:

Вывод команды должен быть примерно следующим

Обратите внимание есть ли в этом списке каталог /boot , так как именно в нем установлен GRUB

Также можно проверить, что директория boot не пустая:

У меня вывод команды выглядит следующим образом

Обратите внимание на присутствие каталога с именем grub

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

Монтирование EFI-раздела

Если у вас используется UEFI, то еще нужно примонтировать EFI-раздел в директорию /mnt/boot/efi (выше я указал пример вывода команды fdisk -l в котором показан EFI-раздел):

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

Начнем с того, что вам нужна LiveCD система, той же разрядности, что и ваша система Linux Mint, на которую был установлен Grub

Причем, неважно будет там графический интерфейс или нет. Обычно все необходимые инструменты поддерживаются всеми дистрибутивами

А нужны нам только утилиты fdisk, mount и chroot. Чтобы восстановить загрузчик grub2 просто следуйте описанным ниже шагам.

Шаг 1. Загрузка LiveCD

Сначала вставьте носитель с LiveCD системой в дисковод или порт USB, если это флешка. Для загрузки с носителя, возможно, вам сначала понадобится зайти в меню BIOS и выставить приоритет загрузки с внешнего устройства.

Для запуска BIOS нажмите Del, F2, F8 или Shift +F2. В открывшимся меню найдите раздел Boot, и в пункте Boot Device Priority или 1st Boot Device или Boot Option #1 выберите нужное устройство:

Дальше перейдите на вкладку Exit и выберите Exit & Save settings. Дальше начнется загрузка образа.

Шаг 3. Монтирование файловой системы

Теперь вам предстоит смонтировать вашу корневую файловую систему в каталог /mnt:

mount /dev/nvme0n1p5 /mnt

Кроме того нужно смонтировать раздел boot. Например, если бы он у меня находился по адресу /dev/nvme0n1p1:

mount /dev/nvme0n1p1 /mnt/boot

Шаг 5. Вход в окружение системы

Для входа в окружение вашей системы используйте команду:

chroot /mnt /bin/bash

Затем выполните эти команды для загрузки и обновления переменных профиля:

Теперь вы находитесь в Linux Mint, и можете выполнять почти все его программы, разумеется, недоступны сервисы, поскольку во время загрузки не использовалась система инициализации, а также как следствие, недоступно графическое окружение.

Шаг 6. Восстановление Grub2

Теперь восстановление Grub в Linux Mint. Просто выполните следующие команды. Первая, для переустановки загрузчика на жесткий диск:

sudo grub2-install /dev/sd*

Теперь создадим новый конфигурационный файл:

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

Еще можно использовать команду:

Но она работает только в Ubuntu и основанных на ней дистрибутивах.

Восстанавливаем загрузчик 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

Сноски

  1. Программа Bootsect.exe обновляет основной загрузочный код разделов диска, чтобы обеспечить переключение между Bootmgr и загрузчиком NT (NTLDR). Это средство можно использовать для восстановления загрузочного сектора компьютера. Это средство заменяет FixFAT и FixNTFS.

See also

  • In Chainloading the use of GRUB2 to boot other boot loaders is described. This is important to read when dual-booting systems, or when GRUB2 needs to be configured to boot ISO files.
  • In Advanced storage the necessary steps are documented on how to install and use GRUB on more advanced storage situations, such as software RAID, logical volumes or encrypted file systems.
  • In Configuration variables an exhaustive list of GRUB configuration variables, as used by /etc/default/grub, is documented.
  • In Troubleshooting a list of common GRUB errors (with their solutions) is presented.
  • In Hybrid partition table the use of a mixed MBR/GPT setup is documented, as well as how to use such hybrid partition layout with GRUB.

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

Продолжаем восстановление загрузки ubuntu. Сам /boot раздел мы вернули, но загрузчик grub почему-то не работает и система не грузится. Загружаемся опять с установочного диска и переходим в консоль. Напомню, что у меня такая картина по разделам:

Device     Boot   Start      End  Sectors Size Id Type
/dev/sda1  *       4096  2101247  2097152   1G 83 Linux
/dev/sda2       2101248 20969471 18868224   9G 83 Linux

Первый раздел это /boot, второй корень / . Смонтируем их в /mnt, а так же добавим несколько системных директорий.

sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

Теперь чрутимся в /mnt, чтобы оказаться в нашей системе:

sudo chroot /mnt

И уже отсюда восстанавливаю загрузчик grub:

grub-install /dev/sda
sudo update-grub --output=/mnt/boot/grub/grub.cfg

По идее, ошибок получить не должны. Если получили, то гуглите их. Надо обязательно их решить, иначе система так и не начнет загружаться корректно.

Теперь выходим отсюда и перезагружаем сервер. Вынимаем установочный диск и загружаемся с основного диска. У меня пошла загрузка.

Давайте еще раз повторим все, что мы сделали:

  1. Мы увидели, что система не грузится и валится в grub rescue. Загрузчик не может найти раздел, с которого продолжить загрузку. Мы попробовали в rescue console посмотреть все имеющиеся разделы и не нашли там boot. Если же нашли, то сразу же загрузились с него.
  2. После этого загрузились с загрузочного диска ubuntu, перешли в консоль. Установили утилиту testdisk и просканировали наш диск. Нашли пропавший раздел, восстановили /boot. Если раздел не нашли, то создали вручную.
  3. После этого смонтировали к livecd системе локальные диски, зачрутились в эту систему и штатно восстановили grub загрузчик.
  4. После этого система нормально загрузилась.

Загрузка в Live-режиме

Теперь нужно загрузиться с созданного диска или флешки.

Чтобы это сделать сначала нужно в BIOS выбрать приоритет загрузки с CD/DVD или с USB (если вы используете флешку).

На современных компьютерах, где используется BIOS/UEFI, для входа в BIOS нужно при включении компьютера удерживать специальную клавишу. У разных производителей клавиша может быть разной. Обычно это: F2 , Del , F10 , Esc , F11 или F3 .

На старых компьютерах, где используется классический BIOS, чтобы войти в BIOS нужно при загрузке компьютера, в самом начале, когда появляется логотип материнской платы, нажать специальную клавишу. Для разных материнских плат клавиша может быть разной. Обычно это одна из клавиш: Del , F1 , F2 , F8 , F10 или какая-нибудь другая, или даже сочетание клавиш. Подробности: Настройка BIOS для загрузки с CD/DVD-диска или с USB-носителя

Определение разделов

Теперь нужно определить раздел диска, на котором был установлен GRUB.

Выведем список разделов, для этого выполняем команду (в конце команды стоит строчная буква L):

Вывод fdisk для BIOS

Пример вывода команды:

В моем случае мы видим 2 диска: /dev/sda (SSD диск) и /dev/sdb (флешка, с которой сейчас загружена Live-система).

Нас интересует диск /dev/sda. На диске /dev/sda создано несколько разделов. В моем случае /dev/sda4, на котором установлен Windows, а также 4 раздела с пометкой Linux (см. последний столбец таблицы). У вас скорее всего может быть один раздел Linux (корневой раздел) или два раздела (корневой и home). На одном из этих разделов установлен GRUB.

То есть из таблицы вы должны определить какой раздел является корневым, на нем скорее всего у вас установлен GRUB. В моем случае GRUB установлен в раздел /dev/sda2. Далее по тексту я буду его использовать (вы должны будете указывать свой раздел).

Иногда бывает, что для загрузчика GRUB выделен отдельный раздел (он называется boot-раздел). Если это так, то на следующем шаге вам нужно будет примонтировать корневой раздел и раздел с загрузчиком.

Вывод fdisk для UEFI

Для новых компьютеров с UEFI вывод команды fdisk -l может быть примерно следующим:

Нам нужно определить, на каком разделе установлен Linux (корневой раздел), а также определить EFI-раздел. В моем случае это разделы: /dev/nvme0n1p5 и /dev/nvme0n1p1, которые расположены на диске /dev/nvme0n1.

Восстановление Grub2 без LiveCD

В некоторых случаях повреждения Grub не вызывает полную невозможность загрузки. Например, когда загрузочный код в MBR цел, но программа не может получить доступ к файлам на диске. Тогда загрузчик открывает вместо меню некое подобие терминала с сообщением: Minimal BASH like line editing is supported. С помощью этого терминала мы можем попытаться загрузить систему. Восстановление grub2 без LiveCD не такая уж и сложная задача, хотя, это сложнее, чем первый способ.

Чтобы посмотреть список подключенных к компьютеру дисков просто выполните:

(hd2,msdos1, hd2,msdos2, hd2,msdos3, hd2,msdos4)

Важно отметить, что в grub диски и разделы именуются немного по другому. Здесь каждый жесткий диск имеет название hd и номер диска, например, hd0 или hd1

Разделы именуются начиная с единицы.

Вы можете работать только с одним разделом в определенный момент. Чтобы установить раздел, с которым нужно работать, нужно указать его в переменной root. Для установки переменных окружения используется команда set. Например, у если у меня файлы загрузчика grub находятся на /dev/sdc2, то получится hd2,2:

Загрузим нормальную оболочку grub:

insmod ext2 insmod normal normal

После этого можно найти и запустить ядро. Для этого используйте команду linux. Обычно ядро находится папке /boot:

И наконец загружаемся:

Теперь, когда система загрузится, вам останется только открыть терминал, и выполнить следующие команды, чтобы завершить восстановление загрузчика linux mint:

sudo grub2-install /dev/sd*

Восстановление загрузочной записи windows

Загрузчик Grub, это загрузчик, который используется по умолчанию в большинстве дистрибутивов Linux. Grub расшифровывается как GRand Unified Bootloader, он поддерживает загрузку не только Linux, но и Widnows и DOS.

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

Как удалить загрузчик Grub и восстановить Windows

Если на вашем компьютере установлено две операционные системы, Windows и Linux и вы хотите стереть Linux и его загрузчик, восстановив загрузчик Widows, и у вас используется таблица MBR, то это сделать очень просто.

В сети часто советуют способ взять установочный диск Windows, загрузиться с него в режиме восстановления и выполнить команды:

bootrec fixboot

Это действительно ответ на вопрос как удалить grub и восстановить загрузчик windows и он работает. Но есть способ намного проще. Вам даже не придется перезагружать компьютер. Утилита Bootice позволяет восстановить загрузчик Windows и удалить Grub с жесткого диска в несколько кликов.

Затем Windows NT 5.x / 6.x MBR:

И нажмите кнопку Config / Install:

И готово, вы смогли успешно полностью удалить загрузчик Grub. Можете перезагружаться и проверять.

Как удалить загрузчик Grub в UEFI

Эта проблема тоже решается с помощью утилиты Bootice. Только на это раз вам нужна именно 64 битная версия программы.

Одно из преимуществ UEFI на MBR в том, что здесь можно устанавливать сразу несколько загрузчиков на специальный раздел. Для удаления загрузчика Grub и восстановления функциональности Windows достаточно переместить Grub чуть ниже в очереди загрузки UEFI.

Откройте программу, перейдите на вкладку UEFI, и нажмите Edit Boot Enteries. Откроется такое окно:

Здесь у вас есть два варианта действий. Либо опустить Grub ниже загрузчика Widnows, кнопкой Down, либо полностью удалить запись о загрузчике кнопкой Del. Но в обеих случаях файлы загрузчика останутся на диске. Полностью удалить загрузчик Grub со всеми его файлами нужно из командной строки. Это немного сложный процесс, но все же мы его разберем.

Кликните в левом нижнем углу экрана правой кнопкой мыши, в открывшемся контекстном меню выберите Командная строка от имени администратора.

Затем смотрим доступные диски:

И выбираем наш единственный диск, на котором сейчас установлена Windows, а раньше была установлена Ubuntu:

После того как был выбран диск, мы можем посмотреть список разделов на нем

Среди этих разделов есть и раздел с файлами EFI, для обычной системы он скрыт, но не для этой утилиты. В нашем случае это Volume 2. Как правило, это небольшой раздел с файловой системой FAT32 и отмеченный как системный:

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

Затем назначим ему букву, чтобы можно было с ним работать:

assign letter=D:

Переходим в папку EFI:

Удаляем папку с файлами загрузчика Ubuntu:

Готово, удаление загрузчика Grub завершено и теперь его файлов больше нет в системе.

Как удалить Grub с флешки

На флешках, как правило, используется таблица разделов MBR. Чтобы удалить загрузчик Grub с флешки недостаточно просто ее отформатировать. Загрузчик записывается в таблицу MBR, а поэтому нам придется ее пересоздать. Очень не рекомендую использовать этот способ для удаления загрузчика Grub с жесткого диска, потому что вы потеряете все данные.

Работать будем в системе Linux. Сначала посмотрите какое имя устройства у вашей флешки, например, с помощью программы Gparted или в терминале, командой:

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

dd if=/dev/zero of=/dev/sdc count=512

Теперь, с помощью той же Gparted создаем новую таблицу разделов:

Создаем раздел на флешке и форматируем в файловую систему FAT32:

Теперь вы знаете как удалить mbr с флешки, только не сотрите mbr с жесткого диска, потому что потом будет сложно восстанавливать.

Troubleshooting

NoteFor more troubleshooting, please refer to the Troubleshooting sub-article.

Most of the issues can be resolved by ensuring that the partition layout is correct. Make sure enough space is available before the first partition of the disk, or optionally make sure that a BIOS boot partition is available. Also verify that /boot/grub/grub.cfg was correctly generated with grub-mkconfig, or generate one with a custom menu entry.

os-prober not running

When running the grub-mkconfig command, os-prober is not running as expected, even though it is installed:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.14-gentoo-x86_64
Found initrd image: /boot/amd-uc.img /boot/initramfs-5.11.14-gentoo-x86_64.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

This can be corrected by setting the GRUB_DISABLE_OS_PROBER variable to in /etc/default/grub file.

FILE

GRUB_DISABLE_OS_PROBER=false

Upon the next run, grub-mkconfig should find additional bootable partitions:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.14-gentoo-x86_64
Found initrd image: /boot/amd-uc.img /boot/initramfs-5.11.14-gentoo-x86_64.img
Warning: os-prober will be executed to detect other bootable partitions.
It's output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p2@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

Motherboard firmware not finding the .EFI file

Some motherboard manufacturers seem to only support one location for the .EFI file in the EFI System Partition (ESP). If this seems to be the case, simply move GRUB’s default file to the /efi/boot/ location. First, make sure the ESP is mounted. Presuming the ESP is mounted at /boot/efi (as suggested in the Handbook), execute:

You can also use the removable parameter with grub-install command to generate this file automatically:

Installation finished. No error reported.

This should aid the motherboard firmware in loading the GRUB executable. Reboot the system to see if the firmware now correctly loads GRUB.

os-prober and UEFI in chroot

Run these commands in the host environment to provide the required files (example shows Gentoo mounted on /mnt/gentoo like in the Handbook):

Восстановление загрузчика WinXP

Иногда, по совершенно непонятным причинам, возникает необходимость восстановить не GRUB, а загрузчик WinXP. Этот загрузчик, в отличие от GRUB Legacy, не умеет грузить ни Linux, ни более современные версии Windows, так что подумайте перед тем как выполнять приведённые ниже инструкции.

Для восстановления загрузчика WinXP надо загрузиться с установочного диска WinXP и выбрать пункт Восстановление системы. Далее:

  1. В консоли восстановления наберите команду и подтвердите выполнение команды, нажав y
  2. Далее наберите команду и подтвердите выполнение команды, нажав y
  3. Теперь наберите для выхода из консоли.

Выводы

Из этой статьи вы узнали как легко обновить ядро CentOS до самой последней версии. Но есть еще один метод, который мы здесь не рассматривали. Вы можете собрать ядро из исходного кода. Такой метод подходит не только для CentOS, но и для других дистрибутивов. С помощью него вы можете очень тонко настроить параметры ядра, а также внести различные оптимизации для улучшения работы системы. Но с такой же легкостью вы можете сломать свою систему.

В Ubuntu (и я думаю, в Debian тоже) есть системный скрипт с именем update-grub , который автоматически выполняет grub-mkconfig -o с правильным путем для файла конфигурации grub.

Есть ли подобная команда для распределений на основе Red Hat?

Если нет, то как система знает, где будет обновляться файл конфигурации grub при установке новой версии ядра?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector