linux常用命令及内核简单介绍

查看系统版本: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 //查看是否打印对应内容

内核中的锁机制

原文地址:https://www.cnblogs.com/zhengguiping--9876/p/10196763.html