LINUX.ORG.RU

И снова GRUB2 но уже на Mac Pro (пока двойная загрузка)

 , ,


0

1

Всем привет! Помогите немножко, пожалуйста, новичку в десктопном Линуксе (Ubuntu 14.10). Описываю ситуацию. Простите сумбур и многословность :-)

Имеется Mac Pro 3,1 (mid 2008), ситуация по дискам такова:

Первый диск (на нем установлена OS X Yosemite, устанавливалась первой):

sudo fdisk -l /dev/sda

Disklabel type: gpt
Device          Start        End    Sectors   Size Type
/dev/sda1          40     409639     409600   200M EFI System
/dev/sda2      409640 1952255591 1951845952 930,7G Apple HFS/HFS+
/dev/sda3  1952255592 1953525127    1269536 619,9M Apple boot

Второй диск (оставлен пустым, под будущую установку винды):

sudo fdisk -l /dev/sdb

Disklabel type: gpt
Device     Start    End Sectors  Size Type
/dev/sdb1     40 409639  409600  200M EFI System

Третий диск (самое интересное: сюда была установлена Ubuntu 14.10 и сюда же при установке был установлен загрузчик):

fdisk -l /dev/sdc

Disklabel type: gpt
Device      Start       End   Sectors   Size Type
/dev/sdc1      40    409639    409600   200M EFI System
/dev/sdc2  411648 976771071 976359424 465,6G Linux filesystem

Ну и четвертый диск для данных Мака, в принципе,значения не имеет:

sudo fdisk -l /dev/sdd

Disklabel type: gpt
Device      Start       End   Sectors   Size Type
/dev/sdd1      40    409639    409600   200M EFI System
/dev/sdd2  409640 976510983 976101344 465,5G Apple HFS/HFS+

Проблема с GRUB2. Сначала была установлена OSX /dev/sda - она и грузилась нормально. Потом установил Ubuntu на /dev/sdc, сюда же был установлен и GRUB2. Теперь по умолчанию грузится Ubuntu, OSX можно загрузить только зажав клавишу Opt при старте. Не самый лучший вариант. Хотелось бы получить нормальный загрузчик. Пользоваться программами типа rEFInd не хочется....

Я попробовал отредактировать файл /etc/grub.d/40_custom:

#!/bin/sh
exec tail -n +3 $0
menuentry "OS X Yosemite" {
	    insmod hfsplus
	    set root=(hd0,0..3)  #параметр после запятой менял от 0 до 3
	    multiboot /boot
}

Так и не получилось загрузить OSX через GRUB2......

Помогите, пожалуйста!

Я попробовал отредактировать файл /etc/grub.d/40_custom:

После этого update-bootloader делал?

Вообще, эксперименты проще делать прямо в меню загрузки груба: клавиша e — переход в режим редактирования параметров загрузки, клавиша c - командная строка груба с автодополением по TAB. Заодно увидишь, в чем проблемы, и я не знаю что такое multiboot, но есть такая вещь как chainloader, которая умеет грузить систему с диска/раздела.

Kiborg ★★★
()

Проблема с GRUB2. Сначала была установлена OSX /dev/sda - она и грузилась нормально. Потом установил Ubuntu на /dev/sdc, сюда же был установлен и GRUB2.

Зачем загрузчик было ставить на /dev/sdc? У тебя же EFI - монтируй /dev/sda1 в /boot/efi и ставь туда загрузчик.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Kiborg

Я делал update-grub или что-то вроде этого. Сейчас из дома пишу, история команд на рабочем компе.

Да, я перебрал все возможные диски и разделы на них именно в меню загрузки груба. Не сработало ничего. Мне кажется, что multiboot не подходит (я этот вариант нагуглил). К сожалению, я раньше груб не настраивал, посему что такое chainloader и как им пользоваться я не знаю... Не поможешь?

torquemada163
() автор топика
Ответ на: комментарий от Vovka-Korovka

На /dev/sdc поставил загрузчик чисто из-за боязни прибить нативный маковский загрузчик. Почти 10 лет сижу на Маке, а подружить с Линуксом попробовал первый раз :-) Опять же, потом Винду на еще один диск поставлю, хотелось, чтоб ГРУБ ничто тоже не прибило. Думал, потом смогу его настроить....

У тебя же EFI - монтируй /dev/sda1 в /boot/efi и ставь туда загрузчик.

А это как? Не объяснишь как это сделать?

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

Эээээ.... Мне всегда казалось, что они под Хакинтош, а у меня нормальный Мак. Я ошибаюсь? Я пробовал rEFInd под Мак, но он мне не понравился - он почему-то раздел с Yosemite сразу не видит, надо нажать в самом загрузчике «Обновить». Показалось неудобным.....

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

А это как? Не объяснишь как это сделать?

1. Создаешь /boot/efi. В /etc/fstab прописываешь монтирование /dev/sda1 в /boot/efi. Например,

UUID=04AD-8170  /boot/efi       vfat    umask=0,quiet,showexec,iocharset=utf8,codepage=866      1       2

UUID /dev/sda1 можно узнать командой blkid.

blkid /dev/sda2

После перезагрузаешься, либо вручную (если не хочется перезагружаться) монтируешь /boot/efi.

2. Ставишь пакет grub-efi.

3. Выполняешь команды

grub-install
update-grub

Единственное, что теперь нужно мак заставить грузить по умолчанию grub. На вики арча - есть команды, которые нужно запустить из под OS X

https://wiki.archlinux.org/index.php/GRUB/EFI_examples#Generic_Macs

Только пути не забудь поправить.

Вроде, этого должно хватить.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от menangen

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

erzent ☆☆
()
Последнее исправление: erzent (всего исправлений: 1)
Ответ на: комментарий от Vovka-Korovka

Половина дела сделана :-)

Сначала я в OSX сделал то, что было описано в статье, ссылку на которую ты дал. Вот как у меня выглядела там структура папок в примонтированном разделе efi:

https://www.dropbox.com/s/ocijhu9rt78uvo4/efi.jpg?dl=0

Затем:

Создаешь /boot/efi. В /etc/fstab прописываешь монтирование /dev/sda1 в /boot/efi. Например,

UUID=04AD-8170  /boot/efi       vfat    umask=0,quiet,showexec,iocharset=utf8,codepage=866
UUID /dev/sda1 можно узнать командой blkid.
blkid /dev/sda2

Так в /etc/fstab монтировать /dev/sda1 или /dev/sda2? У меня в этом файле автоматом в какой-то момент появились строки:

# /boot/efi was on /dev/sda1 during installation
UUID=67E3-17ED  /boot/efi       vfat    defaults        0       1
Если перейти в эту папку, то там пусто. После выполнения команд
sudo grub-install
sudo update-grub
Там появляется папка EFI, внутри нее папка ubuntu, вот ее содержимое:
 cd /boot/efi/EFI/ubuntu
ls

MokManager.efi
grub.cfg
grubx64.efi
shimx64.efi

В итоге сейчас какая-то странная ситуация - Mac теперь сразу же, по умолчанию, загружает GRUB, но в меню груба нет запуска OS X.... И попасть в OS X теперь можно только восстановив загрузку через режим Recovery в OS X. Но если я восстанавливаю загрузку OS X, то я тогда не могу попасть в Ubuntu, и мне надо проделывать вышеописанные манипуляции. Получился замкнутый круг! :-)

Как мне теперь добавить в меню GRUB загрузку OS X?

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

Так в /etc/fstab монтировать /dev/sda1 или /dev/sda2? У меня в этом файле автоматом в какой-то момент появились строки:

Да, строчки правильные. То, что в apple показывается - apple умеет работать без отдельного EFI раздела и свой загрузчик держит на основном диске.

В итоге сейчас какая-то странная ситуация - Mac теперь сразу же, по умолчанию, загружает GRUB, но в меню груба нет запуска OS X....

Попробуй ручками запустить команду

os-prober

Если в выводе будет MacOS - то просто перегенерируй grub.cfg

update-grub

Если в выводе ничего про MacOS не увидишь, то придется соответствующую запись, что-то вроде

menuentry "Mac OS X (on /dev/sda2)" --class osx --class darwin --class os {
	insmod part_gpt
	insmod hfsplus
	set root='(hd0,gpt2)'
        boot
}

самому ручками в /etc/grub.d/40_custom добавлять и после этого перегенерировать grub.cfg. У самого мака нету, поэтому насчет того, насколько строчки правильные не уверен.

Vovka-Korovka ★★★★★
()
Последнее исправление: Vovka-Korovka (всего исправлений: 1)
Ответ на: комментарий от torquemada163

Воо, раз там EFI, то что вообще есть в /boot/efi? find /boot/efi

Там по идее должен быть загручик MAC OS, его тогда можно через тот же chainloader загрузить.

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

А, проглядел, что там пусто до установки GRUB.. Тогда не очень понятно. Посмотри все-таки вариант с chainloader (hd0,1) или chainloader (hd0,1)+1.

Kiborg ★★★
()
Ответ на: комментарий от Vovka-Korovka
sudo os-prober

Вывод вообще пустой..... Просто задумывается на пару секунд и следующая строка ввода в терминале, и все.

menuentry "Mac OS X (on /dev/sda2)" --class osx --class darwin --class os {
	insmod part_gpt
	insmod hfsplus
	set root='(hd0,gpt2)'
        boot
}

Пишет:

Ошибка: вы должны сначала загрузить ядро
Что-то надо в menuentry подправить....

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

В викепедии написано, что у макоси загрузчик по умолчанию на системном диске хранится. Хотя можно и внешний прикрутить и положить его в /dev/sda1.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от torquemada163

В командной строке груба напиши (кнопка C при загрузке).

Вообще же это должно быть примерно так:

menuentry "OS X" {
	chainloader (hd0,1)+1
}

или без +1 - я тут каждый раз забываю, как правильно. Для загрузки из файла нужно одно, для загрузки с диска другое, и я путаю.

Kiborg ★★★
()
Ответ на: комментарий от Vovka-Korovka

Да, я понял уже что там пусто. Подумал, что раз есть EFI, то и загрузка из него производится.

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

Загрузчик побежден! Правда, немного иначе строка выглядит в итоге.

chainloader (hd0,1)+1
выдавала ошибку:
invalid EFI file name
Строка
chainloader (hd0,1)
выдавала ошибку:
Неправильное имя файла ""

Правильный синтаксис, в итоге, оказался такой:

menuentry "OS X" {
      insmod hfsplus
      set root='(hd0,gpt2)'
      chainloader /System/Library/CoreServices/boot.efi
}
Т.е., при указании конкретного пути до загрузчика OS X все нормально заработало! Ура! :-)

Остался последний вопрос..... Как лучше установить Windows 8 на диск /dev/sdb? Чтобы она прописалась в загрузчики, или чтоб потом ее также руками добавить, как и OS X. При установке винды, не затрется ли ГРУБ? Или винда сделает активной свой EFI-раздел на своем диске и будет грузиттся оттуда? Как тогда активным ГРУБ сделать?

Чтоб не лазить к первому сообщению, напомню список дисков:

/dev/sda - Mac OS X
/dev/sdb - пока свободен, будет Windows 8
/dev/sdc - Ubuntu 14.10 & GRUB
Спасибо огромное всем, кто помогает мне победить ГРУБ! :-)

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

Зависит от загрузки. Если загрузка с установочного диска пройдет в EFI режиме, то винда пропишет загрузчик в EFI, а там можно выбрать вручную GRUB. Если не в EFI, то по идее должна записать загрузчик в MBR первого системного диска (sda). Но я так понял, что sda не MBR, так что может вообще отказаться устанавливаться. Возможно, поможет смена первого диска в BIOS, или что там у маков.

Дальше, винду груб обнаруживает сам. При переконфигурации конфига он затрет любые изменения, сделанные вручную (секция для загрузки Mac OS), так что её надо перед обновлением конфигурации загрузчика внести в /etc/grub.d/40_custom.

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

Приветствую!

В общем, установил я винду..... Теперь такая же проблема - никак не могу запихнуть ее в ГРУБ, os-prober ее видеть не хочет. При включении компа с зажатой клавишей Opt можно ее загрузить. Т.е., ситуация аналогична той, что была с Mac OS X - надо создать правильный кастомный файл для загрузки винды.

Как ставилась винда - запустился инсталятор, сказал, что на диск, который GPT ставится не буду. Ок. Сменил тип раздела - сделал MBR. Инсталятор сказал, что сюда ставится можно, но при попытке поставить, сказал, что не удалось создать системный раздел, ставиться не буду совсем. Ок. Под Mac OS X есть прога - winclone, она может образ винды запихнуть прямиком на диск. Единственное, диск должен быть GPT. Переразделил диск снова под GPT, и с помощью этой проги запихнул образ винды. Все, винда есть, она запускается при зажатой клавише Opt.

Вот как выглядит диск /dev/sdb где она стоит:

sudo fdisk -l /dev/sdb

Disk /dev/sdb: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 54F5AA69-DD64-471C-9F33-E897130FC8E2

Device      Start        End    Sectors   Size Type
/dev/sdb1      40     409639     409600   200M EFI System
/dev/sdb2  411648 1953523711 1953112064 931,3G Microsoft basic data

Пробовал с помощью GRUB Customizer сделать так:

menuentry "Win 8.1"{
	set root='(hd1,1)'
	search --no-floppy --fs-uuid --set 67E3-17ED
	drivemap -s (hd0) ${root}
	chainloader +1
}
Это он сам так предложил. При подобном синтаксисе ругается, что не найдена команда drivemap. Проверил в загруженной системе - действительно, нет этой проги. Воткнул:
sudo apt-get install bilibop-common
Проверил - появилась. Перезагрузил - все равно не найдена команда drivemap. Ок. Прибил все, кроме set root и chainloader - теперь invalid EFI path

В общем, у меня мысли кончились. Помогите, пожалуйста. Раз винда грузится в принципе, хоть и через задницу, то, значит, как-то можно ее и через ГРУБ загрузить.....

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

drivemap — это команда grub2. Это не программа, и что такое bilibop я не знаю, но точно не то, что нужно. Вероятно, grub просто не нашел нужный модуль, возможно что в дистрибутиве версия grub2 еще без этой команды.

В линуксе в /boot/efi есть что-нибудь, кроме груба?

А кстати, я так понимаю что сейчас все диски разбиты в GPT, и на каждом есть раздел EFI boot? Что в них находится?

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

Нет, там только ГРУБ.

Вот содержимое EFI-разделов /dev/sda1 (на диске /dev/sda стоит OS X):

grub.cfg  grubx64.efi  MokManager.efi  shimx64.efi
/dev/sdb1 (на диске /dev/sdb стоит винда):
НИЧЕГО
/dev/sdc1 (на диске /dev/sdc стоит Убунту) просто не дает примонтировать командой mount, пишет:
mount: special device /dev/sdс1 does not exist
/de/sdd1 (на этом диске нет ничего, он тупо для данных в OS X):
grub.cfg  grubx64.efi  MokManager.efi  shimx64.efi

Странная картина вырисовывается..... Почему-то ГРУБ присутствует аж на двух дисках, но не на собственно диске с Убунтой, даже на пустом диске есть.... :-)

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

Команда mount говорит много чего:

/dev/sdc2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,nodev,noexec,nosuid)
sysfs on /sys type sysfs (rw,nodev,noexec,nosuid)
none on /sys/fs/cgroup type tmpfs (rw,uid=0,gid=0,mode=0755,size=1024)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /sys/firmware/efi/efivars type efivarfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,nodev,noexec,nosuid,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,nodev,noexec,nosuid,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda1 on /boot/efi type vfat (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nodev,noexec,nosuid)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,noexec,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=vottghern)

Но ни слова о том, куда дели /dev/sdc1.....

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

Блин. Похоже, проще все будет сделать заново..... Прибить и винду, и линукс. Оставить только OS X. Затем в штатном режиме, без winclone, поставить винду, а уж последним вляпать Убунту.

Вот только давай тогда разберем, куда ГРУБ ставить.....

Все диски будут GPT.

/dev/sda - как стояла, так и будет стоять OS X 
/dev/sdb - будет стоять Windows 8.1 
/dev/sdc - будет стоять Убунту или Минт 
/dev/sdd - останется пустым

При установке Линукса, какой раздел мне указывать для установки GRUB?

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

Возможно, sdc1 просто отсутствует, если в разметке GPT отсутствует первый раздел. Что говорят fdisk -l /dev/sdc и ls /dev/sdc*?

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

Не думаю, что проще (ну, если только не «всё сломалось» или ты случайно форматнул весь диск), да и что изменится?

И я так и не понял, куда в итоге был установлен grub. Судя по тому, как он ругается на команды, очень похоже что он таки установлен в EFI mode. А что происходит при «включении компа с зажатой клавишей Opt»? Я так понимаю, ты попадаешь в меню EFI выбора ОС (загрузчика). Если так, то по идее винда куда-то установила свой загрузчик, и это либо тот же EFI, либо MBR какого-то из дисков. Можно попробовать узнать это из efivars в линуксе (если всё действительно так, как я выше написал). Что есть в /sys/firmware/efi?

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

Так, давай попробую ответить на все вопросы.... :-) Вообще, при установке Убунту, я говорил, что GRUB надо установить на тот же диск, что и саму Убунту - на /dev/sdc

По факту, я теперь вообще не понимаю, где GRUB находится, раз к /dev/sdc1 Убунту доступа не дает.....

Вот вывод sudo fdisk -l /dev/sdc:

Disk /dev/sdc: 465,8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9F414F55-1CBE-4D89-A037-6F5EF76CD053

Device      Start       End   Sectors   Size Type
/dev/sdc1      40    409639    409600   200M EFI System
/dev/sdc2  411648 976771071 976359424 465,6G Linux filesystem
Вот вывод sudo ls /dev/sdc*:
/dev/sdc  /dev/sdc1  /dev/sdc2
Вот, что находится в /sys/firmware/efi:
config_table  efivars  fw_vendor  runtime  runtime-map  systab  vars
Вот содержимое /sys/firmware/efi/efivars:
AAPL,PathProperties0000-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14
AcpiGlobalVariable-af9ffd67-ec10-488a-9dfc-6cbf5ee22c2e
bluetoothActiveControllerInfo-7c436110-ab2a-4bbb-a880-fe41995c9f82
bluetoothInternalControllerInfo-7c436110-ab2a-4bbb-a880-fe41995c9f82
Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
Boot0080-8be4df61-93ca-11d2-aa0d-00e098032b8c
Boot0081-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootCampHD-7c436110-ab2a-4bbb-a880-fe41995c9f82
BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootFFFF-8be4df61-93ca-11d2-aa0d-00e098032b8c
boot-gamma-7c436110-ab2a-4bbb-a880-fe41995c9f82
BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
current-network-36c28ab5-6566-4c50-9ebd-cbb920f83843
efi-boot-device-7c436110-ab2a-4bbb-a880-fe41995c9f82
efi-boot-device-data-7c436110-ab2a-4bbb-a880-fe41995c9f82
ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
FirmwareFeatures-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14
FirmwareFeaturesMask-4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14
fmm-computer-name-7c436110-ab2a-4bbb-a880-fe41995c9f82
Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c
LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
LocationServicesEnabled-7c436110-ab2a-4bbb-a880-fe41995c9f82
MTC-eb704011-1402-11d3-8e77-00a0c969723b
preferred-count-36c28ab5-6566-4c50-9ebd-cbb920f83843
preferred-networks-36c28ab5-6566-4c50-9ebd-cbb920f83843
PreviousBoot-36d08fa7-cf0b-42f5-8f14-68df73ed3740
prev-lang:kbd-7c436110-ab2a-4bbb-a880-fe41995c9f82
Setup-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
SmmS3NvsData-8983fd2d-113c-4e2b-8f47-0abfeb20a41a
SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82
SystemAudioVolumeDB-7c436110-ab2a-4bbb-a880-fe41995c9f82
Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c

А вот так выглядит «при включении компа с зажатой клавишей Opt»:

КАРТИНКА!

Т.е., «bios» Mac'а при загрузке видит собственно OS X (на /dev/sda), Windows 8.1 (на /dev/sdb), восстановление OS X (тоже на /dev/sda). Причем, винду он без проблем с этого экрана грузит.

Я попробовал радикальный способ. Дома у меня есть ноутбук, на котором есть винда 8.1 и Минт 17.1. Там один диск всего, линукс второй системой. Там GRUB без проблем находит винду. Я посмотрел, на какой раздел обращается там GRUB при загрузки винды. Примонтировал этот раздел. Там есть папка /EFI/Boot/Microsoft...... , т.е., то, чего нет у меня здесь на EFI-разделе. Скопировал всю папку EFI на флешку.

На работе примонтировал свой EFI-раздел на диске с виндой - /dev/sdb1, который у меня тут пустой. Скопировал туда с флешки эту папку EFI.

После применения команды

update-grub
GRUB вдруг увидел этот раздел, написал, что нашел винду. Но я рано радовался - при перезагрузки и выборе этой строчки в меню GRUB меня послали в темный экран без признаков жизни. Судя по всему, там просто, в лоб, нельзя подсовывать загрузчики......

Все удалил, как было. Сижу в растерянности.....

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

Так, спокойно. В одном из следующих утверждений ошибка:

/dev/sdc1 (на диске /dev/sdc стоит Убунту) просто не дает примонтировать командой mount, пишет:
mount: special device /dev/sdс1 does not exist

или

Вот вывод sudo ls /dev/sdc*:
/dev/sdc /dev/sdc1 /dev/sdc2

Проверь еще раз (кстати, проверь что c не русская!). Если я не прав, и оба утверждения выше верны, жду скрин окна терминала с обеими командами и их выводом.

Далее, из того что /sys/firmware/efi существует, загрузка, видимо, происходит в режиме EFI. Осталось понять, где лежит загрузчик винды. По идее, он должен находиться тоже на одном из разделов EFI, вероятно это как раз /dev/sdc1.

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

Да, сорри, запутался уже. /dev/sdc1 монтируется. Но он пуст! Как так может быть, если я при установке GRUB сюда ставил - я не знаю....

Вот скрин терминала с обеими командами:

КАРТИНКА

И где же тогда GRUB, и где виндовый загрузчик? :-)

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

Получается хрень какая-то..... Такое ощущение, что на /dev/sda1 сидит и GRUB, и загрузчик OS X. А еще GRUB сидит на /dev/sdd1! Это вообще пустой диск и откуда он там взялся я просто понять не могу......

Вот скрин терминала, который иллюстрирует мои слова:

КАРТИНКА

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

На всякий случай: на sdb1 что-нибудь есть?

И что находится в папке APPLE на sda1? У меня подозрение, что это как раз загрузчик MacOS со всеми потрохами, в т. ч. конфигурацией.

Далее, советую изучить The EFI Boot Process, ну и посмотреть что находится внутри у /sys/firmware/efi/efivars/BootOrder (возможно, это двоичный файл с кусками текста). Отсюда будет понятно, что грузит EFI и откуда. UUIDы дисков (если они там используются, что не факт) можно узнать с помощью ls -l /dev/disk/by-uuid/.

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

Нет, /dev/sdb1 совершенно пуст. В папке APPLE находится файл firmware.scap. Это не загрузчик, это файл с данными о железе Mac, нужный для обновления прошивки компа. Загрузчик OS X находится на самом системном диске, внутри операционки. OS X не нужен отдельный раздел для загрузчика.

Собственно, этот загрузчик я и гружу, когда исполняется кастомный файл для GRUB, в котором запускается OS X:

menuentry "OS X" {
      insmod hfsplus
      set root='(hd0,gpt2)'
      chainloader /System/Library/CoreServices/boot.efi
}

А узнать, где стоит GRUB можно и варварским методом - файлы загрузчика Убунты найдены на 2 дисках: /dev/sda и /dev/sdd.

Берем, физически, выдергиваем диск /dev/sdd из компа и смотрим, что получилось. Если пошли сбои загрузки - значит, работал этот диск. Если нет - /dev/sda

Но что дальше делать? Файлы загрузчика винды я не нашел, а она как-то грузится по клавише Opt (картинку я показывал). Как же быть?

На всякий случай, если мы так и не придем к решению. И я попробую все убить и переустановить. Как лучше поступить?

Каков был мой план на такое развитие событий:

1. Восстановить с помощью диска восстановления нормальную загрузку OS X, чтобы она грузила себя, а не GRUB.
2. Прибить все три оставшиеся диска и вытащить их физически.
3. Вставляю диск /dev/sdb, размечаю его в MBR или GPT и ставлю туда винду обычном путем, без разворачивания образа. После этого винда будет грузится или по клавише Opt, или путем выбора этого диска как загрузочного в OS X.
4. Вставляю диск /dev/sdc и ставлю туда Линукс.
5. И вот тут самый главный вопрос - НА КАКОЙ ДИСК СТАВИТЬ GRUB? В прошлый раз я сказал на тот же диск, что и линукс - /dev/sdc и случилось то, с чем сейчас пытаемся разобраться.

Как думаешь, как лучше поступить? Просто боюсь, что мы так и не сможем понять, как в текущем положении загрузить винду....

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

Я бы на вашем месте для начала восстановил загрузку OSX. Затем, отключаем все диски, подключаем диск для Windows, устанавливаем. Отключаем диск с Windows, втыкаем диск для Linux, устанавливаем.

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

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

Такая идея тоже в голову приходила.... Но встает вопрос - как быть после того, как я получу три рабочих диска с разными системами? Как только будет включен диск с OS X, все остальные операционки компу станут по барабану - он будет грузить именно OS X.

Винду-то я смогу загрузить принудительно - либо через клавишу Opt при включении, либо из самой OS X. А вот до GRUB я смогу добраться только через загрузку с какого-нибудь LiveCD.

Как мне тогда сделать выбор загрузки операционок?

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

Я бы доделал начатое. Не думаю, что переустановкой можно решить проблему.

Покажи содержимое BootOrder, и листинг /dev/sdb2. Если в sdb2 есть BCD, то там где-то должен быть и загрузчик. Поищи по дискам *.efi.

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

... Тем более что сейчас уже есть 3 рабочие системы, осталось только научить Grub грузить винду без Opt. Или есть какие-то еще проблемы?

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

Нет, других проблем нет - три системы работают, нужно добиться только загрузки винды из меню ГРУБА.

Так, /dev/sdb2 имеет метку BOOTCAMP и монтируется, соответственно, в папку /media/vottghern/BOOTCAMP. Если туда зайти, то мы видим стандартный набор папок винды. Есть папка Boot, внутри куча папок по языкам, есть файл BCD, но нет ничего, формата *.efi

Вот скрин, подтверждающий мои слова

КАРТИНКА

Идем дальше. Запускаем там поиск по *.efi и видим крайне интересную картину:

ЕЩЕ КАРТИНКА

Получается интересная ситуевина - загрузчик, как и в OS X, засунут просто в каталог с операционкой. Получается, необходимо создать кастомный файл по типу того, что я делал для OS X:

menuentry "OS X" {
      insmod hfsplus
      set root='(hd0,gpt2)'
      chainloader /System/Library/CoreServices/boot.efi
}

Вот что мне написать до команды chainloader?

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

Попробовал сходу:

menuentry 'Windows Boot Manager' --class windows --class os {
    insmod part_gpt
    insmod fat
    insmod ntfs
    set root='hd1,gpt2'
    chainloader /Windows/Boot/EFI/bootmgfw.efi
}

ГРУБ отправился в черный экран, не на что не реагируя..... Получается, что обратился я по верному пути, но вот что-то не так с параметрами.....

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

Попробовал еще вариант, который нарыл в инете:

menuentry 'Windows Boot Manager' --class windows --class os $menuentry_id_option 'osprober-efi-B52F5E46578672FE' {
    insmod part_gpt
    insmod fat
    insmod ntfs
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2 B52F5E46578672FE
    else
      search --no-floppy --fs-uuid --set=root B52F5E46578672FE
    fi
    chainloader /Windows/Boot/EFI/bootmgfw.efi
}

UUID взял из gparted. Результат тот же - черный экран.

Все, мысли кончились :-(

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

По суте «нарытый в инете» вариант конфига не отличается от предыдущего, так что результат неудивительный. Загрузка таким образом, скорее всего, не получится, так как виндовый загрузчик ожидает наличия корректной конфигурации в BCD. Нужно узнать, как винду загружает Apple.

Могу только в третий раз предложить показать содержимое файла BootOrder.

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

Ой, прошу прощения! Забыл совсем про файл BootOrder.

Только есть проблема с ним..... Файл, который лежит в /sys/firmware/efi/efivars/ называется не просто BootOrder, а:

BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
Имеет длину 8 байт и содержит внутри вот такое:
........

Это так и должно быть?

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

Еще я провел ряд экспериментов, которые меня соовсем сбили с толку. Я решил узнать что грузится путем физического выдергивания дисков.

  • Выдергиваю диск /dev/sdd (пустой) - меню ГРУБ появилось, все нормально грузится
  • Ставлю предыдущий диск назад и выдергиваю диск /dev/sda (OS X) - меню ГРУБ появляется, но через больший промежуток времени и перед появлением меню ГРУБ появилась надпись, типа Secure boot unavalaible. Из чего делаю вывод, что загрузка идет с диска /dev/sda. Далее я решил проверить остальные варианты.
  • Дополнительно, к отключенному /dev/sda выдергиваю /dev/sdd, т.е., остаются /dev/sdb (Windows) и /dev/sdc (Ubuntu) - в таком раскладе сразу же начинает загружаться Windows.
  • Заключительный вариант. К двум отключенным ранее дискам, отключаю диск /dev/sdb (Windows). Т.е., остается один диск - /dev/sdc (Ubuntu). И вот в этой конфигурации не грузится уже вообще ничего.

Из вышеописанного эксперимента делаю вывод, что загрузка идет с /dev/sda

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

Это так и должно быть?

Да фиг его знает, у меня мак ос не было нигде.

Может тогда что-нибудь покажет команда grep -rli efi /sys/frimware/efi/efivars? Если найдет какие-нибудь файлы, покажи их hex.

Еще есть какая-то команда bless, она как раз процессом загрузки Mac OS рулит, судя по описанию. Почитай ее man, может что прояснится.

Kiborg ★★★
()
Ответ на: комментарий от Kiborg
vottghern@vottghern-ub:~$ sudo grep -rli efi /sys/firmware/efi/efivars
/sys/firmware/efi/efivars/efi-boot-device-7c436110-ab2a-4bbb-a880-fe41995c9f82

чего-то нашлось... а как hex посмотреть?

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

вот, что я смог посмотреть:

cat /sys/firmware/efi/efivars/efi-boot-device-7c436110-ab2a-4bbb-a880-fe41995c9f82
<array><dict><key>IOMatch</key
><dict><key>IOProviderClass</key>
<string>IOMedia</string>
<key>IOPropertyMatch</key>
<dict><key>UUID</key><string>84FEAFC6-B759-4D23-BA05-41EBE7760187</string>
</dict></dict>
<key>BLLastBSDName</key>
<string>disk3s1</string>
</dict><dict>
<key>IOEFIDevicePathType</key>
<string>MediaFilePath</string>
<key>Path</key>
<string>\EFI\ubuntu\grubx64.efi</string>
</dict></array>

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