当你在编译一个设备驱动模块时,你需要在系统中安装内核头文件。内核头文件同样在你编译与内核直接链接的用户空间程序时需要。当你在这些情况下安装内核头文件时,你必须确保内核头文件精确地与你当前内核版本匹配(比如:3.13.0-24-generic)。
如果你的内核是发行版自带的内核版本,或者使用默认的包管理器的基础仓库升级的(比如:apt-ger、aptitude或者yum),你也可以使用包管理器来安装内核头文件。另一方面,如果下载的是kernel源码并且手动编译的,你可以使用make命令来安装匹配的内核头文件。
现在我们假设你的内核是发行版自带的,让我们看下该如何安装匹配的头文件。
在 Debian、Ubuntu 或者 Linux Mint 上安装内核头文件
假设你没有手动编译内核,你可以使用apt-get命令来安装匹配的内核头文件。
首先,使用dpkg-query命令检查是否有可用的内核头文件。
$ dpkg-query -s linux-headers-$(uname -r)
dpkg-query: package 'linux-headers-3.11.0-26-generic' is not installed and no information is available
接着使用下面的命令安装匹配的内核头文件。
$ sudo apt-get install linux-headers-$(uname -r)
验证头文件是否成功安装。
$ dpkg-query -s linux-headers-$(uname -r)
Package: linux-headers-3.11.0-26-generic
Status: install ok installed
Debian、Ubuntu、Linux Mint默认头文件在/usr/src下。
在 Fedora、CentOS 或者 RHEL 上安装内核头文件
假设你没有手动编译内核,你可以使用yum命令来安装匹配的内核头文件。
首先,用下面的命令检查系统是否已经安装了头文件。如果下面的命令没有任何输出,这就意味着还没有头文件。
$ rpm -qa | grep kernel-headers-$(uname -r)
接着用yum命令安装头文件。这个命令会自动找出合适的头文件并安装。
$ sudo yum install kernel-headers
验证包安装的状态。
$ rpm -qa | grep kernel-headers-$(uname -r)
『贰』 linux系统的组成结构
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。
1、内核
内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
Linux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。
2、shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
目前主要有下列版本的shell:
①Bourne shell:是贝尔实验室开发的。
②BASH:是GNU的Bourne Again
shell,是GNU操作系统上默认的shell,大部分Linux的发行套件使用的都是这种shell。
③Korn shell:是对Bourne shell的发展,在大部分内容上与Bourne shell兼容。
④C shell:是SUN公司shell的BSD版本。
3、文件系统
文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。
4、应用程序
标准的Linux系统一般都有一套称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公套件、Internet工具和数据库等。
『叁』 linux内核编译的几点疑惑
(1)编译内核于升级内核没有直接关联。如果编译的内核的版本比现在系统使用的版本新,那么使用编译后的内核可以看成是内核升级。但是有时候是因为需要而编译内核,比如某些模块需要重新编译,打开某些原来内核没打开的选项,这时候可以是同版本内核重新编译,这就不能说是升级内核。
(2)新内核编译好后,还需要安装。也就是make install(把bzimage移动到boot,重命名为vmlinuz) ,make moles install(把模块全部放到/lib/moles/(内核名)文件夹内);然后depmod,在/lib/moles/(内核名)建好新的***.dep文件,这样启动时系统就能通过读取***.dep文件信息来加载模块。还要在boot下新建一个于内核名一样的.img文件,如vmlinuz,那么就是vmlinuz.img,至于系统使用哪个内核,那是在grub.cfg里面写的配置文件决定的。指定哪个就从哪个启动,写两个entry就可以选择启动到哪一个。老内核当然还可以继续使用。
(3)新内核主要是一些新的特性,驱动更改什么的,我不是很清楚,比如2.6.34以上的内核就支持通过echo OFF>/sys/kernel/debug/vgaswitchroo/switch关闭某个显卡,也就是双显卡切换支持,又比如2.6.38中加入了所谓的autogroup在某些情况下提升桌面性能的特性,还有一些对系统某些情况的处理方式的变化等。但是从用户层来说一般感觉不到明显变化。对于程序什么的使用不影响(绝大多数)。
『肆』 linux操作系统的三个主要部分及其功能
Linux系统一般有四个主要部分:内核、Shell、文件系统和应用程序。
① Linux内核:内核是系统的“心脏”,是运行程序和管理磁盘、打印机等硬件设备的核心程序。
② Linux Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令,并对其进行解释,最后送入内核去执行,实际上就是一个命令解释器。人们也可以使用Shell编程语言编写Shell程序,这些Shell程序与用其他程序设计语言编写的应用程序具有相同的效果。
③ Linux 文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。Linux的文件系统呈树型结构,同时它也能支持目前流行的文件系统,如:EXT2、EXT3、FAT、VFAT、NFS、SMB等。
④ Linux 应用程序:同Windows操作系统一样,标准的Linux也提供了一套满足人们上网、办公等需求的程序集即应用程序,包括文本编辑器、X Windows、办公套件、Internet工具、数据库等。
Linux内核、Shell和文件系统一起形成了基本的操作系统结构,可使用户运行程序,管理文件并使用系统。
所以你问的三个主要部分就是Linux内核、Shell和文件系统了。
『伍』 linux内核源码详解
Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。
对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识; 2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。
另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于linux目录):
arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init 此目录包含核心启动代码。
mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/-/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc 此目录包含了核心的进程间通讯代码。
moles 此目录包含已建好可动态加载的模块。
fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
kernel 主要核心代码。同时与处理器结构相关代码都放在arch/-/kernel目录下。
net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/-/lib/目录下。
scripts 此目录包含用于配置核心的脚本文件。
Documentation 此目录是一些文档,起参考作用。
『陆』 跪求 kernel是个什么文件,怎么出现的能删除吗
kernel文件是与系统相关的文件,LINUX开发中常见到这个命名的文件。但是在Windows系统中不应当出现在用户的文件夹里,只可能在系统文件夹内。所以,要么是软件BUG给你新增了这文件,要么是病毒在作怪了。