Как я убитый label
на SPARC'е восстанавливал.
Началось все с того, что надо было сменить забытый рутовый
пароль на Sun Ultra5.
Другого сана в окресностях нету
- подцепили к машине с Линуксом.
К сожалению оказалось, что в последней версии ядра Linux'а поддрежка файловой
системы UFS - read only.
Поняв что фокус не удался, винчестер поставили на
место.
На диск ничего не записывалось (по крайней мере явно)
и изменения данных не производилось.
После этого при загрузке Solaris
выдавалось сообщение:
"Corrupt label - label checksum failed".
И дальше, естественно, ничего не происходило.
На всякий пожарный сделали копию винчестера с помощью dd.
Скачали диск с OpenSolaris, загрузились с него в single mode (для этого при загрузке следует набрать “boot cdrom –s”, или прочитать документацию).
Посмотрел с помощью программы format текущую таблицу разделов – ничего даже похожего на правду там не было – разделы перекрывались, размеры их были от фонаря заданы и т.д.
Восстановление из backup label так же ничего не дало – тоже бред.
Так что содержимое документа http://docs.sun.com/app/docs/doc/817...kisoq2a?a=view не помогло.
А работоспособность системы восстановить надо. Так, чтобы все работало как и раньше.
Т.к. все окрестные сантехники были в далеком отпуске, до всего пришлось доходить самому.
После некоторого времени мучений и поисков в Интернете было выяснено, что у SAPARC’ов то, что в IBM PC называется partition table - отсутствует. Зато есть VTOC (Volume Table Of Contens). И по структуре это очень сильно отличается.
И поэтому программ, которые могут с этим работать катастрофически мало.
Прицепил к машине с Windows. Активировал диск. (Потом уже я подумал, что последнего делать не следовало).
Перепробовав некоторое количество разных средств, была найдена программа.
TestDisk
(http://www.cgsecurity.org/wiki/TestDisk).
Он мне обнаружил одну партицию
Sun root, занимающую весь
диск, кроме первых 768'и цилиндров. (Из 14533) .
Только вот беда - функции записи полученной информации на винт для сана там еще не реализовано.
Тут выяснилась еще одна пакость:
Windows подумал, и решил что та геометрия
винчестера, которая была на Сане ему не подходит, и «немножко» ее поправил. Для восстановления информации TestDisk’ом геометрия критически важна. Так что
если вам, не дай бог понадобиться – смотрите геометрию на сане с помощью format, и
задавайте ее в TestDisk’е
ручками.
После указания правильной геометрии TestDisk быстренько показал мне тот же бред что и format на сане. Но нажав волшебную кнопочку Search я увидел следующее:
TestDisk 6.4, Data Recovery Utility, June 2006
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Disk /dev/sdc - 120 GB / 111
GiB - CHS 57459 16 255
Partition Start End
Size in sectors
P SunOS root
1029 0 1
1092 15 255 261120 [/]
P SunOS var
1094 0 1
1608 15 255 2101200 [/var]
P SunOS root
1609 0 1
2123 15 255 2101200 [/opt]
P SunOS usr 2124 0 1
3023 15 255 3672000 [/usr]
P SunOS root
3024 0 1 57458 15 255
222094800 [/export/ba_h0]
Structure: Ok.
Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition
characteristics:
P=Primary D=Deleted
Keys A: add partition, L: load backup, T: change type,
Enter: to
continue
Перецепил диск на ультру, с помощью формата поправил геометрию, и создал партиции, ручками задав найденные параметры. Партиции пронумеровал последовательно от 0 до 4-х, сверху вниз. Flag всем партициям задал “wm”.
После этого попытался загрузиться с винта. Естественно не получилось – swap все-таки нужен.
Гружусь с компакта в single mode, все созданные разделы видны и монтируются. Натравил на них по очереди fsck. Тот поругался-поругался и ошибки поисправлял.
Нашел файл /etc/vfstab, посмотрел чего там и куда монтируется (включая swap). При этом в файле /etc/mnttab не указано, каким слайсом (разделом) по номеру должен быть swap.
Номера разделов (по солярисовски – слайсов (slice)) там задаются в формате cXtYdZsN, где N – это номер слайса, как он отображается программой format. Остальное номера контроллеров, дисков и т.д.
Так вот, изучив содержимое vfstab, я понял, что
параметры разделов заданны верно, но идти они должны в
другом порядке: 0,3,4,6,7. А swap должен быть 1-м. Ну и куда бы его воткнуть? Подумал что
можно в первую тысячу цилиндров. Все равно она свободна. Для swap’а задал tag=”swap” flag=”wu”.
Снова пересоздав партиции,
записал новый label на диск и загрузился с него.
И все заработало! УРА!!!!!!!!!!!!!!!!!