实验内容

在实验楼的环境中敲入命令

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)进程上下文的切换。

最新文章

  1. linux日志文件
  2. 从指定的URL下载文件
  3. 46-df 显示磁盘空间的使用情况
  4. 转载Quandl R Package
  5. 【Spark学习】Apache Spark集群硬件配置要求
  6. poj3270Cow Sorting(置换)
  7. JQuery为元素添加样式
  8. Light OJ 1136
  9. nginx配置参数详解
  10. EntityFramework6.X之DataAnnotations
  11. 用html+css+js做打地鼠小游戏
  12. [LeetCode] K Inverse Pairs Array K个翻转对数组
  13. BestCoder 1st Anniversary ——HDU5312(数学推导)
  14. Druid的简介
  15. Golang 入门系列(八) cron定时任务
  16. WSDL文件
  17. MySQL外键约束_ON DELETE CASCADE/ON UPDATE CASCADE
  18. Docker Kubernetes 查询字段说明
  19. node-sass 安装
  20. JobScheduler调度器过程(JobSchedulerService的启动过程)

热门文章

  1. python3的 基础
  2. docker(四):集群swarm
  3. 【scratch3.0教程】 2.3 奥运五环
  4. Xshell连接虚拟机文档教程
  5. LOJ3146 APIO2019路灯(cdq分治+树状数组)
  6. Thread 与 ThreadLocal
  7. java 正则和连接json
  8. Python之TensorFlow的数据的读取与存储-2
  9. js 页面技巧
  10. Java调用WebService方法总结(9,end)--Http方式调用WebService