红联Linux门户

Linux帮助
  • Linux知识:操作系统内核子系统的协调工作

    2014-12-16 - 第一部分、内务子系统 操作系统内核的管理功能以及执行最终也要归于cpu的执行流,因此最简单的设计就是将内核的内务也设计成进程,但是对于一些特别的内务这个办法就不适用了,因为这些内务的特殊性恰恰在于它们是依赖cpu的,或者说是和cpu进行接口的。如果...

  • Linux内核中符号地址的获取

    2014-12-16 - 有些内核函数或者内核变量是不导出的,但是确实需要用,那该怎么办?因此寻找内核符号地址就有必要进行一下总结,更有甚,如果想找一条特定的指令,比如movl的指令地址,那更需要投入一些精力!总的来说,我总结了下面五种方式: 1.通过procfs中的kallsym文...

  • Linux下静态库与动态库的生成与调用

    2014-12-16 - 首先,这里有3个概念,静态库,动态库。 静态库: 是程序在链接时将静态库拷贝到可执行文件里,即生成可执行文件后,即使删除静态库,可执行文件仍可正常执行。 动态库: 也叫共享库,程序只是在链接时在可执行文件时保存了该库的信息,可执行文件执行时候需...

  • Linux内存管理和分析vmalloc使用的地址范围

    2014-12-16 - Vmalloc可以获得的地址在VMALLOC_START到VMALLOC_END的范围中。这两个符号在asm/pgtable.h中定义: /* include/asm/pgtable.h */ #define VMALLOC_OFFSET (8*1024*1024) #define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) ~(VMALLOC_OF...

  • Linux内核的红黑树RB_TREE和FreeBSD 8.0里面的AVL_TREE比较

    2014-12-15 - Linux内核的红黑树RB_TREE和FreeBSD 8.0里面的AVL_TREE比较之一 RB_TREE 这里不涉及到avl树和红黑树谁优谁劣,只是谈谈在两种实现的一些细节,以及最后给出一些性能比较。 这里先给出Linux下面的红黑树的实现,因为Linux下面的两个宏定义不好直接使用,原型...

  • Linux标准IO和后台运行程序的方法

    2014-12-15 - 相关知识 标准输入默认为键盘,也可以使用文件和管道(pipe |); 标准输入默认输出到终端(terminal),但是也可以重定向到文件、管道或后引号; 标准错误默认输出到终端,但是也可以重定向到文件中; 标准的输入、输出和错误在C中分别表示为STDIN、STDOUT、...

  • Linux+ARM环境配置-Bridged通信篇

    2014-12-15 - PC操作系统 Windows 虚拟机系统 Fedora 9.0 使用bridged,即网络桥接,注意用这种方式联网需要主机Windows能够上网才可以,相当于2台处在同一网段的计算机,今天实验室的服务器有问题不能上网但是我用bridged方式也可以是Windows和fedora连通,原因大概和我...

  • Linux+ARM环境配置-NFS

    2014-12-15 - 今天主要总结一下ARM+linux开发环境配置的nfs服务。 开发板 mini2440 PC系统 Windows 虚拟机系统 Fedora 9.0 配置nfs服务好几天,今天终于配好了,但是发现我接下来不知道要干什么了,nfs干嘛的,有什么用,我也不知道,我只知道书上还有手册上说用nfs开发很...

  • Linux+ARM学习开篇

    2014-12-15 - 进行了几个月的裸机编程后终于进入了linux系统学习了,打算开始驱动的学习,学习路线计划是先裸机编程然后进入系统学习,最后进行linux+arm驱动开发。当然这其中还有很多要学习。但是无论如何进入系统学习也是一个小小的标志吧,但是开始这个学习已经有一段...

  • Redis在CentOS Linux 5.x上的启动脚本

    2014-12-15 - 发现网上的Redis管理脚本基于Ubuntu 的发行版上的,在CentOS linux 5.x上并不能用,所以自己写了一个。 用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上: # vim /et...

  • Shell脚本检查memcache进程并自动重启

    2014-12-15 - 修正版: #!/bin/sh #check memcache process and restart if down mm_bin=/usr/local/bin/memcached mm_log=/home/xxx/memcached_check.log mm_ports=(11211 11212) mm_param=(-d -m 20480 -p 11211 -u www -d -m 256 -p 11212 -u www) mm_count=${#mm_port...

  • Eclipse+Tomcat+Solr开发环境配置

    2014-12-15 - 由于最近电脑几乎革了windows的命,换成了Linux+虚拟机的配置,在Linux环境下只安装了Eclipse的JEE版本,没有安装MyEclipse。原来熟悉的环境没有了,只能一点一点摸索着配置solr与tomcat的接合。 考虑到可能有许多兄弟与我一样习惯了使用MyEclipse,反而对Ec...

  • Linux Shell编程学习笔记

    2014-12-15 - Linux Shell编程 #!/bin/bash 这行据说是用来选择SHELL的,但是我删掉试了试没什么区别 据说是在某些版本的SHELL下会出错。 变量定义:如无格式要求可以不定义,如果需要声明格式用declare命令。 declare : [www @linux]# declare [-afirx] 参数说明: -a...

  • ARM Linux环境塔建开发流程

    2014-12-15 - 1、建立ARM Linux交叉编译环境,一般下载cross相关的包(以cross-4.2.2-eabi.tar.bz2为例),把其放在自己建立/usr/local/arm目录(通常给它一个777的权限)下。 解压它:sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/ 编译环境通常为:/usr/l...

  • CentOS Linux内核升级全过程

    2014-12-14 - 首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。接下来,让我们一起开始精彩的Linux内核升级之旅吧! 一、准备工作 启动Linux系统,并用根用户登录,进入终端模式下。 1、查看Linux内核版本 # uname -a 如果屏幕显示的...

  • Linux内核加密接口分析

    2014-12-14 - 一、概述 Linux内核从2.5版本开始引入了强力的加密机制,主要原因有:删除冗余代码、支持IPSec协议以及通用的加密功能等。将来的应用会包括:硬件加密设备驱动、内核代码签名、硬件随机数生成器、文件系统加密等。 二、如何使用加密API 1、安装 从2.6.6版本...

  • Makefile,Linux程序员你伤不起

    2014-12-14 - 1. 概述 Makefile,what??很多Windows程序可能都没听说过 简单的说,Makefile是Unix/Linux环境下描述了整个工程的编译、连接等规则的文件,其主要包括三点: 1) 工程中的哪些源文件需要编译以及如何编译 2) 依赖库以及库所在的位置 3) 想得到什么:可执行...

  • Linux autotools的使用

    2014-12-14 - 1、执行命令autoscan会生成configure.scan 在configure.scan中修改AC_INIT([name], [Vresion], [mail]) 并添加AM_INIT_AUTOMAKE(test, 1.0) 修改AC_OUTPUT为AC_OUTPUT([Makefile]) 2、执行autoheader命令生成config.h.in 3、创建Makefile.am文件,添加如下项...

  • Linux系统中main函数的执行过程

    2014-12-14 - 1. 问题:Linux如何执行main函数。 本文使用一个简单的C程序(simple.c)作为例子讲解。代码如下, int main() { return(0); } 2. 编译 ~#gcc -o simple simple.c 3. 查看可执行文件的基本信息 ~#objdump -f simple simple: file format elf32-i386 archit...

  • Linux中为什么要随机函数栈的起始地址

    2014-12-14 - 1. 如前文所述,为了执行一个程序,首先do_execve建立数据结构,并将一些数据从用户空间拷贝到内核空间,然后调用search_binary_handler加载可执行文件映像。 int do_execve(char * filename, char __user *__user *argv, char __user *__user *envp, struct...

  • Linux内核下等待队列的使用

    2014-12-14 - wait_queue的使用 需要的头文件#includelinux/wait.h typedef struct __wait_queue wait_queue_t; struct __wait_queue { unsigned int flags; #define WQ_FLAG_EXCLUSIVE 0x01 void *private; wait_queue_func_t func; struct list_head task_list; }; stru...

  • Linux内核启动过程和Bootloader(总述)

    2014-12-14 - 1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序。其中 Bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用 Linux 内核。...

  • Gentoo编译内核

    2014-12-14 - 启动Gentoo发现x server无法启动,察看了一下log,是nvidia驱动没有安装,记得升级的时候,已经安装过了,不知道为什么出现这么个问题. 那就重新安装nvidia-drivers #emerge nvidia-drivers 出现错误,找不到.config文件,察看了一下,内核2.6.37的/usr/src/linux-2....

  • Linux选项-getopt/getopt_long

    2014-12-14 - 一、命令行简介 解释分析命令行通常是所以程序的第一个任务,C语言通过argc和argv参数来访问它的命令行参数。 最简单的命令行处理技术可以通过if判断来表示,如下例: if(argc1 argv[1][0] ==- argv[1][1] ==h) //判断命令行参数是否为-h { do _ some thing(...

  • Linux使用atexit注册终止处理程序

    2014-12-13 - 我们可以让一个进程即将终止时调用我们定义的函数。 一个进程可以注册多达32个函数,这些函数将由exit自动调用。我们称这些函数为终止处理程序,需要使用atexit函数来注册这些函数。 #include stdlib.h int atexit(void (*func)(void)); 其中,atexit的参数...

  • Linux I/O(输入和输出)

    2014-12-13 - 1.文件I/O 1)文件描述符:对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。 2)按照惯例,UNIX系统shel...

  • readn writen实现Linux下Socket缓冲区读写

    2014-12-13 - socket上的read write 操作不同与一般的文件IO操作,socket上的用read write读写的字节数可能比要求的少,但这并不是错误,原因是socket的缓冲区可能已经达到了极限。此时所需要的就是再次调用read write 以写入或输出剩余的字符。这种情况在socket中很常见,...

  • Linux下GCC使用方法简介

    2014-12-13 - 编译: 第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程: gcc -E hello.c -o hello.i 预处理的宏定义插入到hello.i中 第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成: gcc -c hello.i -o hello.o 也可以通过源文件...

  • 进程在Linux内核中的角色扮演

    2014-12-13 - 在Linux内核中,内核将进程、线程和内核线程一视同仁,即内核使用唯一的数据结构task_struct来分别表示他们;内核使用相同的调度算法对这三者进行调度;并且内核也使用同一个函数do_fork()来分别创建这三种执行线程(thread of execution)。执行线程通常是...

  • Source Insight建工程之Kernel

    2014-12-13 - 不管你是从事于Linux内核工作还是出于兴趣爱好,Linux内核源码都是非常好的学习资源。意味着就要经常的和内核源码大交道,那么软件工具就是少不了的。在Windows系统上确实有着许多好用的软件,这点还是可以肯定的。对于像内核这种复杂庞大的源码树,Source I...

  • Linux系统下操作硬件寄存器

    2014-12-12 - 经过一两天的摸索,基本上对在linux控制硬件有了个初步的认识:在linux下控制硬件和在无操作系统下控制硬件的不同主要在于硬件的地址不一样,在linux下要使用va(虚拟地址),而在无操作系统下可以直接使用硬件的pa(物理地址)。 在linux-2.6.8.1/include/a...

  • 关于Linux container_of用法

    2014-12-12 - Linux container_of的原型定义各参数含义: type -- 需要操作的数据类型,通常为结构; member -- type结构的成员名称; ptr -- member类型定义的指针变量; 例如: struct typeabc{ int mem0; float mem2; double mem4; char mem6; }; struct typeabc abc, *...

  • Linux内存泄露检测

    2014-12-12 - 1. 需要在内存泄露开始的开始调用void mtrace(void),mtrace 为malloc等函数安装 hook,用于记录内存分配信息,在需要内存泄露检查代码结束的地方调用void muntrace(void). 注意:在一般情况下,不要调用muntrace(), 而让程序自然结束。因为可能有些内存释放...

  • Linux终端特殊键ESC序列读取方法

    2014-12-12 - 采用getchar获取终端输入,发现特殊键会有多个字符,以ESC开头,但字符数不固定。 如:向上键是27,91,65三个字符,F5:27,91,49,53,126是5个字符。 本来打算用取系统时间的方式来判断这些字符是不是一起的,但不同CPU、调度情况下,可能很不稳定,所以...

  • 关于Linux driver中device_create()使用的注意事项

    2014-12-12 - 使用内核版本Linux 2.6.32。 通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便。而这个过程就是通过device_create()和device_destroy()内核函数完成的,在Linux2.6.27之前是class_device_create()和cla...

  • Linux的I/O多路转接模型和select()

    2014-12-12 - Linux的I/O多路转接模型: 在这种模型下,如果请求的I/O操作阻塞,它不是真正阻塞I/O,而是让其中一个函数等待,在这期间,I/O还能进行其他操作。select()和poll()就属于这种模型。 select()函数说明 头文件 #includesys/types.h #includesys/time.h #include...

  • Linux内核学习:netlink的内核实现原理

    2014-12-12 - 注: 当用户态进程发送数据时,调用sendmsg实现,其调用内核netlink_sendmsg函数完成,新建了sk_buff,然后给其cb私有缓存中保存了源地址信息,然后把数据拷贝到sk_buff中[nlmsghdr头部已经附在数据部分前面,作为数据部分了]然后利用netlink_unicast发送出去...

  • 回收站功能在Linux中的实现

    2014-12-12 - 本文仿照 Windows 回收站的功能,运用 Bash 脚本在 Linux 上做了实现,创建 delete 脚本代替 rm 命令对文件或目录进行删除操做。该脚本实现了以下功能:对大于 2G 的文件或目录直接删除,否则放入$HOME/trash 目录下;恢复 trash 目录中的被删除文件到原目录...

  • Linux进程管理[screen/ps/kill]

    2014-12-12 - 进程管理 进程的重要性: 我们在使用操作系统时,各项作业都是通过某个PID来执行的,因此,是否要执行某项作业就与该进程的权限相关 如果Linux系统很忙碌,当整个系统资源快要用完的时候,怎么找到大量占用系统资源的进程,删除该进程,让系统恢复正常 如果...

  • Linux内核学习笔记:uid之ruid,euid,suid

    2014-12-12 - 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,...