Unix. Добавление драйвера принтера

Posted by Unik on 21.01.2018

В дистрибутиве Unix v7 по умолчанию отсутствует драйвер принтера LP-11, но он есть в наборе исправлений "Addenda to UNIX 7th edition". У меня есть образ ленты для simh - v7addenda.tap(можно взять на моем gopher сервере) на котором есть полный набор этих дополнений. И там кроме драйвера принтера есть еще различные обновления, но так как эти файлы взяты из различных систем, то в них придется вносить некоторые изменения, сразу они не заработают.

Сначала скопируем содержимое ленты в /usr/addenda

# mkdir /usr/addenda
# cd /usr/addenda
# tar xvf /dev/mt0

Для добавления драйвера принтера, нужно скопировать его /usr/sys/dev

# cp /usr/addenda/lp.c /usr/sys/dev/lp.c

Но это драйвер из другого дистрибутива, из PWD UNIX и поэтому его нужно отредактировать. Редактируем пути на эти:

#include "../h/param.h"
#include "../h/dir.h"
#include "../h/user.h"
#include "../h/tty.h"

Редактируем /usr/sys/conf/mkconf.c чтобы изменить точку входа для lp драйвера с lpint() на lpintr().

ed /usr/sys/conf/mkconf.c
/lpint/s//lpintr/g
142p
        ".globl _lpintr\nlpou:  jsr     r0,call; jmp _lpintr\n",
w
14424
q
#cc mkconf.c -o mkconf

Редактируем файл /usr/sys/dev/mklib добавив туда lp.o

# ed /usr/sys/dev/mklib
263
30
dc.o \
i
lp.o \
.
w
270
q
#

Затем нужно отредактировать файл конфигураци ядра, добавив туда строку "lp"

# echo lp >> /usr/sys/conf/myconf

Пересобираем и устанавливаем новое ядро

# cd /usr/sys/conf
# rm l.o c.o
# mkconf < myconf
console at 60
clock at 100
clock at 104
parity at 114
lp at 200
tm at 224
hp at 254
dz at 300
# make all
cd ../sys; cc -c -O *.c; mklib; rm *.o
acct.c:
...
# make
ld -o unix -X -i l.o mch.o c.o ../sys/LIB1 ../dev/LIB2
# mv /unix /oldunix
# cp /usr/sys/conf/unix /unix

Добавляем в конфигурацию simh поддержку принтера

attach lpt prn11.txt

И перезагружаем UNIX с новым ядром.

Теперь осталось установить демон lpd и утилиту lpr

# cd /usr/addenda/lpr

В файле lpd.c забыли подключить внешний файл chrtab.c поэтому нужно добавить в lpd.c строку 17

#include    "chrtab.c"

Собираем и устанавливаем

# make lpd
# make lpr
# make install

Остаётся только скопировать man файл

# cp /usr/addenda/lpd.8 /usr/man/man8/lpd.8

Ну и для того чтобы принтер печатал нужно создать устройство /dev/lp

# /etc/mknod /dev/lp c 2 0

На этом всё! Принтер установлен и можно печатать командой "lpr file"