LINUX.ORG.RU

grub: загрузка с hda и sda


0

1

В системе 4 винта (1xPATA + 3xSATA), из них три - загрузочных. Один с Linux (sdc), один с WinXP (hda) и один с WinSeven (sdb).

Если в BIOS выбирать по отдельности каждый загрузочный винт - загрузка проходит отлично. В Linux все винты тоже монтируются прекрасно.

Задача - сделать возможность из grub, установленного в sdc возможность грузить все три системы. Пока стояли только SATA, то вопрос даже не возникал. (hd0,0) - загрузка Linux, (hd1,0) - Seven:

title=Linux
    root (hd0,0)
    kernel ...

...

title=Windows Seven
    rootnoverify (hd1,0)
    makeactive
    chainloader +1

А вот с загрузкой XP после установки PATA - никак не выходит каменный цветочек. Редактирую при загрузке grub'а винты. Получается: (hd1,0) - ничего не грузится. (hd2,0) - грузится Windows Seven (hd3,0) - грузится Windows Seven(!) все остальные - вариант - «диск не найден»

В /boot/grub/device.map прописано:

(hd0)   /dev/sdc
(hd1)   /dev/hda
(hd2)   /dev/sda
(hd3)   /dev/sdb

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

Есть мысли, куда копать?

★★★★★

Уточнение - «все винды» ставились отдельно, с отключёнными другими HDD (иначе Seven у меня, например, отказывалась вставать на вторичный HDD).

Второе уточнение - винды из Grub теперь не грузятся даже Seven :) Походу, когда при загрузке винда стоит на одном из вторичных винтов, то загрузчик, в котором прописывается жёсткое распределение винтов (multi(0)disk(0)rdisk(0)partition(1)...) обламывается.

В Windows XP, как я понимаю, можно делу помочь, подправив boot.ini

А вот у Seven с этим вообще непонятно что к чему. Для загрузки она у себя отдельный раздел сделала, где всё, походу, бинарное... С другой стороны, она у меня грузилась раньше не с первичного винта. Сейчас же виндовый загрузчик вызывается, но при выборе в нём пункта Windows Seven оно матерится, что не нашло диск.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Для загрузки она у себя отдельный раздел сделала, где всё, походу, бинарное...

У семёрочки тоже как и у икспи используется boot.ini.

xcreatepixmap ()
Ответ на: комментарий от xcreatepixmap

У семёрочки тоже как и у икспи используется boot.ini.

Нет такого нигде.

$ ls -l /data/win7-boot
итого 556
drwxrwxrwx 1 root root   4096 Мар 10  2010 Boot
-rw-rw-rw- 1 root root 383562 Июл 14  2009 bootmgr
-rw-rw-rw- 1 root root   8192 Мар 10  2010 BOOTSECT.BAK
-rw-rw-rw- 1 root root 171136 Авг  2  2009 grldr
drwxrwxrwx 1 root root      0 Окт  4 11:31 System Volume Information

$ ls -l /data/win7
итого 3668602
-rw-rw-rw- 1 root root         24 Июн 11  2009 autoexec.bat
-rw-rw-rw- 1 root root         10 Июн 11  2009 config.sys
lrwxrwxrwx 2 root root         60 Июл 14  2009 Documents and Settings -> /data/win7/Users
-rw-rw-rw- 1 root root 1609961472 Окт  4 11:17 hiberfil.sys
drwxrwxrwx 1 root root          0 Мар  9  2010 NVIDIA
-rw-rw-rw- 1 root root 2146619392 Окт  4 11:17 pagefile.sys
drwxrwxrwx 1 root root          0 Июл 14  2009 PerfLogs
drwxrwxrwx 1 root root       4096 Май 29 14:27 ProgramData
drwxrwxrwx 1 root root      12288 Сен  2 13:04 Program Files
drwxrwxrwx 1 root root          0 Мар  9  2010 Recovery
drwxrwxrwx 1 root root          0 Мар  9  2010 $Recycle.Bin
-rw-rw-rw- 1 root root          6 Окт  4 12:16 SEVEN
drwxrwxrwx 1 root root      20480 Сен 22 18:50 System Volume Information
drwxrwxrwx 1 root root          0 Мар 31  2010 tmp
drwxrwxrwx 1 root root       4096 Мар  9  2010 Users
drwxrwxrwx 1 root root          0 Мар  9  2010 usr
drwxrwxrwx 1 root root      24576 Сен  2 13:13 Windows
KRoN73 ★★★★★ ()

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

Неправильное впечатление, он не игнорируется, он используется при grub-install автоматом, а если ставишь из grub-shell, то нужно указывать явно аргументом: grub --device-map=/path/to/device.map. Таким образом груб понимает, куда ставить, если ты напишешь setup (hd0). То есть в твоем случает он поставить на /dev/hdc (биос ведь из линукса недоступен, и груб не может знать, что такое (hd0))

А вообще, все путаницы с грубом обычно из-за путаниц с биосом. Грубовские имена (hd0) - это на самом деле биосовские идентификаторы для int 13h - 0x80 и т.д. Их даже можно так и указывать, вместо hd0. Так вот - основная проблема обычно в том, что совершенно непонятно, как биос захочет пронумеровать диски на буте, по моему опыту, обычно тот, с которого грузишься будет 0x80, то есть (hd0), и то не факт, а с остальными - полная рулетка.

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

vga ★★ ()
Ответ на: комментарий от vga

В том-то и проблема, что grub грузится, но hd разных вариантов - нет.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

А вспомнил. У семёрки свой загрузчик. Редактируется с помощью BCDEDIT.exe.

xcreatepixmap ()

Копать надо в землю. И желательно отрастить новые руки =)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.