Установка Линукс на Sun SPARC Ultra 5
 
Автор: (C) Bruce Forsberg
Перевод: (C) Александр Михайлов


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

Будучи опен-соурс разработчиком, я, естественно, выполняю всю свою работу под Линукс. Любой, кто занимается разработкой, знает, какое это приемущество, когда у вас есть ВЕСЬ исходный код. Например, я работаю над проектом ( Open Source Audio Library Project (Аудио Библиотека с Открытым Исходным Кодом)). Это библиотека классов C++, которая содержит функции для работы со звуком. Когда я занимался разработкой на моем Линукс лаптопе, у меня были проблемы с некоторыми частотами оцифровки звука. Иногда все звучало, как Дональд Дак, а на других частотах все было нормально. Тот-же тест прекрасно работал на моем настольном компьютере с Линукс. После интенсивных поисков выяснилось, что после выхода из другой операционной системы и загрузки Линукса (без выключения питания лаптопа) регистр на аудио-микросхеме не сбрасывался, что и вызывало проблему. Я нашел код драйвера, исправил ошибку, и все заработало. Патч я послал Алану Коксу, который добавил его в следующий релиз ядра (2.2.17). Если бы это была проблема с "собственнической" [proprietary] операционной системой, вероятность решения проблемы была бы очень мала.

В процессе тестирования моей библиотеки, я увидел необходимость в 3-х вещах, 1)поддержке бОльшего числа ОС, 2)поддержке CPU с прямым порядком байтов [big endian] и 3)поддержке 64-битных платформ. После ознакомления с доступными вариантами, я решил, что будет неплохо добавить в список поддерживаемых платформ компьютер от Sun Microsystems. Sun делает самые популярные коммерческие UNIX-машины и их новые модели используют UltraSPARC: 64 битный, big-endian процессор.

У Sun есть компьютер низшей ценовой категории, называемый Ultra 5. Новый компьютер обошелся бы в $2000-$3000. Это больше, чем я намеревался потратить. Поэтому я поискал на Ebay и нашел подержанный Ultra 5. Сейчас подержанные Ultra 5 продаются на Ebay по цене порядка $500-$700. Неплохой вариант для еще одной рабочей станции. Я купил Ultra 5 с 270Мгц процессором UltraSPARC II, 64Мб памяти и 4.3Гб жестким диском. Если вы не знаете, какую из рабочих станций Sun взять, то прочитайте SPARC-HOWTO на http://www.linuxdoc.org/. Я также приобрел Solaris 8 за $75 ( www.sun.com/software/solaris/binaries/get.html) и установил его. Инсталяция прошла идеально. Я смог портировать мою программу на Solaris. Но зная, что есть люди, которые запускают на SPARC Линукс, мне было нужно установить на Ultra 5 еще и Линукс, желательно создав конфигурацию с двойной загрузкой Solaris 8 / Линукс. Далее следует описание моего опыта установки Линукс на Ultra 5.

Шаг 1 - Выбор дистрибутива

Первым шагом надо было решить, какой дистрибутив устанавливать. За несколько лет использования Линукс на процессорах от Intel, я много раз пользовался SuSE и он мне понравился. Когда я обнаружил, что у SuSe есть специальный дистрибутив для SPARC, я решил использовать его. Итак, я направился на CheapBytes, и через три дня у меня были компакт диски. Если вы не решили, какой дистрибутив использовать, то взгляните на веб сайт http://www.ultralinux.org/ У них есть список дистрибутивов поддерживающих рабочие станции Sun.

Шаг 2 - Планирование установки

Следующий шаг - определить, куда поместить дистрибутив Линукс. У меня был только 4.3GB жесткий диск, которого вряд ли достаточно и для Solaris, и для Линукс. Поэтому я решил, что так как я никогда не устанавливал Линукс на SPARC, я удалю имеющийся 4.3GB IDE жесткий диск и для пробной установки поставлю старый 3GB IDE диск. Это диск остался от старой Линукс системы на Intel'освском процессоре. Сделав так я не получил ничего кроме проблем. Используя инсталлятор Suse, (называемый YaST2) я, как не пытался, не смог разбить жесткий диск на разделы. YaST2 предлагает два варианта разбиения жесткого диска: автоматический и "ручной" с настройкой. Автоматическая установка, которой я сказал использовать весь жесткий диск, вернула лишь сообщения об ошибках, не давших разбить жесткий диск на разделы. Все, что бы я не делал, используя ручной режим, также не срабатывало. В конце концов, после пары дней мучений, я решил сначала установить на этот диск Solaris, подумав, что, возможно, диск требует некого специального форматирования. Это сработало. Когда я опять запустил YaST2, я, используя ручной режим разбиения диска, оставил swap раздел SunOS и создал 16Мб /boot раздел, 2ГБ / раздел и 200Мб раздел подкачки для Линукс. После этого, инсталяция файлов пошла гладко. Позднее, "плавая" по Интернет, я обнаружил, что при использовании не-Solaris диска, нужно запустить утилиту fdisk и создать на нем метку диска Solaris. Там также было сказано, что эта метка храниться в первом разделе жесткого диска, поэтому первый раздел не может быть разделом подкачки Линукс, т.к. он в нём не предусмотрено места для этой метки.

Теперь я был готов к настоящей установке. Я решил начать все сначала. Поэтому я купил новый 20Гб жесткий диск и установил его в мой Ultra 5. Я поместил установочный CD-диск Solaris 8 в дисковод, ввел "boot cdrom" и вошел в процедуру установки Solaris. Когда программа установки взглянула на жесткий диск, она не смогла найти на нем свободного места. Т.к. это не Solaris Gazette, будет достаточно сказать, что она выдала мне командную строку и я должен был ввести format, и создать резервную [backup] метку на третьем разделе (#2), обнулить все остальные и пометить этой информацией жесткий диск. После этого я перезапустил установку Solaris 8 и она прошла благополучно.

Для установки Solaris я создал root-раздел размером 5ГБ с 512Мб своп-разделом и 2ГБ разделом /export/home. После этого я начал установку Линукс. Я установил первый диск SuSe и перезагрузил компьютер. Когда началась загрузка, я сделал Stop-A и ввел "boot cdrom". Я позволил YaST2 запуститься и выбрал ручной режим изменения разделов. Я создал 512Мб /swap для Линукс, 16Мб /boot, а все оставшееся на диске пространство выделил под /.

Шаг 3 - Установка Линукс пакетов

Следующий шаг - это собственно установка Линукс-софта. Я выбрал нужные мне пакеты, а затем мне была предложено выполнить процедуру настройки SILO. Я выбрал ручное конфигурирование SILO и убедился что выбрана установка SILO на раздел /boot. Я выбрал этот вариант, а не установку в MBR (Master Boot Record), т.к. я собираюсь использовать OpenBoot в PROM, чтобы выбирать, что загрузить: Линукс или Solaris. Позже я расскажу об этом подробнее. Путем установки SILO в /boot я смогу тестировать разные ядра Линукс и загружать их по выбору. После этого я создал пользователя и ввел пароль для пользователя root. Затем инсталлятор приступил к установке пакетов, всего 1624 штуки. Инсталяция прошла гладко.

После того, как установка завершилась, я использовал YaST, чтобы настроить, все то, что обычно приходиться настраивать после установки Линукс. Я выбрал Sun Happy Meal 10/100base T интерфейс для сети. Оставшаяся часть сетевых установок, совпадает с аналогичными для Intel систем. Затем я настроил аудио для Ultra 5, следуя шагам описанным в руководстве на первом диске. Я добавил следующие две строки в файл /etc/init.d/boot.local:

modprobe audio 
modprobe cs4231

Единственной проблемой было то, что, согласно руководству, этот файл был в /sbin а не в /etc. Для искушенного в установке Линукс пользователя это была совершенно очевидная опечатка в руководстве, но у новичка с этим могли-бы возникнуть проблемы. Я сообщил об этом в SuSe и они сразу мне ответили, поблагодарив за сделанное замечание.

Когда я попытался запустить моё аудио-приложение, вызов open для аудио устройства /dev/audio "завис и не вернулся". После некоторого расследования, я обнаружил, что запущен аудио сервер KDE, который использовал данное устройство. Я направился в контрольную панель KDE, выключил этот аудио сервер и перезапустил KDE, и теперь у меня есть работающее аудио на моем Ultra 5.

Следующим шагом я смонтировал разделы диска, принадлежащие Solaris 8, чтобы я мог их видеть. Тип раздела, который использует Solaris называется ufs. Я прочитал примечания по поводу этого типа раздела, в котором говорилось что поддержка записи на него экспериментальная. Поэтому я примонтировал / и "/home" разделы Solaris в Линукс следующим образом. Я выполнил "fdisk /dev/hda", чтобы получить список разделов, которые есть на моем первом жестком диске. Оказалось что /dev/hda1 используется как / и /dev/hda8 как /home. Для начала я создал точки монтирования. Я люблю располагать их в /, поэтому я сделал так:

cd /
mkdir sun_root
mkdir sun_home

Затем я добавил /etc/fstab следующие строки:

/dev/hda1  /sun_root  ufs  defaults,ro,ufstype=sun  1  0
/dev/hda8  /sun_home  ufs  defaults,ro,ufstype=sun  1  0

Потом я смонтировал соответствующие разделы "mount /sun_root" и "mount /sun_home". Теперь я мог видеть мои Solaris разделы из Линукс.

Шаг 4 - Конфигурирование Двойной Загрузки

Следующий шаг - настроить на Ultra 5 загрузку двух операционных систем. Большинство из вас знакомы с LILO на вашем Линукс, на Intel-машине. Для Линукс на Sparc, вы обнаружите SILO. Я использую SILO, чтобы загружать различные ядра Линукс, но чтобы выбирать между загрузкой Solaris и Линукс, я использую boot PROM на Ultra 5, называемый OpenBoot. Следующие инструкции подойдут для 3.x версий OpenBoot, которые должны присутствовать на всех Ultra 5. Чтобы получить командную строку OpenBoot, вам надо нажать последовательность клавиш Stop-A. Далее можно ввести devalias и получить список всех определенных псевдонимов. Вы должны увидеть несколько записей о дисках, наподобие:

disk		/pci@1f,0/pci@1,1/ide@3/disk@0,0
disk3		/pci@1f,0/pci@1,1/ide@3/disk@3,0
disk2		/pci@1f,0/pci@1,1/ide@3/disk@2,0
disk1		/pci@1f,0/pci@1,1/ide@3/disk@1,0
disk0		/pci@1f,0/pci@1,1/ide@3/disk@0,0

Все что находиться справа - это описание устройства. Теперь вы можете создать несколько своих псевдонимов. Я создал два, linux и solaris:

linux		/pci@1f,0/pci@1,1/ide@3/disk@0,0:d
solaris		/pci@1f,0/pci@1,1/ide@3/disk@0,0:a

Описания сделаны для disk0, что означает жесткий диск /dev/hda в Линукс/Intel. Буква после ":" в правой части описания устройства указывает на раздел жесткого диска. Таким образом, чтобы загрузить первый раздел, необходимо указать :a. Чтобы загрузить четвертый раздел вы должны будете использовать :d в конце. Чтобы сохранить эти псевдонимы в non-volative ram вым нужно создать их при помощи команды OpenBoot nvalias. Заметьте, что если есть псевдоним с такой же правой частью, он будет заменен на новый.

Есть еще один параметр, который вы можете настроить в OpenBoot:

setenv auto-boot? = false

Это заставит компьютер после включения останавливаться на приглашении ok, что позволит вам выбрать, какую ОС загружать: solaris или линукс. Все, что нужно ввести -- "boot solaris" или "boot linux".

Шаг 5 - Прочие замечания

Вот некоторые дополнительные наблюдения, которые я сделал, работая с Линукс на SPARC.

  1. Если вы видете следующие сообщения: "Unimplemented SPARC system call 69/44" от ядра во время загрузки, просто игнорируйте их. Системные вызовы 44 и 69 - это getuid32()/geteuid32(), оба они не нужны на UltraSPARC.
  2. Сюдя по тому, что я прочел о Линукс на UltraSPARC, ядро использует 64 бита, но пользователское пространство -- по прежнему 32 битное. Я не совсем понимаю, что это означает, но я думаю, что это значит что я не смогу скомпилировать свое приложение, как 64 битное.
  3. Последовательность Stop-A отключена в SuSe 7.1 и в некоторых других дистрибутивах. В Suse её можно включить в YaST2, в секции misc. Я попробовал включить её, но когда я сделал Stop-A, компьютер завис и я не увидел загрузочного приглашения. Поэтому, вероятно, в Линукс будет хорошей идеей оставлять её выключенной.

Заключение

Исключая начальную проблему с разбиением диска на разделы, все, кажется, прошло очень хорошо. Хотя проблема с диском была весьма неприятной. SuSe можно рекомендовать как прекрасный дистрибутив Линукс для SPARC. Приятно видеть это. Я видел сообщения в их списке рассылки, что они также работают над версией SuSe 7.3. Я также хочу поблагодарить всех опен-соурс Линукс программистов, которые работали над программным обеспечением для Линукс на SPARC. Вы проделали прекрасную работу! Спасибо вам за ваши усилия. Теперь у меня есть работающее решение для запуска на моем Sun Microsystems Ultra 5 как Solaris 8, так и Suse Linux 7.1. Это не быстрая машина, у неё всего 64МБ памяти и 270МГц процессор, но она делает ту работу, для которой предназначалась: портирование программного обеспечения.


Bruce Forsberg

Брюс -- просто обычный парень, которому нравиться работать с Линукс. Он основатель Open Source Audio Library Project. Начинал он с программирования freeware для windows 3.1. Когда он понял, что стоит не вернуться из обработки сообщения и все операционная система зависнет, он осознал, что должен быть лучший путь. Линукс стал для него ответом.


Copyright (C) 2001, Bruce Forsberg.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 72 of Linux Gazette, November 2001

Вернуться на главную страницу