Установка Solaris 10 на SunFire V240 по сети, с помощью загрузочного сервера на базе Debian Stretch

в 14:43, , рубрики: Debian, netboot, netinstall, Solaris, sun, SunOS, v240, системное администрирование

image

«Вороне где-то бог послал кусочек SUNa. Домой Ворона воротясь, включить его уж было собралась, да позадумалась...»

Приветствую всех читателей.

Прошу прощения за столь одиозный заголовок в виде вольной трактовки известной басни Крылова, но именно такое ощущение я получил при распаковке из пузырьковой пленки сервера SunFire V240.

По тексту немного фото будут иметь место быть.

Я достаточно давно хотел "пощупать" настоящий SUN на UltraSPARC именно в железе.
Solaris 10 я увидел на x86 достаточно давно, еще в то время когда SUN, при заполнении простой формы, рассылала установочные DVD по всему миру. Попробовал, не впечатлило. Может не понял философию OS, может Debian на тот момент был логичнее и понятнее для меня, да и для x86 в частности, но диск был заброшен на полку и забыт, а мысль попробовать SUN именно в "железе" периодически всплывала в голове.

Тот самый DVD

image
image

И если не в даваться в подробности, как то случайно я стал владельцем SunFire V240.
Так как железка досталась "условно бесплатно", я особо не вникал в особенности комплектации, и получив ответ — "рабочая", согласился стать ее хозяином.

Сервер оказался без… видеокарты, интерфейса PS/2 (видимо были "дернуты" вместе со 2-м блоком питания) и DVD-ROM (его видимо не подразумевалось комплектацией, так как заводская "заглушка" была на месте). Но 4 HDD имели место быть и в душе затеплилась надежда...

SunFire V240

image
image
image

"Погуглив" просторы интернета, как что и где, нашел в хозяйстве кабель для CISCO — "RS232-RJ45", подключил к хосту с putty и… надежда пропала.

Система проходила POST, но с HDD не грузилась, выпадая в ошибку (я думаю система была намеренно испорчена, так как потом выяснилось через информацию в ALOM, что сервер использовался в достаточно знакомом на слух банке), пароль для входа в ALOM предыдущий хозяин не помнил или не знал, батарейка BIOS была севшая, настроение ни к черту.
Гуглим...

Поиск показал, что есть возможность установки OS по сети, но разрозненность вариаций установки очень сильно смущала, да и в конечном итоге все статьи сводились к установке из под solaris, когда в наличии был только Debian. Желание "громоздить" даже на "виртуалку" Sunos отсутствовало напрочь. Ну не выполнимых задач не бывает, начнем изучать материал, имея в хозяйстве домашний сервер под управлением Debian Stretch.

Предварительные ласки (настройки)

Для загрузки по сети на сервере под управлением Debian необходимы следующие пакеты:

  • rarpd — обратный протокол преобразования адресов, который применяется во время загрузки «SUN-железяки», когда она посылает групповое сообщение-запрос со своим физическим адресом. Именно благодаря этому сервису «SUN-железяка» получит IP-адрес для дальнейшей загрузки.
  • tftpd — тут все понятно, с помощью данного протокола «SUN-железяка» загрузит ядро для дальнейшей загрузки процесса установки OS.
  • bootparamd — Ну тут чистый копипаст — «Команда bootparamd представляет собой серверный процесс, предоставляющий информацию, необходимую для загрузки бездисковых клиентов. Он получает информацию из файла /etc/bootparams».
    Практика показала, что при недостатке информации в этом файле, загрузка не пойдет.
  • nfs-kernel-server — по данному протоколу «SUN-железяка» будет вытаскивать необходимые установочные файлы дистрибутива.
  • isc-dhcp-server — назначит IP-адрес интерфейсу в процессе установки дистрибутива OS, так же даст все необходимые параметры типа NETMASK, DEFAULT GATEWAY и так далее.

Для того, что бы получить исходные данные для загрузки (MAC-адрес) и запустить саму загрузку, нам нужен доступ к OpenBoot Prompt (получаем доступ нажимая в подключенной "putty-сессии" ctrl + Break) и выпадаем в приглашение:

Установка Solaris 10 на SunFire V240 по сети, с помощью загрузочного сервера на базе Debian Stretch - 7
Установка Solaris 10 на SunFire V240 по сети, с помощью загрузочного сервера на базе Debian Stretch - 8

набираем: boot net -v — install

Установка Solaris 10 на SunFire V240 по сети, с помощью загрузочного сервера на базе Debian Stretch - 9

Теперь у нас есть MAC-адрес интерфейса с которого идут запросы на загрузку.

Принимаем имя "SUN-железяки" для дальнейшей работы с ней — "v240"

Переходим к настройке «загрузочного сервера»

правим файл /etc/ethers добавив строку:

0:3:ba:d0:3b:23 v240

правим /etc/hosts добавив строку:

192.168.1.50 v240

Естественно сервис должен быть перезапущен:

etc/init.d/rarpd restart

Теоретически, при наборе команды boot net -v — install в среде OpenBoot Prompt "SUN-железяка" уже должна получать IP-адрес посредством RARP:

tail -f /var/log/syslog
...
... gate rarpd[21993]: RARP request from 00:03:ba:d0:3b:23 on eth0
... gate rarpd[21993]: RARP response to 00:03:ba:d0:3b:23 192.168.1.50 on eth0
...

Далее проконтролируем, что в файле /etc/inetd.conf присутствует строка, приведенная ниже.

Это говорит о том, что tftpd как минимум, корректно установлен:

...
tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp
...

проверяем, что порт 69 прослушивается:

root@gate:~# netstat -lnp | grep :69
udp        0      0 0.0.0.0:69              0.0.0.0:*                           19521/inetd
root@gate:~#

Далее создаем папку /exports/v240/ и монтируем туда образ загрузочного DVD-диска. Как создать образ или где его скачать останавливаться не буду, приведу только команду монтирования для сохранения логики изложения:

mount -oro,loop ./sol-10-u11-ga-sparc-dvd.iso /exports/v240/

Теперь необходимо скопировать из точки монтирования загрузочного DVD файлы, которые будут нужны "SUN-железяке" для первоначальной загрузки по сети, посредством tftp-протокола, в каталог, который используется по умолчанию tftpd — /srv/tftp. В нашем случае нам понадобится файл inetboot из каталога — /exports/v240/Solaris_10/Tools/Boot/platform/sun4u

Далее создаем symlink файла inetboot с именем в виде HEX транскрипции IP-адреса, котрый будет присваиваться "SUN-железяке".

Вот какой вывод команды ls /srv/tftp/ у меня:

root@gate:/# ls /srv/tftp/
C0A80132  inetboot.sun4u
root@gate:/#

C0A80132 — это и есть symlink на файл inetboot.sun4u (который называется inetboot и находиться на DVD диске в каталоге /Solaris_10/Tools/Boot/platform/sun4u) в виде HEX-транскрипции IP-адреса 192.168.1.50:
C0 — 192
A8 — 168
01 — 1
32 — 50

Теперь если попробовать снова загрузиться с помощью команды boot net -v — install
в syslog загрузочного сервера мы должны увидеть:

...
... gate rarpd[3616]: RARP request from 00:03:ba:d0:3b:23 on eth0
... gate rarpd[3616]: RARP response to 00:03:ba:d0:3b:23 192.168.1.50 on eth0
... gate in.tftpd[4365]: connect from 192.168.1.50 (192.168.1.50)
... gate tftpd[4366]: tftpd: trying to get file: C0A80132
... gate tftpd[4366]: tftpd: serving file from /srv/tftp
... gate rarpd[3616]: RARP request from 00:03:ba:d0:3b:23 on eth0
... gate rarpd[3616]: RARP response to 00:03:ba:d0:3b:23 192.168.1.50 on eth0
...

Это говорит о том, что запрос на IP-адрес был обработан, далее прошло соединение по TFTP и далее был запрошен IP-адрес на получение bootparams.

Настраиваем /etc/bootparams:
```v240 root=gate:/exports/v240/Solaris_10/Tools/Boot
install=gate:/exports/v240
boottype=gate:in
rootopts=gate:rsize=32768

где <b>gate</b> - имя загрузочного сервера под управлением Debian
<b>root</b> - откуда тянем необходимые файлы для дальнейшей загрузки
<b>install</b> - "корень" установочного диска
Параметры <b>boottype</b> и <b>rootopts</b> необходимы "SUN-железяке" как служебные, без описания которых загрузка не пойдет.
<cut />
далее добавляем в /etc/eхports следующую строку:


/exports/v240 192.168.1.50(ro,async,no_root_squash,anonuid=0,anongid=0)
...

Проверяем загружен ли NFS-сервеер:

root@gate:/# ps aux | grep nfs
root 1425 0.0 0.0 0 0? S< окт29 0:00 [nfsiod]
root 8022 0.0 0.0 0 0? S< окт29 0:00 [nfsd4_callbacks]
root 8025 0.0 0.0 0 0? S окт29 0:00 [nfsd]
root 8026 0.0 0.0 0 0? S окт29 0:00 [nfsd]
root 8027 0.0 0.0 0 0? S окт29 0:00 [nfsd]
root 8028 0.0 0.0 0 0? S окт29 0:02 [nfsd]
root 8029 0.0 0.0 0 0? S окт29 0:12 [nfsd]
root 8030 0.0 0.0 0 0? S окт29 0:22 [nfsd]
root 8031 0.0 0.0 0 0? S окт29 0:27 [nfsd]
root 8032 0.0 0.0 0 0? S окт29 1:19 [nfsd]
root 23646 0.0 0.0 4728 844 pts/3 S+ 17:44 0:00 grep nfs
root@gate:/#

Проверяем доступ к дистрибутиву через NFS:

root@gate:/# mount -t nfs4 gate:/exports/v240 /mnt
root@gate:/# cd /mnt/
root@gate:/mnt# ls
boot Copyright installer Offer_to_Provide_Source_Code.txt platform Solaris_10
root@gate:/mnt#

Доступ есть.

Теперь правим /etc/dhcp/dhcpd.conf добавив нижеприведенную секцию (dhcp-сервер должен быть предварительно настроен и проверен на факт раздачи IP-адресов клиентам)


host v240 { hardware ethernet 00:03:ba:d0:3b:23;
fixed-address 192.168.1.50; }
...

Теперь момент истины, в среде <b>OpenBoot Prompt</b> набираем <b>boot net -v - install</b> и в syslog bootup-сервера наблюдаем: 


… gate rarpd[12496]: RARP request from 00:03:ba:d0:3b:23 on eth0
… gate rarpd[12496]: RARP response to 00:03:ba:d0:3b:23 192.168.1.50 on eth0
… gate in.tftpd[13905]: connect from 192.168.1.50 (192.168.1.50)
… gate tftpd[13906]: tftpd: trying to get file: C0A80132
… gate tftpd[13906]: tftpd: serving file from /srv/tftp
… gate rarpd[12496]: RARP request from 00:03:ba:d0:3b:23 on eth0
… gate rarpd[12496]: RARP response to 00:03:ba:d0:3b:23 192.168.1.50 on eth0
… gate rpc.bootparamd: whoami got question for 192.168.1.50
… gate rpc.bootparamd: This is host v240
… gate rpc.bootparamd: Returning v240 (none) 192.168.1.1
… gate rpc.bootparamd: getfile got question for "v240" and file "root"
… gate rpc.bootparamd: returning server:gate path:/exports/v240/Solaris_10/Tools/Boot address: 192.168.1.1
… gate rpc.bootparamd: getfile got question for "v240" and file "rootopts"
… gate rpc.bootparamd: returning server:gate path:rsize=32768 address: 192.168.1.1
...

Далее должно "проскочить" в syslog bootup-сервера:


… gate rpc.bootparamd: getfile got question for "v240" and file "install"
… gate rpc.bootparamd: returning server:gate path:/exports/v240 address: 192.168.1.1
...

"И он сказал поехали..."

<!--<spoiler title="«Экран» V240 в процессе инициализации и установки OS">-->

<img src="https://habrastorage.org/webt/ie/xd/mf/iexdmftd6xla9fn3-vqjmpgqrwc.jpeg" alt="image"/>
<img src="https://habrastorage.org/webt/z_/sk/kt/z_skktqmipzju2b7nwhdsqlghdo.jpeg" alt="image"/>
<img src="https://habrastorage.org/webt/9k/wx/5h/9kwx5hwwgdom2w4j3jztgxxalo8.jpeg" alt="image"/>
<img src="https://habrastorage.org/webt/gt/wk/iy/gtwkiybeokio40p6kxqrwy-ogag.jpeg" alt="image"/>
<img src="https://habrastorage.org/webt/di/xv/3_/dixv3_hls8crcu7f_5wxynd45tq.jpeg" alt="image"/>
<img src="https://habrastorage.org/webt/z7/ue/f8/z7uef8fezdlrvk22q4xvjxreg58.jpeg" alt="image"/>

<!--</spoiler>-->
И вуаля! Нам предлагают выбрать язык и продолжить установку.
За сим откланиваюсь, но не прощаюсь.

<!--<spoiler title="P.S.">-->

denyhosts, битый switch, который "режет" ARP и тихонько молчит об этом (у D-LINK это вообще тема), и iptables (при некоторых настройках) вам могут изрядно попортить крови. Отсюда лишний раз следует, что если хотите предсказуемости результата, то проверьте hardware и выключите не нужный, на данный момент software, тем самым, вы сохраните свои нервные клетки и время.
<cut />
Так же, можно создать папку /exports/v240_cfg и в ней создать файл **sysidcfg** со следующим содержимым:

system_locale=ru_RU.UTF-8
install_locale=en_US
timeserver=192.168.1.1
network_interface=primary {dhcp protocol_ipv6=no}
name_service=DNS {domain_name=homenet name_server=192.168.1.1 search=homenet}
security_policy=NONE

и добавить в /etc/exports строку:


/exports/v240_cfg 192.168.1.50(ro,async,no_root_squash,anonuid=0,anongid=0)
...

Это избавит вас от ответов на некоторые вопросы в процессе установки OS, но это уже немного другая история...

<!--</spoiler>-->

Автор: Ботинок

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js