自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Linux 系统调用之 mknod

继续上一篇的分析,我们在使用命令: mknod /dev/my_chr_dev0 c $major 0 创建设备文件的时候,内核做了哪些事呢?可以肯定的一点是,内核肯定创建了一个 inode 结构体,并加入到系统里面,要不然在打开设备文件的时候,会因为lookup_fast()函数找不到相应的 i...

2018-05-08 02:35:36

阅读数 2371

评论数 0

原创 使用 ssh 端口转发实现登陆内网主机

很多情况下,我们需要ssh登陆内网主机。假设我们现在有一台linux主机在公网ip上,内网主机是可以正常登陆公网主机的,下面就介绍一种方法,如何使用公网主机ssh登陆内网主机。我们先假设有 host A 和 host B 分别位于内网和公网ip,如下图:那么既然我们可以通过ssh从host A登陆...

2018-05-08 02:30:06

阅读数 4767

评论数 0

原创 Linux 系统调用之open(三)

前面我们以及其简单的例子分析了linux的open系统调用过程。下面换一个例子,假如我们有个字符驱动:my_kmem.ko。使用如下脚本将其加载入内核空间:#!/bin/sh module="my_kmem" device="my_chr_dev" mod...

2018-05-05 02:14:09

阅读数 1189

评论数 0

原创 Linux 系统调用之open(二)

在上一篇里面我们以打开"/home/gaobsh/a.txt"为例分析了系统调用"open"的内核实现。其中我们假设了路径名中所有部分的dentry结构体均已存在在系统缓存中。即通过lookup_fast()函数成功找到目标文件的dentry。这里我们分析一...

2018-02-28 05:59:13

阅读数 427

评论数 0

原创 Linux 系统调用之open(一)

Linux下一切设备均视为文件,本文来简单分析下系统调用里面是如何打开文件的。本文仅以下面简单代码为例,看Linux内核如何完成open的系统调用的(参考内核版本:4.14.13,x86_64)。为了简单起见,本文中暂时忽略并发性访问的同步问题以及错误处理(一般情况下,上述事例中的操作都会成功,除...

2018-02-23 00:59:25

阅读数 2728

评论数 0

原创 Linux 时钟中断处理(一)

最近想研究下Linux下的时钟中断,因为时钟中断算是一个操作系统下最频繁的中断事件了吧(个人认为)。 以4.5 x86_64 Linux内核为例。 面对庞大的代码量,无从下手啊。不如从中断号看起吧微笑Linux 源码中有这样的定义(arch/x86/include/asm/irq_vector...

2016-06-30 22:15:20

阅读数 4917

评论数 0

原创 Linux 内核空间虚拟地址和物理地址相互转换

个人学习笔记,可能会有错误之处,敬请谅解。 一直以来感觉虚拟地址和物理地址之间的相互转换非常麻烦,虚拟地址到物理地址的转换由CPU硬件完成,但物理地址到虚拟地址怎么转换啊?况且有时候在软件上也希望通过一个物理地址得到虚拟地址,这时候自然不能依赖CPU的硬件了,该怎么转换呢? 今天看了下Linux代...

2016-06-25 17:35:41

阅读数 4122

评论数 0

原创 调试 Segmentation fault 问题

今天上班的时候,这个 segmentation fault 困扰了我半天,调试了半天就是不知道问题在哪,于是愤愤的下班了,晚饭都没吃好。不过饭后坐下来,仔细想了想,想到以下办法快速定位出错的语句。方法如下:         在介绍这个方法之前,先让我扯会蛋。首先先简单说一下这个 segmentat...

2016-06-24 20:40:28

阅读数 1291

评论数 0

原创 使用简单字符驱动来做Kernel Hacking

事先声明,本人菜鸟一枚,文中如有不正确之处,敬请大侠指正. (本文中举例均以4.5版本的x86_64的linux内核为例) 字符驱动算是linux驱动里面比较简单的一种。说白了,就是可以对内存读哇写哇什么的。既然是对内存读写,那为什么还要驱动呢?简单的 int a; a = 10; 不就是对内存...

2016-06-12 23:15:51

阅读数 5754

评论数 0

提示
确定要删除当前文章?
取消 删除