Linux内核
文章平均质量分 77
一只兔子的旅行
原来的我不知学习的可贵,浑浑噩噩已过二十余年!
现在的我犹如他乡的浮萍,奋起直追不虚度青春年华....
展开
-
Kconfig和Makefile文件的学习总结
开始接触Kconfig文件是在内核编译时,所以首先回顾一下内核编译的过程: 我们可以从网上下载内核源码包或者从/usr/src中将内核文件夹复制出来,这样做以妨直接对内核操作从而造成不可知的结果。 接下来我们就是来配置内核,配置内核可以采用字符界面配置(makeconfig)、或用菜单界面配置(make menuconfig),另外两种由于有别的依赖条件我们暂时不讲,而我们平常用的比较多的就是菜单界面了。进入内核目录有时直接使用makemenuconfig命原创 2010-09-26 15:54:00 · 1170 阅读 · 0 评论 -
使用J-link调试内核
<br />使用J-link调试内核<br />一、烧写uboot+linux内核+根文件系统<br />对于一块空白的mini6410开发板,或者对于项目所要求的需要支持netfilter框架的内核,原厂装好的内核显然不能满足需要,这时可以根据需要重新编译内核,(具体编译过程参照将iptables移植到mini2440那篇文章),将最终生成的zImage映像烧写到开发板中。<br />烧写过程采用SD卡是最简单的,<br />1、首先用光盘的tools目录下的SD-Flasher将superboot(静像原创 2011-05-11 20:36:00 · 4266 阅读 · 2 评论 -
在mini2440上搭建NAT服务器
在mini2440上搭建NAT服务器一、绑定两个IP首先仍然是想办法给一个网上绑定两个IP,一个外网IP:202.117.132.132,一个留作内部网关的内网IP:192.168.1.2,开发板上修改IP使用的命令格式如下:ifconfig eth0 202.117.132.132 netmask 255.255.0.0 route add default gw 202.117.132.1定义DNS则要使用vi编辑器编辑/etc/resolv.conf文件修改为nameserver 202.117.128原创 2011-05-11 20:34:00 · 1379 阅读 · 0 评论 -
移植iptables到mini2440
移植iptables到mini2440一、首先安装好交叉编译环境。 1.将板子自带的arm-linux-gcc-4.4.3放到/usr/local目录下,并用tar命令解压出来,按照/usr/local/arm/4.4.3目录路径来安放。 2.配置环境变量,在主目录下创建.bash_profile文件,在里面输入export PATH=$PATH:/usr/local/arm/4.4.3/bin。 3.需要使用交叉编译工具时执行~/. .bash_profile,或者执行source ~/原创 2011-05-11 20:21:00 · 4947 阅读 · 0 评论 -
NAT服务器的搭建
<br />NAT服务器的搭建<br />选择一台PC作为NAT服务器,给网卡绑定两个IP,一个内网IP,无需设置网关;另一个接口IP要可以连接internet。在实验室里默认分配的IP是202.117.132.X,而内网我们一般就使用局域网的ip网段192.168.1.X,在linux中默认只有一个IP,一般的设备名为eth0,在linux配置文件里进行相关的设置后,再创建eth0:1设备并进行相关的设置。接下来就是用iptables工具命令配置NAT服务器,最后设置局域网其他机器的IP和网关等。<br原创 2011-05-11 20:13:00 · 4283 阅读 · 0 评论 -
Linux虚拟文件系统
p { margin-bottom: 0.21cm; }这一周主要学了文件系统的相关知识,通过学习基本上掌握了linux文件系统的结构,文件类型,以及读取模式等等,也学会怎么用命令简单的创建一个文件系统。Linux的文件系统主要有ext2、ext3、ext4,在windows下一个分区会采用的一棵目录树来管理,而linux则只有一棵目录树,除了系统安装所在分区外,不管还有多少分区,什么样的文件系统,都只是目录树下的支干。根目录下的目录结构大致为bin、dev、etc、home原创 2010-11-23 12:28:00 · 786 阅读 · 0 评论 -
学习内存管理实例的感想
<br /> 这一周主要看了陈老师的内存管理实例,感觉理解的很有限,实例代码的网址如下:http://home.lupaworld.com/home-space-uid-26540-do-blog-id-230202.html<br /> 师姐把这个实例拆分成了四个部分,第一部分比较简单,根据vm_area_struct结构体中的vma_next指针来完成当前进程虚存区的遍历,打印当前进程的vma,并且打印vma的标志,标志对应可读、可写、可执行,我们还可以通过当前进程的task_struc原创 2010-11-15 17:54:00 · 845 阅读 · 0 评论 -
Linux内存管理
这一周学习的主要内容是Linux的内存的寻址和内存管理,对应的书本就是Linux操作系统原理与应用的第二章和第四章。第二章刚开始部分回顾了寻址方式的演变过程,由最原始的4位机到后来的16位,引入了段的概念到后来的32位后,段寄存器的存在却成了向下兼容与支持保护模式的一大障碍。寄存器大概分为两大类,一类是基本结构寄存器,有通用寄存器、段寄存器、指令寄存器和标志寄存器,另一类是系统级寄存器,有控制寄存器、系统地址寄存器、调试和测试寄存器。我们所能用到的基本上是第一类寄存器,这是提供给用户可以访问的寄存器,而第二原创 2010-11-11 13:27:00 · 755 阅读 · 0 评论 -
内核等待队列的学习
p { margin-bottom: 0.21cm; }这周主要学习了设备驱动开发详解中的第八章阻塞与非阻塞I/O,不过对于阻塞和非阻塞部分总体上理解的还很肤浅,对于其中所涉及到的好几个头文件以及源代码之间的关联还缺乏很大程度的了解。对这部分的学习涉及到的文件大致有:wait.h、wait.c、sched.c、spinlock.h和list.h等。我觉得在学习过程中首先应该把所要用到的几个类型搞清楚,包括等待队列头:struct__wait_queue_head {spi原创 2010-11-01 20:40:00 · 793 阅读 · 0 评论 -
分析报告:关于Linux中断初始化的分析
简介:本篇报告首先从定义以及基本概念入手介绍中断的相关知识,接着重点分析了linux内核中中断初始化的过程,本文的所有代码均依据2.6.36版内核源码。一、中断的基本概念中断最初是用来克服CPU对I/O接口采用程序查询的服务方式从而导致处理器低效率,由此而引入的一种让CPU及时响应I/O的服务方式,更通俗的来讲,就是CPU在做自己的事情,突然之间有一个硬件信号打断了CPU的执行,并要求CPU为其执行相应的代码片段。为此计算机必须有相关的软硬件来为服务提供支持,硬件方面添加了两片8259A,软件方面则体现在操原创 2010-12-15 11:53:00 · 2032 阅读 · 0 评论 -
内核中断的学习总结
<br />这一周多的时间主要学的是中断相关的内容,对于这部分的很多内容很多还是一知半解的,尤其是时钟和定时器那部分,刚开始的时候看了内核之旅的那篇博文,对中断的原理有了大致的了解,包括中断的定义,中断控制器8259A,以及中断的分类,和中断向量等等概念的了解,在后来的几天里我又看微机原理的中断部分,对中断在汇编级的实现过程有了相应的了解,我觉得在中断向量的引导过程,和中控制器的硬件实现过程对我还有所帮助,而对于用初始化命令字ICW1到ICW4来初始化中断控制器,和用操作命令字OCW1到OCW3修改相关设置原创 2010-10-17 21:23:00 · 1020 阅读 · 0 评论 -
Linux虚拟文件系统二
<br /><br /> 这一周的前二天主要分析了师姐编的三个小程序,还有就是学习了Linux2.4.30内核文件系统学习这篇文章。<br /> VFS从根本上来说就是提供一套代码框架,根据共有的属性抽象出最关键的数据结构,面向具体的文件系统定义一系列统一的操作接口,对文件和目录抽象出的inode结构提供统一的操作接口,能对具体的文件系统进行注册和安装等。<br /> 打开文件的过程就是寻找目录节点对应的inode的过程,当根据路径找到相应的目录节点时inode中原创 2010-12-05 21:29:00 · 678 阅读 · 0 评论 -
Linux系统调用
<br /><br /> 这一周学的主要内容是linux系统调用,先从linux操作系统原理与应用的第6章入手,接着学习了M.TimJones的Linux系统调用再探。<br /> 提到系统调用自然想到了API(应用编程接口),linux遵循了Unix的API规范POSIX,POSIX旨在提高UNIX环境下应用程序的可移植性,更在源代码级提供了C的编程接口给操作系统的服务程序。API和系统调用的关系有两种:其一是多个API函数可能使用相同的系统调用来封装,其二是一个API函数可能原创 2010-12-05 21:33:00 · 881 阅读 · 0 评论 -
LPC3250环境搭建的总结
<br /> 这一周的任务主要任务是搭建LPC3250的系统平台,以及在主机上进行相关环境的搭建,最后是将交叉编译好的内核模块加载到板子中。在整个平台搭建过程中遇到了很多的问题,第一是笔记本没有串口,另外WIN 7系统对相关工具的不兼容,对此我采用安装WIN 7下的XP Mode(XP模式)。对于整个环境搭建的详细步骤我就不想多说了,大致的环节也就是交叉编译工具的安装、内核的编译和配置、串口通信和调试的工具安装、tftp服务器的安装、NFS服务器的安装、以及相关文件的烧写,相信大家跟着实验指导上的原创 2010-10-07 22:10:00 · 2356 阅读 · 0 评论 -
字符设备驱动的学习总结
这个周报告本来应该是上一周交的,但之前对于这一章理解的有限,加上事情比较多也没来得及写,现在把它补上,总算把所有的报告都交了。今天再简单把第六章的内容看了一遍,也算是复习了。第六章主要学习了字符设备驱动,第一节讲了字符设备驱动的结构,最初讲了一个很重要的结构体-cdev,其中包括了kobject结构体变量(第五章有定义,但没细看),module*owner结构的指针变量(可以用作为try_module_get()和module_put()两个模块计数管理接口的变量,还可用作文件操作等),文件原创 2010-10-03 15:07:00 · 1041 阅读 · 0 评论 -
9月27号会议内容的补充
会议原内容:会议时间:2010.9.27 星期一会议地点:15楼会议室参加者:陈老师、刘老师以及陈老师、李老师、刘老师、王老师的研究生主题:一、会议开始之前,陈老师先询问大家的学习情况,并根据了解结果提出以下建议:1、c语言基础薄弱的同学要自己下功夫复习相应的知识。2、对内核不要有恐惧心里,要知难而进,坚持下去。3、不能浮躁,要先打好基础,从内核学起,反过来看应用层程序便会更加得心应手。4、希望大家形成积极讨论共同学习的氛围。二、由原创 2010-10-03 14:58:00 · 992 阅读 · 0 评论 -
内核模块相关知识的学习
这周主要以学习模块的结构和模块的编译,其中第一章讲了一个简单的模块源程序,通过这个程序我们可以看出模块的大概结构。结构分析如下:首先是编译模块所需的内核内部的头文件,其中包括初始化init.h头文件、模块所需的头文件moudle.h、内核中部分被调用函数所包含的内核头文件kernel.h。接下来是模块的许可证的申明,一般我们常采用BSB/GPL双许可证,如果不加的话编译时会提示kernel tainted(内核被污染),接着是用户自定义的函数来实现模块的功能,包括初始化的函数和退出的函数,再下面是调原创 2010-09-28 13:21:00 · 757 阅读 · 0 评论 -
内核Panic和soft lockup分析及排错
一、概述众所周知,从事linux内核开发的工程师或多或少都会遇到内核panic,亦或者是soft lockup,前者多半是因为内存泄露、内存互踩、访问空地址等错误导致的,而后者可以肯定是因为代码的逻辑不当,进而导致内核进入一个死循环。问题可大可小,当问题足够隐蔽又难以复现时通常会让程序猿们十分抓狂,我前些日子有幸体验了一把,足足花费了我一周时间才成功找到问题,为了让自己以后能从容的面对内核pa原创 2015-08-24 00:09:05 · 12786 阅读 · 2 评论