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

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) и выпадаем в приглашение:


ynynf4mkzhgfeantkrjy78ou_tu.jpeg
gu8q6goqe8hg1ub681ele3gclq8.jpeg

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


3_dmystmwyfvhr2dwdpui1cecmw.jpeg

Теперь у нас есть 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


где gate - имя загрузочного сервера под управлением Debian
root - откуда тянем необходимые файлы для дальнейшей загрузки
install - "корень" установочного диска
Параметры boottype и rootopts необходимы "SUN-железяке" как служебные, без описания которых загрузка не пойдет.

далее добавляем в /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; }


Теперь момент истины, в среде OpenBoot Prompt набираем boot net -v - install и в 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


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



image
image
image
image
image
image


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



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

Так же, можно создать папку /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, но это уже немного другая история...

© Habrahabr.ru