Here are some instructions (and a script output of the process) for the creation of a 2 x RL02 v7m unix system using a Centos system.

I expect the process to work with any reasonable unix system. It wont work on Windows (but the 2 images of the RL02s will be OK for use on a windows simh).

The disk images run on my "simh" AND can run on my real PDP-11 hardware.

Deliberately, I HAVE NOT, done the final stages of system configuration described in the v7m setup.txt file. If I do so the disk images will become bound to a particular processor type and/or disk and/or tape type.

Since I have not carried out these steps the boot and unix on these disks will run on a wide range of hardware - 11/23+ via 11/45 up to 11/83. Sure it is not optimal for a specific processor but if you just want to play it is flexible and easy.

In an attempt to make life easier (or for those that dont want to go through this process) you can download the "tape.tap" file and/or the two images that I have manufactured. tape.tap.gz - the output of the perl program used to build a simulated mag tape for use with simh.

You only need that tape.tap.gz if you want to run the process to create a/some disk image(s) - but dont want to or cant run the perl program given below.

As an alternative if you want the two rl02 images without the pain/fun of making them you can just download each of these files and gunzip them:
RL02 - system
RL02 - other files
Unzipped each of these files are 10meg.

The md5sum for the gzipped rl02s and the tape.tap are:

a515afb8e78ccdbaf2363b837f0b889f  tape.tap.gz
a6a1f1513ce9e5ee7c54f44c373dfa01  unix_v7m_rl0.dsk.gz
ee6067f2f60f43f3985595e0d73cb66b  unix_v7m_rl1.dsk.gz
The sum for the unzipped files are:
fa857bab1cb500daceddd211a2069fa5  tape.tap
5b4398ae4197118c710ad2eaaeb67ae1  unix_v7m_rl0.dsk
b23f46bf615869f284cb924838d347e2  unix_v7m_rl1.dsk

OK here is the process steps that I performed to make the tape image file and then to yse the tape image to create the 2 x RL02 images.

  • I assume simh is already installed - simh home page

    I have used "PDP-11 simulator V3.9-0" updated as of 03-May-2012.

  • get the v7m files
    	wget -nd -r --no-parent http://www.tuhs.org/Archive/PDP-11/Distributions/dec/Jean_Huens_v7m/
    
  • remove the ones we dont need
    	rm -f index*
    
    You will end up with something close to below
    	-rw-r--r--. 1 root root     2036 Apr 14  1998 README
    	-rw-r--r--. 1 root root       14 Aug  2  2006 robots.txt
    	-rw-r--r--. 1 root root    39917 Dec 23 22:26 setup.txt
    	-rw-r--r--. 1 root root    13347 Apr 17  1998 spd.txt
    	-rw-r--r--. 1 root root    12288 Apr  8  1998 tapefile1
    	-rw-r--r--. 1 root root     9728 Apr  8  1998 tapefile2
    	-rw-r--r--. 1 root root      512 Apr  8  1998 tapefile3
    	-rw-r--r--. 1 root root    13824 Apr  8  1998 tapefile4
    	-rw-r--r--. 1 root root    13824 Apr  8  1998 tapefile5
    	-rw-r--r--. 1 root root  3215360 Apr  8  1998 tapefile6
    	-rw-r--r--. 1 root root  2385920 Apr  8  1998 tapefile7.tar
    	-rw-r--r--. 1 root root 10342400 Apr  8  1998 tapefile8.tar
    
  • use a wee perl program to make a "distribution tape" in a format that is suitable for simh..
    	cat>mkdisttap.pl<<-XX
    	#!/usr/local/bin/perl -w
    	use strict;
    	
    	# Based on mkdisttap.pl
    	# ftp://ftp.mrynet.com/pub/os/PUPS/PDP-11/Boot_Images/2.11_on_Simh/211bsd/mkdisttap.pl
    	
    	#
    	# $Id: mkdisttap.pl,v 1.1 2006/09/16 23:33:46 kirk Exp kirk $
    	#
    	
    	# Based on the example in the HOWTO using dd.  Does not work!
    	# add_file("cat mtboot mtboot boot |", 512);
    	
    	# Based on the maketape.c program and the maketape.data data file.
    	add_file("tapefile1", 512);
    	end_file();
    	add_file("tapefile2", 512);
    	end_file();
    	add_file("tapefile3", 512);
    	end_file();
    	add_file("tapefile4", 512);
    	end_file();
    	add_file("tapefile5", 512);
    	end_file();
    	add_file("tapefile6", 10240);
    	end_file();
    	add_file("tapefile7.tar", 10240);
    	end_file();
    	add_file("tapefile8.tar", 10240);
    	end_file();
    	end_file();
    	
    	sub end_file {
    	  print "\x00\x00\x00\x00";
    	}
    	
    	sub add_file {
    	  my($filename, $blocksize) = @_;
    	  my($block, $bytes_read, $length);
    	
    	  open(FILE, $filename) || die("Can't open $filename: $!");
    	  while($bytes_read = read(FILE, $block, $blocksize)) {
    	    if($bytes_read < $blocksize) {
    	      $block .= "\x00" x ($blocksize - $bytes_read);
    	      $bytes_read = $blocksize;
    	    }
    	    $length = pack("V", $bytes_read);
    	    print $length, $block, $length;
    	  }
    	  close(FILE);
    	}
    	XX
    
  • Use the perl program to make the dist-tape
    	perl  mkdisttap.pl>tape.tap
    
  • make two empty rl02 disks - Yes, I could have used a single 40meg rp disk, but I dont have a massbus/or rp on my kit so I don't want to do down that route.
    	dd of=/home/iain/DEC/v7m/unix_v7m_rl0.dsk bs=512 count=20480 if=/dev/zero
    	dd of=/home/iain/DEC/v7m/unix_v7m_rl1.dsk bs=512 count=20480 if=/dev/zero
    
  • make the control file for simh
    	cat>v7m<<-XX
    	set cpu 11/73
    	; set ptr disabled
    	; set ptp disabled
    	; set lpt disabled
    	; set rha disabled
    	; set cr disabled
    	; set rp disabled
    	; set rk disabled
    	; set xu disabled
    	; set xq disabled
    	; set rx disabled
    	; set tm disabled
    	; set ts disabled
    	; set hk disabled
    	; set vh disabled
    	
    	set rl0 RL02
    	set rl1 RL02
    	att tm0 /home/iain/DEC/v7m/tape.tap
    	att rl0 /home/iain/DEC/v7m/unix_v7m_rl0.dsk
    	att rl1 /home/iain/DEC/v7m/unix_v7m_rl1.dsk
    	XX
    
  • run simh
    	./pdp11 v7m
    
    Then followed the instructions on the "setup.txt" file in the directory downloaded with wget
    	./pdp11 v7m
    	
    	PDP-11 simulator V3.9-0
    	Disabling CR
    	sim> boot tm
    	Boot
    	: tm(0,3)
    	file sys size: 16480
    	interleave factor: 6
    	blocks per cylinder: 20
    	file system: rl(0,0)
    	isize = 5272
    	m/n = 6 20
    	Exit called
    	Boot
    	: tm(0,3)
    	file sys size: 16480
    	interleave factor: 6
    	blocks per cylinder: 20
    	file system: rl(1,0)
    	isize = 5272
    	m/n = 6 20
    	Exit called
    	Boot
    	: tm(0,4)
    	Tape? tm(0,5)
    	Disk? rl(0,0)
    	Last chance before scribbling on disk.  ********** HIT RETURN HERE *************
    	End of tape
    	Boot
    	: rl(0,0)rl02tmunix
    	
    	
    	unix/v7m 2.1
    	
    	mem = 214784
    	# date 9912230831
    	Thu Dec 23 08:31:00 EST 1999
    	# cd /bin
    	# make cmd70  *******damn it I did not mean to run this
    	cp adb70 adb  ******* you might want to run cmd40
    	cp dcheck70 dcheck
    	cp dump70 dump
    	cp dumpdir70 dumpdir
    	cp icheck70 icheck
    	cp ncheck70 ncheck
    	cp restor70 restor
    	cp tar70 tar
    	# sync
    	# cp /etc/rc_rl02 /etc/rc
    	# cp /etc/cl_rl02 /etc/checklist
    	# cd /
    	# ls
    	bin
    	boot
    	boot.bu
    	dev
    	etc
    	hkhtunix
    	hktmunix
    	hktsunix
    	hmhtunix
    	hmtmunix
    	hmtsunix
    	hphtunix
    	hptmunix
    	hptsunix
    	lib
    	lost+found
    	map
    	mdec
    	mnt
    	rl01htunix
    	rl01tmunix
    	rl01tsunix
    	rl02htunix
    	rl02tmunix
    	rl02tsunix
    	rphtunix
    	rptmunix
    	rptsunix
    	sas
    	sys
    	tmp
    	unix
    	usr
    	# cp rl02tmunix unix
    	# sync
    	# cd /dev
    	# make rl02
    	rm -f rp* >/dev/null
    	rm -f rrp* >/dev/null
    	rm -f rl* >/dev/null
    	rm -f rrl* >/dev/null
    	rm -f swap >/dev/null
    	/etc/mknod rp0 b 8 0
    	/etc/mknod swap b 8 0
    	/etc/mknod rp3 b 8 1
    	/etc/mknod rrp0 c 18 0
    	/etc/mknod rrp3 c 18 1
    	chmod go-w rp0 swap rp3 rrp0 rrp3
    	# make tm
    	rm -f mt* >/dev/null
    	rm -f rmt* >/dev/null
    	rm -f nrmt* >/dev/null
    	/etc/mknod mt0 b 3 0
    	/etc/mknod rmt0 c 12 0
    	/etc/mknod nrmt0 c 12 128
    	chmod go+w mt0 rmt0 nrmt0
    	# dd if=/mdec/rluboot of=/dev/rp0 count=1
    	0+1 records in
    	0+1 records out
    	# cd /sys
    	# dd if=/dev/nrmt0 of=/dev/null bs=20b files=6
    	314+103 records in
    	314+98 records out
    	# tar40 xbf 20 /dev/rmt0
    	# ls
    	README
    	addenda
    	conf
    	dev
    	h
    	mdec
    	ovdev
    	ovsys
    	sas
    	sys
    	# pwd
    	/sys
    	# cd /
    	# sync
    	# ls -l /dev/rp3
    	brw-r--r-- 1 root    8,  1 Dec 23 08:33 /dev/rp3
    	# sync
    	# ls -l /dev
    	total 15
    	crw--w--w- 1 root    0,  0 Dec 23 08:38 console
    	crw-r--r-- 1 bin     8,  1 Jan 10  1979 kmem
    	c-w--w--w- 1 root    2,  0 Mar 17  1981 lp
    	-rw-rw-r-- 1 bin      7630 Aug 17  1981 makefile
    	crw-r--r-- 1 bin     8,  0 Jun  6  1981 mem
    	brw-rw-rw- 1 root    3,  0 Dec 23 08:33 mt0
    	crw-rw-rw- 1 root   12,128 Dec 23 08:33 nrmt0
    	crw-rw-rw- 1 bin     8,  2 Dec 23 08:35 null
    	crw-rw-rw- 1 root   12,  0 Dec 23 08:33 rmt0
    	brw-r--r-- 1 root    8,  0 Dec 23 08:34 rp0
    	brw-r--r-- 1 root    8,  1 Dec 23 08:33 rp3
    	crw-r--r-- 1 root   18,  0 Dec 23 08:33 rrp0
    	crw-r--r-- 1 root   18,  1 Dec 23 08:33 rrp3
    	brw-r--r-- 1 root    8,  0 Dec 23 08:33 swap
    	crw-rw-rw- 1 bin    17,  0 Jan 10  1979 tty
    	crw--w--w- 1 root   21,  0 Oct  5  1981 tty00
    	crw--w--w- 1 root   21,  1 Oct  5  1981 tty01
    	crw-rw-rw- 1 root   21,  2 Oct  5  1981 tty02
    	crw-rw-rw- 1 root   21,  3 Oct  5  1981 tty03
    	crw-rw-rw- 1 root   21,  4 Oct  5  1981 tty04
    	crw-rw-rw- 1 root   21,  5 Oct  5  1981 tty05
    	crw-rw-rw- 1 root   21,  6 Oct  5  1981 tty06
    	crw-rw-rw- 1 root   21,  7 Oct  5  1981 tty07
    	# /etc/mkfs /dev/rrp3 20480 6 20
    	isize = 6552
    	m/n = 6 20
    	# /etc/mount /dev/rp3 /usr
    	# cd /usr
    	# dd if=/dev/nrmt0 of=/dev/null bs=20b files=7
    	547+104 records in
    	547+98 records out
    	# pwd
    	/usr
    	# tar40 xbf 20 /dev/rmt0 
    	# sync
    	# cd /
    	# ls -l /usr
    	total 15
    	drwxrwxrwx 2 root       96 Dec 23 08:40 adm
    	drwxrwxrwx 2 root       96 Dec 23 08:40 bin
    	drwxrwxrwx 3 root      128 Dec 23 08:40 dict
    	drwxrwxrwx21 bin       736 Dec 23 08:40 doc
    	drwxrwxrwx 5 bin       416 Dec 23 08:40 games
    	drwxrwxrwx 3 sys       512 Dec 23 08:40 include
    	drwxrwxrwx10 bin       528 Dec 23 08:41 lib
    	drwxrwxrwx11 bin       176 Dec 23 08:41 man
    	drwxrwxrwx 2 bin        80 Dec 23 08:41 pub
    	drwxrwxrwx 9 root      144 Dec 23 08:41 spool
    	drwxrwxrwx12 bin       208 Dec 23 08:41 src
    	drwxrwxrwx 2 sys        48 Dec 23 08:41 sys
    	drwxrwxrwx 2 root       48 Dec 23 08:41 tmp
    	# /etc/umount /dev/rp3
    	# /etc/umount /dev/rp3
    	umount: Invalid argument
    	# /etc/mount /dev/rp3 /usr
    	# sync