ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux内核学习

2021-08-24 12:32:15  阅读:293  来源: 互联网

标签:Administrator exe rwxr 学习 197121 内核 Linux xr 2012


Linux内核学习

前言

为什么要看从Unix看起呢?因为Linux之父是参考Unix写出Linux的,所以追根溯源我就找到这里,打算从Unix源码看起,加上自己学习操作系统的学得很烂,不知道是自己的学习问题?还是操作系统理论知识本身就很抽象?于是,我就找到了《Unix内核源码剖析》这本书,从看源码然后再回头翻操作系统理论的书,沿着Unix->Linux->Android这条路走下去,逐步地对操作系统有进一步地理解。

Unix源码阅读

前期环境搭建

资料下载

在网上找到书上学习Unix内核的材料,网盘地址如下:

链接:https://pan.baidu.com/s/1upOLt8h0U93spDuSEz4C4g 
提取码:34cb

Simh 中配置安装 Unix V6

下载解压Unix V6

上面的网盘地址如果失效,请联系本人更新地址,然后下载Unix V6解压里面的三个压缩文件到本地,应该看到这样的三个文件夹:

  • simhv39-0-exe
  • Unix-v6-Ken-Wellsch.tap
  • v6src

重命名Unix-v6-Ken-Wellsch.tap

Unix-v6-Ken-Wellsch.tap这个文件夹中的Unix-v6-Ken-Wellsch.tap这个文件首先重命名dist.tap,再复制黏贴simhv39-0-exe这个文件夹里。这里为什么要重命名呢?因为在后面加载boot这段代码中有这样一行代码sim> attach tm0 dist.tap,这里的dist.tap在我们下载到的三个文件夹中都没有,所以由此可以推断它是重命名来的,但是它有什么作用呢?暂时留下一个疑问。

查看simhv39-0-exe文件目录下的文件

为什么这里会有一步查看这个文件夹下的所有文件呢?因为我发现配置参数之后,会在这个文件夹目录下新生成一些文件,所以在这里先把原有的所有文件做一个记录,到时候方便分析生成的过程发生了什么。

cmd方式查看

考虑到有些同学没有在电脑里安装Git,就使用Windows最原始的方法去查看,快捷键win+R,在这里win一般表示的是在键盘左下方的微软图标,然后弹出来的运行窗口输入cmd,一般一开始的路径是:

C:\Users\Administrator>

然后我们需要切换到simhv39-0-exe这个文件夹的磁盘下,所以我们要光标处输入磁盘符,我这个文件夹在e盘,我的输入是这样的:

C:\Users\Administrator>e:

然后显示代码是这样的:

C:\Users\Administrator>e:

E:\>

这个就表示我们已经进入到e盘的路径下,接着切换到该文件夹路径下,Tab键对文件夹的名字进行补全,由于我是在百度网盘下载的,所以我这里e盘的根目录下是BaiduNetdiskDownload文件夹,使用cd 文件名(注意这里有个空格)进入文件夹目录下,由于cmd窗口的代码不能复制黏贴,所以整个过程大致输入如下:

C:\Users\Administrator>e:

E:\>BaiduNetdiskDownload>cd "Unix V6"

E:\>BaiduNetdiskDownload\Unix V6>cd simhv39-0-exe>

E:\>BaiduNetdiskDownload\Unix V6\simhv39-0-exe>

最后,成功显示这样的路径***:\>***\Unix V6\simhv39-0-exe>就表示已经进入simhv39-0-exe文件夹中了,然后使用dir命令查看这个文件夹中的所有文件,由于文件比较多,所以就截图了:

Git Bash Here方式

Git Bash Here方式就比较简单,这个要在电脑上事先安装Git软件,直接进入到simhv39-0-exe文件夹下,右键点击该文件夹选择Git Bash Here,然后使用ls -lt命令进行查看:

Administrator@PC-20210109IEYU MINGW64 /d/simhv39-0-exe
$ ls -lt
total 13984
-rw-r--r-- 1 Administrator 197121 6291996 四月   19 14:54 dist.tap
-rwxr-xr-x 1 Administrator 197121  201223 五月    4  2012 swtp6800mp-a2.exe*
-rwxr-xr-x 1 Administrator 197121  198732 五月    4  2012 swtp6800mp-a.exe*
-rwxr-xr-x 1 Administrator 197121  192894 五月    4  2012 h316.exe*
-rwxr-xr-x 1 Administrator 197121  158566 五月    4  2012 lgp.exe*
-rwxr-xr-x 1 Administrator 197121  214245 五月    4  2012 sds.exe*
-rwxr-xr-x 1 Administrator 197121  244623 五月    4  2012 id32.exe*
-rwxr-xr-x 1 Administrator 197121  234367 五月    4  2012 id16.exe*
-rwxr-xr-x 1 Administrator 197121  233236 五月    4  2012 ibm1130.exe*
-rwxr-xr-x 1 Administrator 197121  293948 五月    4  2012 i7094.exe*
-rwxr-xr-x 1 Administrator 197121  161305 五月    4  2012 gri.exe*
-rwxr-xr-x 1 Administrator 197121  661949 五月    4  2012 altairz80.exe*
-rwxr-xr-x 1 Administrator 197121  161691 五月    4  2012 altair.exe*
-rwxr-xr-x 1 Administrator 197121  182294 五月    4  2012 s3.exe*
-rwxr-xr-x 1 Administrator 197121  193458 五月    4  2012 i1620.exe*
-rwxr-xr-x 1 Administrator 197121  188159 五月    4  2012 i1401.exe*
-rwxr-xr-x 1 Administrator 197121  437997 五月    4  2012 hp2100.exe*
-rwxr-xr-x 1 Administrator 197121  263665 五月    4  2012 eclipse.exe*
-rwxr-xr-x 1 Administrator 197121  199700 五月    4  2012 nova.exe*
-rwxr-xr-x 1 Administrator 197121  563019 五月    4  2012 vax780.exe*
-rwxr-xr-x 1 Administrator 197121  497421 五月    4  2012 vax.exe*
-rwxr-xr-x 1 Administrator 197121  341096 五月    4  2012 pdp10.exe*
-rwxr-xr-x 1 Administrator 197121  584150 五月    4  2012 pdp11.exe*
-rwxr-xr-x 1 Administrator 197121  241230 五月    4  2012 pdp15.exe*
-rwxr-xr-x 1 Administrator 197121  233454 五月    4  2012 pdp9.exe*
-rwxr-xr-x 1 Administrator 197121  262525 五月    4  2012 pdp8.exe*
-rwxr-xr-x 1 Administrator 197121  226422 五月    4  2012 pdp7.exe*
-rwxr-xr-x 1 Administrator 197121  224715 五月    4  2012 pdp4.exe*
-rwxr-xr-x 1 Administrator 197121  199295 五月    4  2012 pdp1.exe*
-rw-r--r-- 1 Administrator 197121  131072 四月    1  2008 ka655x.bin
-rwxr-xr-x 1 Administrator 197121   44544 五月    5  2005 vmb.exe*

配置 Unix V6 的系统启动参数

运行pdp11.exe可执行程序

打开simhv39-0-exe这个文件夹,找到可执行程序pdp11.exe,点击该程序,然后会弹出这个一个窗口,然后我们就可以配置 Unix V6 的系统启动参数。本来按照网上的教程应该是,复制下面这段代码,这里的复制是指一行一行地复制,而不是一整段复制,鼠标右键黏贴到弹出的窗口后的光标处,但是不知道是不是我是win7,教程博主用的是win10,所以我这里是黏贴不了的。

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
加载boot

于是,我就按照上面这段代码的顺序在弹出窗口的光标处依次输入,直到最后一行,我这里的窗口与显示的代码大致如下:

PDP-11 simulator V3.9-0
sim> set cpu 11/40
Disabling XQ
sim> set tm0 locked
sim> attach tm0 dist.tap
sim> attach rk0 rk0
RK:creating new file
sim> attach rk1 rk1
RK:creating new file
sim>attach rk2 rk2
RK:creating new file
sim>d cpu 100000 012700 
sim>d cpu 100002 172526
sim>d cpu 100004 010040
sim>d cpu 100006 012740 
sim>d cpu 100010 060003
sim>d cpu 100012 000777 
sim>g 100000
  • 加载引导块
  • 将根分区加载到 rk 文件上去

这是网摘对这个过程的解释,先找照着做,以后再回来进行补充说明。

再次查看所有文件

到这里我们看到的是光标在那里闪,我们再用上面的两种方法去查看经过这次输入之后会生成那些文件,我这里用的是第二种方式,回到simhv39-0-exe目录下右键选择Git Bash Here

Administrator@PC-20210109IEYU MINGW64 /e/BaiduNetdiskDownload/Unix V6/simhv39-0-
$ ls -lt
total 13984
-rw-r--r-- 1 Administrator 197121       0 四月   19 14:43 rk2
-rw-r--r-- 1 Administrator 197121       0 四月   19 14:42 rk1
-rw-r--r-- 1 Administrator 197121       0 四月   19 14:41 rk0
-rw-r--r-- 1 Administrator 197121 6291996 四月   19 11:20 dist.tap
-rwxr-xr-x 1 Administrator 197121  201223 五月    4  2012 swtp6800mp-a2.exe*
-rwxr-xr-x 1 Administrator 197121  198732 五月    4  2012 swtp6800mp-a.exe*
-rwxr-xr-x 1 Administrator 197121  192894 五月    4  2012 h316.exe*
-rwxr-xr-x 1 Administrator 197121  158566 五月    4  2012 lgp.exe*
-rwxr-xr-x 1 Administrator 197121  214245 五月    4  2012 sds.exe*
-rwxr-xr-x 1 Administrator 197121  244623 五月    4  2012 id32.exe*
-rwxr-xr-x 1 Administrator 197121  234367 五月    4  2012 id16.exe*
-rwxr-xr-x 1 Administrator 197121  233236 五月    4  2012 ibm1130.exe*
-rwxr-xr-x 1 Administrator 197121  293948 五月    4  2012 i7094.exe*
-rwxr-xr-x 1 Administrator 197121  161305 五月    4  2012 gri.exe*
-rwxr-xr-x 1 Administrator 197121  661949 五月    4  2012 altairz80.exe*
-rwxr-xr-x 1 Administrator 197121  161691 五月    4  2012 altair.exe*
-rwxr-xr-x 1 Administrator 197121  182294 五月    4  2012 s3.exe*
-rwxr-xr-x 1 Administrator 197121  193458 五月    4  2012 i1620.exe*
-rwxr-xr-x 1 Administrator 197121  188159 五月    4  2012 i1401.exe*
-rwxr-xr-x 1 Administrator 197121  437997 五月    4  2012 hp2100.exe*
-rwxr-xr-x 1 Administrator 197121  263665 五月    4  2012 eclipse.exe*
-rwxr-xr-x 1 Administrator 197121  199700 五月    4  2012 nova.exe*
-rwxr-xr-x 1 Administrator 197121  563019 五月    4  2012 vax780.exe*
-rwxr-xr-x 1 Administrator 197121  497421 五月    4  2012 vax.exe*
-rwxr-xr-x 1 Administrator 197121  341096 五月    4  2012 pdp10.exe*
-rwxr-xr-x 1 Administrator 197121  584150 五月    4  2012 pdp11.exe*
-rwxr-xr-x 1 Administrator 197121  241230 五月    4  2012 pdp15.exe*
-rwxr-xr-x 1 Administrator 197121  233454 五月    4  2012 pdp9.exe*
-rwxr-xr-x 1 Administrator 197121  262525 五月    4  2012 pdp8.exe*
-rwxr-xr-x 1 Administrator 197121  226422 五月    4  2012 pdp7.exe*
-rwxr-xr-x 1 Administrator 197121  224715 五月    4  2012 pdp4.exe*
-rwxr-xr-x 1 Administrator 197121  199295 五月    4  2012 pdp1.exe*
-rw-r--r-- 1 Administrator 197121  131072 四月    1  2008 ka655x.bin
-rwxr-xr-x 1 Administrator 197121   44544 五月    5  2005 vmb.exe*
对比差异

对比上次的输出,我们会发现新生成三个文件分别是rk0rk1rk2

-rw-r--r-- 1 Administrator 197121       0 四月   19 14:43 rk2
-rw-r--r-- 1 Administrator 197121       0 四月   19 14:42 rk1
-rw-r--r-- 1 Administrator 197121       0 四月   19 14:41 rk0

其实,我们在PDP-11那个窗口输入时,所输出的这行代码RK:creating new file,也可以知道这三个文件是新生成的。

退出加载,配置磁盘

我们接着这里的输出代码:
加载boot,快捷键Ctrl + E退出加载过程,然后窗口会输出这样一段代码Simulation stopped,PC:100012<BR 100012>,表示模拟器已经停止了,我们接着输入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

就这一段代码

=                                              [## Hit CTRL-E here]

有点坑,我还照着上面进行输入,结果不是,应该是在显示=后,我们快捷键Ctrl + E,退出配置过程,最后在光标处输入q,到目前为止,窗口显示的情况如下:

安装磁盘

在上一步我们在光标处输入q,再按下Enter键就可以退出pdp11.exe这个可执行程序,我们再重新点击这个可执行文件,输入以下代码进行:

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

当我们输完上面的代码,新一行会显示一个@,我们输入以下代码,告诉模拟器我们要加载 Unix 核心模块:

rkunix

到这里为止,PDP-11可执行程序窗口的运行情况如图所示:

修改大小写

为什么要修改大小写呢?因为无论我们在#后面的光标处输入什么,它都输出大写,所以我们这里需要把它改为小写,输入以下代码修改为小写:

# STTY -LCASE
重新构建内核

#后的光标处接着输入以下代码进行重构内核,记得每输完一行按Enter进行确认:

chdir /usr/sys/conf
cc mkconf.c
mv a.out mkconf
配置mkconf

输入以下代码配置mkconf:

# ./mkconf
rk
tm
tc
8dc
lp
done
#

编译配置,将其余的库文件进行链接,最后复制到unix目录下:

as m40.s
mv a.out m40.o
cc -c c.c
as l.s
ld -x a.out m40.o c.o ../lib1 ../lib2
mv a.out /unix

标签:Administrator,exe,rwxr,学习,197121,内核,Linux,xr,2012
来源: https://www.cnblogs.com/Huang-zihan/p/15179774.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有