diff --git a/include/disk.h b/include/disk.h
new file mode 100644
index 0000000..a887866
--- /dev/null
+++ b/include/disk.h
@@ -0,0 +1,65 @@
+#pragma src "/sys/src/libdisk"
+#pragma lib "libdisk.a"
+
+/* SCSI interface */
+typedef struct Scsi Scsi;
+struct Scsi {
+	QLock	lk;
+	char*	inquire;
+	int	rawfd;
+	int	nchange;
+	ulong	changetime;
+};
+
+enum {
+	Sread = 0,
+	Swrite,
+	Snone,
+};
+
+char*	scsierror(int, int);
+int		scsicmd(Scsi*, uchar*, int, void*, int, int);
+int		scsi(Scsi*, uchar*, int, void*, int, int);
+Scsi*		openscsi(char*);
+int		scsiready(Scsi*);
+
+extern int		scsiverbose;
+
+/* disk partition interface */
+typedef struct Disk Disk;
+struct Disk {
+	char *prefix;
+	char *part;
+	int fd;
+	int wfd;
+	int ctlfd;
+	int rdonly;
+	int type;
+
+	vlong secs;
+	vlong secsize;
+	vlong size;
+	vlong offset;	/* within larger disk, perhaps */
+	int width;	/* of disk size in bytes as decimal string */
+	int c;
+	int h;
+	int s;
+	int chssrc;
+};
+
+Disk*	opendisk(char*, int, int);
+
+enum {
+	Tfile = 0,
+	Tsd,
+	Tfloppy,
+
+	Gpart = 0,	/* partition info source */
+	Gdisk,
+	Gguess,
+};
+
+/* proto file parsing */
+typedef void Protoenum(char *new, char *old, Dir *d, void *a);
+typedef void Protowarn(char *msg, void *a);
+int rdproto(char*, char*, Protoenum*, Protowarn*, void*);
