实验内容
在实验楼的环境中敲入命令
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
效果截图:
一、补习第一周云班课视频
(一)文件系统
1、FHS:文件系统层次结构标准
Linux的正常运行是以目录结构为基础的。FHS定义了两层规范,第一层是,/下面的各个目录应该要放什么文件数据,例如/etc应该放置设置文件,/bin和/sbin则应放置可执行文件等。第二层则是针对、usr和/var这两个目录的子目录来定义。例如/var/log防止系统日志文件,/usr/share放置共享数据等等。
FHS将目录定义为四种交互作用的形态,如图:
以“.”开头的文件都是隐藏文件,~通常表示当前用户的home目录
使用pwd命令可以获取当前所在路径。
2、mkdir创建目录
mkdir -p /*同时创建父目录(如果不存在该父目录)*/
cp 被复制文件 复制到的位置 /*复制目录时,加上-r或者-R,表示递归复制*/
rm -f 文件名/*忽略提示,强制删除*/
rm -r 要删除的目录/*删除目录*/
mv 源目录文件 目的目录/*移动文件*、/
mv 就文件名 新文件名 /*重命名文件*/
rename /*批量重命名文件*/
3、使用cat,tac和nl命令查看文件
cat和tac都是打印文件到标准输出(终端),其中cat为正序显示,tac为倒序显示。
标准输入输出:当我们执行一个shell为、、命令行时,会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘,标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件都对应被重定向到终端的屏幕,以便我们能够看到输出内容。进程将从标准输入文件到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
cat -n 文件名 :显示行号,与nl类似
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
4、more和less命令分页查看文件
man手册内容就是用less来显示内容more命令打开一个文件时,会默认显示一屏,底端显示阅读进入,按enter往下滚动一行,按space往下滚动一屏,h显示帮助,q退出
5、head和tail命令查看文件
/etc/passwd文件可以查看最近新增加的用户。
tail -n 数字 文件名:尾部查看n行
tail -f:可以实现不停地读取某个文件的内容并显示,可以用于日志动态监测。
file 文件名:可以用于查看文件类型。
(二)文件系统操作与磁盘管理
1、df查看磁盘
df:查看磁盘容量
df -h以更易懂的方式显示出来
挂载:Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构).因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。
2、du查看目录的容量
du -h -d 0 ~:只查看1级目录的信息
du -h -d 1 ~:查看2级
du -a 显示目录中所有文件的大小
du -s仅显示总计,只列出最后加总的值
(三)Linux架构:
1、下图摘自链接
操作系统通过进程、虚拟内存和文件三个重要抽象管理计算机的CPU、内存、I/O设备,为用户提供shell,为程序员提供系统调用。
2、常用Linux快捷键
(1)ctrl+alt+t:打开终端
(2)ctrl+shift+t:新建标签页
(3)alt+数字N:终端中切换到第N个标签页
(4)tab终端命令补全
(5)上下键盘:切换命令历史
(6)crtl+c:中断程序运行
3、常用命令
(1)man命令:man 想要查看的命令,查看该命令的帮助
man -a:搜索并打开所有man中同名帮助,例如 man passwd ,你首先会进入一个PASSWD(1) section用户命令类的帮助手册,你再按q键退出当前正在显示的帮助手册,就会进入PASSWD(5) section文件格式类的帮助手册。
man -aw:显示所有手册文件的路径。例如man -aw passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
man -M:指定手册文件的搜索路径,有的时候我们自己安装的软件是带有自己的帮助文件的,通常不在我们的MANPATH 里面,那么我们就可以手动指定man搜索的文件路径。如 man -M /home/mysql/man mysql 显示的就是你安装的mysql的帮助,而不是系统默认的旧版mysql的帮助。
man -k:根据关键字搜索联机帮助,是一种模糊搜索。例如要查找"passwd"相关的信息,使用man -k passwd会找到很多和passwd相关的帮助页。
man -f:关键字精确搜索,与-k不同,它只搜索与关键字完全匹配的帮助页。
(一)vim编辑器
1、vim是从vi发展出来的文件编辑器。
vim的设置
:set nu显示行号
:set ai 自动缩行
:set ts=4 设置一个TAB键等于几个空格
(1)vim的6种基本模式和5中派生模式
①普通模式:dd删除当前行,2dd执行两次删除行操作。dj删除当前和下一行,类似2dd。普通模式到插入模式可以用a或者i进行切换。普通模式下退出vim“shift+zz”
光标移动按键 | 说明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
删除命令 | 说明 |
---|---|
x | 删除游标所在字符 |
X | 删除游标所在前一个字符 |
Delete | 同x |
dd | 删除整行 |
dw | 删除一个单词 |
d$或者D | 删除至行尾 |
d^ | 删除至行首 |
dG | 删除到文档结尾处 |
dlG | 删除至文档首部 |
②插入模式:按esc键切换到普通模式。
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换光标所在位置后到一个单词结尾的字符 |
③可视模式:与普通模式相似,但是移动命令会扩大高亮文本区域,高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮区域上,Vim的文本对象也能和移动命令一样用在这个模式中。
④选择模式:和无模式编辑器的行为类似(windows标准文本控件的方式)。可以用鼠标或者键盘高亮选择文本,不过输入任何字符的话,vim会用这个字符替换选择的高亮文本框,并且自动进入插入模式。
⑤命令行模式:可以输入会被解释并执行的文本,例如执行命令键“:”,搜索“/”和“?”,或者过滤命令键“!”**在命令执行之后,vim返回到命令行模式之前的模式,通常是普通模式。
命令 | 说明 |
---|---|
:q! | 强制退出,不保存 |
:q | 退出 |
:wq! | 强制保存退出 |
:w<文件路径> | 另存为 |
:saveas 文件路径 | 另存为 |
:x | 保存并退出 |
:wq | 保存并退出 |
⑥Ex模式:与命令行模式类似,可以一次执行多条命令,离开Ex模式使用“:visuall”。
(三)makefile
1、makefile关系到整个工程的编译规则,一个工程中源文件不计其数,并且按照功能、类型、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行哪些复杂的功能操作,因为makefile像一个shell脚本一样,其中可以执行操作系统的命令。makefile带来的好处就是:“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大地提高了软件开发效率。
二、第三章 MenuOS的构造
(一)Linux内核源代码简介
1、操作系统两把宝剑
(1)中断上下文的切换——保存现场和回复现场。
(2)进程上下文的切换。