Установка UNIX v7

Posted by Unik on 12.01.2018

UNIX - система интересная, хотя бы тем, что её потомки актуальны до сих пор и продолжают развиваться. Поэтому тем, кто знаком с современными *nix системами не сложно будет разобраться и с этой ОС.

Хотел сначала написать про установку UNIX версии 7, но оказалось что есть отличный мануал на эту тему - Research Unix. Поэтому установку лучше начать по нему, но до пункта 5. А дальше будет самое интересное, будем добавлять поддержку DZ11 и для этого придется пересобрать ядро.

В Unix V7 есть драйвер для DZ11 терминального мультиплексора, но драйвер не включен в программу mkconf которая нужна для сборки нового ядра.

Поэтому качаем файлы unix вместе с исходниками на компьютер с линуксом

linux$ wget -r -np -nH  ftp://ftp.allbsd.org/pub/UnixArchive/PDP-11/Trees/V7/
linux$ mv pub/UnixArchive/PDP-11/Trees/V7/ .
linux$ cd V7

Чтобы добавить в ядро драйвер скачаем патч и пропатчим mkconf.c

linux$ wget http://wsxyz.net/v7/mkconf.c.diff
linux$ cp ./usr/sys/conf/mkconf.c ./usr/sys/conf/mkconf.c.org
linux$ patch ./usr/sys/conf/mkconf.c < mkconf.c.diff 
patching file ./usr/sys/conf/mkconf.c
linux$

У меня патч не совсем подходил пришлось менять строку в патче на 248a250,259

Теперь нужно как то закинуть исходники ядра в рабочую систему. Запишем их в образ ленты, который затем подключим в simh. Нам понадобиться утилита создания образа ленты, исходник которой есть здесь - http://blog.livedoor.jp/corbie/archives/4002149.html

linux$ nano tapewrite.c # вставляем текст исходника и сохраняем
linux$ cc -o tapewrite tapewrite.c
linux$ chmod a+x tapewrite
linux$ (cd ./usr/sys; tar --format=v7 -cf - .) | ./tapewrite > src.tap

В принципе это можно было сделать и проще :) Т.к. файл mkconf.c и так есть в системе установленной с ленты и его можно пропатчить сразу в системе, но я хотел показать как можно закинуть в unix файлы из linux через образ ленты.

В файл nboot.ini из simh внесем изменения

set cpu 11/70
set cpu 2M
set cpu idle
set rp0 rp06
att rp0 rp06-0.disk
set rp1 rp06
att rp1 rp06-1.disk
att tm0 src.tap
boot rp0

Загружаемся. Временно скопируем исходники ядра с ленты в каталог /usr/tap/usr/sys

# cd /usr
# mkdir tap
# cd tap
# mkdir usr
# cd usr/
# mkdir sys
# cd sys/
# tar xvf /dev/mt0

Перекомпилируем mkconf заменив его пропатченым.

# cd /usr/tap/usr/sys/conf
# mv mkconf mkconf.org
# cc mkconf.c -o mkconf

Cоздаем свой файл конфигурации для включения устройства dz. Т.к. ядро у нас сейчас hptmunix, то используем конфиг - hptmconf

# cd /usr/sys/conf
# cp /usr/tap/usr/sys/conf/mkconf .
# rm l.o c.o
# cp hptmconf myconf
# echo dz >> myconf

Используем этот myconf для сборки нового ядра

# mkconf < myconf
console at 60
clock at 100
clock at 104
parity at 114
tm at 224
hp at 254
dz at 300
# make
as - -o l.o l.s
cc -c c.c
ld -o unix -X -i l.o mch.o c.o ../sys/LIB1 ../dev/LIB2
# cat c.c
...
dzopen, dzclose, dzread, dzwrite, dzioctl, nulldev, dz_tty,      /* dz = 19 */
...
Тут смотрим что dz = 19 

Создаём файлы устройства(пока только для 3х)

# cd /dev
# /etc/mknod tty00 c 19 0
# /etc/mknod tty01 c 19 1
# /etc/mknod tty02 c 19 2
#

Отредактируем файл /etc/ttys и настроим только что созданные устройства. Строки 00tty0X начинаются с 00, нужно чтоб начинались с 12.

# cat /etc/ttys
14console
00tty00
00tty01
00tty02
00tty03
00tty04
00tty05
00tty06
...
00tty31
# ed /etc/ttys
266
2,4s/00/12/
w
266
q
# cat /etc/ttys
14console
12tty00
12tty01
12tty02
00tty03
...

Это задаст скорость терминала - 9600 бод Теперь удаляем не нужные файлы /usr/tap/usr/sys/conf и копируем новое ядро

# rm -rf /usr/tap
# cd /
# mv unix oldunix
# cp /usr/sys/conf/unix .
# sync;sync;sync
# 
Simulation stopped, PC: 002306 (MOV (SP)+,177776)
sim> q

В файле конфигурации simh подключим dz

set dz 7b lines=32
att dz -am 23

Загружамся... и пробуем подключиться телнетом на порт 23.
У меня получилось!

Кстати эта версия уже поддерживает MOTD. Можно создать текстовый файл /etc/motd и при логине его содержимое будет отображаться.