Восстановление загрузочной записи: различия между версиями

Материал из ALT Linux Wiki
Строка 13: Строка 13:
''Относится как к Lilo, так и к Grub.''
''Относится как к Lilo, так и к Grub.''
===В автоматическом режиме===
===В автоматическом режиме===
Воспользуйтесь утилитой [[mount-system]], нахотящейся, как и [[fixmbr]], в rescue-образе. Как и [[fixmbr]], она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования. В противном случае потребуется сделать то же самое в ручном режиме.
Воспользуйтесь утилитой [[mount-system]], нахотящейся, как и [[fixmbr]], в rescue-образе. Как и [[fixmbr]], она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования (в [[Rescue]], на текущий момент, это '''/mnt/system1'''). В противном случае, потребуется сделать то же самое в ручном режиме.
 
===В ручном режиме===
===В ручном режиме===
Восстановление удалённой [[загрузочная запись|загрузочной записи]] обычно бывает необходимо на [[компьютеры с несколькими операционными системами|компьютерах с несколькими операционными системами]]. Это связано с тем, что некоторые ОС переписывают существующую загрузочную запись, что делает невозможным загрузку других ОС.
Восстановление удалённой [[загрузочная запись|загрузочной записи]] обычно бывает необходимо на [[компьютеры с несколькими операционными системами|компьютерах с несколькими операционными системами]]. Это связано с тем, что некоторые ОС переписывают существующую загрузочную запись, что делает невозможным загрузку других ОС.

Версия от 20:08, 1 декабря 2014

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


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

Во многих образах ALT Linux присутствует возможность загрузиться в режиме восстановления (rescue). Как правило, в этих образах присутствуют две полезные утилиты - fixmbr и mount-system. Кроме того, существует специальный LiveCD Rescue. После загрузки в режиме восстановления можно ввести команду

fixmbr 

без параметров. В большинстве случаев этого достаточно — программа найдёт первый раздел, содержащий загрузчик для MBR и активирует его. Если эта программа не поможет или её нет, то воспользуйтесь информацией, представленной ниже.

Подготовка к восстановлению загрузчика

Относится как к Lilo, так и к Grub.

В автоматическом режиме

Воспользуйтесь утилитой mount-system, нахотящейся, как и fixmbr, в rescue-образе. Как и fixmbr, она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования (в Rescue, на текущий момент, это /mnt/system1). В противном случае, потребуется сделать то же самое в ручном режиме.

В ручном режиме

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

Восстановление старой записи в случае использования дистрибутивов ALT Linux состоит из следующих этапов:

  • Уточнение информации о том, на каком устройстве находится корневой раздел. Для этого можно воспользоваться утилитой fdisk (или своей памятью, или заранее заготовленными записями). Если будет обнаружено несколько разделов c Linux, возможно придётся проверять их подряд. Для определённости, будем считать, что корневой раздел находится на /dev/sda5
  • Монтируем корневой раздел с жёсткого диска к файловой системе RescueCD:
mount /dev/sda5 /mnt
  • Если есть отдельный раздел с /boot, монтируем его в точку /mnt/boot
mount /dev/sda1 /mnt/boot
  • Убеждаемся, что смонтировали действительно тот раздел
ls /mnt/

и т.п.)

  • Монтируем виртуальные ФС для использования их при работе с жёстким диском:
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt

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

lilo

  • Восстанавливаем загрузчик, предварительно подкорректировав, если это необходимо, файл /etc/lilo.conf
cd /sbin
./lilo

Ручное восстановление загрузчика grub

После того, как вы провели подготовительные действия и сделали сhroot, необходимо выполнить

grub-install /dev/sda # заменить /dev/sda на то устройство, куда хочется установить GRUB
grub-mkconfig -o /boot/grub/grub.cfg

Замечания

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

Если проблемы с загрузчиком - результат перемещения/объединения разделов, то, до непосредственного восстановления загрузчика, потребуется скорректировать настройки загрузчика. Кроме этого, надо будет поправить /etc/fstab (для 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

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

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