Linux: восстановление и обновление загрузчика GRUB в MBR

Автор: | 18/02/2013

linux-logoКак известно, Windows до 8-ой версии при установке прописывает свой собственный загрузчик в MBR (Master Boot Record), при этом затирая всё, что там находилось. В 8-ой версии Windows компания Microsoft наконец-то исправила ситуацию – загрузчик Windows 8 даже определил раздел с FreeBSD на диске домашнего компьютера и добавил его в меню выбора.

Если Windows была установлена после Linux и затёрла GRUB – его можно переустановить заново.

Для этого – загружаемся в любого LiveCD, и открываем консоль. Теперь – нам надо определить, какой раздел нашего Linux (в данном примере – Ubuntu 12.04) на каком разделе жёсткого диска находится. Выполняем:

[simterm]

$ sudo fdisk -l

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   204802047   102297600    7  HPFS/NTFS/exFAT
/dev/sda4       204804094   976771071   385983489    f  W95 Ext’d (LBA)
/dev/sda5       307204096   976771071   334783488    7  HPFS/NTFS/exFAT
/dev/sda6       298889216   307195903     4153344   82  Linux swap / Solaris
/dev/sda7       204804096   298887167    47041536   83  Linux

[/simterm]

Нас интересует раздел /dev/sda7.

Можно посмотреть дополнительную информацию о разделе:

[simterm]

$ sudo file -s /dev/sda7
/dev/sda7: Linux rev 1.0 ext4 filesystem data, UUID=a4d78810-6ad1-4d43-993d-10408072ef29 (needs journal recovery) (extents) (large files) (huge files)

[/simterm]

Примонтируем его:

[simterm]

$ sudo mount /dev/sda7 /mnt

[/simterm]

Теперь можно установить заново загрузчик, т.е. прописать его заново в раздел MBR, вместо загрузчика Windows:

[simterm]

$ sudo grub-install –root-directory=/mnt /dev/sda

[/simterm]

Теперь можно перезагружаться, и пользоваться нормальным загрузчиком.

В случае, если GRUB надо только обновить, а не устанавливать заново (например – после установки ещё одной операционной системы на диск) – выполняем:

[simterm]

$ sudo update-grub –output=/mnt/boot/grub/grub.cfg

[/simterm]