自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

河西无名式

月影星痕

  • 博客(45)
  • 资源 (6)
  • 收藏
  • 关注

原创 数据包转发原理与iptables的使用方法简介与实例

对于连接到网络上的 Linux 系统来说,防火墙是必不可少的防御机制, 它只允许合法的网络流量进出系统,而禁止其它任何网络流量。为了确定网络流量是否合法, 防火墙依靠它所包含的由网络或系统管理员预定义的一组 规则。 这些规则告诉防火墙某个流量是否合法以及对于来自某个源、至某个目的地或具有某种协议类型的网络流量要做些什么。 术语“配置防火墙”是指添加、修改和除去这些规则。稍后,我将详细讨论这些 规则。 网络流量由 IP 信息包(或,简称 信息包)— 以流的形式从源系统传输到目的地系统的一些小块数

2013-07-26 09:06:50 11036 1

翻译 内核符号表详解——如何在module中利用内核符号

前言:在内核开发中,有时候我们必须检查某些内核状态,或者我们想冲用某些内核功能,我们需要得到(read,write,exe)内核符号。本文主要为你介绍内核如何保存这些符号表,我们怎样应用这些内核符号表。本文仅仅是阅读内核源码的一个guide,通过阅读内核源码,我们将有更深入的理解。

2013-07-24 10:41:41 12479 5

原创 linux 内核头文件 linux kernel header

概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?内核头文件作用是什么,如何更新?本文主要为你解答这些疑问。

2013-07-20 14:50:40 17832 1

原创 linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析

摘要:在进行内核编译的时候,内核配置无疑是其中最为重要的环节,直接决定了编译的内核是否能够满足要求。而且,对于新加入的内核特性,我们往往无法在make menuconfig中找到相应的选项。本文主要为你解决如下问题:1)linux内核编译之前,配置文件的读取顺序是什么?2)对于比较新的内核特性,我们无法在.config之中找到某个配置,应该如何处理?3)如何将自己新添加的驱动添加进入内核?

2013-07-31 10:37:48 8278

转载 20个Linux防火墙应用技巧

导言:随着互联网的飞速发展,毫无疑问,互联网上的安全,操作系统平台的安全也逐渐成为人们所关心的问题。而许多网络服务器、工作站所采用的平台为Linux/UNIX平台。Linux平台作为一个安全性、稳定性比较高的操作系统也被应用到了更多领域。本文带领大家探讨了Linux系统管理员应该掌握的20个防火墙应用技巧。 广为人知的iptables命令行Netfilter作为Linux内

2013-07-26 09:35:43 872

转载 linux 配置服务的命令service

用途说明service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、查看状态(status)等。相关的命令还包括chkconfig、ntsysv等,chkconfig用于查看、设置服务的运行级别,ntsysv用于直观方便的设置各个服务是否自动启动。service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,

2013-07-25 18:45:22 9594

原创 linnux远程桌面链接——suse和ubuntu下的vnc配置

概要:很多情况下,我们需要使用linux的远程桌面连接,此时,进行适当的配置往往十分重要。本文,主要为你讲解ncserver的原理,在ubuntu和suse两种环境下配置vnc的方法。

2013-07-25 09:30:07 3736

转载 linux 下的X server:linux 图形界面原理

Moblin Core是在Gnome Mobile的平台上建立。我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开机后直接进入文本命令行,所以这方面了解得很少,需要学习一下.  严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用 GNU工程各种工具和数据库的操作系统(也被称为GNU/Lin

2013-07-25 09:18:24 2503

原创 vmlinux,vmlinuz,bzimage,zimage,initrd.img的区别与联系

1.vmlinux    vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动内核。只是启动过程中的中间媒体。vmlinux.bin:The same as vmlinux, but in a binary file format.2.vmli

2013-07-24 12:49:34 3292

原创 内核符号表与system.map

System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。内核符号表是怎么创建的呢?System.map是由“nmvmlinux”产生并且不相关的符号被滤出。对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map。像下面这样:nm/boot/vmlinux-2.4.7-10

2013-07-24 10:59:55 2498

转载 linux下列出目标文件symbols的命令nm

nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’]         [‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’]         [‘-S’|‘--print-size’] [‘-s’|‘--print-armap’]         [‘-A’|‘-o’|‘--print-fil

2013-07-24 09:15:14 6208

原创 html 速查手册

经常用python处理网页数据,需要对html的基本知识有一定的了解,本文主要讲解html的入门知识

2013-07-22 16:55:01 1273

原创 grub 的安装与使用&&利用grub修改内核启动参数

安装与使用grub        要开始探究 GRUB 的精妙之处,首先需要下载、编译和安装它。但不要害怕 -- 根本不会修改您的引导记录 -- 我们只是要编译和安装 GRUB,就像其它程序一样,在此过程中我们可以创建 GRUB 引导盘。请不要担心;在修改引导过程之前,我会告诉您。        grub的安装过程与普通软件的安装过程没有太多区别,可以自行安装 gr

2013-07-21 21:55:42 3348

转载 grub 的三种安装方式

1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux、freebsd、windows等。但一旦进入linux操作系统(如无特殊声明,以下提及操作系统或系统皆为linux操作系统),可以敲一个grub命令,就进入”grub>”提示状态,然后可以进入操作若干命令。这时候的grub是什么

2013-07-21 21:20:53 3462

转载 Linux 自检和 SystemTap

现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。 SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。这句话的关键词是动态,因为 SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编

2013-07-19 21:45:33 1114

转载 ubuntu 内核编译工具 make-kpkg简介

本文介绍的make-kpkg可以用于所有Debian系的发行版如Debian、Ubuntu、Linux Mint等。它可以自动生成内核镜像,带有debuginfo的调试模块,内核头文件的deb安装文件

2013-07-19 20:10:15 5722

转载 introducing Linux Kernel symbols

Introducing Linux Kernel Symbols2011-03-04 | COMMENTSIn kernel developing, sometimes we have to examine some kernel status, or we want to reuse some kernel facilities, we need to access (rea

2013-07-19 19:39:49 1546 1

原创 inode结构体成员详解

概述:inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。inode分为内存中的inode和文件系统中的inode,为了避免混淆,我们称前者为VFS inode, 而后者以EXT2为代表,我们称为Ext2 inode。在阅读文件系统源码的时候,必须对这个结构有着清醒的认识。下面分别对VFS inodee与Ext2 inode做一下简单的描述:

2013-07-17 14:34:54 8093

转载 文件系统专题之 “索引节点高速缓存”

VFS也用了一个高速缓存来加快对索引节点的访问,和块高速缓存不同的一点是每个缓冲区不用再分为两个部分了,因为inode结构中已经有了类似于块高速缓存中缓冲区首部的域。索引节点高速缓存的实现代码全部在fs/inode.c,这部分代码并没有随着内核版本的变化做很多的修改。1.索引节点链表每个索引节点可能处于哈希表中,也可能同时处于下列“类型”链表的一种中:·

2013-07-17 14:10:59 1351

原创 typedef意义,用法与常见失误

1.typedef的意义typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。它有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法 。使用typedef可编写出更加美观和可读的代码。所谓美观,意指typedef能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性以及未来的可维护性。本文下

2013-07-17 11:24:46 2156

原创 const 关键字意义,用法与常见问题

1.const关键字意义const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。2.const关键字作用  (1)可以定义const常量,具有不可变性。   例如:const int Max=100; int

2013-07-17 11:06:53 1243

转载 Linux系统Terminal终端中的文件、文件夹的颜色修改方法

The followings are something about LS_COLORS:Here is an easy way to set different colours for different kinds of files when using the ls command.Add the following lines to the bottom of your

2013-07-17 10:49:59 5690

原创 关于default的位置问题:default放在前面

在程序中default的位置可以任意,因为编译到exe后,程序执行时先判断所有case,然后再判断是否跳到default的地址(即指针),然后往后执行,遇到break之类的就直接跳到后面去了。(而各case和default的内嵌语句又是顺序的)

2013-07-17 07:59:12 10411

转载 关于大小端与字节序little end与le32_to_cpu

小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在乎它操作的数据的字节序. 但是, 有时候一个驱动需要使用单个字节建立一个整型数或者相反, 或者它必须与一个要求一个特定顺序的设备通讯.        包含文件 定义了或者 __BIG_ENDIAN 或者 __LITT

2013-07-17 07:56:15 2161

转载 C语言常用库函数

标准头文件包括:                                                                           一、标准定义()     文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,都会被自动包含进来。    这个文件里定义:  l    类型size_t   (sizeof运算符的结果类型,是

2013-07-17 07:45:39 912

原创 linux 2.4内核中双向链表的实现/include/linux/list.h

概述:在linux 2.4内核中,于平台无关头文件/include/linux主要用于实现linux内核中的双线链表,对于很多内核中的功能都起到了很好的支撑作用,而且只有100多行,本文主要为你讲解这些函数的实现。      先浏览代码:  1 #ifndef _LINUX_LIST_H 2 #define _LINUX_LIST_H 3 4 #ifdef __KERNEL_

2013-07-16 19:59:55 1457

原创 C嵌入汇编

概述:linux内核源码中,有很多C语言中嵌入了汇编语句,如何理解这些汇编语句,对理解内核有很重要的作用。        具有输入和输出参数的嵌入式汇编语句的基本格式为:             asm("汇编语句"                      :输出寄存器                      :输入寄存器

2013-07-16 16:42:52 2406 1

转载 linux内核部件分析(二)——原子性操作atomic_t

在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前

2013-07-16 16:13:43 2584

原创 ext2 源代码解析之 “从路径名到目标结点” (二)

3.3.1)接下来查看chached_lookup()的代码(namei.c)[path_walk()>> cached_lookup()]/**Internal lookup() using the new generic dcache.*SMP-safe*给定name和parent进行查找,如果找到而且合法,那么返回找到的dentry;否则,返回NULL

2013-07-16 15:27:24 2123

转载 临界资源 互斥访问 内核中的up和down函数

信号量(semaphore)是用于保护临界区的一种常用方法。只有得到信号量的进程才能执行临界区代码,而没有得到信号量的进程进入休眠等待状态。Linux系统中与信号量相关的操作主要有如下4种。1 定义信号量下面代码定义名为sem的信号量。struct semaphore sem;struct semaohore结构体在内核中定义如下:在/include/linux/semap

2013-07-16 09:29:15 7024

原创 由结构体成员地址计算结构体地址——节点地址的函数list_entry()原理详解

概述:在进行编程的时候,我们经常在知道结构体地址的情况下,寻找其中某个成员的地址;但是知道了成员的地址,如果找到这个结构体对应的地址呢?Linux内核中,获取节点地址的函数list_entry()非常常用,它被用来解决这个问题。1.list_entry的宏定义:#define list_entry(ptr, type, member) ((type *)((char *)(ptr)

2013-07-15 17:52:56 2642

原创 ext2 源代码解析之 “从路径名到目标结点” (一)

两个主要函数,path_init和path_walk,他们结合在一起根据给定的文件路径名称在内存中找到或者建立代表着目标文件或目录的dentry和inode结构。注意,最终是信息是读取到内存中的。其中有个函数__user_walk()将path_init()和path_walk()包装在一起。本节中的所有代码在fs/namei.c中。 1.分析外包装“__user_walk()”

2013-07-11 20:48:35 2188

原创 ERR_PTR,PTR_ERR还有IS_ERR函数详解

内核中的函数常常返回指针,问题是如果出错,也希望能够通过返回的指针体现出来。 总体来说,如果内核返回一个指针,那么有三种情况:合法指针,NULL指针和非法指针。1)合法指针:内核返回的指针一般是指向页面的边界(4K边界),即 ptr & 0xfff == 02)非法指针:这样ptr的值不可能落在(0xfffff000,0xffffffff)之间(这个区间是内核高端内存所在的

2013-07-11 10:24:20 3114

转载 linux 用户空间与内核空间——高端内存详解

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存

2013-07-11 09:52:26 5669 2

转载 C语言中的算符优先级 与 常见误区

优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .

2013-07-10 08:35:05 947

原创 用python提取并统计指定邮箱里的特定邮件

1.需求描述:我们经常有这样的需求,需要某个邮箱中提取一个mailist的人员,发来的特定邮件,比如他们的周报,提交的patch等等。由于这是一个周期性的工作,有很大的重复和繁杂性,我们这里编写了一个脚本来实现它。这里,我们的需求是:统计指定人员,发来的邮件主题是"weekly report"的邮件,然后查看有哪些人提交了相关的周报。2.设计我们可以使用python的imaplib库,来与特定的邮

2013-07-08 21:49:38 5482

转载 python 中 with as的用法

with从Python 2.5就有,需要from __future__ import with_statement。自python 2.6开始,成为默认关键字。在What's new in python2.6/3.0中,明确提到:The ‘with‘ statement is a control-flow structure whose basicstructure is:

2013-07-08 21:17:43 1250

原创 使用python 与邮件服务器交互——imaplib 模块标准库解析

imp4 module 定义了三个类,imp4、imp4_SLL、imp4_stream:他们封装了一个到imp4 server的连接,实现了一个imp4客户端协议的集合,这些类容定义在RFC 2060之中。它向后与IMAP4 (RFC 1730) servers兼容,但是请注意:"STATUS"命令不被IMAP4支持。1.连接Three classes are provi

2013-07-05 12:00:18 5566

转载 URL的组成

URL的组成  URL由三部分组成:协议类型,主机名和路径及文件名。通过URL可以指定的主要有以下几种:http、ftp、gopher、telnet、file等。  URL的组成协议  1、protocol(协议):指定使用的传输协议,下表列出 protocol 属性的有效方案名称。最常用的是HTTP协议,它也是目前WWW中应用最广的协议。     

2013-07-04 21:05:46 1999

原创 在两个不同的vim之间进行复制粘贴

使用vim进行编辑的时候,如果我们打开了两个不同的vim,此时不能用yy和p在两个Vim窗口之间进行复制和粘贴,此时,需要分割窗口,然后就可以复制粘贴了。步骤如下:      假如我们有两个需要编辑的文件a和b1.分割:此时先打开a,然后在命令界面下输入sp2.打开:输入e b,这样就打开了b3.切换窗口:CTRL+w,然后输入j或者w,就可以切换窗口了。4.进行有效的复制:如

2013-07-03 20:36:26 13155

博客对应文件——makefiletest

makefile使用说明对应的测试文件,是本篇博文的测试C程序和文件

2013-09-07

正则表达式的测试文件

正则表达式简明教程 博客 的测试文档,下载此文档进行测试,进行情景学习

2013-04-20

KMP算法 C语言实现

用c实现的KMP算法,没有注释,不过程序逻辑清晰,适合了解算法的人观看

2012-10-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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