How to Repair GRUB2

  • 6th day of Chaos, in the yold 3176
  • 18 Comments

You can easily restore GRUB2 from a Ubuntu live CD or USB drive.

English version of this page under construction. You can read automatic translation.


В ситуациях, когда из загрузочной области пропал загрузчик операционной системы GRUB (самый частый случай – установка/переустановка ОС Windows), его можно легко восстановить используя LiveCD системы Ubuntu. О том как это сделать и будет рассказано ниже.

Для начала потребуется загрузиться с обычного компакт-диска или USB-накопителя в LiveCD режиме (хотя загружать X Window System нет прямой необходимости, всё что нам потребуется – это командная строка) или с alternate-диска в режиме восстановления. В терминале вводим команду:

sudo fdisk -l

Эта команда выведет список имеющихся разделов. Среди них вам потребуется определить тот, на котором был Linux (системный раздел), в который будем устанавливать GRUB. Допустим, это будет /dev/sda1 (как правило, после sd буква отображает физический диск, а цифра – раздел на этом диске), во всех командах, что будут приведены ниже вам надо будет использовать имя именно вашего раздела. Потребуется примонтировать необходимый раздел в /mnt:

sudo mount /dev/sda1

Теперь перейдём в среду примонтированного раздела:

sudo chroot /mnt

И, наконец, установим GRUB:

sudo grub-install /dev/sda

(если вы монтировали, к примеру, раздел /dev/sdb1, то в последней команде необходимо указать диск /dev/sdb соответственно)

Это всё, GRUB установлен.

Если вам необходимо обновить конфигурацию загрузчика (если, например, была изменена структура в таблице разделов), то дополнительно введите команду:

sudo update-grub

  1. Назар says:

    А у меня GRUB2 слетел после того, как я переустановил Windows (перед этим после винды ставил Ubuntu 9.10), вот теперь кроме Windows не грузится ничего :’-(
    Делал, все как написано выше и ничего не получается, никак не могу его восстановить!
    Вот моя таблица разделов:
    dev/sda1 * 1 3824 30716248+ 7 HPFS/NTFS
    /dev/sda2 3825 38912 281844360 f W95 Ext’d (LBA)
    /dev/sda5 3825 21368 140922148+ 7 HPFS/NTFS
    /dev/sda6 21369 34561 105972741 7 HPFS/NTFS
    /dev/sda7 34562 38650 32844861 83 Linux
    /dev/sda8 38651 38912 2104483+ 82 Linux swap / Solaris
    Придется, наверное переустанавливать Ubuntu…

    • info says:

      Назар, переустанавливать Ubuntu нет необходимости. Сделайте всё, как описано выше, только вместо sda1 укажите sda7. То есть:

      sudo mount /dev/sda7 /mnt
      sudo chroot /mnt

      И, помимо этого, на всякий случай, еще выполните команду:

      sudo update-grub

      И потом:

      sudo grub-install /dev/sda

      Если и в этом случае не поможет – напишите, если есть какие-то ошибки во время выполения этих команд. Попробуем выяснить в чём причина.

  2. Назар says:

    Спасибо за помощь!!!
    Я уже чуть было действительно не переустановил Ubuntu, но потом таки разобрался во всех этих командах и успешно восстановил GRUB2!

  3. Александр says:

    что-то не пойму, что я не так делаю:
    набрал команду sudo fdisk -l
    необходимый раздел оказался sdb1, но потома при попытке монтирования его по инструкции, выдал следующее:
    mount: can’t find /dev/sdb1 in /etc/fstab or /etc/mtab

  4. Евгений says:

    Перед
    sudo chroot /mnt
    необходимо смонтировать и /proc командой
    mount -t proc none /mnt/proc
    а лучше и /dev командой
    mount -o bind /dev /mnt/dev
    И тогда ошибок типа mount: can’t find /dev/sdb1 in /etc/fstab or /etc/mtab не будет

    И того выходит
    sudo fdisk -l # для вывода списка известных разделов
    sudo mount /dev/sda7 /mnt #монтируем корень
    sudo mount -t proc none /mnt/proc # монтируем /proc
    sudo mount -o bind /dev /mnt/dev # монтируем /dev
    sudo chroot /mnt #делаем /mnt корнем
    sudo update-grub #обновляем список
    sudo grub-install /dev/sda #устанавливаем/восстанавливаем загрузчик

    выходим …
    exit
    umount /mnt/dev
    umount /mnt/proc
    umount /mnt
    reboot

  5. Евгений says:

    Обновил Ubuntu 9.10 до 10.04. При этом чтойт неправильно указал с установкой загрузчика. Теперь молчит так сказать. Сделал как описано выше, но выбивает ошибку при выполнении команды установки загрузчика. Вот мои разделы
    Устр-во Загр Начало Конец Блоки Id Система
    /dev/sdb1 * 1 25 200781 83 Linux
    /dev/sdb2 26 2794 22241992+ 7 HPFS/NTFS
    /dev/sdb3 2795 5005 17759857+ 5 Расширенный
    /dev/sdb5 2795 3708 7341673+ 83 Linux
    /dev/sdb6 3709 3839 1052226 82 Linux своп / Solaris
    /dev/sdb7 3840 5005 9365863+ 83 Linux

    Вот ошибка

    root@ubuntu:/# sudo grub-install /dev/sdb
    sudo: unable to resolve host ubuntu
    /usr/sbin/grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
    No path or device is specified.
    Try `/usr/sbin/grub-probe –help’ for more information.
    Auto-detection of a filesystem module failed.
    Please specify the module with the option `–modules’ explicitly.
    root@ubuntu:/#

    Подскажите в каком направлении искать?
    Спасибо

    • info says:

      Евгений,

      root@ubuntu:/# sudo grub-install /dev/sdb

      вот здесь, кстати, команда sudo не нужна, вы же уже под рутом.
      К этому моменту необходимый раздел уже примонтирован и вы находитесь на нем как на системном? Проверьте, не перепутали ли вы разделы при монтировании, у вас же 2 линукс раздела (sdb5 и sdb7), куда планируете устанавливать конфигурационные файлы груба.

      sudo: unable to resolve host ubuntu
      /usr/sbin/grub-probe: error: cannot find a device for /boot/grub (is /dev mounted?).
      No path or device is specified.
      Try `/usr/sbin/grub-probe –help’ for more information.
      Auto-detection of a filesystem module failed.
      Please specify the module with the option `–modules’ explicitly.
      root@ubuntu:/#

      После того как вы войдете в среду вашего раздела (chroot) – выполните команды что оставил ваш тезка выше, с правами супер-пользователя разумеется:

      mount -t proc none /mnt/proc
      mount -o bind /dev /mnt/dev

      Это должно будет решить вашу ситуацию.

  6. creed says:

    а у меня когда пытаюсь монтировать на sda2, выдает вот что:
    mount: can’t find /dev/sda2 in /etc/fstab or /etc/mtab

    вот моя таблица разделов:
    /dev/sda1 * 1 12971 104189526 7 HPFS/NTFS
    /dev/sda2 12972 60049 378154035 83 Linux
    /dev/sda3 60050 60802 6037505 5 Extended
    /dev/sda5 60050 60802 6037504 82 Linux swap / Solaris

    у меня убунту 10,4, поставил семерку

  7. MD says:

    creed
    команда которую ты используешь чтобы примонитировать диск должны быть такой sudo mount /dev/sda2 /mnt а ты наверняка водил такую sudo mount /dev/sda2

  8. zhferum says:

    Команды:

    sudo fdisk -l # для вывода списка известных разделов
    sudo mount /dev/sda5 /mnt #монтируем корень
    sudo mount -t proc none /mnt/proc # монтируем /proc
    sudo mount -o bind /dev /mnt/dev # монтируем /dev
    sudo chroot /mnt #делаем /mnt корнем
    sudo update-grub #обновляем список
    sudo grub-install /dev/sda #устанавливаем/восстанавливаем загрузчик
    Получаем ошибку:
    /usr/sbin/grub-setup: warn: Встраиваемая область необычно маленького размера. core.img не влезет в неё..
    /usr/sbin/grub-setup: warn: Встраивание невозможно. GRUB в данном случае только может быть установленным с помощью блокировок. Тем не менее, блокировки НЕНАДЁЖНЫ и их использование не рекоммендуется..
    /usr/sbin/grub-setup: error: если вы всё равно хотите использовать список блоков, укажите –force..
    ( с правами root тоже самое)
    Как поправить?
    Спасибо.

  9. sch21 says:

    После переустановки Windows пропал загрузчик.
    Были выполнены команды:

    sudo fdisk -1
    sudo mount / dev / sda5/mnt
    sudo grab -install – – root -directory = / mnt /dev / sda

    И теперь отображаются только 4 строки, связанные с загрузкой Ubuntu.
    Как восстановить строку загрузки Windows XP?

    • info says:

      sch21, загрузите Ubuntu и там в командной строке введите:

      sudo update-grub

      Эта команда обновит список возможных для загрузки систем.

  10. ascold says:

    To run a command as administrator (user “root”), use “sudo “.
    See “man sudo_root” for details.

    ubuntu@ubuntu:~$ sudo fdisk -1
    fdisk: неверный ключ — «1»

    Usage: fdisk [-b SSZ] [-u] DISK Change partition table
    fdisk -l [-b SSZ] [-u] DISK List partition table(s)
    fdisk -s PARTITION Give partition size(s) in blocks
    fdisk -v Give fdisk version
    Here DISK is something like /dev/hdb or /dev/sda
    and PARTITION is something like /dev/hda7
    -u: give Start and End in sector (instead of cylinder) units
    -b 2048: (for certain MO disks) use 2048-byte sectors
    ubuntu@ubuntu:~$

  11. ascold says:

    Набрал sudo fdisk
    ubuntu@ubuntu:~$ sudo fdisk -1
    fdisk: неверный ключ — «1»

    Usage: fdisk [-b SSZ] [-u] DISK Change partition table
    fdisk -l [-b SSZ] [-u] DISK List partition table(s)
    fdisk -s PARTITION Give partition size(s) in blocks
    fdisk -v Give fdisk version
    Here DISK is something like /dev/hdb or /dev/sda
    and PARTITION is something like /dev/hda7
    -u: give Start and End in sector (instead of cylinder) units
    -b 2048: (for certain MO disks) use 2048-byte sectors

    Набрал sudo fdisk -l

    ubuntu@ubuntu:~$ sudo fdisk -l

    Диск /dev/sda: 500.1 ГБ, 500107862016 байт
    255 heads, 63 sectors/track, 60801 cylinders
    Units = цилиндры of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x000c60fa

    Устр-во Загр Начало Конец Блоки Id Система
    /dev/sda1 * 1 6374 51199123+ 7 HPFS/NTFS
    /dev/sda2 6375 60800 437176845 f W95 расшир. (LBA)
    /dev/sda5 6375 58642 419842678+ 83 Linux
    /dev/sda6 58643 59917 10241406 83 Linux
    /dev/sda7 59918 60312 3172806 83 Linux
    /dev/sda8 60313 60800 3919828+ 82 Linux своп / Solaris

    В моем случае sda6 выдает:

    ubuntu@ubuntu:~$ sudo mount /dev/sda6
    mount: невозможно найти /dev/sda6 в /etc/fstab или /etc/mtab
    ubuntu@ubuntu:~$ sudo mount /dev/sda7/
    mount: невозможно найти /dev/sda7/ в /etc/fstab или /etc/mtab
    ubuntu@ubuntu:~$ sudo mount /dev/sda5
    mount: невозможно найти /dev/sda5 в /etc/fstab или /etc/mtab

    Непойму что я делаю неправильно?

  12. Arri says:

    У меня немного другая проблема, установила винду, восстановила загрузчик, как описывает товарищ в 5-м посте, теперь при загрузке linux есть, а винды нету. И где ее искать? Может кто сталкивался подскажите.
    Спасибо!

  13. Евгений says:

    Здравствуйте! У меня тоже убунту как и в 5 посте на sda6 и sda7. На какой монтировать?

    • info says:

      Недостаточно информации для того, чтобы ответить на ваш вопрос. Для того чтобы ответить, дайте вывод команды:
      sudo fdisk -l

Leave a Comment

Your email address will not be published. Required fields are marked *