Восстановление загрузочной записи
Материал из ALT Linux Wiki
Asy (обсуждение | вклад) м (→В автоматическом режиме) |
Asy (обсуждение | вклад) (Добавлен раздел "Немного теории", раздел "Восстановление загрузчика в автоматическом режиме" переименован и переписан с учётом раздела ") |
||
Строка 3: | Строка 3: | ||
[[категория:admin]] | [[категория:admin]] | ||
{{stub}} | {{stub}} | ||
- | + | ==Немного теории== | |
- | == | + | ===DOS Partition Table=== |
- | + | Загрузчик ОС может находиться как в [[ruwp:MBR|MBR]], так и в BR раздела. Если загрузчик находится в BR раздела, этот раздел должен быть помечен, как активный, а в MBR должен находиться стандартный загрузчик, который находит активный раздел, и запускает следующий загрузчик оттуда. | |
- | Во многих образах ALT Linux присутствует возможность загрузиться в [[режиме восстановления]] (rescue). Как правило, в этих образах присутствуют две полезные утилиты - [[fixmbr]] и [[mount-system]]. Кроме того, существует специальный LiveCD [[Rescue]]. | + | ===GPT=== |
+ | ''надо описать отличия от DOS PT и, возможно, упомянуть отличия BIOS от UEFI.'' | ||
+ | ===Рекомендуемые средства=== | ||
+ | Действия, описанные в раздеде "Восстановление загрузки при повреждении MBR", можно сделать из любой ОС любыми, имеющимися там, средствами. Для действий, описанных в разделе "Подготовка к восстановлению основного загрузчика" и далее, требуется любой LiveCD с Linix, соответствующий по архитектуре установленной на восстанавливаемой системе (но x86_64 может быть применён для x32). Во многих образах ALT Linux присутствует возможность загрузиться в [[режиме восстановления]] (rescue). Как правило, в этих образах присутствуют две полезные утилиты - [[fixmbr]] и [[mount-system]]. Кроме того, существует специальный LiveCD [[Rescue|ALT Linux Rescue]]. | ||
+ | ==Восстановление загрузки при повреждении MBR== | ||
+ | Если основной загрузчик располагался в BR и не не был повреждён, а чем-то оказался повреждён только MBR, и/или сбиты настройки активного раздела, исправить это можно с помощью fixmbr или lilo. Если же у Вас повреждён основной загрузчик, можно переходить сразу к пункту "Подготовка к восстановлению основного загрузчика". | ||
+ | ===с помощью fixmbr=== | ||
+ | Можно попробовать воспользоваться утилитой fixmbr из rescue-режима: | ||
<code>[[fixmbr]]</code> | <code>[[fixmbr]]</code> | ||
- | без параметров. В большинстве случаев этого достаточно — программа найдёт первый [[раздел]], содержащий [[загрузчик]] | + | без параметров. В большинстве случаев этого достаточно — программа найдёт первый [[раздел]], содержащий [[загрузчик]], [[активация раздела|активирует]] его, и восстановит MBR. |
- | + | ===с помощью lilo=== | |
- | ==Подготовка к восстановлению загрузчика== | + | Можно, так же, воспользоваться lilo. Это не только загрузчик, но и утилита для манипулирования с MBR и активными разделами. Допустим, мы знаем, что у нас загрузчик (не обязательно Lilo) находится на разделе 2. |
+ | <br>Восстановливаем стандартный загрузчик в MBR: | ||
+ | <pre> | ||
+ | lilo -M /dev/sda mbr | ||
+ | </pre> | ||
+ | Убираем все метки активных разделов (если единственная метка переехала, или если меток стало больше одной): | ||
+ | <pre> | ||
+ | lilo -A /dev/sda 0 | ||
+ | </pre> | ||
+ | Делаем активным раздел 2: | ||
+ | <pre> | ||
+ | lilo -A /dev/sda 2 | ||
+ | </pre> | ||
+ | ==Подготовка к восстановлению основного загрузчика== | ||
''Относится как к Lilo, так и к Grub.'' | ''Относится как к Lilo, так и к Grub.'' | ||
===В автоматическом режиме=== | ===В автоматическом режиме=== | ||
- | Воспользуйтесь утилитой [[mount-system]], нахотящейся, как и [[fixmbr]], в rescue-образе. Как и [[fixmbr]], она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования (в [[Rescue]], на текущий момент, это '''/mnt/system1'''). В противном случае, потребуется сделать то же самое в ручном режиме. | + | Воспользуйтесь утилитой [[mount-system]], нахотящейся, как и [[fixmbr]], в rescue-образе. Как и [[fixmbr]], она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования (в [[Rescue|ALT Linux Rescue]], на текущий момент, это '''/mnt/system1'''). В противном случае, потребуется сделать то же самое в ручном режиме. |
===В ручном режиме=== | ===В ручном режиме=== |
Версия 12:28, 7 декабря 2014
Содержание |
Немного теории
DOS Partition Table
Загрузчик ОС может находиться как в MBR, так и в BR раздела. Если загрузчик находится в BR раздела, этот раздел должен быть помечен, как активный, а в MBR должен находиться стандартный загрузчик, который находит активный раздел, и запускает следующий загрузчик оттуда.
GPT
надо описать отличия от DOS PT и, возможно, упомянуть отличия BIOS от UEFI.
Рекомендуемые средства
Действия, описанные в раздеде "Восстановление загрузки при повреждении MBR", можно сделать из любой ОС любыми, имеющимися там, средствами. Для действий, описанных в разделе "Подготовка к восстановлению основного загрузчика" и далее, требуется любой LiveCD с Linix, соответствующий по архитектуре установленной на восстанавливаемой системе (но x86_64 может быть применён для x32). Во многих образах ALT Linux присутствует возможность загрузиться в режиме восстановления (rescue). Как правило, в этих образах присутствуют две полезные утилиты - fixmbr и mount-system. Кроме того, существует специальный LiveCD ALT Linux Rescue.
Восстановление загрузки при повреждении MBR
Если основной загрузчик располагался в BR и не не был повреждён, а чем-то оказался повреждён только MBR, и/или сбиты настройки активного раздела, исправить это можно с помощью fixmbr или lilo. Если же у Вас повреждён основной загрузчик, можно переходить сразу к пункту "Подготовка к восстановлению основного загрузчика".
с помощью fixmbr
Можно попробовать воспользоваться утилитой fixmbr из rescue-режима:
fixmbr
без параметров. В большинстве случаев этого достаточно — программа найдёт первый раздел, содержащий загрузчик, активирует его, и восстановит MBR.
с помощью lilo
Можно, так же, воспользоваться lilo. Это не только загрузчик, но и утилита для манипулирования с MBR и активными разделами. Допустим, мы знаем, что у нас загрузчик (не обязательно Lilo) находится на разделе 2.
Восстановливаем стандартный загрузчик в MBR:
lilo -M /dev/sda mbr
Убираем все метки активных разделов (если единственная метка переехала, или если меток стало больше одной):
lilo -A /dev/sda 0
Делаем активным раздел 2:
lilo -A /dev/sda 2
Подготовка к восстановлению основного загрузчика
Относится как к Lilo, так и к Grub.
В автоматическом режиме
Воспользуйтесь утилитой mount-system, нахотящейся, как и fixmbr, в rescue-образе. Как и fixmbr, она запускается без параметров. В случае успешного выполнения, достаточно будет выполнить chroot в указанную точку монтирования (в ALT Linux Rescue, на текущий момент, это /mnt/system1). В противном случае, потребуется сделать то же самое в ручном режиме.
В ручном режиме
Восстановление удалённой загрузочной записи обычно бывает необходимо на компьютерах с несколькими операционными системами. Это связано с тем, что некоторые ОС переписывают существующую загрузочную запись, что делает невозможным загрузку других ОС.
Восстановление старой записи в случае использования дистрибутивов ALT Linux состоит из следующих этапов:
- Загрузка с установочного диска ALT Linux в режиме Rescue. Это вариант LiveCD-загрузки без графической среды; предназначено для обслуживания и восстановления системы. После загрузки мы получаем терминал в режиме root.
- Уточнение информации о том, на каком устройстве находится корневой раздел. Для этого можно воспользоваться утилитой 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