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

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
(Новая: # Загружаемся с live-cd. Вариант 1: # Выполняем '''grub-mkdevicemap''' # Смотрим '''/boot/grub/device.map''', узнаем, как называетс...)
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
# Загружаемся с live-cd.
__TOC__
==GRUB 1==
# Загружаемся с live-cd/flash/другой системы


Вариант 1:
===Вариант 1===
 
'''Простая конфигурация, софт той же версии (используются конфиги live-системы?)'''


# Выполняем '''grub-mkdevicemap'''
# Выполняем '''grub-mkdevicemap'''
# Смотрим '''/boot/grub/device.map''', узнаем, как называется наш винчестер в grub-формате, допустим, '''(hd2)'''
# Смотрим '''/boot/grub/device.map''', узнаем как называется наш винчестер в grub-формате, допустим, '''(hd2)'''
# Выполняем '''grub-install "(hd2)"''' для установки GRUB в MBR указанного диска.
# Выполняем '''grub-install "(hd2)"''' для установки GRUB в MBR указанного диска.


Вариант 2, более полный:
===Вариант 2===
 
'''Для более сложных конфигураций (например, с отдельным /boot), софт той же версии'''
 
# Выполняем '''grub-mkdevicemap'''
# Смотрим '''/boot/grub/device.map''', узнаем как называется наш винчестер в grub-формате, допустим, '''(hd2)''', а /boot тогда, допустим, будет '''(hd2,0)''' (не забываем, что нумерация разделов идет с нуля)
# Запускам '''grub'''
# В консоли GRUB'a вводим '''root номер_/boot-раздела''', т.е. '''root (hd2,0)''' для примера выше - этим мы указываем, где у нас лежит каталог GRUB'a.<br>'''Примечание: номера разделов обычно дополняются по Tab'у, пользуйтесь им чаще'''
# Там же вводим '''setup номер_раздела/диска''', т.е., '''setup (hd2)''' для примера выше - этим мы указываем, на какой диск или раздел мы ставим загрузчик. При указании раздела (например, '''(hd2,2)''') - GRUB ставится в загрузочную запись этого раздела и должен потом вызываться чем-то еще, если указываем целый диск - то GRUB ставится в MBR (обычно этот вариант и нужен). Должен пробежать текст примерно такого вида:
<pre>
grub> root (hd2,0)
Filesystem type is reiserfs, partition type 0x83
 
grub> setup (hd2)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/reiserfs_stage1_5" exists... yes
Running "embed /grub/reiserfs_stage1_5 (hd2)"...  21 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd2) (hd2)1+21 p (hd2,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.
</pre>
 
Установка завершена, наберите '''quit''' и перезагрузите систему.
 
===Вариант 3===
 
'''Самый полный и сложный, создание модели системы и chroot в нее для выполнения операций - полностью используются утилиты, библиотеки и конфиги восстанавливаемой системы'''


# Создаем точку монтирования для корневой ФС восстанавливаемой системы, допустим, '''/tmp/system'''
# Создаем точку монтирования для корневой ФС восстанавливаемой системы, допустим, '''/tmp/system'''
Строка 17: Строка 49:
# Чрутимся в собранную систему - '''chroot /tmp/system'''
# Чрутимся в собранную систему - '''chroot /tmp/system'''
# Запускам '''grub'''
# Запускам '''grub'''
# В консоли GRUB'a вводим '''root номер_/boot-раздела''', т.е. '''root (hd2,0)''' для примера выше - этим мы указываем, где у нас лежит каталог GRUB'a.
# В консоли GRUB'a вводим '''root номер_/boot-раздела''', т.е. '''root (hd2,0)''' для примера выше - этим мы указываем, где у нас лежит каталог GRUB'a.<br>'''Примечание: номера разделов обычно дополняются по Tab'у, пользуйтесь им чаще'''
# Там же вводим '''setup номер_раздела/диска''', т.е., '''setup (hd2)''' для примера выше - этим мы указываем, на какой диск или раздел мы ставим загрузчик. При указании раздела (например, '''(hd2,2)''') - GRUB ставится в загрузочную запись этого раздела и должен потом вызываться чем-то еще, если указываем целый диск - то GRUB ставится в MBR (обычно этот вариант и нужен). Должен пробежать текст примерно такого вида:
# Там же вводим '''setup номер_раздела/диска''', т.е., '''setup (hd2)''' для примера выше - этим мы указываем, на какой диск или раздел мы ставим загрузчик. При указании раздела (например, '''(hd2,2)''') - GRUB ставится в загрузочную запись этого раздела и должен потом вызываться чем-то еще, если указываем целый диск - то GRUB ставится в MBR (обычно этот вариант и нужен). Должен пробежать текст примерно такого вида:
<pre>
<pre>
Строка 35: Строка 67:


Установка завершена, наберите '''quit''', выйдите с chroot'a (Ctrl+d) и перезагрузите систему.
Установка завершена, наберите '''quit''', выйдите с chroot'a (Ctrl+d) и перезагрузите систему.
==GRUB 2==
Для восстановления GRUB 2 можно загрузиться с любого live-cd/Flash-дистрибутива, где используется GRUB 2 (у меня, например, на флешке установлен обычный Debian, где в качестве загрузчика используется GRUB 2), после появления меню надо нажать "'''c'''" для перехода в командную строку, а потом проделать все те шаги, которые обычно выполняет загрузчик:
* указать корень командой '''root''', например, '''root (hd1,1)'''. Нумерация разделов идет с 1, пользуемся табуляцией для определения нужного диска. '''Корень указывается для загрузчика, а не системы, т.е. указывается /boot-раздел!'''
* указать ядро и параметры командой '''linux''', например, '''linux /vmlinuz-2.6.34 vga=791 root=/dev/sda2''' - так, как оно было в установленной системе
* при необходимости указать initrd командой '''initrd''', например, '''initrd /initrd.img-2.6.34'''
* загрузить все вышеперечисленное командой '''boot'''
Когда загрузится установленная система загрузчик можно заново установить штатными средствами - командой '''grub-install''', например, '''grub-install '(hd0)''''
==Ссылки==
* [http://www.gnu.org/software/grub/manual/grub.html#Troubleshooting Ошибки GRUB]


[[Category:Администрирование]]
[[Category:Администрирование]]

Текущая версия на 11:17, 30 апреля 2010

GRUB 1

  1. Загружаемся с live-cd/flash/другой системы

Вариант 1

Простая конфигурация, софт той же версии (используются конфиги live-системы?)

  1. Выполняем grub-mkdevicemap
  2. Смотрим /boot/grub/device.map, узнаем как называется наш винчестер в grub-формате, допустим, (hd2)
  3. Выполняем grub-install "(hd2)" для установки GRUB в MBR указанного диска.

Вариант 2

Для более сложных конфигураций (например, с отдельным /boot), софт той же версии

  1. Выполняем grub-mkdevicemap
  2. Смотрим /boot/grub/device.map, узнаем как называется наш винчестер в grub-формате, допустим, (hd2), а /boot тогда, допустим, будет (hd2,0) (не забываем, что нумерация разделов идет с нуля)
  3. Запускам grub
  4. В консоли GRUB'a вводим root номер_/boot-раздела, т.е. root (hd2,0) для примера выше - этим мы указываем, где у нас лежит каталог GRUB'a.
    Примечание: номера разделов обычно дополняются по Tab'у, пользуйтесь им чаще
  5. Там же вводим setup номер_раздела/диска, т.е., setup (hd2) для примера выше - этим мы указываем, на какой диск или раздел мы ставим загрузчик. При указании раздела (например, (hd2,2)) - GRUB ставится в загрузочную запись этого раздела и должен потом вызываться чем-то еще, если указываем целый диск - то GRUB ставится в MBR (обычно этот вариант и нужен). Должен пробежать текст примерно такого вида:
grub> root (hd2,0)
 Filesystem type is reiserfs, partition type 0x83

grub> setup (hd2)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/reiserfs_stage1_5" exists... yes
 Running "embed /grub/reiserfs_stage1_5 (hd2)"...  21 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd2) (hd2)1+21 p (hd2,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.

Установка завершена, наберите quit и перезагрузите систему.

Вариант 3

Самый полный и сложный, создание модели системы и chroot в нее для выполнения операций - полностью используются утилиты, библиотеки и конфиги восстанавливаемой системы

  1. Создаем точку монтирования для корневой ФС восстанавливаемой системы, допустим, /tmp/system
  2. Монтируем в нее корень восстанавливаемой системы.
  3. Монтируем при необходимости /boot внутри смонтированного корня (если /boot был на отдельном разделе)
  4. Монтируем /dev/ и /proc/ внутри смонтированного корня (соответственно, mount -t proc none /tmp/system/proc/ и mount -o bind /dev/ /tmp/system/dev/)
  5. Выполняем grub-mkdevicemap
  6. Смотрим /boot/grub/device.map, узнаем, как называется наш винчестер в grub-формате, допустим, (hd2), а /boot тогда, допустим, будет (hd2,0) (не забываем, что нумерация разделов идет с нуля)
  7. Чрутимся в собранную систему - chroot /tmp/system
  8. Запускам grub
  9. В консоли GRUB'a вводим root номер_/boot-раздела, т.е. root (hd2,0) для примера выше - этим мы указываем, где у нас лежит каталог GRUB'a.
    Примечание: номера разделов обычно дополняются по Tab'у, пользуйтесь им чаще
  10. Там же вводим setup номер_раздела/диска, т.е., setup (hd2) для примера выше - этим мы указываем, на какой диск или раздел мы ставим загрузчик. При указании раздела (например, (hd2,2)) - GRUB ставится в загрузочную запись этого раздела и должен потом вызываться чем-то еще, если указываем целый диск - то GRUB ставится в MBR (обычно этот вариант и нужен). Должен пробежать текст примерно такого вида:
grub> root (hd2,0)
 Filesystem type is reiserfs, partition type 0x83

grub> setup (hd2)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/reiserfs_stage1_5" exists... yes
 Running "embed /grub/reiserfs_stage1_5 (hd2)"...  21 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd2) (hd2)1+21 p (hd2,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.

Установка завершена, наберите quit, выйдите с chroot'a (Ctrl+d) и перезагрузите систему.

GRUB 2

Для восстановления GRUB 2 можно загрузиться с любого live-cd/Flash-дистрибутива, где используется GRUB 2 (у меня, например, на флешке установлен обычный Debian, где в качестве загрузчика используется GRUB 2), после появления меню надо нажать "c" для перехода в командную строку, а потом проделать все те шаги, которые обычно выполняет загрузчик:

  • указать корень командой root, например, root (hd1,1). Нумерация разделов идет с 1, пользуемся табуляцией для определения нужного диска. Корень указывается для загрузчика, а не системы, т.е. указывается /boot-раздел!
  • указать ядро и параметры командой linux, например, linux /vmlinuz-2.6.34 vga=791 root=/dev/sda2 - так, как оно было в установленной системе
  • при необходимости указать initrd командой initrd, например, initrd /initrd.img-2.6.34
  • загрузить все вышеперечисленное командой boot

Когда загрузится установленная система загрузчик можно заново установить штатными средствами - командой grub-install, например, grub-install '(hd0)'

Ссылки