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
А у меня 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…
Назар, переустанавливать Ubuntu нет необходимости. Сделайте всё, как описано выше, только вместо sda1 укажите sda7. То есть:
sudo mount /dev/sda7 /mnt
sudo chroot /mnt
И, помимо этого, на всякий случай, еще выполните команду:
sudo update-grub
И потом:
sudo grub-install /dev/sda
Если и в этом случае не поможет – напишите, если есть какие-то ошибки во время выполения этих команд. Попробуем выяснить в чём причина.
Спасибо за помощь!!!
Я уже чуть было действительно не переустановил Ubuntu, но потом таки разобрался во всех этих командах и успешно восстановил GRUB2!
что-то не пойму, что я не так делаю:
набрал команду sudo fdisk -l
необходимый раздел оказался sdb1, но потома при попытке монтирования его по инструкции, выдал следующее:
mount: can’t find /dev/sdb1 in /etc/fstab or /etc/mtab
Перед
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
Обновил 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:/#
Подскажите в каком направлении искать?
Спасибо
Евгений,
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
Это должно будет решить вашу ситуацию.
а у меня когда пытаюсь монтировать на 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, поставил семерку
creed
команда которую ты используешь чтобы примонитировать диск должны быть такой sudo mount /dev/sda2 /mnt а ты наверняка водил такую sudo mount /dev/sda2
Команды:
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 тоже самое)
Как поправить?
Спасибо.
zhferum: Попробуйте решение из этой темы форума Ubuntu – http://forum.ubuntu.ru/index.php?topic=124986.0
После переустановки Windows пропал загрузчик.
Были выполнены команды:
sudo fdisk -1
sudo mount / dev / sda5/mnt
sudo grab -install – – root -directory = / mnt /dev / sda
И теперь отображаются только 4 строки, связанные с загрузкой Ubuntu.
Как восстановить строку загрузки Windows XP?
sch21, загрузите Ubuntu и там в командной строке введите:
sudo update-grub
Эта команда обновит список возможных для загрузки систем.
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:~$
Набрал 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
Непойму что я делаю неправильно?
У меня немного другая проблема, установила винду, восстановила загрузчик, как описывает товарищ в 5-м посте, теперь при загрузке linux есть, а винды нету. И где ее искать? Может кто сталкивался подскажите.
Спасибо!
Здравствуйте! У меня тоже убунту как и в 5 посте на sda6 и sda7. На какой монтировать?
Недостаточно информации для того, чтобы ответить на ваш вопрос. Для того чтобы ответить, дайте вывод команды:
sudo fdisk -l