Ключевые слова:solaris, cdrom, boot, (найти похожие документы)
From: Sun Sanich <s280503@yandex.ru>
Date: Mon, 30 May 2003 13:01:37 +0000 (UTC)
Subject: Создание загрузочного CD-ROM Solaris 8 for Intel
Как сделать загрузочный CD-ROM Solaris 8 for Intel для наших задач ?
28.05.2003г.
Получили мы Solaris 8. До определенного момента инсталляция его на
различные компьютеры заказчиков не доставляло нам проблем. Но тут пришел
компьютер, на котором инсталляция Solaris сваливалась. Немного
проанализировав проблему, выяснилось, что не грузиться минимальный
Solaris на CD-ROM▓е, из-за ошибки в ядре Solaris, на что выпущен patch
Sun▓ом. Ха-ха, а как засунуть этот patch на CD-ROM. Sun предлагает
делать инсталляцию по сети на некотором компьютере на котором стоит
Solaris и там апгрейдить (т.е поставить patches на) минимальный Solaris.
Но где я возьму некоторый компьютер, на которой стоит Solaris, вдалеке
от родины. Есть еще одна альтернатива заказать уже более новый Solaris у
Sun▓а, но это время и деньги, или закачать из Интернета, что тоже самое.
Тогда эту проблему я не стал решать, не было времени. Но приехав домой,
и выделив себе часок, покопался в Интернете и не найдя ничего хорошего,
я задумался что делать. Поразмыслив, я пришел к следующему
(root-партиция это и есть минимальный Solaris) :
Самое простое решение апгрейда root-партиции на инсталляционном CD-ROM'е.
Сперва посмотрим из чего он состоит. Вставим CD-ROM в привод, система
volmgt распознает его и автоматом смонтирует.
Командой mount √v видим среди прочих строчек две, нужные нам строчки:
/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s2 on /cdrom/sol_8_u3_ia/s2 type hsfs read-only/nosuid/maplcase/noglobal/rr/traildot/dev=1740003
/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s0 on /cdrom/sol_8_u3_ia/s0 type ufs read-only/nosuid/intr/largefiles/onerror=panic/dev=1740001
Анализ строчек дает нам некоторые сведения о структуре CD-ROM'а. CD-ROM
состоит из двух частей, первая часть hsfs файловая система с RockRidge
расширением, вторая часть ufs файловая система. Из просмотра
содержимого этих частей делаем вывод, что в первой части содержится сам
продукт, во второй части root-партиция необходимая для загрузки ОС
Solaris.
Командой df √k:
/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s2
421708 421708 0 100% /cdrom/sol_8_u3_ia/s2
/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s0
80118 28186 43922 40% /cdrom/sol_8_u3_ia/s0
видим что Sun нам оставил свободного места в root-партиции ~40Мб, что
достаточно для некоторого апгрейда.
Командой prtvtoc /vol/dev/dsk/c1t0d0/sol_8_u3_ia/s0:
* /vol/dev/dsk/c1t0d0/sol_8_u3_ia/s0 partition map
*
* Dimensions:
* 512 bytes/sector
* 640 sectors/track
* 1 tracks/cylinder
* 640 sectors/cylinder
* 2048 cylinders
* 2048 accessible cylinders
*
* Flags:
* 1: unmountable
* 10: read-only
*
* Unallocated space:
* First Sector Last
* Sector Count Sector
* 1015679 295041 1310719
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 2 10 843519 172160 1015678
1 4 10 0 843519 843518
2 0 00 0 1015680 1015679
находим сколько занимает первая часть √ 843519. Находим на диске
достаточно места для манипуляций ~600Мб. Выкачиваем первую часть
dd if=/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s2 bs=512 count=843520 of=part0.img
и вторую часть таким же методом
dd if=/vol/dev/dsk/c1t0d0/sol_8_u3_ia/s0 bs=512 of=part1.img
Дальше используя lofiadm монтируем вторую часть для
апгрейда:
mkdir root
lofiadm √a `pwd`/part1.img
возвратит /dev/lofi/1, где /dev/lofi/1 может быть другим.
mount /dev/lofi/1 `pwd`/root
Апгредим root-партицию, которая находится в `pwd`/root, например
рекомендованными Sun-ом patches (8_x86_Recommended.zip).
После апгрейда демонтируем вторую часть:
umount `pwd`/root
lofiadm √d /dev/lofi/1
rmdir root
Скатываем все в ISO образ CD-ROMа;
cat part0.img part1.img >test.iso
и записываем на болванку, например с помощью cdrecord, или любой другой
программы работающей с ISO образами.
Пробуем загрузиться с полученного CD. Работает !!!. Хорошо НО.
Все вышесказанное интересно, но как мне показалось требует развития,
хочется апгредить root-партицию не только в пределах ~40Мб но и в
больших пределах, например для создания CD-ROM'а восстановления (типа
Reanimator for Solaris), да и первую часть не мешало бы тоже
апгрейдить, например объеденить первый инсталляционный CD-ROM и второй
или вообще добавить третью часть и т д. Хочу создать свой совершенно
отличный от замыслов Sun CD-ROM. Проблема на не один час. Прочитав кучу
документов в принципе, и не только, решил проблему.
И в общих чертах (не люблю писать много, но для заинтересованных могу и
написать) о проделанной работе. В структуре загрузочного CD-ROM'а есть
важные части, которые описывают его геометрию. Меняя содержание CD-ROM'а
необходимо это учитывать. Геометрию описывают такие общеизвестные вещи,
как DKLABEL и входящий в его состав VTOC. Также необходимо найти
загрузочную часть CD-ROM▓а. Содержание, местоположение и возможность их
модификации уже не является тайной. Чтобы модифицировать файловую
систему hsfs и сделать загрузочный CD-ROM нам потребуется такой
инструмент как mkisofs. Изучение его требует времени. Пройдя все эти
этапы мы получили наконец то что мы хотим. В конце у меня появился свой
инструмент для этого, несколько shell-сценариев, и несколько программ
написанных на Си. Кому не охота все это изучать, можно выслать полную
версию статьи и моих разработок. Пишите мне по e-mail: s280503@yandex.ru
P.S.
Сошлюсь на некоторые документы:
Спецификация El Torito: http://www.phoenix.com/PlatSS/PDFs/specs-cdrom.pdf
Документация по Solaris: http://docs.sun.com/