simh中安装运行unix v7

参考http://gunkies.org/wiki/Installing_v7_on_SIMH

一、
perl生成磁带镜像
$ cat mkdisttap.pl 
#!/usr/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("f0", 512);
end_file();
add_file("f1", 512);
end_file();
add_file("f2", 512);
end_file();
add_file("f3", 512);
end_file();
add_file("f4", 512);
end_file();
add_file("f5", 10240);
end_file();
add_file("f6", 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);
}

c语言:


#include "stdio.h"
#include "stdlib.h"


struct {
  char *name;
  int blocksize;
} files[] = {
  { "f0",   512 },
  { "f1",   512 },
  { "f2",   512 },
  { "f3",   512 },
  { "f4",   512 },
  { "f5", 10240 },
  { "f6", 10240 }
};


void error(char *msg) {
  printf("**** Error: %s ****\n", msg);
  exit(0);
}


void writeCount(long count, FILE *file) {
  if (fwrite(&count, 4, 1, file) != 1) {
    error("cannot write byte count");
  }
}


int main(void) {
  FILE *outfile;
  FILE *infile;
  long size;
  int blocksize;
  int blocks;
  int i, j;
  unsigned char buffer[20000];

  outfile = fopen("unix_v7.tm", "wb");
  if (outfile == NULL) {
    error("cannot open output file");
  }
  for (i = 0; i < sizeof(files)/sizeof(files[0]); i++) {
    printf("%s: ", files[i].name);
    infile = fopen(files[i].name, "rb");
    if (infile == NULL) {
      error("cannot open input file");
    }
    fseek(infile, 0, SEEK_END);
    size = ftell(infile);
    fseek(infile, 0, SEEK_SET);
    blocksize = files[i].blocksize;
    blocks = size / blocksize;
    printf("%ld bytes = %d records (blocksize %d bytes)\n",
            size, blocks, blocksize);
    if (size % blocksize != 0) {
      error("file size is not a multiple of block size");
    }
    for (j = 0; j < blocks; j++) {
      if (fread(buffer, blocksize, 1, infile) != 1) {
        error("cannot read input file");
      }
      writeCount(blocksize, outfile);
      if (fwrite(buffer, blocksize, 1, outfile) != 1) {
        error("cannot write output file");
      }
      writeCount(blocksize, outfile);
    }
    fclose(infile);
    writeCount(0, outfile);
  }
  writeCount(0xFFFFFFFF, outfile);
  fclose(outfile);
  return 0;
}

-----------------------------------------------------------------------------------
二、到ftp://minnie.tuhs.org/UnixArchive/PDP-11/Distributions/research/Keith_Bostic_v7/下载
f0.gz   f1.gz   f2.gz   f3.gz   f4.gz   f5.gz   f6.gz并解压为:f0   f1   f2   f3   f4   f5   f6
三、生成磁带镜像文件: 
$ ./mkdisttap.pl > v7.tap
$ gcc -Wall -g -o mktape mktape.c
$./ mktape
直接到http://sourceforge.net/projects/bsd42/files/Install tapes/Research Unix/Unix-v7-Keith-Bostic.tap.bz2/download下载Unix-v7-Keith-Bostic.tap.bz2解压后修改名字
$ mv Unix-v7-Keith-Bostic.tap v7.tap


四、安装

$ vi tapei.ini
$ cat tapei.ini 
set cpu 11/45
set cpu idle
set rp0 rp06
att rp0 rp06-0.disk
att tm0 v7.tap
boot tm0

$ pdp11 tapei.ini 

PDP-11 simulator V3.9-0
Disabling XQ
RP: creating new file
Overwrite last track? [N] 
Boot
: tm(0,3)
file sys size: 5000
file system: hp(0,0)
isize = 1600
m/n = 3 500
Exit called
Boot
: tm(0,4)
Tape? tm(0,5)
Disk? hp(0,0)
Last chance before scribbling on disk. 
End of tape
Boot
: hp(0,0)hptmunix
mem = 177344
# MV HPTMUNIX UNIX
# RM HP*IX
# LS *IX
RPHTUNIX
RPTMUNIX
UNIX
# RM RP*IX
# 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
# 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
# CD /
# /ETC/MKFS /DEV/RP3 322276
ISIZE = 65496
M/N = 3 500
# 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
# /ETC/MOUNT /DEV/RP3 /USR
# DD IF=/USR/MDEC/HPUBOOT OF=/DEV/RP0 COUNT=1
0+1 RECORDS IN
0+1 RECORDS OUT
# SYNC
# SYNC
# SYNC
# SYNC
Simulation stopped, PC: 002306 (MOV (SP)+,177776)
sim> q
Goodbye$ pdp11 tboot.ini

PDP-11 simulator V3.9-0

at the prompt type in
@ hp(0,0)unix

Disabling XQ
Boot
: hp(0,0)unix
mem = 2020544
# RESTRICTED RIGHTS: USE, DUPLICATION, OR DISCLOSURE
IS SUBJECT TO RESTRICTIONS STATED IN YOUR CONTRACT WITH
WESTERN ELECTRIC COMPANY, INC.
WED DEC 31 19:05:41 EST 1969

login: root
Password:
You have mail.
# ls
bin
boot
dev
etc
lib
tmp
unix
usr
# df
/dev/rp0 1297
/dev/rp3 297414
Simulation stopped, PC: 002306 (MOV (SP)+,177776)
sim> q
Goodbye


五、运行(这个 tboot.ini解决的维基这篇文章中不能用磁盘rp06启动的问题
$ cat tboot.ini
echo
echo at the prompt type in
echo @ hp(0,0)unix
echo
set cpu 11/70
set cpu 2M
set cpu idle
set rp0 rp06
attach rp0 rp06-0.disk
d cpu 2000 042102
d cpu 2002 012706
d cpu 2004 002000
d cpu 2006 012700
d cpu 2010 000000
d cpu 2012 012701
d cpu 2014 176700
d cpu 2016 012761
d cpu 2020 000040
d cpu 2022 000010
d cpu 2024 010061
d cpu 2026 000010
d cpu 2030 012711
d cpu 2032 000021
d cpu 2034 012761
d cpu 2036 010000
d cpu 2040 000032
d cpu 2042 012761
d cpu 2044 177000
d cpu 2046 000002
d cpu 2050 005061
d cpu 2052 000004
d cpu 2054 005061
d cpu 2056 000006
d cpu 2060 005061
d cpu 2062 000034
d cpu 2064 012711
d cpu 2066 000071
d cpu 2070 105711
d cpu 2072 100376
d cpu 2074 005002
d cpu 2076 005003
d cpu 2100 012704
d cpu 2102 002020
d cpu 2104 005005
d cpu 2106 105011
d cpu 2110 005007
run 2002

$ pdp11 tboot.ini

PDP-11 simulator V3.9-0

at the prompt type in
@ hp(0,0)unix

Disabling XQ
boot
Boot

at the prompt type in
@ hp(0,0)unix

Disabling XQ
Boot
: hp(0,0)unix
mem = 2020544
# ^D

# RESTRICTED RIGHTS: USE, DUPLICATION, OR DISCLOSURE
IS SUBJECT TO RESTRICTIONS STATED IN YOUR CONTRACT WITH
WESTERN ELECTRIC COMPANY, INC.
WED DEC 31 19:06:34 EST 1969

login: root
Password:root

You have mail.
# cat /etc/passwd
root:VwL97VCAx1Qhs:0:1::/:
daemon:x:1:1::/:
sys::2:2::/usr/sys:
bin::3:3::/bin:
uucp::4:4::/usr/lib/uucp:/usr/lib/uucico
dmr::7:3::/usr/dmr:

^D

login: dmr

$ cat >> hello.c
main()
{
    printf("Hello World!\n");
}


$ cc hello.c
$ ./a.out
Hello World!

unix v7源代码下载
http://cloud.189.cn/t/rUB32qraeuum
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值