Disk Jockey Jr (djjr
)
Disk Jockey Jr is a disk image builder, analyzer and converter that runs on the command line. It runs on macOS 10.13 High Sierra and up (it’s been notarized, so there won’t be any shenanigans), and on Linux.
Disk Jockey Jr is free 🎉, but you can always buy me a coffee if you want:
Download
macOS 10.13 to macOS 14 (Universal)
Disk Jockey Jr Installer Package- Run the installer.
djjr
will be placed in/usr/local/bin/
.
Linux (x86_64 and arm64)
If you don’t know the architecture your Linux installation is running on, this command will let you know:
uname -m
Download the version matching your architecture:
Unzip and untar the application:
tar -zxvf djjr-linux-x86_64.tar.gz
ortar -zxvf djjr-linux-arm64.tar.gz
then copy it where you want.
/usr/local/bin/
is a good location:cp djjr /usr/local/bin/
Note that Disk Jockey Jr for Linux is statically linked against the Swift library, which means that it has no external dependency. You can update your system without running the risk of breaking djjr
.
Using djjr
If you’ve used djjr
in the past, things have changed. There are now subcommands available to access the various functionalities:
djjr create
lets you create device and volume images. This is the same as what the previous version offered.djjr analyze
goes through a disk image and creates a report detailing its contents. You can either have it displayed on screen or saved as a JSON file.djjr convert
takes either a Macintosh volume image and turns it into a device image (for use with BlueSCSI or PiSCSI), or lets you select a partition from a Macintosh device image and convert it into an a volume image. Or replace the Lido driver with the HD SC Setup 7.3.5 driver.
djjr help
will display top-level help. You can add the name of the subcommand you need assistance with for help specific to that subcommand. For example:
djjr help analyze
will show help specific to the analyze
subcommand.
Here’s a map of the various subcommands and parameters:
You can also download this diagram as a very zoomable PDF .
Create
empty-image
empty-image
will create an image full of zeroes of the size you request.
<output file>
the first argument is the name of the output file you want to create. If you omit this parameter, your image will be named “untitled.img”-sB
(--size-in-bytes
) or-sM
(--size-in-mb
)
lets you to specify the size of the image, either in bytes or in megabytes.
Examples:
djjr create empty-image -sM 20
will create an empty 20MB image named “untitled.img” in the current directory.djjr create empty-image ../test.img -sB 100
will create an empty 100 bytes image named “test.img” in the directory above the current directory.
mac-device
mac-device
will creates a Macintosh device image containing a partition map, a SCSI driver and a ready-to-be-formatted HFS partition.
<output file>
the first argument is the name of the output file you want to create. If you omit this parameter, your image will be named “HD10_512 xxx.hda” wherexxx
is the size of your disk image.-sM
(--size-in-mb
)
lets you to specify the size of the image in megabytes.-s
(--scsi-id
)
lets you to specify the SCSI ID you want to assign to the image.
Example:
djjr create mac-device -sM 20 --scsi-id 4
will create a 20MB device image with a Macintosh partition map, a SCSI driver and an HFS partition, and set the SCSI ID to 4. It will be named “HD40_512 20MB.hda”.
Analyze
<input file>
The first parameter is the name of the image file to analyze.djjr
understands most image formats from Macintosh, Apple II, Atari ST and Amiga computers.<output file>
If present, the second parameter is the name of the JSON file that the results of the analysis will be saved into. If this parameter is omitted, the results of the analysis will be displayed on screen.-f
(--enable-file-hierarchy
) will also provide a complete list of all the files and folders present in the image file.
Examples:
djjr analyze HD20_512 myimage.hda
will analyze an image named “HD20_512 myimage.hda” and display the output to the screen. This is what the output might look like:
Macintosh Device (Macintosh)
Block size: 512
Size in blocks: 1024000 (524288000 bytes)
Partitions:
1: Partition Map (Apple), Start: 1, Length: 63
2: Driver for SCSI Manager (Lido), Start: 64, Length: 32
3: HFS Volume (MacHD), Start: 96, Length: 1023904
djjr analyze HD20_512 myimage.hda results.json
will create a json file called “results.json” that contains the results of the analysis in a structured way. Here’s what this might look like:
{
  "sizeInBlocks" : 1024000,
  "computerClass" : "Macintosh",
  "blockSize" : 512,
  "partitions" : [
    {
      "type" : "Partition Map",
      "startBlock" : 1,
      "name" : "Apple",
      "sizeInBlocks" : 63
    },
    {
      "name" : "Lido",
      "type" : "Driver for SCSI Manager",
      "sizeInBlocks" : 32,
      "startBlock" : 64
    },
    {
      "type" : "HFS Volume",
      "sizeInBlocks" : 1023904,
      "startBlock" : 96,
      "name" : "MacHD"
    }
  ],
  "imageType" : "Macintosh Device"
}
Convert
The convert
subcommand takes your existing image and converts it into another. Note that a new image is always created, leaving your original intact.
to-device
to-device
takes a Macintosh volume image and converts it into a Macintosh device image by adding a partition map and a SCSI driver.
This is useful for example if you have an image that works in the Basilisk emulator that you’d like to use in a BlueSCSI.
<input file>
the first argument is the name of the file you want to convert.djjr
will check whether the volume image you’re providing is of the right kind.<output file>
the second argument is the name of the device image that will be created. You should probably make sure it ends with “hda” to avoid confusion.
Example:
djjr convert to-device quicktime.img quicktime.hda
will take the volume image named “quicktime.img” and create a new device image containing it, as well as a partition map and a SCSI driver. The resulting image will be named “quicktime.hda”.
to-volume
to-volume
takes a Macintosh device image and extracts its HFS partition into a volume image.
This is useful for example if you have an image that works in BlueSCSI and want to turn one of its partition into a file you can inject later in a multiple partition image using Disk Jockey.
<input file>
the first argument is the name of the file you want to convert.djjr
will check whether the volume image you’re providing is of the right kind.<output file>
the second argument is the name of the volume image that will be created. You should probably make sure it ends with “img” to avoid confusion.-p
(--partition
)
lets you specify the number of the partition you wish to convert. If there’s only one HFS partition on your device image, you can skip this parameter anddjjr
will automatically select it for you.
If several partitions are available and you do not specify this parameter,djjr
will list the possible partitions so you can make your choice.
Example:
djjr convert to-volume HD10_512\ 20MB.hda mypartition.img
will take the device image named “HD10_512 20MB.hda” and create a new volume image named “mypartition.img” by extracting the HFS partition it finds inside.
This is what the output looks like:
Image type: Macintosh Device (Macintosh)
Selecting partition 1: HFS Volume (MacOS), Start: 96, Length: 40960
replace-lido
replace-lido
takes a Macintosh device image containing a Lido SCSI driver and converts it into the exact same image, this time containing the Apple HD SC Setup 7.3.5 driver.
The Lido driver was once a popular solution for SCSI hard drives but, on modern solutions like BlueSCSI, it’s known to cause compatibility issues and slowdowns.
<input file>
the first argument is the name of the file you want to convert. This must be a Macintosh device image containing a Lido driver.<output file>
the second argument is the name of the new device image based on the input file that will be created. You should probably make sure it ends with “hda” to avoid confusion.
Example:
djjr convert replace-lido HD10_512\ 20MB.hda fixed-HD10_512\ 20MB.hda
will take the device image named “HD10_512 20MB.hda”, check that it contains a Lido SCSI driver, replace it with the Apple HD SC Setup 7.3.5 driver and save the resulting image as “fixed-HD10_512 20MB.hd”.