LINUX.ORG.RU

как настроить дуалбут

 


0

1

всерьез задолбала эта проблема, и не знаю как ее решать, поэтому решился спросить.

имеется дуалбут, 32битная убунта 12.04 и 64битная 13.04 (но проблема возникает точно также, например, с арч+дебиан, так что дистр тут по сути не играет роли).

в каждой из них имеется груб, в котором, естественно, включен os-prober, и прочие радости, которые никогда почему-то не работают как надо.

обе убунты ставились недавно, и все конфиги груба автогенеренные ихними инсталляторами — руками не лазил.

когда ставил 2ю убунту, она неправильно определила 1ю убунту. загрузиться стало возможно только во 2ю. прописал в 40_custom как надо. ребут. теперь в грубе дохрена лишнего (вот того неправильного, которое os-prober детектит), но это не беда. его как раз и отключить можно.

стало нужно обновиться. обновился — 1я убунта перезаписала конфиги груба, и неправильно определила 2ю. стала ситуация с точностью наоборот.

короч, так они и продолжают драться друг с другом за обладание MBR.

короче, вопрос по этому поводу: как правильно???

можно ли как-то их подружить?

★★★★★

Последнее исправление: waker (всего исправлений: 1)

Когда ставил убунты, они предлагали в mbr поставить загрузчик? Ты согласился? Вот и терпи.

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

Когда ставил убунты, они предлагали в mbr поставить загрузчик? Ты согласился? Вот и терпи.

всю жизнь так делал, и даже не предполагал, что я что-то делаю не так.

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

расскажи, как правильно?

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

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

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

Хотя, если ставить общий руками можно соорудить и мегаменюшку с общими пунктами.

Переставлять необязательно, надо просто пошарить в конфигах, откуда груб знает, что он в mbr установлен. Может это даже и в текущем конфиге прописано.

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

ок, идея понятна. но с тем же успехом, я могу в одной из убунт снести груб, потом настроить его в другой как я хочу (убив os-prober), и получу еще лучший результат (1 менюшка с выбором из 2 убунт). при этом мне не придется разбираться, как поставить 3 отдельных груба в разные места.

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

waker ★★★★★
() автор топика

короче, вопрос по этому поводу: как правильно???

Правильно воспользоваться UEFI, тогда икакие MBR не понадобятся.

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

Правильно воспользоваться UEFI, тогда икакие MBR не понадобятся.

есть какое-то howto, как это сделать?

waker ★★★★★
() автор топика

Я может что-то не понимаю... У вас два разных /boot? Тогда без напильника тяжеловато, резонно.

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

ссылка на швабр это, конечно, хорошо. но я спрашивал как мне сделать дуалбут на UEFI, а не ссылку на описание что такое UEFI. это UEFI, как я понимаю, только в новых компах есть? у меня комп старый, в нем этой фичи нет, насколько мне известно. думаю, эта фича есть в моем macbookpro, но там как раз нету дуалбута.

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от l0stparadise

Я может что-то не понимаю... У вас два разных /boot? Тогда без напильника тяжеловато, резонно.

нет. /boot как раз общий.

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

это UEFI, как я понимаю, только в новых компах есть?

В относительно новых, в bios в раздел boot и глянь там насчёт UEFI. Делать просто, создай на диске раздел типа efi размер мегабайт этак 100, сунь туда uefishell и управляй загрузкой с разделов с разными ОС.

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

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

Я не совсем понимаю внешний вид проблемы, поскольку сам неоднократно ставил по две-три системы на общий /boot, и проблем не было. Вероятно, в вашем случае косяк хранится где-то внутри логики grub2, поскольку его конфиги лежат за пределами /boot, и научного способа эту проблему исправить я не знаю.

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

В относительно новых, в bios в раздел boot и глянь там насчёт UEFI.

у меня комп dell p690. лет 7 ему уже, если не 8.

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

лет 7 ему уже, если не 8.

Тогда вряд ли, извини других рецептов не знаю.

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

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

очень просто. 2я убунта добавляет 1ю в меню груба, но прописывает правильно только название. а ядро и initrd берет свое же. в итоге грузится 2я убунта вместо 1й.

1я убунта просто генерирует штук 10 каких-то левых пунктов в меню, среди которых есть и правильный. я его нашел по имени файла ядра. но остальные пункты какой-то левак.

научного способа эту проблему исправить я не знаю.

вот и я не знаю. поэтому спросил, вдруг кто знает :)

waker ★★★★★
() автор топика

имеется дуалбут, 32битная убунта 12.04 и 64битная 13.04 (но проблема возникает точно также, например, с арч+дебиан, так что дистр тут по сути не играет роли).

Емнип, в grub2 конфиги генерятся скриптами, которые лежат в /etc/grub.d/ Этих скриптов несколько. Один из них (linux) смотрит, какие ядра установлены в системе, другой (os-prober) смотрит какие ещё системы установлены на диске, третий (custom) позволяет дописывать в меню свои пункты. И суммарный вывод всех этих скриптов записывается в grub.cfg.

Поэтому стандартное решение для (любого) дуалбута — отключить os-prober и добавить custom-менюшку в каждый груб, который указывает на соседей.

Если в подробностях:

  1. Системы разделяются, раздельный корень, раздельный boot (можно на корне, если он не шифрованный). Пусть для определённости системы стоят на разделах sda1 и sda5.
  2. Оба grub-а ставятся НЕ в MBR, а в BOOT-сектора разделов sda1 и sda5 соответственно. В MBR-е можно оставить даже досовый загрузчик, тот что грузит первый попавшийся загрузочный раздел (восстанавливается ms-sys-ом).
  3. Оба раздела и sda1 и sda5 отметить в gparted как загрузочные.
  4. В обоих грубах отключить os-prober (chmod 000 ему)
  5. В custom-менюшку груба на sda1 добавить ссылку на груб sda5:
    menuentry "Ubuntu on sda5/" {
      set root='(hd0,5)'
      chainloader +1
    }
  6. В custom-менюшку груба на sda5 добавить ссылку на груб sda1:
    menuentry "Ubuntu on sda1/" {
      set root='(hd0,1)'
      chainloader +1
    }
  7. Сделать update-grub в обоих убунтах.

Всё, теперь и системы и грубы полностью разделены, и каждый будет заниматься только своими менюшками и своими ядрами, и не будет засирать конфиг соседа. Какой-то из них (sda1) будет грузиться первым, но в его менюшке можно выбрать второй, а в менюшке того — обратно первый, и бегать туда-сюда сколько душе угодно. :)

Это самый стандартный метод дуалбута, он работает для любых систем и дистрибутивов ещё со времён win95, работает в режиме «настроил и забыл». В принципе можно один из грубов вписать в MBR, но тогда придётся помнить, какой из них где прописан, а у «настроил и забыл» есть один недостаток — действительно забываешь. :)

Если что-то неясно — спрашивайте.

anonymous
()

короч, так они и продолжают драться друг с другом за обладание MBR.

Это как? В одной убунте делаешь grub-install /dev/sda, во второй сносишь grub нахрен - и твои волосы мягкие и шелковистые.

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

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

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

Это как? В одной убунте делаешь grub-install /dev/sda, во второй сносишь grub нахрен - и твои волосы мягкие и шелковистые.

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

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

как самый продвинутый десктоп-дистр, должна все это уметь решать самостоятельно, а я просто что-то не так сделал

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

Valkeru ★★★★
()
Последнее исправление: Valkeru (всего исправлений: 1)
Ответ на: комментарий от waker

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

Тогда придётся положиться на os-prober. А мне он никогда особо не нравился, то параметры ядру не те подставляет, то сами ядра детектит по 2 раза, в дуал-федора-убунта он терял initrd и федора не грузилась вообще... В общем, не люблю я его. :) Один раз настроить и забыть мне спокойнее.

Но если os-prober работает, то можно и так. Главное потом, когда одна из убунт будет сноситься, не забыть, в какой из убунт стоит груб, который грузит их обоих. :)

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

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

Кстати, тут будет проблема при обновлении ядра. После обновления ядра запускается перегенерация конфига. Но если во второй убунте ядро обновится, то в конфиге груба оно не появится до тех пор, пока в первой убунте, в которой груб остался, не запустить руками update-grub. Ну или пока в первой убунте тоже ядро не обновится.

Ну не руками же запускать перегенерацию каждый раз?

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

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

Тогда придётся положиться на os-prober.

нет. на него положиться нельзя - он совсем не работает.

Кстати, тут будет проблема при обновлении ядра. После обновления ядра запускается перегенерация конфига.

а вот это, кстати, действительно трабла. спасибо что напомнили.

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

Оба grub-а ставятся НЕ в MBR, а в BOOT-сектора разделов sda1 и sda5 соответственно.

Если инсталлятор Убунту пока позволяет ставить загрузчик в раздел, то это лучший вариант. Времена меняются и становится все труднее это делать. Grub2 уже так просто в раздел не ставится, ему нужно force, а если раздел с zfs, то и форсе не помогает.

lvi ★★★★
()

короч, так они и продолжают драться друг с другом за обладание MBR.

А две MBR не бывает. Установи одну, вторую и заюзай os-prober. Хотя, убунта сама должна найти другие ОС на других разделах.

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

Вот это зря.

угу. я даже подозреваю, что именно из-за этого и не работает os-prober.

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