BlueSCSI - это эмулятор устройств SCSI, таких как жёсткие диски, CD-ROM, ленточные накопители и прочие. Используется в винтажных компьютерах и прочем оборудовании, в которых в качестве носителей использовались SCSI диски. Скорость обмена данными до 10 МБ/с. Рассмотрим практику использования контроллера BlueSCSI v2 (аппаратная версия 2022.12a, прошивка v2023.08.10) с картой памяти SD на 32 GB (с файловой системой exFAT) на компьютере Apple Power Macintosh 9600/300.
Плата крепится к салазке через напечатанное на 3D принтере крепление. Дополнительно установлен светодиод для индикации обращений к виртуальным SCSI устройствам.
Создать образ виртуального жёсткого диска для использования в BlueSCSI можно в терминале.
Команда для macOS:
dd if=/dev/zero of=HD10_512-MacOS7.6.hda bs=1m count=4096
Команда для Linux или Windows Subsystem for Linux:
dd if=/dev/zero of=HD10_512-MacOS7.6.hda bs=1M count=4096
Тем, кому не нравится окно терминала, можно воспользоваться дружелюбным приложением Disk Jockey для macOS и Windows. Так же доступны готовые наборы виртуальных дисков на любой вкус.
Для того, чтобы прошивка BlueSCSI нашла образы устройств, их необходимо именовать определённым образом. Например: HDxy_512-Name.hda, CD20-Name.iso, где:
- HD— Жёсткий диск
- CD — CD-ROM
- FD — Floppy
- MO — Magneto Optical
- RE — Removable
- TP — Sequential Tape
- x — SCSI ID, может быть от 0 до 7. 7 зарезервирован Macintosh.
- y — LUN, необязательный параметр, всегда 0.
- 512 — размер сектора, поддерживаются 256, 512 (стандартно для Macintosh), 1024, 2048.
- Name — произвольное имя файла
Начиная с прошивки версии v2023.08.10 образы можно скопировать в каталог "CDx", они сортируются по имени и подключаются по порядку. Поддерживаются форматы "iso", "toast", "bin/cue".
Полное имя файла виртуального устройства имеет ограничение на 64 символа.
Размонтирование CD образов в ОС выполняется перетаскиванием мышью иконки диска на рабочем столе в корзину.
По умолчанию прошивка BlueSCSI v2 ищет образы всех устройств в корне раздела, но чтобы не создавать "свалку", файлы жёстких дисков поместим в каталог "HDs".
Для инициализации дисков в Mac OS потребуется утилита Apple HD SC Setup или SCSI Director Pro 4.0, или любое другое с аналогичным функционалом.
Для создания конфигурационного файла bluescsi.ini необходимо воспользоваться инструкцией, так же доступен конструктор.
Пример файла конфигурации:
[SCSI]
#Settings that apply to all SCSI ids
#Select a system preset to apply default settings
#Known systems: "Generic", "MacPlus", "MegaSTE"
System = "Generic"
#Same effect as DIPSW2, enables verbose log messages
#Debug = 1
#Enable faster speeds of SCSI2
EnableSCSI2 = 1
#Settings that can be needed for compatibility with some hosts
#0: Standard, 1: Apple (Default), 2: OMTI, 4: Xebec, 8: VMS
Quirks = 1
#Millisecond delay after selection, 255 = automatic, 0 = no delay
SelectionDelay = 255
#Post UNIT_ATTENTION status on power-on or SD card hotplug, default off, 1 to enable.
EnableUnitAttention = 0
#For Philips P2000C and other devices that release SEL signal before BSY, default off, 1 to enable.
#EnableSelLatch = 0
#For Philips P2000C or MegaSTE to simulate multiple LUNs on one SCSI ID, default off, 1 to enable.
#MapLunsToIDs = 0
#Enable parity checks on platforms that support it (RP2040), default on, 0 to disable.
#EnableParity = 1
#Set to 5 or 10 default to enable synchronous SCSI mode, 0 to disable
MaxSyncSpeed = 10
# ROM settings
# Disable the ROM drive if it has been loaded to flash, default enabled. 1 to disable.
DisableROMDrive = 0
#Override ROM drive’s SCSI ID, default 2.
ROMDriveSCSIID = 6
# Settings that can be specified either per-device or for all devices.
# 0: Fixed, 1: Removable, 2: Optical, 3: Floppy, 4: Mag-optical, 5: Tape
Type = 0
Vendor = "BlueSCSI"
Product = "Virtual HD"
Version = "2.0"
Serial = "NBDY61PEBA4210"
#Affects only INQUIRY response.
#The device-type modifier field was defined in SCSI-1 to permit vendor- specific qualification codes of the device type. This field is retained for compatibility with SCSI-1. Targets that do not #support this field should return a value of zero. https://www.staff.uni-mainz.de/tacke/scsi/SCSI2-08.html
#TypeModifier = 0
#How many sectors per track the disk has, default 63.
#SectorsPerTrack = 63
#How many HeadsPerCylinder the disk has, default 255.
#HeadsPerCylinder = 255
#Right-align SCSI vendor / product strings, defaults on if Quirks=1 (Apple), otherwise off.
#RightAlignStrings = 0
#Maximum number of bytes to prefetch after a read request, 0 to disable. Default 8192
#PrefetchBytes = 8192
#Optionally look for image files in subdirectory
# Multiple directories can be specified Dir1...Dir9
Dir1 = "/HDs"
# Settings can be overridden for individual devices.
[SCSI2]
Type = 2 # Optical
Vendor = "BlueSCSI"
Product = "Virtual CD"
Version = "2.0"
Serial = "RL2ND8NQATT639"
# If IMG0..IMG9 are specified, they are cycled after each CD eject command.
#IMG0 = "/Folder/Image.iso"
#Reinsert any ejected CD-ROM image on Inquiry command, 1 to enable, default off.
ReinsertCDOnInquiry = 1
#Raw sector range from SD card can be passed through
#Format is RAW:first_sector:last_sector where sector numbers can be decimal or hex.
#If end sector is beyond end of SD card, it will be adjusted automatically.
#Only useful for migrating a SD card from SCSI2SD v5/6.
#[SCSI4]
#IMG0 = RAW:0x00000000:0xFFFFFFFF # Whole SD card
Каталоги и файлы на карте памяти будут выглядеть так:
Каждый файл с расширением hda будет распознан как отдельный SCSI жёсткий диск. Образы оптических дисков в каталоге CD2
Образы CD дисков могут быть загрузочными, т.е. через эмуляцию SCSI CD-ROM можно установить ОС, однако не все образы могут работать в качестве загрузочных.
Указанная в конфиге информация о виртуальных устройствах видна в System Profiler.
Файл log.txt создаётся автоматически и содержит в себе журнал работы BlueSCSI.
В случае возникновения критических ошибок, будет создан err.txt с отладкой.
SCSI диск объёмом 1692 КБ можно залить в ПЗУ устройства, этот диск будет доступен только для чтения и без SD карты. Может быть полезно для перманентного хранения расширений или некоторых системных утилит, например для инициализации дисков.
За работу ROM Drive отвечают 2 параметра в конфиге
# ROM settings
# Disable the ROM drive if it has been loaded to flash, default enabled. 1 to disable.
DisableROMDrive = 0
#Override ROM drive’s SCSI ID, default 2.
ROMDriveSCSIID = 6
Образы можно создать самому в терминале, с помощью Disk Jokey или воспользоваться готовыми наборами.
dd if=/dev/zero of=HD6.hda bs=1k count=1692
Копируем полученный файл в корень раздела, и работаем как с обычным жёстким диском в Mac или эмуляторах— форматируем и копируем необходимые файлы.
Переименовываем HD6.hda в HD6.rom и перезапускаем устройство. Загрузка в ROM занимает 20-30 секунд, всё это время зелёный светодиод будет быстро моргать.
После отключаем питание, вновь подключаем SD карту к компьютеру, файл HD6.rom будет переименован в HD6.rom_loaded, его можно удалить.
Если всё прошло удачно, то в логе будут сообщения:
=== Finding images in / ===
== Loading ROM drive from /HD6.rom for ID: 6
---- SCSI ID: 6 blocksize 512 type 0
---- ROM drive maximum size is 1732608 bytes, image file is 1732608 bytes
---- ROM drive programming successful, image file renamed to /HD6.rom_loaded
=== ROM Drive ===
Platform supports ROM drive up to 1692 kB
---- ROM drive SCSI id overriden in ini file, changed to 6
---- Activating ROM drive, SCSI id 6 size 1692 kB
---- Activated ROM drive, SCSI id 6 size 1692 kB
=== Configured SCSI Devices ===
…
* ID: 6, BlockSize: 512, Type: Fixed, Quirks: Apple, Size: 1692kB
Если образ создавался в Disk Jokey, в него уже будут включены:
- Расширение "Apple CD-ROM"
- Утилита копирования файлов "BlueSCSI SD Transfer"
- Приложение "SCSI Director Pro 4.0"
ROM диск можно удалить, создав в корне карты памяти пустой файл с именем "CLEAR_ROM" и перезагрузить устройство.
touch /Volumes/BlueSCSISD/CLEAR_ROM
Об успешной очистке в логе будут сообщения:
=== Finding images in / ===
-- Cleared ROM drive
=== ROM Drive ===
Platform supports ROM drive up to 1692 kB
---- ROM drive image not detected
В Beta2 версии прошивки доступны дополнительные возможности:
1. Хранение в каталоге "CDImages" в корне раздела SD карты до 100 ISO образов с возможностью выбора в утилите "BlueSCSI CD Changer".
На релизных и ночных версиях прошивки работа утилиты невозможна.
2. Копирование файлов из каталога "shared" в корне SD карты через утилиту "BlueSCSI SD Transfer". Скорость копирования не быстрая, но если нет возможности подключить компьютер к сети или использовать эмуляторы (Sheepshaver или Basilisk II), то это может стать отличным решением для переноса архивов на винтажный Mac.
Два варианта прошивки устройства:
1. Передаём прошивку через карту-памяти:
a. Выключаем устройство
b. Переносим на карту памяти прошивку в формате "bin"
c. Включаем устройство.
2. Через подключение к компьютеру:
a. Удерживаем кнопку "BOOTSEL" на плате и подключаем BlueSCSI v2 к компьютеру кабелем microUSB;
b. Копируем на смонтированный диск "RPI-RP2" файл прошивки в формате "uf2"
c. После копирования файла прошивки диск автоматически отключится и прошивка будет установлена.
Если что-то пошло не так, и прошивка была неудачна или начались необъяснимые проблемы, то можно очистить ПЗУ от прошивки с помощью файла "flash_nuke.uf2", а затем залить прошивку повторно.
Если резко упала производительность системы, на SD карте нужно открыть log.txt. Если присутствует предупреждение, необходимо скопировать все содержимое карты памяти, отформатировать, затем вернуть образы диска по одному.
Opening /HD40_512-MacOS9.2.2-4GB.hda for ID: 4 LUN: 0
---- WARNING: file /HD40_512-MacOS9.hda is fragmented, see https://github.com/BlueSCSI/BlueSCSI-v2/wiki/Image-File-Fragmentation
В моих экспериментах встречалось десятикратное снижение производительности дисковой подсистемы.
Мсье автор - большой гурман =)