最简单的,在mac笔记本上安装Unix-v6系统,进行“Unix内核源码剖析”

Unix V6 已经是 1975 年的系统了,但是其源代码拢共只有 1w 行左右,并且使用了 C 语言(K & R 之前的标准),还是现代操作系统的鼻祖,所以说是初学者最好的研究对象。

安装模拟器

brew install simh   
brew link simh   

Warning: Already linked: /opt/homebrew/Cellar/simh/3.12.2

which pdp11         

/opt/homebrew/bin/pdp11

如果which pdp11 找不到需要添加/opt/homebrew/Cellar/simh/3.12.2/bin到环境变量中

下载unuxV6镜像“Unix-v6-Ken-Wellsch.tap.bz2”

下载地址
https://sourceforge.net/projects/bsd42/files/Install%20tapes/Research%20Unix/Unix-v6-Ken-Wellsch.tap.bz2/download

英文安装参考资料,内核Unix-v6-Ken-Wellsch.tap.bz2下载地址
http://gunkies.org/wiki/Installing_UNIX_v6_(PDP-11)_on_SIMH#Materials

中文安装参考资料
https://blog.csdn.net/u012814856/article/details/98724746

准备目录和文件

新建目录

mkdir ~/unixv6        
cd ~/unixv6

Unix-v6-Ken-Wellsch.tap.bz2 解压后得到Unix-v6-Ken-Wellsch.tap

cp Unix-v6-Ken-Wellsch.tap dist.tap   

注意保留Unix-v6-Ken-Wellsch.tap文件,如果不小心安装失败需要重新cp再次安装
因为安装过程dist.tap会被修改

开始安装系统

安装文件 01install.ini

set cpu 11/40
set tm0 locked
attach tm0 dist.tap
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
d cpu 100000 012700 
d cpu 100002 172526
d cpu 100004 010040
d cpu 100006 012740 
d cpu 100010 060003
d cpu 100012 000777 
g 100000
pdp11 01install.ini

当你运行到这一刻的时候,模拟器会卡住,此时你使用 Ctrl + E 退出,然后再准备配置硬盘信息:

g 0

运行了这行代码,会弹出一个 = 的等待输入提示符,此时按照如下对话进行输入即可:

sim> g 0
=tmrk
disk offset
0
tape offset  
100
count
1
=tmrk
disk offset  
1
tape offset  
101
count
3999
=                                              [## Hit CTRL-E here]  
Simulation stopped, PC: 137300 (BGE 137274)  
sim> q

安装磁盘02install-disk.ini

set cpu 11/40
set tto 7b
set tm0 locked
attach tm0 dist.tap  
attach rk0 rk0  
attach rk1 rk1  
attach rk2 rk2  
dep system sr 173030  
boot rk0
pdp11 02install-disk.ini  

此时,程序会打印出来一个 @ 符号提示输入,输入如下内容即可告诉模拟器我们要加载 Unix 核心模块:

rkunix 

切换成小写

STTY -LCASE  

快速启动系统03quick-run.ini

set cpu 11/40
set cpu idle
set tto 7b
set tm0 locked
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
attach lpt printer.txt
set dci en
set dci lines=8
set dco 7b
att dci 5555
boot rk0
pdp11 03quick-run.ini

此时,程序会打印出来一个 @ 符号提示输入,输入如下内容即可告诉模拟器我们要加载 Unix 核心模块:

rkunix 

输入用户名root回车
在这里插入图片描述

环境至此搭建完成
可以至此下载源码
https://www.tuhs.org/Archive/Distributions/Research/Dennis_v6/

结合”Unix内核源码剖析“相关书籍学习

全文结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL精通之路】SQL优化(1)-查询优化(3)-索引合并

主博客: 【MySQL精通之路】SQL优化(1)-CSDN博客 上一篇: 【MySQL精通之路】SQL优化(1)-查询优化(2)-范围查询优化-CSDN博客 下一篇: 目录 1.索引合并-交集访问算法 2.索引合并联合访问算法 3.索引合并-排序联合访问算法 4.影响索引合…

平衡发展与环保:理性看待地下式污水处理厂建设|中联环保圈

这些年啊,随着城市化进程越来越快,还有环境保护意识不断提高,这地下式污水处理厂慢慢就成了热门的建设趋势了。据相关统计,全球现在运行着 200 多座地下式污水处理厂呢,咱国家建成和在建的数量也差不多快到 200 座啦。…

基于transformers框架实践Bert系列4-文本相似度

本系列用于Bert模型实践实际场景,分别包括分类器、命名实体识别、选择题、文本摘要等等。(关于Bert的结构和详细这里就不做讲解,但了解Bert的基本结构是做实践的基础,因此看本系列之前,最好了解一下transformers和Bert…

STM32入门笔记(02):USART串口通信注意事项笔记(SPL库函数版)

这是通过串口通信发送过来的数据,里面包括了故障码,电压,电流,频率等信息,请你用STM32f103系列单片机的串口1读取该数据并解析出电压和电流是多少? 要用STM32F103系列单片机的串口1读取并解析发电机上的逆…

【Django项目】 音乐网站spotify复刻

代码:https://github.com/tomitokko/spotify-clone 注:该项目不是自己提供mp3文件,而是使用spotify 的api接口获取。

docker 命令总结

导出镜像下载 centos 镜像 docker pull centos:centos7.7.1908 常用命令 docker ps 查看正在运行的容器 docker ps -a 查看所有容器 docker images 查看本地已有镜像 停止所有容器 docker stop $(docker ps -aq) 停止某个容器 docker stop 容器名称 删除所有容器 dock…

Java基础入门day54

day54 servlet升级03 特点 当前设计又有一个问题,我们目前可以做到一个实体类用一个servlet,比如Student类的所有crud方法都可以在StudentServlet中的service方法中进行动态处理。假如又有User类,我们就要在UserServlet中设计service方法&a…

探索文档识别技术在加强教育资源共享与合作中的潜力

在数字化浪潮不断推进的今天,教育资源的共享与合作已经成为提高教学质量和效率的关键因素。文档识别技术作为一项强大的工具,在这一过程中发挥着至关重要的作用。本文旨在探讨如何通过文档识别技术的应用,促进教育资源的有效共享与教师、学校…

MySQL主从复制故障:“ Slave_SQL_Running:No“ 两种解决办法

问题 今天搭建MySQL的主从复制,查看从机状态时show slave status\G,发现这个参数为NO,导致主从复制失败。 Slave_SQL_Running: No 后面上网查阅了一下资料,大概就是因为在连接支持数据库后,也就是这个命令后&#xff…

Adobe产品安装目录修改

进入安装包目录&#xff0c;进入到products文件夹 编辑driver.xml文件 将“InstallDir”修改为你需要安装的软件的目录&#xff0c;我这里是修改到D:\Adobe目录 <DriverInfo> <ProductInfo> xxxxxxxxxxxxxxxxx </ProductInfo> 拷贝RequestInfo这部分…

c-lodop 打印面单 内容串页

场景&#xff1a;使用c-lodop程序调取打印机连续打印多张快递单时&#xff0c;上页内容&#xff0c;打到了下一页了 问题原因&#xff1a; 由于是将所有面单内容放到了一个页面&#xff0c;c-lodop 在打印时&#xff0c;发现一页放不下&#xff0c;会自动分割成多页 页面元素…

【在Postman中,如果后端返回的是String类型的数据但不是JSON格式,报错】

在Postman中&#xff0c;如果后端返回的是String类型的数据但不是JSON格式 问题描述解决办法 postman后端返回的String数据,不是json,怎么设置结果的接收&#xff1f; 问题描述 在postman中测试接口&#xff0c;报错Error&#xff1a;Abort&#xff0c;或者显示返回数据校验失…

coveralls使用pytest进行本地测试时报错SyntaxError: invalid escape sequence \S

## 错误复现&#xff1a; git clone gitgithub.com:TheKevJames/coveralls-python.git cd coveralls-python poetry install poetry run pytest## 错误内容&#xff1a; ## 完整的打印信息 test session starts platform darwin -- Python 3.8.18, pytest-8.2.1, pluggy-1.5.…

使用 LlamaParse 进行 PDF 解析并创建知识图谱

此 Python 笔记本提供了有关利用 LlamaParse 从 PDF 文档中提取信息并随后将提取的内容存储到 Neo4j 图形数据库中的综合指南。本教程在设计时考虑到了实用性&#xff0c;适合对文档处理、信息提取和图形数据库技术感兴趣的开发人员、数据科学家和技术爱好者。 该笔记本电脑的主…

可视化大屏,不搞点3D效果,感觉有点对不起观众呢。

使用3D模型可以为可视化展现增加更多的维度和真实感&#xff0c;提供更直观、生动的视觉效果。以下是一些3D模型在可视化展现中的作用&#xff1a; 增强沉浸感&#xff1a;通过使用3D模型&#xff0c;可以让观众感受到更真实的场景和物体&#xff0c;增强他们的沉浸感。这有助…

playwright相关的文章

霍格沃兹测试开发Muller老师 - 个人中心 - 腾讯云开发者社区-腾讯云 霍格沃兹测试开发Muller老师 &#xff1a;

【数组】Leetcode 452. 用最少数量的箭引爆气球【中等】

用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地…

golang问题

文章目录 Go里有哪些数据结构是并发安全的&#xff1f;int类型是并发安全的吗&#xff1f;为什么int不是并发安全的&#xff1f; Go如何实现一个单例模式&#xff1f;sync.Once是如何实现的&#xff0c;如何不使用sync.Once实现单例模式&#xff1f;Go语言里的map是并发安全的吗…