Запуск Sun JavaStation

DEC Alpha, ARM, MIPS, PowerPC, SPARC, VAX, PDP-8 и другие устройства
Ответить
albr
Advanced Member
Сообщения: 1154
Зарегистрирован: 20.04.2015,15:35
Откуда: Санкт-Петербург

Запуск Sun JavaStation

Сообщение albr » 12.09.2019,14:37

Здравствуйте!
В конце лета у меня дошли руки до оживления Sun JavaStation, который лежал у меня кирпичиком с января 2017. Поиском я нашел вот эту тему (https://www.phantom.sannata.org/viewtop ... avaStation), но она заглохла 9 лет тому назад и я решил её не поднимать, а создать свою.
Мне удалось уже достичь некоторых результатов, которыми хотелось бы поделиться.
pic_1.jpg
Sun JavaStation – это семейство сетевых компьютеров фирмы Sun Microsystems, выпускавшихся с ноября 1998 по март 2000. В этих компьютерах отсутствует поддержка каких-либо носителей информации, как внутренних, так и внешних, операционная система и необходимое ПО загружается по сети. Изначально компьютеры данного семейства предназначались для работы под управлением некой JavaOS, однако на них можно также запустить Linux и NetBSD.
Мне досталась первая модель JavaStation, известная также под названием «Mr. Coffee». Это компьютер на базе архитектуры Sun4M, с процессором MicroSPARC IIe 110МГц, без SCSI, внутренних и внешних дисков. В отличии от других рабочих станций Sun той эпохи, JavaStation использует стандартные PS/2 клавиатуру и мышь, а также обычный SVGA монитор. Видеоадаптер поддерживает разрешение 1024x768, 70Гц, 8-битный цвет. В компьютере также присутствует сетевой адаптер Sun Lance 10Mbps , последовательный порт и аудио-адаптер, реализованный на базе микросхемы Crystal CS4231.
Оперативная память – 4 стандартных 72-контактных SIMM, устанавливаемых попарно. Поддерживаются модули FPM, 60нсек, объемом до 16Мбайт, максимальный объем оперативной памяти составляет 64Мбайт.
pic_2.jpg
Компьютер был куплен в Москве на Авито в декабре 2016 года, с покупкой и пересылкой его в Санкт-Петербург мне очень помог STIW, за что ему еще раз отдельное спасибо. Общие расходы составили 2500р, из них 1500р стоил сам компьютер и еще 1000р – накладные расходы на покупку и транспортировку.
Исходная задумка заключалась в том, чтобы запустить на компьютере ОС NetBSD с некоторым минимумом приложений и настроить доступ в интернет.
По факту оказалось, что компьютер включается, быстренько пишет на экран какое-то сообщение и перезагружается. С помощью фотоаппарата удалось установить, что причина ошибки – некорректные данные IDPROM. Собственно, после этой проверки он и был надолго убран на полку, хотя время от времени я искал в сети различную информацию по восстановлению и запуску.

Итак, первый этап - это восстановление батарейки в микросхеме NVRAM. Процедура эта описана в сети достаточно подробно, суть её заключается в том, чтобы расковырять корпус микросхемы, добраться до контактов встроенной батарейки и припаять к ним держатель для обычной CR2032. Есть еще рекомендация полностью удалить внутреннюю батарейку, но я не решился и ограничился только подпайкой новой:
pic_3.jpg
А вот дальше возникла проблема - нужно как-то восстановить содержимое NVRAM - записать туда IDPROM. Эта процедура также описана в сети, в статье «FAQ: Frequently Asked Questions about Sun NVRAM, IDPROM, hostid» (http://lib.ru/TXT/faqsunnvram.txt), но есть нюанс. Восстановление осуществляется из утилиты "Open Boot monitor", которую на "обычных" рабочих станциях Sun можно вызвать нажатием клавиш Stop-A на этапе начальной загрузки. Но JavaStation работает с обычной PS/2 клавиатурой, "Stop-A" там, разумеется, нет. Я безуспешно испробовал кучу других комбинаций, потом где-то нашел упоминание о том, что на этапе старта JavaStation может вообще на клавиатуру не реагировать.
Оказалось, что нужно установить перемычку 1-2 блока J0904. В этом режиме ввод-вывод осуществляется через последовательный порт.
pic_4.jpg
Подключаем JavaStation к другому компьютеру нуль-модемным кабелем, в терминальной программе нужно выставить параметры связи: Speed: 9600, Data bits: 8, Stop bits: 1, Parity: None, Flow control: XON/XOFF. Включаем JavaStation. После процедуры инициализации будет предложено нажать любую клавишу для входа в OpenBoot monitor.
pic_5.jpg
Далее записываем данные IDPROM как описано в статье. Содержимое IDPROM имеет следующую структуру:
Байт Значение
0 Всегда 01 – формат или номер версии
1 Первый байт hosted – тип машины. В нашем случае – 80.
2-7 6-байтный MAC-адрес, первые три байта должны быть 08,00,20
8-B Дата производства, особого значения не имеет, можно задать нулями
C Второй байт hostid
D Третий байт hostid
E Четвертый байт hosted
F Контрольная сумма – битовая XOR всех байтов 0-E
Программирование IDPROM осуществляется командой mkp, её формат: <значение> <байт> mkp. Для восстановления IDPROM нужно последовательно выполнить следующие команды:

Код: Выделить всё

1 0 mkp
80 1 mkp
8 2 mkp
0 3 mkp
20 4 mkp
c0 5 mkp
ff 6 mkp
ee 7 mkp
0 8 mkp
0 9 mkp
0 a mkp
0 b mkp
c0 c mkp
ff d mkp
ee e mkp
Для расчета контрольной суммы предлагается выполнить команду

Код: Выделить всё

0 f 0 do i idprom@ xor loop f mkp
Однако JavaStation не поняла, что я от неё хочу, поэтому я вычислил контрольную сумму с помощью калькулятора, у меня получилось A9. Записываем её в байт f:

Код: Выделить всё

a9 f mkp
Вводим команду reset, после перезагрузки выключаем JavaStation и снимаем установленную перемычку 1-2 блока J0904. Теперь при включении JavaStation пишет свой MAC-адрес и пытается загружаться. Продолжение следует...
Примус починяю...

albr
Advanced Member
Сообщения: 1154
Зарегистрирован: 20.04.2015,15:35
Откуда: Санкт-Петербург

Запуск Sun JavaStation

Сообщение albr » 12.09.2019,20:39

...продолжаем разговор. После записи в NVRAM корректных данных IDPROM компьютер при включении показывает картинку:
pic_6.jpg
которая через некоторое время заменяется на такую
pic_7.jpg
так как загружаться по сети ему неоткуда. Для загрузки операционной системы потребуется сервер, предоставляющий следующие сервисы – RARP, DHCP, TFTP и NFS. Для этой цели я решил использовать уже существующий домашний сервер под FreeBSD. Сетевую загрузку операционных систем и NFS я до этого момента ни разу не настраивал, поэтому пришлось повозиться. С первого раза не получилось, поэтому я решил сперва настроить сетевую загрузку собственно FreeBSD на обычном x86-компьютере, и добившись успешного результата, вернулся к запуску NetBSD на JavaStation.
1. RARP
Настройка RARP проблем не вызвала. Нужно разрешить rarpd в rc.conf

Код: Выделить всё

rarpd_enable="YES"
rarpd_flags="-a -s -v"
Прописать хост для JavaStation в /etc/ethers:

Код: Выделить всё

08:00:20:c0:ff:ee	mrcoffee
Добавить запись в файл /etc/hosts

Код: Выделить всё

192.168.131.9	mrcoffee
2. DHCP
Для сетевой загрузки ОС сервер DHCP кроме стандартной информации (ip-адрес, адрес DNS-сервера, домен и т.п.) должен также сообщать клиенту адрес сервера TFTP, корневой каталог NFS, имя файла сетевого загрузчика. Изначально DHCP у меня был настроен на маршрутизаторе, но так как там нет возможности настроить эти параметры, пришлось DHCP на маршрутизаторе отключить и настроить его на сервере.
Действуем по FreeBSD handbook, устанавливаем пакет net/isc-dhcp43-server, копируем /usr/local/etc/dhcpd.conf.example в /usr/local/etc/dhcpd.conf и редактируем этот файл настроек.
Файл /usr/local/etc/dhcpd.conf выглядит следующим образом:

Код: Выделить всё

# dhcpd.conf

# option definitions common to all supported networks...
option domain-name "alb.5sov.com";
option domain-name-servers 192.168.131.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

# A slightly different configuration for an internal subnet.
subnet 192.168.131.0 netmask 255.255.255.0 {
  range 192.168.131.10 192.168.131.254;
  option routers 192.168.131.1;
  option broadcast-address 192.168.131.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.131.2 ;
}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
host mrcoffee {
  hardware ethernet 8:0:20:c0:ff:ee;
  fixed-address 192.168.131.9;
  filename "C0A88309";
  option root-path "/exports/mrcoffee/root" ;
}
Параметр next-server 192.168.131.2 ; задается для всей внутренней сети, отдельно описываются настройки для хоста JavaStation (mrcoffee). Параметр filename задает имя сетевого загрузчика, который машина будет запрашивать по TFTP. Для JavaStation важно, чтобы это имя соответствовало 16-ричному представлению её IP-адреса. Параметр root-path задает путь к корневой файловой системе. Эта файловая система должна экспортироваться как NFS.
Также нужно разрешить запуск dhcpd в файле /etc/rc.conf:

Код: Выделить всё

dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="em0"
dhcpd_withumask="0222"
3. TFTP
Для запуска TFTP нужно разрешить его в файле /etc/inetd.conf, раскомментируем или добавляем следующие строки

Код: Выделить всё

tftp	dgram	udp	wait	root	/usr/libexec/tftpd	tftpd -l -s /tftpboot
tftp    stream  tcp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot
Естественно, в каталог /tftpboot нужно положить файл сетевого загрузчика, но об этом позднее.
4. NFS
В руководстве по запуску NetBSD на JavaStation предлагается создать три файловых системы – корневую, /usr и swap. Я не вижу практического смысла выделять для /usr отдельную файловую систему, поэтому ограничился двумя – корневой и swap. Создаем каталоги для этих файловых систем:
mkdir -p /exports/mrcoffee/root/dev
touch /exports/mrcoffee/swap
Описываем их как экспортируемые в файле /etc/exports

Код: Выделить всё

/exports/mrcoffee/root -alldirs -maproot=root:wheel
/exports/mrcoffee/swap -alldirs -maproot=root:wheel
В файле rc.conf нужно включить поддержку NFS:

Код: Выделить всё

rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_enable="YES"
mountd_flags="-r"
portmap_enable="YES"
nfs_client_enable="YES"
Теперь нужно перезагрузить требуемые сервисы или сервер целиком.

Следующий этап - подготовка файловой системы, которая и будет использоваться для загрузки на JavaStation, об этом я расскажу в следующем сообщении.
Примус починяю...

albr
Advanced Member
Сообщения: 1154
Зарегистрирован: 20.04.2015,15:35
Откуда: Санкт-Петербург

Запуск Sun JavaStation

Сообщение albr » 13.09.2019,13:23

Следующий этап - выбор дистрибутива NetBSD
Как описано на странице порта NetBSD для SPARC, существует две реализации начального загрузчика (BootROM) для JavaStation - OpenBoot PROM 2 и Open Firmware. Определить реализацию загрузчика можно по номеру версии, которую JavaStation выводит при запуске. Если при запуске отображается “OpenBoot 2.30”, используется OpenBoot PROM 2. Если отображается “OpenBoot 3.x” (где x обычно 10 или 11), то используется Open Firmware. (См. https://www.netbsd.org/ports/sparc/javastation.html). Дистрибутивы и некоторые детали настройки NetBSD для разных реализаций BootROM отличаются. В моем случае версия BootROM “3.11.1”, т.е. мы имеем дело с Open Firmware. Для неё нам нужна ветка дистрибутива «sparc» и сетевой загрузчик bootjs.net, который располагается в каталоге sparc/installation/netboot.
Также есть замечание по поводу версии. На данный момент актуальна версия 8.1 NetBSD. Сама ОС этой версии на JavaStation успешно загрузилась, но X-windows не заработал. Причина в драйвере suntcx, который когда-то давно «подправили» и в результате на JavaStation он теперь не работает, причем проблема присутствует по меньшей мере в релизе 6.1.4.
Статьи про запуск NetBSD на JavaStation были написаны в начале 2000-х и, видимо, с той поры это уже никого особо не интересовало. Методом перебора архивных дистрибутивов я подобрал версию 3.0, в которой X11 запускается и работает. На этом релизе я и остановился.
Из дистрибутива нам потребуются следующие файлы:
/sparc/installation/netboot/bootjs.net
/sparc/binary/sets/base.tgz
/sparc/binary/sets/comp.tgz
/sparc/binary/sets/etc.tgz
/sparc/binary/sets/kern-MRCOFFEE_OFW.tgz
/sparc/binary/sets/games.tgz
/sparc/binary/sets/man.tgz
/sparc/binary/sets/misc.tgz
/sparc/binary/sets/text.tgz
/sparc/binary/sets/xbase.tgz
/sparc/binary/sets/xcomp.tgz
/sparc/binary/sets/xetc.tgz
/sparc/binary/sets/xfont.tgz
/sparc/binary/sets/xserver.tgz
Эти файлы нужно скачать и сохранить где-нибудь на сервере. Я сложил их в свой домашний каталог, /usr/home/alb/netbsd
Теперь можно разворачивать систему.

1. Файл bootjs.net нужно скопировать в каталог TFTP-сервера (/tftpboot) под именем, указанным в параметре filename DHCP-сервера (это ip-адрес JavaStation в шестнадцатеричном виде)
cp /usr/home/alb/netbsd/bootjs.net /tftpboot/C0A88309

2. Распаковываем ядро:
cd /exports/mrcoffee/root
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/kern-MRCOFFEE_OFW.tgz


3. Создаем файл устройства консоли:
mknod /exports/mrcoffee/root/dev/console c 0 0

4. Распаковываем компоненты дистрибутива:
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/base.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/etc.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/comp.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/games.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/man.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/misc.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/text.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/xbase.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/xcomp.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/xetc.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/xfont.tgz
tar --numeric-owner -xvpzf /usr/home/alb/netbsd/xserver.tgz


5. Создаем каталоги /home и /kern:
mkdir /exports/mrcoffee/root/kern
mkdir /exports/mrcoffee /root/home


6. Создаем файл swap-а:
dd if=/dev/zero of=/exports/mrcoffee/swap bs=4k count=4k

7. Создаем файл /exports/mrcoffee/root/etc/ifconfig.le0, в котором должна быть строчка:

Код: Выделить всё

inet client netmask 255.255.255.0 broadcast 192.168.131.255
8. Создаем файл /exports/mrcoffee/root/etc/fstab, содержащий следующие строки:

Код: Выделить всё

#/etc/fstab
nfsserver:/exports/mrcoffee/swap   none  swap  sw,nfsmntpt=/swap
nfsserver:/exports/mrcoffee/root   /     nfs   rw 0 0
9. Редактируем файл /exports/mrcoffee/root/etc/rc.conf. В него нужно добавить:

Код: Выделить всё

[code]hostname="mrcoffee"
defaultroute="192.168.131.1"
nfs_client=YES
auto_ifconfig=NO
net_interfaces=""
[/code]

10. Создаем файл /exports/mrcoffee/root/etc/hosts со строками:

Код: Выделить всё

#/etc/hosts
192.168.131.9 mrcoffee
192.168.131.2 nfsserver
Теперь можно запускать JavaStation. Сначала она загружается в однопользовательском режиме:
pic_8.jpg
Нажимаем Enter, попадаем в консоль.
Создаём файлы устройств
#cd /dev
#/bin/sh MAKEDEV all
Проверяем swap:
#swapctl -A
swapctl: adding nfsserver:/export/client/swap as swap device at priority 0
#swapctl –l
Device 512-blocks Used Avail Capacity Priority
/dev/?? 32768 0 32768 0% 0
Устанавливаем пароль на root
passwd
Теперь на сервере редактируем /exports/mrcoffee/root/etc/rc.conf и меняем rc_configured=NO на YES:

Код: Выделить всё

rc_configured=YES
На JavaStation выходим из однопользовательского режима командой exit. Система продолжает загрузку уже в обычном режиме.
pic_9.jpg
На этом, собственно, все. Заходим в консоль, запускаем X11, далее можно уже обустраивать систему по вкусу.
pic_10.jpg
В процессе обустройства я нашел на ftp.netbsd.org образ диска с бинарными пакетами для NetBSD 3.0, собранными под платформу sparc. Правда их там не очень много.
Консольный проигрыватель mp3 mpg123 установился и работает, звуковой адаптер системой подцепился.
Поставил какой-то древний gimp, тоже живет, но это то еще извращение :)
А вот с www пока не задалось. Собранный lynx есть, но хочется чего-нибудь графического. Но в собранных пакетах ничего такого нет, придется пытаться собирать из исходников. NetSurf не собрался, последний dillo хочет fltk, а fltk не собрался тоже. Буду еще пытаться собирать более ранние версии. Либо, как вариант, сперва попытаться найти максимальную работающую версию NetBSD (с иксами) и пытаться собирать уже под неё. Любопытно, что уже под 4.0 готовых бинарных пакетов не наблюдается. Но есть сообщение об успешной сборке dillo под NetBSD 4.0.1 для sparc. В общем, есть еще поле для экспериментов.
Примус починяю...

spbra
Full Member
Сообщения: 245
Зарегистрирован: 06.12.2016,21:34

Запуск Sun JavaStation

Сообщение spbra » 14.09.2019,00:06

Ваш материал тянет на конкурс статей :thumbup:

Спасибо было познавательно :)

albr
Advanced Member
Сообщения: 1154
Зарегистрирован: 20.04.2015,15:35
Откуда: Санкт-Петербург

Запуск Sun JavaStation

Сообщение albr » 18.09.2019,11:33

spbra, пожалуйста :) Спасибо за отзыв :)
К конкурсу я с этим не управился, впрочем, не ради конкурса и затевалось. Да и сейчас еще поставленная задача до конца не решена, хочется все-таки запустить хоть какой-нибудь графический интернет-браузер. Но это уже "для галочки" главным образом. Есть у меня подозрение, что полноценного доступа в интернет с этих античных платформ уже не получится. Непосредственно перед "оживлением" JavaStation я закончил еще один свой "долгострой" - запустил FreeBSD 11 на iBook G3, про это тоже как-нибудь отдельную сагу напишу. Так там тоже с интернетом пришлось повозиться, более-менее современные браузеры с поддержкой Java и прочим либо не собирались вовсе, требуя x86/amd64 платформы, либо сборка вываливалась с ошибками где-то в дебрях зависимостей. В итоге собрать удалось только NetSurf и dillo, а они даже JavaScript не поддерживают.
Примус починяю...

ATauenis
Advanced Member
Сообщения: 3436
Зарегистрирован: 30.04.2015,21:30
Откуда: Москва
Контактная информация:

Вклад в сообщество

Запуск Sun JavaStation

Сообщение ATauenis » 18.09.2019,12:14

albr писал(а):
18.09.2019,11:33
Есть у меня подозрение, что полноценного доступа в интернет с этих античных платформ уже не получится.
Часть ограничений можно обойти, используя прокси-серверы. Или с внешним рендерингом, или WebOne.

Под солярку был Netscape 4.7, может быть и под BSD можно найти? Mozilla вроде как тоже есть, беглый гуглинг даёт упоминания. Первые версии тормозиллы были достаточно функциональны, точно не хуже NetSurf и Dillo.

FromArcanum
Advanced Member
Сообщения: 682
Зарегистрирован: 03.01.2014,23:20
Откуда: Москва

Вклад в сообщество

Запуск Sun JavaStation

Сообщение FromArcanum » 07.11.2019,23:45

Помню, что сам подумывал о покупке этой Java Station. Поздравляю с успешной загрузкой по сети! Опыт более чем достойный!

madnick84
Newbie
Сообщения: 35
Зарегистрирован: 19.01.2018,00:30

Запуск Sun JavaStation

Сообщение madnick84 » 08.11.2019,09:45

Здорово! являюсь обладателем такой машинки, в прошлом году поигрался, но далеко не продвинулся. Спасибо за пост!

albr
Advanced Member
Сообщения: 1154
Зарегистрирован: 20.04.2015,15:35
Откуда: Санкт-Петербург

Запуск Sun JavaStation

Сообщение albr » 08.11.2019,13:19

ATauenis писал(а):
18.09.2019,12:14
WebOne
Да, я, кстати, за Вашей темой внимательно слежу :) Вот только руки не доходят пока до собственных экспериментов, погряз в квартирном ремонте... :)
Примус починяю...

Ответить