Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Старый Grub лучше новых двух!

Алексей Дмитриев, декабрь 2013

Вот ведь незадача, устанавливал новую Федору, и установил в принудительном порядке новый Grub2.
Нельзя сказать, что это такая уж неприятность, но когда у вас около десяти операционных систем на одном диске, и они постоянно удаляются-переустанавливаются, то намного проще иметь загрузчик только на одной из них, и с него загружать все остальные.
А так как старый добрый Grub Legacy на порядок проще конфигурировать, то он мне и служит уже верой и правдой много лет, и менять я его пока не собираюсь.

Надо восстанавливать.

Проще всего иметь копию MBR и сразу после перезаписи его восстанавливать в первобытное состояние.

Напомню как это сделать:

# dd if=/dev/sda of=MBR.copy bs=512 count=1

После этого у вас появится в домашней директории файл MBR.copy (если, конечно, вы использовали команду su, а не -su).

# dd if=MBR.copy of=/dev/sda bs=512 count=1

А обратной командой восстанавливается старый MBR.

Но, пока гром не грянет, мужик, как правило, не перекрестится... Так что нужно заново устанавливать старый Grub 0.97 (Grub Legacy).

Сделать это несложно, несмотря на то, что в репозиториях современных дистрибутивов его не найти. (Странной кажется мне поспешность, с которой нынешние заправилы расправляются с заслуженными и вполне работоспособными программами. Забыли про свободу выбора, забыли...)

Дело в том, что для работы Grub Legacy вовсе не нужно иметь установленный его пакет. Так же точно, совершенно неважно, установлен ли у вас Grub2. Достаточно разместить файл stage2 в директории /boot/grub, а файл stage1 поместить в MBR, как все заработает (нужны еще кое-какие файлы, не стану их описывать, ведь не будем же мы это делать вручную).

Источником Grub Legacy послужит любой дистрибутив Linux нескольколетней давности, я с успехом использовал Fedora 15. Важно лишь, чтобы он содержал Grub 0.97 и был способен монтировать вашу файловую систему.

Запускаем Live-CD (или флешку) и приступаем.

Открываем консоль, и выполняем команду:

# mount -t ext4 /dev/sdaX  /mnt

Этим мы примонтируем в директорию /mnt нужный нам раздел (в котором расположен нужный дистрибутив). Имеется в виду, что это раздел sdaX и он имеет файловую систему ext4.

Можно, разумеется, примонтировать стандартными графическими методами, но тогда нужно будет указывать длинный путь к этой директории, вместо лаконичного /mnt.

# grub-install /dev/sda --root-directory=/mnt

Этим мы устанавливаем stage1 загрузчика в MBR диска /dev/sda, а все необходимые для его работы файлы - в директорию /mnt (то есть, фактически, в /dev/sdaX).

Останется вручную создать (если нет), или отредактировать (если есть) файл /boot/grub/grub.conf. Не спутайте с grub.cfg - это файл Grub'а 2!

Правила заполнения этого файла излагать смысла нет. Приведу как образец свой файл с соответствующими пометками.

########################################################

default=3
timeout=4
splashimage=(hd0,7)/boot/grub/fedora.xpm.gz
#hiddenmenu

#########################################################

title Vista
	rootnoverify (hd0,1)
	chainloader +1

#########################################################

title Fedora19 /dev/sda3
	root (hd0,2)
	kernel /boot/vmlinuz-3.9.5-301.fc19.i686 ro root=/dev/sda3 ro quiet
	initrd /boot/initramfs-3.9.5-301.fc19.i686.img

#################################################

title	Ubuntu 12.04
	root		(hd0,5)
	kernel		/boot/vmlinuz-3.2.0-49-generic-pae root=/dev/sda6 ro quiet
	initrd		/boot/initrd.img-3.2.0-49-generic-pae

############################################################

title	Fedora17
	root (hd0,7)
	kernel	/boot/vmlinuz-3.9.10-100.fc17.i686.PAE root=/dev/sda8 ro quiet 
	initrd		/boot/initramfs-3.9.10-100.fc17.i686.PAE.img

##############################################################

title	Ubuntu 13.10
	root (hd0,4)
	kernel	/boot/vmlinuz-3.11.0-13-generic root=UUID=00888b4d-8e80-4185-b991-434594ed951f ro   quiet
	
	initrd		/boot/initrd.img-3.11.0-13-generic

#################################################################

  • default=3 - это порядковый номер операционки в данном списке, загружаемый по умолчанию (считая с нуля).
  • timeout=4 - время задержки начала загрузки в секундах.
  • splashimage=(hd0,7)/boot/grub/fedora.xpm.gz - картинка для меню, загружается в таком формате из интернета.
  • (hd0,7) - это первый жесткий диск, его восьмой раздел /dev/sda8 (считаем с нуля).
  • Знаком # можно закомментировать ненужное.

Все, можно перезагружаться с новым старым Grub'ом.

Если же у вас уже стоял Grub Legacy в качестве загрузчика, и вы просто перезаписали MBR (например устанавливая Windows), то можно восстановить его иначе (не нужно ничего примонтировать).

Загрузитесь с Live-CD, содержащего Grub 0.97.

В консоли запустите Grub shell командой:

# grub

Появится приглашение Grub shell, в котором вы наберете:

grub > root (hd0,X)

Этим вы укажете рабочий раздел (то есть раздел, содержащий stage2). Это обязательно.Потом вторую команду:

grub > setup (hd0)

То есть укажете на MBR. (Вообще говоря, можно указать любой раздел жесткого диска и stage1 будет туда установлена).

И все!

Ваш старый Груб будет работать лучше нового!

И рекурсивно.