查看系统版本:cat /proc/version
- ls: 列出目录
- cd:切换目录
- pwd:显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
- mv b b.c:把b重命名为b.c
- gcc b.c -o b:编译b.c生成到b中
- ./b:执行b
- cat -b hello.c:查看文件内容
vi/vim 的使用
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
cp linux-4.4.115-wyb.tar.xz /usr/src/
tar -xvf linux-4.4.115-wyb.tar.xz -C ./kernel
mkdir kernel
什么是内核模块
内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行
内核模块必须至少有两个函数:一个“开始”(初始化)函数——称之为init_module(),当模块加载(insmod)到内核时,将调用该函数;一个“结束”(清理)函数——称之为cleanup_module(),当卸载模块(rmmod)时将调用该函数。
最简单的Helloworld模块
hello.c
#include<linux/module.h> #include<linux/kernel.h> int init_module(void) { printk("strat###????nihao,hello world,sfdsfsf.$$$$$$$$$$$$$$ "); return 0; } void cleanup_module(void) { printk("end################### "); } MODULE_LICENSE("GPL");
对应的Makefile文件
obj-m := hello.o al: make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean
然后执行相应的命令:
$ make //编译
$ make clean
$ insmod hello.ko//插入模块
$ rmmod hello//移除模块
$ lsmod |grep hello //列出模块
$ dmesg grep| tail -10 //查看是否打印对应内容