Попытки оживить яблоко, или happy-end это не про нас

Хотел бы повествовать вам историю о попытках «всгромоздить» *nix на старенькие (да удаленькие) apple xserve1.1. Кому интересно прошу под кат
Итак началось всё с новостей от яблочного гиганта о прекращении поддержки платформы xserve, ввиду чего от них решила отказатся и наша компания. Вроде бы ничего грустного, но 4 образца продукции вышеуказанной корпорации стояли смирненько в серверном шкафу послушно выполняя свою работу, и ожидая замены. Начальство дало добро, и один сервер для замены, таким образом у нас появилась платформа для извращений тестов.
Итак, что мы имеем:
image
Процессор: 2х Intel Xeon(2 cores) по 2,66 Ггц
Память: 3 Гб DDR2 667
Жесткие диски: 2х 80Гб
Видеокарта: Radeon X1300 (Встроенная)
А так же:
2х USB 2.0, 2x 10/100/1000BASE-T [Gigabit] Ethernet (RJ-45),

А так же тот, кому посвященна эта статья Apple EFI Firmware.
Началось все со стандартного курения интернетов и мануалов по xserv'ам. Как выяснилось, раньше apple была не настолько лояльна к установкам «инных» операционных систем на свои сервера (вроде бы на xserve3 все стало проще), предпринимая для этого различные ухищрения.
Первым делом мы находились в поисках дистрибутивов *nix систем, которые поддерживали загрузку с EFI «из коробки». Сразу же нам на на глаза попали: Fedora, Ubuntu Server(при помощи загрузчика ELILO). А так же был найден мануальчик по компиляции GRUB2 c поддержкой EFI.
Образы скачаны, болванки записаны, и начинается самое интересное: процесс загрузки. Вставляем диск в дисковод, зажимаем ALT, и ура! ничего не происходит, сервер просто выплёвывает диск. После последующего просмотра диска на наличие хоть чего нибуть похожего на *.efi, выясняется что такового там нет. Почему? Да потому-что производители заявили о поддержке efi booting только после инсталяции системы, и установки загрузчика на hdd.
Вспомнилась мне тут одна статейка с хабра, в которой человек устанавливал Ubuntu на iMac. В ней и было найдено частичное решение нашей проблемы в виде расширения загрузчика rEFIt, который вроде бы давал нам возможность загрузки как со стандартных дисков так и с дисков, в которых загрузчиком являлся GRUB.
Устанавливаем, перезагружаемся, и у нас появляется меню выбора источника загрузки, в котором кроме нашей OSX 10.6, гордо красуется пингвинчик с надписью «Linux». Радости было много, до того момента пока мы не попытались загрузится. rEFIt показывал ошибку, которая, ну никак не вселяла надежды:
«Error: Not found while loading legacy loader, check firmware updates».
Скажу только два слова: «Эмуляция BIOS».
Это то что есть у всех настольных «маков», и то чего нету у нашего сервера. Это обьясняет отсутствие BootCamp в системе. И тут то мы и здались.
Далее встал вопрос не самой загрузки а собственно эмуляции BIOS, в теории решив бы этот вопрос мы бы убили двух зайцев, дав rEFIt'у то что он просит, мы бы получили то, что нам нужно. Решение было найдено в течении нескольких минут, это был (упомянутый выше) GRUB2, который предстояло еще собрать и исходников с поддержкой EFI. Сборка происходила непосредственно на Ubuntu Linux. Открываем терминальчик и пишем:

sudo apt-get build-dep grub2 #Выполнение некотороых зависимостей.
apt-get source grub2 #Получаем исходники GRUB2
cd grub2*
./configure --with-platform=efi #непосредственно включение опции поддержки загрузки с efi
make
mkdir -p efi/boot/ #создаём временную директорию для нашего будущего efi.

Тут хотелось бы прерватся на некторые обьясниния по поводу следующих команд. Нами был выбран 32-разрядный загрузчик, потому что, xserve1.1 построен на архитектуре х86, и не умеет работать с 64-бытными ОС, и загрузчиками.
./grub-mkimage -d . -o boot32.efi part_gpt hfsplus fat ext2 normal sh chain boot configfile minicmd linux loadbios reboot appleldr halt search
sudo cp boot32.efi efi/boot/


Таким вот способом мы получили собственный загрузчик с поддержкой EFI, и что еще не мало важно с собственым конфигом. Дублируем папку /efi/boot в корень любого доступного нам носителя (в нашем случае это флешка), и переходим к настройке grub.cfg (если такового у вас нету, то его необходимос создань в папке boot).

set timeout=10
set default=0
set root = cd0 #здесь необходимо изменить в соотвествии с ваши устройством
menuentry "Ubuntu Server CD" {
linux /insall/vmlinuz xdriver=fbdev noselinux # на различных дистрибутивах Linux эти компоненты загрузки распологаются в разных директориях, так что советую перед написанием конфига проверить правильность указания путел для загрузки ядра и init'а.
initrd /install/initrd.gz
}


Вставляем флешку в наш сервер и перезагружаемся. rEFIt любезно показывает на наш настроенный grub2 на флешке, выбираем его для загрузки, и попадаем в стандартное меню загрузки grub'а (важно: убедитесь что диск с дистрибутивом linux был вставлен в сервер еще до момента перезагрузки, иначе сервер его просто не видит). Тапаем enter, и вуаля грузимся с CD диска.
Итак результат, система загрузилась с диска и предлагает нам установиться, ну что-ж послушаем мудрого пингвина и делаем сэтап. Все проходит гладко (для большей уверенности в своих действиях советую ставить linux на отдельный жесткий диск, или вручную «откусить» от основного, и канечно же при разметке раздела не забываем создавать раздел Efi boot для нашего загрузчика). Так же в конце загрузки появляется окошко с установкой загрузчика ELILO и различные обьяснения по поводу его обновления и замены. Система проставлена и просит перезагрузится. Можно с ухмылкой потирать руки, и хвалить полученый опыт? Рановато.
После перезагрузки по умолчанию грузится Linux.
Грузится и никак не загрузится, сервер уходит в круговую перезагрузку. Были подозрение со славно известными нам видеокартами ATI, одна из которых и является установленой в наше сервере, но добратся до настроек ELILO нам так и не удалось (возможно по незнанию, или по недостатку опыта работы с онным да и вообще с Linux).
Далее по списку идет Fedora. Для нее загрузка и установка происходила проще, так как в сети был найден мануал по установке, но сам факт после каждого «мажёрного» обновления ядра лезть и переписывать конфиги груба нам не понравился. Вот здесь мы и здались (не совсем). Сейчас на сервере поднят Virtual Box с FreeBSD и все чудесно работает. Но я так и неперстаю верить в чудеса техническую возможность поставить на эту железку что нибуть кроме родной OSX.
На этом эпопея и мозголюбство считаю законченым.

Примечание.

EFI используется не только в xserve, но и в Sun серверах, но там все намного проще, потому как используется полноценный загрузчик, и при необходимости туда можно поставить то что вам нужно, включая Windows Server 2008.

P. S.
Если найдутся люди которые мне помогут побороть данный вопрос, буду премного благодарен, за опыт и советы.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.