LinuxForum.Fans
Тема

Как подключить линуксовый раздел (на выделенном диске) к загрузчику NT

Автор: AlOks 34 сообщений 6674 просмотров
#234781

Имеется:
В компе 2 винта, на одном стоит Windows XP, на другом Linux (OpenSuse 11.4).
Линукс в свое время установил, предварительно отключив виндовый диск, чтобы никакие MBR не затирались, т. к. основной системой до сих пор остается винда, линукс был "для баловства", когда требуется - в биосе меняю очередность винтов и запускаю Линукс.

И вот уже начинаю привыкать к Suse, "баловство" потихоньку перерастает в интерес, а переключаться всякий раз на линукс через биос становится не удобно.

Задался вопросом, как добавить в nt loader пункт для загрузки линукс, прочитал все темы, содержащие "загрузку линукс через загрузчик windows", но они, насколько я понимаю, предполагают, что винда и линукс устанавливаются при неизменной последовательности винтов в системе, а у меня получается что они меняются местами.
При этом, всё таки, для меня важна загрузка через nt loader, а не grub!
Посоветуйте пожалуйста, как это сделать

#234802

геморрой ваш конфиг. обе системы на один диск! файлопомойку- на другой!
радикально, но идеально smile

#234819

А по-моему очень удобно, пока еще не дорос до радикальных мер и винда, в принципе, устраивает.
И неужели такую конфигурацию под один лоадер никак не подцепить ?

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

#234821

Стоп, вы меняете диски в биосе, то есть в один момент времени у вас либо не доступны или отдельный диск с виндовс или так же с линукс.
Так?
Или просто туда-сюда не поими зачем тасуете, при этом оба видны и в линуксе и в виндовс.

Но так понимаю хотите без перетасовок видеть оба диска и загрузчиком будет NTloader -> тогда не вижу проблем с приведенными выше ссылками, менять диски туда-сюда то уже не придется.

#234822

AlOks,
ntldr и подсунутый ему загрузочный сектор решают одну задачу -- передача управления загрузчику. Для LILO проблемы никакой нет, он в 512 байт влезает целиком, второй HDD от первого отличается только кодом 0x80 и 0x81.
А с GRUB, увы, не пробовал, не могу точно сказать.

#234823
AlOks написал:
И неужели такую конфигурацию под один лоадер никак не подцепить ?

пробуйте. но по "разборам полетов" многие не справляются с таким конфигом. Дуалбут вообще хрень, если уж озвучивать мое мнение- проще виртуалку использовать. Да, без игрушек. This is SPARTA!!! :lol:

#234824

AlOks,
с другой стороны, может оказаться намного проще оставить в BIOS загрузку со второго HDD с Linux-ом, а в конфиг GRUB-а дописать загрузку Windows с первого HDD.

ps. Посмотрите в документации на свой BIOS, возможно у него есть клавиша для выбора загрузочного устройства при обычной загрузке, без необходимости запуска самой BIOS Setup Utility. Обычно бывает F8, F11, F12 или что-то наподобие того. В таком варианте вам меню BIOS заменит меню загрузчика более чем полностью.

#234986
bormant написал:
AlOks,
с другой стороны, может оказаться намного проще оставить в BIOS загрузку со второго HDD с Linux-ом, а в конфиг GRUB-а дописать загрузку Windows с первого HDD.

У меня так и есть, любая система может загружаться из GRUB-а (если первичным в биосе выставлен линуксовый диск).
Но в том то и дело, что такая мультизагрузка меня не устраивает, когда систему ты можешь вибирать только в момент перезагрузки. На самом деле у меня на виндовом диске 3 винды: XP, XP 64 и Win7, и выбираю я ту, с какой стартовать при следующей перезагрузке путем выбора активного раздела командой diskpart (каждая из этих систем стоит на Primary разделе винта). И такой способ выбора операционной системы куда удобнее, чем перезагружать комп и сидеть ждать когда выйдет меню загрузчика с вариантами, и если пропустил этот момент - перезагружаться вновь. Это некое подобие PQboot из раннего Partition Magic, которым было очень удобно пользоваться.

Вот я и подумал, если создать еще один Primary раздел на основном винте (где все винды стоят), и поместить туда bootsect.lnx, можно будет точно также загружать линукс путём переключения активного раздела.

#235033

AlOks,
стало быть, загрузчик от 7-ки, а не ntldr, так?
Далее, несмотря на то, что идея понятна, не совсем понятна реализация, по крайней мере до тех пор, пока отлельный /boot или / не будут на разделе 1-го hdd.

#235037

То есть при работе сегодня в Linux Вы на завтра делаете активным разделом допустим Win64, ( если я Вас правильно понял), потом когда завтра наступило стартуете с него? Не проще ли поставить в первый SATA разъем диск с Linux, объявить его загрузочным в BIOS, потом загрузиться в Linux , и обновить конфигурацию загрузчика(остальные диски могут быть включены в произвольно-доступные разъемы SATA) . Тогда при старте системы (физическом включении компьютера) Вы будете видеть весь список доступных к загрузке систем.

#235042

AlOks,

для определённости подытожу вашу текущую ситуацию.

В MBR первого жёсткого диска (hd0) установлена загрузочная запись от Windows. Её особенностью является то, что она передаёт управлению загрузчику активного раздела.

На (hd0,1), (hd0,2), (hd0,3) установлены WinXP, WinXPx64, Win7.
Выбор загружаемой системы производится переключением активного раздела:
> diskpart
> select disk=0
> select partition=n
> active
> exit

Для продолжения загрузки системы с раздела используется родной загрузчик установленной на разделе системы: ntldr, ntldr64, bootmgr. Возможность выбора загружаемой системы через меню загрузчика не используется.

AlOks написал:
Вот я и подумал, если создать еще один Primary раздел на основном винте (где все винды стоят), и поместить туда bootsect.lnx, можно будет точно также загружать линукс путём переключения активного раздела.

Если MBR от Windows умел бы загружать с активного раздела что-либо кроме Windows, то сценарий имел бы право на жизнь. Если правильно путаю, таким умением он не обладает(*), это умеют делать ntldr, bootmgr, но об этом позже.
Кроме того, нужно убедиться, что Windows7 при установке не создала отдельный 100Мб скрытый primary раздел под собственный boot. Если подобное произошло, то лимит первичных разделов (4 шт.) исчерпан.

Для реализации задуманного потребуется такой код в MBR, который умеет грузить с активного раздела не только Windows, но и Linux. При наличии такого MBR на 4-й раздел нужно будет вынести /boot -- отдельный или с корнем вместе -- неважно, зависит от личных предпочтений. Загрузчик Linux будет получать управление от MBR, грузить со своего раздела ядро, передавая ему параметры, в том числе корневой раздел.

Далее. Все варианты с загрузочным сектором в виде файла, по типу упомянутого выше BOOTSECT.LNX или любого другого, имя не принципиально, отрабатывают ровно на один уровень позже, вторичными загрузчиками ntldr или bootmgr, то есть уже после начала загрузки с активного раздела, смена варианта загрузки производится не выбором активного раздела, а записью в настройках загрузчика (boot.ini для ntldr и реестроподобная бинарная структура для bootmgr). Эти варианты не отличаются от варианта с использованием в качестве такого загрузчика GRUB/GRUB-legacy, поскольку выбор всё равно придётся осуществлять правкой конфига, а не выбором раздела, а конфиг bootmgr из Линукса, если правильно путаю, править нечем.

(*) Возможно случилось чудо и MBR от MS в свежих версиях (Vista/Seven) научился грузить не-Windows загрузчики раздела, нужно проверить.

#235044

bormant,

(*) Возможно случилось чудо и MBR от MS в свежих версиях (Vista/Seven) научился грузить не-Windows загрузчики раздела, нужно проверить.

Такого чуда нет. Microsoft в упор не видит другие файловые системы, кроме: FAT16, FAT32, ExtFAT, NTFS, NTFS v2.0 :(

#235272
bormant написал:
AlOks,

для определённости подытожу вашу текущую ситуацию.

В MBR первого жёсткого диска (hd0) установлена загрузочная запись от Windows. Её особенностью является то, что она передаёт управлению загрузчику активного раздела.

На (hd0,1), (hd0,2), (hd0,3) установлены WinXP, WinXPx64, Win7.
Выбор загружаемой системы производится переключением активного раздела:
> diskpart
> select disk=0
> select partition=n
> active
> exit


Для продолжения загрузки системы с раздела используется родной загрузчик установленной на разделе системы: ntldr, ntldr64, bootmgr. Возможность выбора загружаемой системы через меню загрузчика не используется.

Всё именно так!

bormant написал:
AlOks,

Если MBR от Windows умел бы загружать с активного раздела что-либо кроме Windows, то сценарий имел бы право на жизнь. Если правильно путаю, таким умением он не обладает(*), это умеют делать ntldr...

Именно так и хочу сделать, через ntldr, почему, собственно, и тему начал "издалека".

bormant написал:
AlOks,
Кроме того, нужно убедиться, что Windows7 при установке не создала отдельный 100Мб скрытый primary раздел под собственный boot. Если подобное произошло, то лимит первичных разделов (4 шт.) исчерпан.

W7 на едином разделе, никаких скрытых primary нет (во всяком случае не "управление дисками" в администрировании ни Paragon их не показывает).

bormant написал:
AlOks,
Далее. Все варианты с загрузочным сектором в виде файла, по типу упомянутого выше BOOTSECT.LNX или любого другого, имя не принципиально, отрабатывают ровно на один уровень позже, вторичными загрузчиками ntldr или bootmgr, то есть уже после начала загрузки с активного раздела, смена варианта загрузки производится не выбором активного раздела, а записью в настройках загрузчика (boot.ini для ntldr и реестроподобная бинарная структура для bootmgr). Эти варианты не отличаются от варианта с использованием в качестве такого загрузчика GRUB/GRUB-legacy...

Пусть уровнем позже, но ведь можно по идее для этого ntldr в boot.ini прописать загрузку bootsect.lnx по умолчанию, ну или с минимальным timeout, а уже он (bootsect.lnx или еще кто) будет перенаправлять загрузку на, собственно, линуксовый диск (hd1,1), как я думал. То, что следом будет (по идее) появляться grub - это разумеется, его тоже можно "пропустить" уже в настройках в линуксе.

#235303
AlOks написал:
Если MBR от Windows умел бы загружать с активного раздела что-либо кроме Windows, то сценарий имел бы право на жизнь. Если правильно путаю, таким умением он не обладает(*), это умеют делать ntldr...
Именно так и хочу сделать, через ntldr, почему, собственно, и тему начал "издалека".

а зачем нужен такой кривой путь? По очевидным причинам, мысы не хочет, что-бы её загрузчик грузил не венду.

#235461
AlOks написал:
Задался вопросом, как добавить в nt loader пункт для загрузки линукс

мне кажется, что это стратегически неправильно ставить в зависимость от виндового загрузчика обе независимые системы. Слетит винда - слетит загрузка систем. Все таки я сторонник хорошего мультизагрузчика. Причем Grub на втором диске возможно и на раздел и в МБР пихнуть, как Вам нравится. Ну а на первом мультизагрузчик в МБР, чтоб либо винду грузил, либо перекидывал на второй HDD.
Впрочем поддерживаю подсказку обе системы на первый диск перетащить, а второй под файлпомойку, тут достаточно одним Grub-ом обойтись.

#235463
AAD написал:
Слетит винда - слетит загрузка систем. Все таки я сторонник хорошего мультизагрузчика.

нормальный в NT мультизагрузчик, который никогда и никуда не "слетает". Если-бы он ещё умел не только венду грузить...

#235488

А EasyBCD не пойдёт?

#235684
AlOks написал:
Пусть уровнем позже

/dev/sda -- диск с Windows
/dev/sda1 -- активный раздел с ntldr
/dev/sdb -- диск с Linux

Если бы хватало ntldr (но он не сумеет загрузить Vista/Seven).

С LILO легко проходит следующий вариант:

1. Грузимся в линукс, сохраняем загрузчик в файл:
# mkdir -p /mnt/sda1
# mount -t ntfs-3g /dev/sda1 /mnt/sda1
# dd bs=512 count=1 if=/dev/sdb of=/mnt/sda1/bootsect.lnx

2. Грузимся в Windows на sda1, правим boot.ini
добавляем загрузку Windows со второго раздела и Linux из бутсектора:

text
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP RU" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP x64 RU" /noexecute=optin /fastdetect
C:\bootsect.lnx="Linux"

3. Перезагружаемся и проверяем загрузку. Если спотыкается, выясняем, на чём именно. Если дело не дошло до загрузки ядра/initrd, то разбираемся с загрузчиком. Если ядро получило управление, разбираемся с линуксом.

Если загрузка в таком варианте работает, делаем начисто при помощи загрузчика от Vista/Seven, для чего укладываем загрузочный сектор на диск с Windows 7, делаем раздел активным, и при помощи стокового bcdedit добавляем в загрузку Windows/Windows64/bootsect.lnx. Теоретически, если являетесь уверенным пользователем bcdedit, можно сразу начинать с W7 и bootmgr. Однако, поскольку управление им всё же сложнее, чем ntldr, полагаю разумным для начала убедиться в работоспособности самого метода исключив дополнительный источник возможных ошибок.

#235721

Проделал тот же эксперимент с GRUB-legacy. Как и ожидалось, чуда не произошло, stage1_5 на втором HDD не нашёлся (дело закончилось выводом "GRUB"). Создание для GRUB раздела на первом HDD проблему должно решать.

Войдите или зарегистрируйтесь, чтобы ответить.