Настройка Iomega ZIP100 LPT в операционной системе FreeBSD


Я думаю, вряд ли кто-нибудь будет оспаривать тот факт, что дисководы Iomega ZIP — вещь достаточно удобная и полезная. Мой ZIP с интерфейсом LPT самое медленное устройство в семействе, однако, имеет такое преимущество, как мобильность: его можно легко подключить к любому компьютеру типа PC, что делает его удобным средством транспортировки данных. Приводимые здесь советы являться результатами двухчасового употребления чая за чтением man'уалов и how-to по операционной системе FreeBSD и настройке в ней ZIP дисководов.

FreeBSD официально поддерживает устройства ZIP, подключаемые через параллельный порт, начиная с версии 3.0. Устройству может быть назначен SCSI ID только 5 или 6. Я не знаю, насколько хорошо FreeBSD поддерживает смену носителя во время работы, но компания Iomega предупреждает, что не стоит вытаскивать носитель или отключать устройство во время передачи данных (довольно естественное требование, не правда ли?). Конечно, чтобы сменить диск, сначала нужно его размонтировать. Обратите особое внимание на то, что при загрузке все внешние устройства должны быть включены, чтобы FreeBSD смогла их распознать.

Так что распаковываем устройство, подключаем входящий в комплект кабель к параллельному порту и к разъему на устройстве, втыкаем сетевой шнур, после чего включаем компьютер. Загружаем FreeBSD и начинаем править ядро. Проверьте, содержит ли ваше ядро драйверы для scbus0, da0, ppbus0 и vp0 (ядро GENERIC содержит всё это, кроме vp0). Если эти драйверы имеются, то устройство должно быть доступно как /dev/da0s4. Диски могут быть смонтированы командами mount /dev/da0s4 /mnt или (для дисков DOS) mount_msdos /dev/da0s4 /mnt соответственно. На всякий случай заглянем в LINT и посмотрим, что есть на эту тему там:

 
# Parallel-Port Bus
#
# Parallel port bus support is provided by the `ppbus' device.
# Multiple devices may be attached to the parallel port, devices
# are automatically probed and attached when found.
#
# Supported devices:
# vpo Iomega Zip Drive
# Requires SCSI disk support ('scbus' and 'da'), best
# performance is achieved with ports in EPP 1.9 mode.

device ppc0 at isa? irq 7
device vpo

Вносим эти строки, собираем новое ядро, и у нас появился ZIP-дисковод. Он работает, но очень медленно и сильно «грузит» систему. Дело в том, что ZIP может вести обмен через параллельный порт на одной из трех скоростей. По умолчанию из соображений совместимости устанавливается минимальная скорость. Драйвер, если его научить, смотрит, какой тип параллельного порта стоит на компьютере (bidirectional, EPP) и соответствующим способом устанавливает скорость обмена. Смотрим, как это сделать в нашем любимом man ppc:

 
During the probe phase, ppppcc detects parallel port chipsets and initializes private data according
to their operating mode: COMPATIBLE, NIBBLE, PS/2, EPP, ECP and other mixed modes.
If a mode is provided at startup through the flags variable of the boot interface, the operating mode
of the chipset is forced according to flags and the hardware supported modes.

Supported flags

And any mixed values.
bit 4: EPP protocol (0 EPP 1.9, 1 EPP 1.7)
bit 5: activate IRQ (1 IRQ disabled, 0 IRQ enabled)
bit 6: disable chipset specific detection
bit 7: disable FIFO detection

Теперь, если мы поставим флаг 0x40 на наш pppc0, то у нас должна появиться поддержка стандарта EPP. Добавляем ее в ядро. Например, вот так выглядит описание параллельного порта моей рабочей станции ввиду отсутствия принтера.

 
# Parallel port (my Iomega Zip 100Mb LPT drive)
device ppc0 at isa? flags 0x40 irq 7
device ppbus # Parallel port bus (required)
device vpo # Requires scbus and da

Ещё одна важная деталь. Сначала я забыл, что подключение дисковода происходит через SCSI-эмуляцию. В ядре есть опция, которая отвечает за задержку в секундах перед началом инициализации SCSI-периферии. А так, как SCSI винтов в моей системе нет, строчка «before probing SCSI» у меня не появлялась, и я долго думал, почему ядро зависает на 15 секунд при инициализации ZIP-дисковода. Вы можете смело поставить в ядро нижеследующую опцию и жить спокойно:

 
options SCSI_DELAY=1000 #Delay (in ms) before probing SCSI

Ну что же, можно сказать, что настройка завершилась, новое ядро собрано, теперь смотрим на результат нашей работы:

 
ppc0: <Parallel port> at port 0x378-0x37f irq 7 flags 0x40 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/9 bytes threshold
vpo0: <Iomega VPI0 Parallel to SCSI interface> on ppbus0
vpo0: EPP 1.9 mode
da0 at vpo0 bus 0 target 6 lun 0
da0: <IOMEGA ZIP 100 J.03> Removable Direct Access SCSI-2 device
da0: 96MB (196608 512 byte sectors: 64H 32S/T 96C)






Дополнительно

Настройка Iomega ZIP100 LPT в операционной системе FreeBSD

Настройка Iomega ZIP100 LPT в операционной системе FreeBSD

Я думаю, вряд ли кто-нибудь будет оспаривать тот факт, что дисководы Iomega ZIP — вещь достаточно удобная и полезная. Мой ZIP с интерфейсом LPT самое медленное устройство в семействе, однако, имеет такое преимущество, как мобильность: его можно легко подключить к любому компьютеру типа PC, что делает его удобным средством транспортировки данных. Приводимые здесь советы являться результатами двухчасового употребления чая за чтением man'уалов и how-to по операционной системе FreeBSD и настройке в ней ZIP дисководов.

FreeBSD официально поддерживает устройства ZIP, подключаемые через параллельный порт, начиная с версии 3.0. Устройству может быть назначен SCSI ID только 5 или 6. Я не знаю, насколько хорошо FreeBSD поддерживает смену носителя во время работы, но компания Iomega предупреждает, что не стоит вытаскивать носитель или отключать устройство во время передачи данных (довольно естественное требование, не правда ли?). Конечно, чтобы сменить диск, сначала нужно его размонтировать. Обратите особое внимание на то, что при загрузке все внешние устройства должны быть включены, чтобы FreeBSD смогла их распознать.

Так что распаковываем устройство, подключаем входящий в комплект кабель к параллельному порту и к разъему на устройстве, втыкаем сетевой шнур, после чего включаем компьютер. Загружаем FreeBSD и начинаем править ядро. Проверьте, содержит ли ваше ядро драйверы для scbus0, da0, ppbus0 и vp0 (ядро GENERIC содержит всё это, кроме vp0). Если эти драйверы имеются, то устройство должно быть доступно как /dev/da0s4. Диски могут быть смонтированы командами mount /dev/da0s4 /mnt или (для дисков DOS) mount_msdos /dev/da0s4 /mnt соответственно. На всякий случай заглянем в LINT и посмотрим, что есть на эту тему там:

 
# Parallel-Port Bus
#
# Parallel port bus support is provided by the `ppbus' device.
# Multiple devices may be attached to the parallel port, devices
# are automatically probed and attached when found.
#
# Supported devices:
# vpo Iomega Zip Drive
# Requires SCSI disk support ('scbus' and 'da'), best
# performance is achieved with ports in EPP 1.9 mode.

device ppc0 at isa? irq 7
device vpo

Вносим эти строки, собираем новое ядро, и у нас появился ZIP-дисковод. Он работает, но очень медленно и сильно «грузит» систему. Дело в том, что ZIP может вести обмен через параллельный порт на одной из трех скоростей. По умолчанию из соображений совместимости устанавливается минимальная скорость. Драйвер, если его научить, смотрит, какой тип параллельного порта стоит на компьютере (bidirectional, EPP) и соответствующим способом устанавливает скорость обмена. Смотрим, как это сделать в нашем любимом man ppc:

 
During the probe phase, ppppcc detects parallel port chipsets and initializes private data according
to their operating mode: COMPATIBLE, NIBBLE, PS/2, EPP, ECP and other mixed modes.
If a mode is provided at startup through the flags variable of the boot interface, the operating mode
of the chipset is forced according to flags and the hardware supported modes.

Supported flags

And any mixed values.
bit 4: EPP protocol (0 EPP 1.9, 1 EPP 1.7)
bit 5: activate IRQ (1 IRQ disabled, 0 IRQ enabled)
bit 6: disable chipset specific detection
bit 7: disable FIFO detection

Теперь, если мы поставим флаг 0x40 на наш pppc0, то у нас должна появиться поддержка стандарта EPP. Добавляем ее в ядро. Например, вот так выглядит описание параллельного порта моей рабочей станции ввиду отсутствия принтера.

 
# Parallel port (my Iomega Zip 100Mb LPT drive)
device ppc0 at isa? flags 0x40 irq 7
device ppbus # Parallel port bus (required)
device vpo # Requires scbus and da

Ещё одна важная деталь. Сначала я забыл, что подключение дисковода происходит через SCSI-эмуляцию. В ядре есть опция, которая отвечает за задержку в секундах перед началом инициализации SCSI-периферии. А так, как SCSI винтов в моей системе нет, строчка «before probing SCSI» у меня не появлялась, и я долго думал, почему ядро зависает на 15 секунд при инициализации ZIP-дисковода. Вы можете смело поставить в ядро нижеследующую опцию и жить спокойно:

 
options SCSI_DELAY=1000 #Delay (in ms) before probing SCSI

Ну что же, можно сказать, что настройка завершилась, новое ядро собрано, теперь смотрим на результат нашей работы:

 
ppc0: <Parallel port> at port 0x378-0x37f irq 7 flags 0x40 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/9 bytes threshold
vpo0: <Iomega VPI0 Parallel to SCSI interface> on ppbus0
vpo0: EPP 1.9 mode
da0 at vpo0 bus 0 target 6 lun 0
da0: <IOMEGA ZIP 100 J.03> Removable Direct Access SCSI-2 device
da0: 96MB (196608 512 byte sectors: 64H 32S/T 96C)