Grub для новичка (принцип работы)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

zl3p
Сообщения: 206
Статус: с диагнозом
ОС: операционная клинической

Grub для новичка

Сообщение zl3p »

Похоже, я опять всё напутал -)
У меня на диске hdb уже стоял grub от suse, который загружал только её и виндовс. Мне нужно было добавить в список ещё и mandriva. Дело в том, что lilo грузить ядро suse (а также fedore) напрочь не хочет (скорее всего из-за того, что я не правильно это делаю). Но в любом случае пришлось разбираться с тем, как работает grub.
Что делал я:
1) добавил необходимый пункт в список menu.lst;
2) перезаписал grub в mbr командой (здесь я действовал по аналогии с lilo):
install (hd0,13)/boot/grub/stage1 (hd0) (hd0,13)/boot/grub/stage2 p (hd0,13)/boot/grub/menu.lst
Потом я понял, что 2-ой пунки выполнял напрасно, ибо после него вместо красивого меню с выбором ОС, при загрузке у меня появилась лишь надпись: "grub>"
К счатью, я уже был в состоянии загрузить от сюда ОС, но у меня осталось несколько вопросов.

1. Нужно ли было выполнять пункт №2 для перезаписи загрузчика grub в mbr, т.е. так, как это делается с lilo? Теперь мне кажется, что нет. Значит, на сколько я понимаю, дело обстоит так: при загрузке компа биос передаёт управление grub`у в mbr, который читает с диска меню menu.lst и выводит его на экран. Дальнейшие действия очевидны.
2. Как вернуть себе графическое (или текстовое) меню?
3. Почему винчестер hdb, когда он подключен всего один, в грабе нумеруется как hd0, а не hdb1? Дело в том, что винт hda я часто отключаю. Не факт, конечно, но возможно, это может вызвать некоторые проблемы с загрузкой.

Собственно, мой файл /boot/grub/menu.lst (на hdb14), если он имеет значение:

# Modified by YaST2. Last modification on Птн Июн 1 18:53:18 UTC 2007

color white/blue black/light-gray
default 0
timeout 8
gfxmenu (hd0,13)/boot/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE LINUX 9.3
kernel (hd0,13)/boot/vmlinuz root=/dev/hdb14 vga=0x317 selinux=0 splash=silent resume=/dev/hdb13 showopts
initrd (hd0,13)/boot/initrd

###Don't change this comment - YaST2 identifier: Original name: xen###
title XEN
kernel (hd0,13)/boot/xen.gz dom0_mem=458752
module (hd0,13)/boot/vmlinuz2-xen root=/dev/hdb14 vga=0x317 selinux=0 splash=silent resume=/dev/hdb13 showopts
module (hd0,13)/boot/initrd-xen

###Don't change this comment - YaST2 identifier: Original name: windows###
title Windows
root (hd0,0)
chainloader +1

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe
kernel (hd0,13)/boot/vmlinuz root=/dev/hdb14 showopts ide=nodma apm=off acpi=off vga=normal noresume selinux=0 barrier=off nosmp noapic maxcpus=0 3
initrd (hd0,13)/boot/initrd

###Don't change this comment - YaST2 identifier: Original name: memtest86###
title Memory Test
kernel (hd0,13)/boot/memtest.bin

### Mandriva on hdb11 = hd0,10
title Mandriva-2
kernel (hd0,10)/mnt/hdb11/boot/vmlinuz root=/dev/hdb11
initrd (hd0,10)/mnt/hdb11/boot/initrd
Спасибо сказали:
math
Сообщения: 298
Статус: Ъ участник
ОС: Artix (= Arch without systemd)

Re: Grub для новичка

Сообщение math »

Да, в отличие от Лило, Груб после изменения меню перезаписывать не надо
Что касается нумерации, то Груб нумерует жесткие диски от нуля и только жесткие диски (даже CD/DVD не считаются)
Восстановить меню, как японимаю, можно так:
# grub
> root (hd0, 13)
> install (hd0)
>exit

Кстати в разделе загрузки Винды лучше вместо root написать rootnoverify
Спасибо сказали:
zl3p
Сообщения: 206
Статус: с диагнозом
ОС: операционная клинической

Re: Grub для новичка

Сообщение zl3p »

Какая-то ошибка...

> root (hd0, 13)
Filesystem type is ext2fs,partition type 0x83
> install (hd0)
Error 1: Filename must be either an absolute pathname or blocklist
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Grub для новичка

Сообщение alv »

Раз уж речь зашла о принципах работы, то они таковы:
1) изагружаете через GRUB то, что надо в интерактивном режиме - у него есть нечто вроде собственного шелла, в котором работает автодополнение, так что рано или поздно перебором вариантов Вы этого добъетесь;
2) записываете или запоминаете, как именно Вы это загрузили;
3) в соответствие с этим редактируете конфиг GRUB'а;
PS переустанавливать GRUB после изменения конфига не нужно (и может быть даже вредно :) )
Спасибо сказали:
zl3p
Сообщения: 206
Статус: с диагнозом
ОС: операционная клинической

Re: Grub для новичка

Сообщение zl3p »

проблема лишь в том, что у меня не отображается меню выбора ОС, а каждый раз вводить параметры ядра...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Grub для новичка

Сообщение sash-kan »

zl3p,
math писал(а):
06.06.2007 01:24
install (hd0)
согласно http://www.gnu.org/software/grub/manual/ht...ll.html#install этого явно недостаточно.
вот это
zl3p писал(а):
06.06.2007 01:14
install (hd0,13)/boot/grub/stage1 (hd0) (hd0,13)/boot/grub/stage2 p (hd0,13)/boot/grub/menu.lst
ближе к телу.
правильность указания дисков/путей/файлов можно проверить командой find ( http://www.gnu.org/software/grub/manual/ht.../find.html#find ).
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Grub для новичка

Сообщение sergio »

вместо красивого меню с выбором ОС, при загрузке у меня появилась лишь надпись: "grub>"

Надо догадываться, Груб не подобрал свое меню. В силу чего-то.

Но начнем вот откуда:
3. Почему винчестер hdb, когда он подключен всего один, в грабе нумеруется как hd0, а не hdb1? Дело в том, что винт hda я часто отключаю. Не факт, конечно, но возможно, это может вызвать некоторые проблемы с загрузкой.

Это может вызвать проблемы не только с загрузкой, но и с остальным. :angry:
Груб использует порядок дисков от биоса - если "первого" нет, то естественно первым останется тот, который остался. :rolleyes:
Соответственно, аналогично изменятся и все /dev/hdXX в линуксах. Наверное это можно объехать через управление devfs с новой нотацией /interface_type/bus/device/чего-то-еще, но тут я пас. Но это только линукс, к Грубу это не относится.
-->> вывод: переставить диски так, чтобы тот, что снимается, был последним по порядку в биос.

> root (hd0, 13)
Filesystem type is ext2fs,partition type 0x83
> install (hd0)
Error 1: Filename must be either an absolute pathname or blocklist

setup (hd0), если не ошибаюсь (?)
Но как уже сказали, это здесь не было нужно делать, только править меню. И поставить диски в биос в нормальном порядке, чтобы они не прыгали...

[UPD]
Мда, если поставите диски в нормальном порядке в биос, то ессесно придется править меню груба под новый порядок, и грузиться Single-ом во все линуксы править fstab...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
zl3p
Сообщения: 206
Статус: с диагнозом
ОС: операционная клинической

Re: Grub для новичка

Сообщение zl3p »

Ура, свою проблему с МЕНЮ я решил! Причина была в том, что в пути к файлу меню я умудрился каким-то образом вставить лишний пробел.
Grub - штука действительно мощная. Хотя, скорое всего, я буду продолжать пользоваться Lilo, т.к. сегодня же научился с её помощью загружать и suse. До сих пор я просто-напросто не обращал внимания на пункт initrd в конфигах лило(!), и, как следствие, не мог загрузить другие ОС.
Спасибо сказали: