This is for Single Density systems, the disk size and format in cpmtools / greaseweazle will need to be changed for DD models.
Create a file that's the right size (100K):
$ dd if=/dev/zero bs=1024 count=100 of=occ1sd.img
Create a CPM file system on the disk:
$ mkfs.cpm -f osb1sssd occ1sd.img
If you want to make a bootable disk, we need to copy the CP/M system tracks over. These tracks are reserved regardless, so this won't take extra space. This is needed to ensure CP/M doesn't halt on a CTRL+C.
Grab an existing bootable (SD) disk image and convert it to a sector dump image:
$ dsktrans -itype tele -otype imd OS1SYSS.TD0 OS1SYSS.IMD $ disk-analyse OS1SYSS.IMD occ1-sssd-cpmutilities.img
Grab the boot sectors (first three tracks, 0x1E00 / 7680 bytes):
$ dd if=occ1-sssd-cpmutilities.img bs=1 count=7680 of=bootsec.osb
If this disk image automatically runs a command, clear the command from the file (at offset 0x168B in the boot sector / disk image):
Replace the bytes with NULs (Zeros).
Overwrite the empty system tracks in your blank image with the boot sector:
dd if=bootsec.osb conv=notrunc of=occ1sd.img
Write the image to disk:
gw write --drive=1 --tracks="h=0:c=0-39" --format=occ1.sd occ1sd.img