Ко мне в руки попали две интересные машины: Sparc Classic, укомплектованный жестким диском, и способный с него загружаться, и Sunblade 100 — относительно современная рабочая станция с Solaris 10 на борту и штатным жестким диском. Первая машина, как выяснилось позднее, последний раз включалась в 1995-м, вторая — в 2004-м. Особых задач не стояло, просто было интересно посмотреть что там внутри, прежде чем машины отправятся на списание и слом.
Обе машины при включении демонстрировали свою относительную исправность, разве что пеняли на содержимое nvram, и пытались грузиться по сети. Загрузка по сети прерывается либо отключением оной, либо нажатием Stop+A (ну или Сtrl+Brake) на клавиатуре. Надо сказать, старой клавиатуры и мыши для Sparc Classic у меня сначала не было, как не было и монитора, поэтому все манипуляции производились посредством кусочка кабеля UTP, который изображал из себя консольный AB кабель.
Признаюсь, изначально мне казалось, что там же UFS, что делов там на 5 минут — загрузить систему в failsafe, поправить строчку в /etc/shadow и я root! Но не тут-то было.
Начал я с Sunblade 100. Файловая система — SUN UFS, суперблок спарковый. Ну, думаю я… дам под линуксом что-то типа:
и получу sunos root,
дам что-то типа:
И получу sunos home…
Только вот rw от чего-то не завезли. Совсем. При этом Linux умеет писать в UFS, созданный на современных спарках, но по умолчанию не умеет. Для того, чтобы Linux таки стал писать в UFS (мы помним, что нужно поправить /etc/shadow), нужно просто пересобрать ядро с параметром CONFIG_UFS_FS_WRITE=y.
Дальше, как бы странно это не звучало, мои пути разделились. Первый путь — загрузка машины с CD в режиме failsafe и попытка сброса пароля, второй — пересборка ядра Linux, третий — установка Solaris X86 и монтирование раздела.
Отчет по пути номер раз:
Как оказалось, Solaris 10u11 слегка не может загрузиться с болванки на машине с 256MB памяти. По этой причине были срочно найдены четыре модуля SDR ECC RDIMM 256MB и с гигабайтом памяти команда boot cdrom -F failsafe завершилась успешно. Раздел был примонтирован, vi присутствовал, /etc/shadow был исправлен. Правда, пришлось еще заменить штатный CD-ROM на DVD-ROM.
Отчет по пути номер два:
Ядро собралось, файловая система современного Sparc Solaris примонтировалась в режиме записи, /etc/shadow мог бы быть поправлен, но предыдущий способ сработал раньше.
Отчет по пути номер три:
Облом. Solaris x86 не может примонтировать в режиме записи раздел Solaris Sparc.
Отчет по иным путям:
Solaris загружается в failsafe и single user mode немного не так, как Linux. В частности, загрузка с жесткого диска в любом из этих режимов прерывается предложением либо ввести пароль root’а, либо продолжить загрузку в штатном режиме. FreeBSD тоже разочаровал. Старые версии умеют спарковскую разметку (см. kldload geom_sunlabel.ko), но не файловую систему.
После успеха с Sunblade 100, я взялся за Sparc Classic. Хотел просто подцепить его диск (SCSI 50pin) на Sunblade 100 и проделать все манипуляции там, но от чего-то все мои PCI SCSI HBA работать отказались… вечер переставал быть томным.
На самом деле, путей было несколько и они отчасти перекликались с перечисленными выше, но…
Отчет по пути номер раз:
Как оказалось, загрузить что-то даже со SCSI CD-ROM не так-то просто. Что и как можно загрузить по сети, я тоже сходу не придумал. Найти «какой-нибудь линукс» под microSparc, или Solaris 2.4, поднять dhcp, bootp, tftp… слишком комплексно. Четно признаюсь, с дискеты загружаться не пробовал, но не думаю что есть такая ОС, которая бы поместилась на дискету и помимо прочего имела бы инструменты для монтирования UFS и текстовый редактор.
Отчет по пути номер два:
Ядро собралось, файловая система старого Sparc Solaris примонтировалась только в режиме чтения, /etc/shadow мог бы быть прочитан, но не более того. Именно это описано в документации на ядро. «Старый UFS» — только чтение.
Отчет по пути номер три:
Облом. Solaris x86 не может примонтировать в режиме записи раздел Solaris Sparc.
Отчет по иным путям:
Файлы /etc/shadow и /etc/passwd были скопированы на другую машину, john разломал рута за 15 минут. Всё бы ничего, но осадочек остался…
Вместо выводов
Наверняка, я не нашел какой-то более простой способ, но невозможность писать из коробки UFS в Linux, равно как и непереносимость разделов между Solaris Sparc и Solaris x86 реально неприятно удивили.
[UPD]
Старый UFS можно было переписать и на Sunblade 100, просто нужно было подобрать правильнфй SCSI контроллер. На сколько я понял, с Adaptec’ами теперь Solaris не дружит, а вот правильный LSI/Symbios определился.
Самый простейший способ — записать ISO десятки на DVD, стартануть с него, в первом же меню выбрать single mode shell и примонтировать рута на диске — не рассматривали? Это, в общем, документированный способ сброса рута на Солярисе. Работает на безголовых серверах.
DVD на Sparc Classic у меня в планах…
Что касается SunBlade, то в тексте было указано что во-первых на машине CD, а не DVD, а во-вторых, всего 256MB памяти 🙂 При этом, способ с DVD (с установкой DVD привода и добавлением памяти) указан как использовавшийся по факту. Т.е. я рассмотрел и применил, а Вы читали текст? 🙂