欢迎光临!
若无相欠,怎会相见

使用 Simh 搭建 Unix V7 虚拟环境

序言

接着上一篇文章继续搞, 上次是 Unix V6 系统, 这次来搞 Unix V7 系统。 从 Unix V6 开始衍生出 BSD 系统, 从而导致以后的绝大多数的操作系统都与 Unix V6 有千丝万缕的联系; 而 Unix V7 是 Ken Thompson 和 Dennis Ritchie 大师的最后一个版本, 同时后面有需要 Unix V7 里面的文件, 因此也一并搭建了。

准备工作

pdp11 模拟器在 使用 Simh 搭建 Unix V6 虚拟环境 文章中已经获取了, 有需要自行查看获取方法。

Unix V7 tap

模拟器已经下载了, 现在下载 Unix 0V7 的系统镜像, 链接是 Unix V7 tap , 实际上 bsd42 这个项目有很多资源可以利用, 感兴趣的自己可以看看。

下载完毕后是一个压缩包, 解压后是 tap 文件, 这个文件要比 V6 的大多了, 一共 11.1 MB。

安装 Unix V7

参考链接: Installing_v7_on_SIMH 和 Installing and Using Research Unix Version 7 in SimH PDP-11/45 Emulator , 可能需要科学上网才能看到, 我尽量在文章中写详细一些, 以便可以直接搭建成功。

Tape 安装

模拟器命令如下:

set cpu 11/45
set cpu idle
set rp0 rp06
att rp0 rp06-0.disk
set rp1 rp06
att rp1 rp06-1.disk
att tm0 Unix-v7-Keith-Bostic.tap
boot tm0

模拟器将引导 tap 并显示单词启动后跟回车返回和冒号提示符。 此时, 不存在操作系统。

但是它加载了一个 tap,并且加载了称为 tm 的独立程序。 如果我们运行 tm, 它将直接从 tap 运行一个程序, 由 tap 控制器和 tap 上的文件索引。 它是一种从零开始索引的。 我们希望在 tap 磁带上运行第 4 个文件,这是 mkfs 的独立版本, 用于在 RP06 DiskPack 上创建文件系统, 目标设备名称是 RP06 的 HP。 这次索引是指控制器和分区。 我们要在第一个控制器的第一个分区上创建文件系统。 这将准备我们的磁盘成为 root 文件系统。

Boot
: tm(0,3)
file sys size: 5000
file system: hp(0,0)
isize = 1600
m/n = 3 500
Exit called
Boot
:

再次出现 Boot 和 “:”。现在文件系统准备完成, 我们将使用磁带中的另一个程序,恢复,填充它。独立程序将磁带文件作为输入和磁盘设备作为输出。 磁带上的第六个文件是 RP0 的转储(根文件系统)。 与上文操作相似:

Boot
: tm(0,4)
Tape? tm(0,5)
Disk? hp(0,0)
Last chance before scribbling on disk.
End of tape
Boot
:

此时,根文件系统已经可以使用了。 我们可以从 root 启动 UNIX。 使用上面描述的索引方案, 我们可以从根文件系统中加载和运行 HPTMUNIX (包括 HP 和 TM 驱动程序)内核。

Boot
: hp(0,0)p
p not found
: hp(0,0)hptmunix
mem = 177344
#

使用命令将字符转换为小写, 并没有延迟:

STTY -LCASE NL0 CR0

将 unix 内核重命名, 为了以后方便进入系统:

mv hptmunix unix

创建设备文件。 要使 UNIX 完成安装,需要创建许多特殊文件来表示硬件设备。 特殊文件用作用户和底层设备之间的接口。 它们是允许 UNIX 系统将近所有硬件作为简单文件的魔法。 特殊文件抽象将文件名映射到内存矢量, 该内存矢量指向一组有限的公共 I/O 操作(读取,写入,getchar,putchar等)。实现这些 I/O 操作的设备驱动程序是操作系统的一部分, 就像我们所有设备的情况一样, 或者作为加载项提供。 /dev 目录中的 makefile 中包含了最常见设备, 并用作我们的模板, 以确定我们需要实例化的设备。

出于我们的目的, 我们从 Makefile 中获取主要设备号(6 用于 block-type rp 和 14 用于 cgaracter-type rp)。 次要设备是由组合块设备索引和分区的字节表示的数字。

因此,以下是我们需要创建特殊文件的设备:

第一个RP06,分区0 (b 6 0 中的0) 是root, Partition 1 是交换的,我们将留下剩余的时间暂时。

第二个RP06,分区7将用于 /USR。

根据 Makefile 文件,RP06 主要设备分别为 6 和 14 。小数字是:

  1. 对于第一个驱动器,驱动 0 的第一分区, 它是 00000000,十进制0。
  2. 对于第一个驱动器的第二个分区, 它是00000001,十进制1。
  3. 虽然我们不使用它,第一个驱动器的第七个分区将是 00000111,十进制 7
  4. 对于第二个驱动器,驱动器 1 的第七分区,它是00001111,十进制15

使用此信息执行以下命令,我们运行以创建 RP06 的特殊文件,并给出适当的权限:

# cd /dev
# make rp06
/etc/mknod rp0 b 6 0
/etc/mknod swap b 6 1
/etc/mknod rp3 b 6 7
/etc/mknod rrp0 c 14 0
/etc/mknod rrp3 c 14 7
chmod go-w rp0 swap rp3 rrp0 rrp3
#

现在,RP0 是指磁盘 0 分区 0(根设备),swap 是指磁盘 0 分区 1, RP3 是指磁盘 1 分区6(/USR), RRP0 参考原始磁盘 0 分区 0,和 RRP3 是指原始磁盘 1 分区 6。

我们使用 make 创建 tape 专用文件(regular device, rewinding device, and non-rewinding device)并设置适当的权限:

# make tm
/etc/mknod mt0 b 3 0
/etc/mknod rmt0 c 12 0
/etc/mknod nrmt0 c 12 128
chmod go+w mt0 rmt0 nrmt0
#

创建完成所有的设备文件后, 可以看一下效果:

使用附加的和工作的设备以及特殊文件可用后,是时候为 /usr 分区创建文件系统并将文件从磁带复制到文件系统中。 我们将使用 mkfs 创建文件系统和 icheck 来检查结果。

# cd /
# /etc/mkfs /dev/rp3 322278
isize = 65496
m/n = 3 500
# icheck /dev/rp3
/dev/rp3:
files      2 (r=1,d=1,b=0,c=0)
used       1 (i=0,ii=0,iii=0,d=1)
free  314088
missing    0
#

然后使用 dd 将 tape 移动到适当的起始点 (跳过 6 个文件并将磁带设置为第七文件, 转储 RP3)。 然后我们将使用 restor 在该 tape 文件中恢复文件。 请注意, 我们正在从 nrmt0 读取,non-rewinding device。

# dd if=/dev/nrmt0 of=/dev/null bs=20b files=6
202+80 records in
202+75 records out
# restor rf /dev/rmt0 /dev/rp3
Last chance before scribbling on /dev/rp3.
End of tape
#

最后,我们将在 /usr 上挂载新填充的分区, 并将启动块从该挂载复制到我们第一个磁盘的 root 分区的第一个块:

# /etc/mount /dev/rp3 /usr
# dd if=/usr/mdec/hpuboot of=/dev/rp0 count=1
0+1 records in
0+1 records out
#

tape 安装完毕, 在关闭模拟器之前实行 sync 命令, 然后执行 Ctrl + E 中止模拟, 在输入 q 退出模拟器。

硬盘启动

新建一个 config.ini 文件, 将如下内容写入到文件中:

echo
echo After Disabling XQ is displayed type in boot
echo and at the : prompt type in hp(0,0)unix
echo
set cpu 11/70
set cpu 2M
set cpu idle
set rp0 rp06
att rp0 rp06-0.disk
set rp1 rp06
att rp1 rp06-1.disk
boot rp0

然后重新启动 pdp 模拟器, 具体步骤如下图

OK, 到此 Unix V7 也安装完毕了, 可以享用 Unix V7 了。

结语

本次安装 Unix V7 就到此结束了, 有些参考链接中没有的东西我已经在文中写出来了。

如有错误, 敬请指出, 感谢指正!     — 2021-11-08 23:00:35

赞(0) 打赏
转载请注明:飘零博客 » 使用 Simh 搭建 Unix V7 虚拟环境
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临