linux内核头文件安装(linux 内核头文件)-编程之家

linux系统文件存储结构好处?

从数值上看,文件描述符是一个非负整数,其本质就是一个句柄,所以也可以认为文件描述符就是一个文件句柄。那么何为句柄呢?一切对于用户透明的返回值,即可视为句柄。用户空间利用文件描述符与内核进行交互;而内核拿到文件描述符后,可以通过它得到用于管理文件的真正的数据结构。

  使用文件描述符即句柄,有两个好处:一是增加了安全性,句柄类型对用户完全透明,用户无法通过任何hacking的方式,更改句柄对用的内部结果,比如Linux内核的文件描述符,只有内核才能通过该值得到相应的文件结构;二是增加了可扩展性,用户的代码只依赖于句柄的值,这样实际的结构的类型就可以随时发生变化,与句柄的映射关系也可以随时改变,这些变化都不回影响任何现有的用户代码。

  Linux的每个进程都会维护一个文件表,以便维护该进程打开的文件信息,包括打开的文件的个数、每个文件的偏移量等信息。

linux上常见的文件系统格式有哪些?

我们在Linux中常用的文件系统主要有ext3、ext2及reiserfs。Linux目前几乎支持所有的Unix类的文件系统,除了我们在安装Linux操作系统时所要选择的ext3、reiserfs和ext2外,还支持苹果MACOS的HFS,也支持其它Unix操作系统的文件系统,比如XFS、JFS、Minix fs 及UFS等,您可以在kernel的源码中查看;如果您想要让系统支持哪些的文件系统得需要把该文件系统编译成模块或置入内核;

当然Linux也支持Windows文件系统NTFST和fat,但不支持NTFS文件系统的写入;支持fat文件系统的读写。现在还有新的ext4文件系统。

linux中header是什么?

完全没看懂楼主要什么。

Linux-headers 是 Linux 的开发头文件,应该位于 /usr/include/linux 里面。不过有的系统习惯放 /usr/src 里面一分(这种情况很少,因为正规的地方是 /lib/modules/<内核版本>/ 的某个目录,印象里是他的 build 里),因为有的软件去这里寻找当前内核的源代码来调用当前源代码的 header 进行编译。

/usr/include 里面的 Linux 内核头文件,是专门编译 libc 用的。不能保证内核模块的编译要求。 真正的 Linux 不可能给这个名字。

/usr/src 里面习惯是放完整的 Linux 源代码。但具体名字,要看系统的定义了,有的叫 linux-sources、kernel-source 什么的。有的可能是改进版的名字。

linux系统的文件例如/bin/etc/home叫系统文件?用内核写的?

/bin r r   这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。r /etc r r   这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。r /home r r   这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。

Linux内核版本号的规则?

Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3个数字组成:r.x.y

r:目前发布的内核主版本。

x:偶数表示稳定版本;奇数表示开发中版本。

y:错误修补的次数。

内核版本号每位都代表什么 ?

以版本号为例: 2.6.9-5.ELsmp ,

r: 2 , 主版本号

x: 6 , 次版本号,表示稳定版本

y: 9 , 修订版本号 , 表示修改的次数

头两个数字合在一齐可以描述内核系列。如稳定版的2.6.0,它是2.6版内核系列。

5: 表示这个当前版本的第5次微调patch , 而ELsmp指出了当前内核是为ELsmp特别调校的

EL : Enterprise Linux ; smp : 表示支持多处理器 , 表示该内核版本支持多处理器

知识延伸

一般的有三种

1 smp

2 bigmem

3 一般的内核

Red Hat Linux开机的时候,GRUB的启动菜单会有两个选项,分别是

   Red Hat Enterprise Linux ES (版本号.ELsmp)

   Red Hat Enterprise Linux ES-up (版本号.EL)

  这两个分别是代表什么含义呢?

  其实这个就是系统开机时由GRUB引导启动 - 单处理器 与 对称多处理器启动核心文件的区别。

  Red Hat Enterprise Linux ES (版本号.ELsmp) multiple processor (symmetric multiprocessing )

  Red Hat Enterprise Linux ES-up (版本号.EL) uniprocessor

  下面就把SUSE与Red Hat启动菜单内可选择的选项,列举出来

  SUSE

  版本号-default: SUSE Linux kernel for uniprocessor machines 默认选项,支持单处理器机器

  版本号-smp: SUSE Linux kernel that supports symmetric multiprocessing and up to 4 GB of RAM

支持4GB内存的对称多处理器机器

  版本号-bigsmp: SUSE Linux kernel supports symmetric multiprocessing and up to 64 GB

支持64GB内存的对称多处理器机器

  Red Hat Linux

  版本号.EL: Red Hat Linux kernel for uniprocessor machines 支持单处理器机器

  版本号.ELhugemem: Red Hat Linux kernel that supports up to 64 GB of RAM

支持64GB内存的对称多处理器机器

  版本号.ELsmp: Red Hat Linux kernel that supports symmetric multiprocessing 对称多处理器机器,支持4G内存

有些情况下你需要支持1和2特性,那么你可以:重新编译一下内核,在处理器及内存选择项上选择与你配置相对应的选项即可。

如何下载对应内核版本的源代码 ?

一般情况下,可以直接到官网:http://www.kernel.org下载,

缺点是:对于任何内核做过特殊优化调校的发行版是不合适的,尤其是fedora ubuntu 这一类的,毕竟他们在内核中打了大量的补丁,做了很多优化,如果直接使用官方源码 ,你就无法享受到这些东西 ,内核不是越新越好的 越合适越好

因此最好到发行商的官网去下载,因为官方已经提供了编译好的源码rpm包。

如何使用对应的内核源码包 ?

以fedora官方提供的内核源码: kernel-2.6.23.9-85.fc8.src.rpm 为例

首先,安装源码

# rpm -ivh kernel-2.6.23.9-85.fc8.src.rpm

然后,转换源码

转换之前,请确保/usr/src/目录下有redhat目录(一般/usr/src/是空目录)。

# rpmbuild -bp –target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec

这样会将源码放置在/usr/src/redhat/BUILD/kernel-2.6.23/。

这里有两个有用的文件夹:.

linux-2.6.23.ARCH——这个是kernel.org 提供的包经过Fedora 补丁和升级得到的。也就是 2.6.23.9-85.fc8 这个 打过补丁的内核

ARCH 与uname-m 的输出结果一致,通常为i686。如果你想得到不同的输出,你可以使用

“–target=”这个选项来进行指定。

vanilla——这个是标准的、由kernel.org 提供的没有经过补丁和升级的源码。