内核模块读配置文件|如何提取linux kernel的配置文件

A. 我想在linux的内核模块中对文件进行打开读写等操作,可以实现吗

写个驱动···· vfs_write之类的函数,具体网上很多例子

B. Linux内核根目录中的配置文件.config中包含了许多宏定义,

一、Linux内核的配置系统由三个部分组成,分别是: 1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则; 2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能; 3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。 二、Make menuconfig过程分析 1、scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容 2、读取arch/arch/$ARCH/Kconfig以及各子目录下的Kcondig文件,生成配置条目。 $ARCH由linux内核根目录下的makefile文件决定 ARCH ?= arm CROSS_COMPILE ?= arm-linux- Kconfig文件中为配置信息的宏定义,与我们在make menuconfig图形界面看到的信息一致。 例如: config CPU_S3C2410_DMA bool depends on S3C2410_DMA && (CPU_S3C2410 || CPU_S3C2442) default y if CPU_S3C2410 || CPU_S3C2442 help DMA device selection for S3C2410 and compatible CPUs 因此,Kconfig文件很重要的作用就是:定义配置宏、相关依赖关系、帮助信息 3、读取内核根目录下.config文件,生成配置选项:[*]编译进内核 [M]编译为模块 [ ]不编译 arch/arm/configs/文件夹下存放了一些配置模板 我们可以通过cp /arch/arm/configs/xx_defconfig .config来使用这些配置模板 通过图形界面变更配置选项会自动更新到.config文件中 make disclean 会删除.config 4、编译过程根据.config生成 Linux内核根目录下的 include/config/auto.conf文件 CONFIG_EEPROM_93CX6=m CONFIG_DM9000=y 根目录Makefile以及子目录的Makefile根据auto.conf生成编译条件 obj-$(CONFIG_DM9000) += dm9000.o //obj-m += dm9000.o 5、编译过程根据.config生成Linux内核根目录下的 include/linux/autoconf.h文件 .config 或 auto.conf 中定义要编译为 m 模块的项,如: CONFIG_DEBUG_NX_TEST=m 在 autoconf.h 中会被定义为: #define CONFIG_DEBUG_NX_TEST_MODULE 1 .config或auto.conf 中定义为编译为 y 的选项,如: CONFIG_DM9000= y 在 autoconf.h 中会被定义为: #define CONFIG_DM9000 1 autoconf.h中是.config或者auto.conf中配置信息的另一种体现形式,它是站在源码的角度,供源码使用的C语言宏定义。 6、总结 我们在使用make menuconfig时,首先会确定架构arch,然后读取arch目录的Kconfig中的配置宏定义,生成编译条目,然后读取Linux内核根目录下的.config选项, 将.config中的配置信息显示在图形界面上[*] [M] or []。我们在图形界面中更改配置选项会自动保存到.config文件中。编译过程根据.config随后生成auto.conf文件,它决定了makefile中各个文件的编译类型,静态编译进内核、编译成模块、不编译;同时生成autoconf.h,它以C语言宏定义的形式表达了 各个文件是否被编译,源码中会判断某文件是否被编译进行不同的处理。 三、将自定义文件添加进内核配置系统 1、修改文件目录下Kconfig文件 添加: config HELLO tristate "just a test hello" default y —help— This is a test //tristate 或 bool 表示可选择种类数量3[*][M][ ]、2 // "just a test hello"将作为标题显示在配置的图形界面 2、修改文件目录下makefile文件 obj-$(CONFIG_HELLO) += hello_drv.o 3、make menuconfig 我们会在字符设备驱动的界面看到 ust a test hello 并且默认编译进内核 4、make编译内核发现 autoconfig.h 自动添加 #define CONFIG_HELLO 1 auto.conf 自动添加 CONFIG_HELLO=y

C. linux 系统配置文件

一般的配置文件都是放在/etc目录下的 (你可以通过输入:ll /etc命令来列出etc目录下的具体内容专)不同的服务对应属不同的文件。如: /etc/httpd.conf对应apache服务 /etc/named.conf对应DNS服务 /etc/dhcpd.coonf对应DHCP服务 /etc/samba/smb.conf对应文件共享 /etc/passwd 对应用户名 /etc/shadow 对应用户密码 /etc/ypserv.conf 对应NIS服务 /etc/vsftpd/vsftpd.conf 对应FTP服务 /etc/hosts 对应主机名和IP地址关系 /etc/resolv.conf 对应DNS服务器的设置 如果你要有所改动的话要根据你的实际需要修改一下相关的配置文件就可以了!不过有的文件的位置是不能修改的!

D. 系统配置的配置文件

内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:访问文件/etc/host.conf 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改。)/etc/hosts 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。/etc/hosts.allow 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。/etc/hosts.deny 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。引导和登录/注销/etc/issue & /etc/issue.net 这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串。 它们包括几行声明 Red Hat 版本号、名称和内核ID 的信息。它们由 rc.local 使用。/etc/redhat-release 包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。/etc/rc.d/rc 通常在所有运行级别运行,级别作为参数传送。 例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令:init 5。运行级别 5 表示以图形模式引导系统。/etc/rc.d/rc.local 非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。/etc/rc.d/rc.sysinit 通常是所有运行级别的第一个脚本。/etc/rc.d/rc/rcX.d 从 rc 运行的脚本(X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。 当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,系统启动时通常会在引导消息之后显示“entering run-level 3”的消息;这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。文件系统内核提供了一个接口,用来显示一些它的数据结构,这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的,称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。例如,/proc/moles 文件列举系统中当前加载的模块。lsmod 命令读取此信息,然后将其以人们可以看懂的格式显示出来。 下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。/etc/mtab 这将随着 /proc/mount 文件的改变而不断改变。换句话说,文件系统被安装和卸载时,改变会立即反映到此文件中。/etc/fstab 列举计算机当前“可以安装”的文件系统。 这非常重要,因为计算机引导时将运行 mount -a 命令,该命令负责安装 fstab 的倒数第二列中带有“1”标记的每一个文件系统。/etc/mtools.conf DOS 类型的文件系统上所有操作(创建目录、复制、格式化等等)的配置。系统管理/etc/group 包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务,可以存在于多个组中。例如,如果一个“用户”是“project 1”工程组的成员,同时也是管理员,那么在 group 文件中他的条目看起来就会是这样的:user: * : group-id : project1/etc/nologin 如果有 /etc/nologin 文件存在,login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。etc/passwd 请参阅“man passwd”。它包含一些用户帐号信息,包括密码(如果未被 shadow程序加密过)。/etc/rpmrc rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置,这样,当任何 rpm 命令在该系统中运行时,所有的选项都会全局适用。/etc/securetty 包含设备名称,由 tty 行组成(每行一个名称,不包括前面的 /dev/),root 用户在这里被允许登录。/etc/usertty/etc/shadow 包含加密后的用户帐号密码信息,还可以包括密码时效信息。/etc/shells 包含系统可用的可能的“shell”的列表。/etc/motd 每日消息;在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。初学者在使用电脑过程中,肯定会碰到各种各样的问题:如怎么管理电脑的自启动程序、如何查看加载的系统服务、怎样从安装光盘提取丢失的系统文件等。为了解决类似问题,微软在系统中提供了一个实用工具——系统配置实用程序(Msconfig)。以系统管理员身份登录系统后,单击“开始→运行”输入“Msconfig”回车后即可启动系统配置实用程序下面就结合几个应用实例来详细介绍Msconfig的使用(以WinXP为例)。“一般”选项不一般默认情况下,Windows采用的是正常启动模式(即加载所有驱动和系统服务),但是有时候由于设备驱动程序遭到破坏或服务故障,常常会导致启动出现一些问题,这时可以利用Msconfig的其它启动模式来解决问题。单击 “一般”选项,在“启动模式”选择“诊断启动”,这种启动模式有助于我们快速找到启动故障原因。此外,还可以选择“有选择的启动模式”,按提示勾选需要启动的项目即可。小提示:诊断启动是指系统启动时仅加载基本设备驱动程序如显卡驱动,而不加载Modem、网卡等设备,服务也仅是系统必须的一些服务。这时系统是最干净的,如果启动没有问题,可以依次加载设备和服务来判断问题出在哪里。虽然WinXP具备强大的文件保护功能,不过有时候由于安装/卸载软件或误操作,还是经常会造成系统文件的丢失。一般重要的系统文件,在系统安装光盘CAB文件中都可以找到。单击上图的“展开文件”,然后在弹出窗口中依次输入要还原的文件(填入丢失文件名)、还原自(单击“浏览自”,选择安装光盘的CAB压缩文件)、保存文件到(选择保存文件路径,WinXP/2000一般为c:windowssystem32,Win98则为c:windowssystem),最后单击“展开”,系统会自动解压CAB文件,将系统文件从安装光盘提取到电脑。可以先用系统的SFC命令来扫描系统文件的改动,找出变化的系统文件,命令格式:SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x]/SCANNOW:立即扫描所有受保护的系统文件。/SCANONCE:下次启动时扫描所有受保护的系统文件。/SCANBOOT:每次启动时扫描所有受保护的系统文件。/REVERT:将扫描返回到默认设置。/PURGECACHE:清除文件缓存。/CACHESIZE=x:设置文件缓存大小。在电脑应用中经常会看到“权限”这个词,特别是Windows 2000/XP被越来越多的朋友装进电脑后,常常会有读者问,什么是权限呢?它到底有什么用?下面我们将用几个典型实例为大家讲解windows中的权限应用,让你不仅可以在不安装任何软件的情况下,限制别人访问你的文件夹、指定用户不能使用的程序,而且还有来自微软内部的加强系统安全的绝招。初识Windows的权限首先,要完全使用windows权限的所有功能,请确保在应用权限的分区为NTFS文件系统。本文将以windowsXP简体中文专业版+SP2作为范例讲解。在以NT内核为基础的Windows 2000/XP中,权限主要分为七大类完全控制、修改,读取和运行、列出文件夹目录、读取、写入、特别的权限。其中完全控制包含了其他六大权限.只要拥有它,就等同于拥有了另外六大权限,其余复选框会被自动选中.属于“最高等级”的权限。而其他权限的等级高低分别是:特别的权限>读取和运行>修改>写入>读取。默认情况下,Windows XP将启用简单文件共享,这意味着安全性选项卡和针对权限的高级选项都不可用.也就不能进行本文所述的那些权限应用操作了。请右击任意文件或文件夹.选择“属性”,如果没有看到“安全”选项卡,你可以通过如下方法打开它。打开“我的电脑”,点击“工具→文件夹选项→查看”,接着在然后单击取消“使用简单文件共享(推荐)”复选框即可。实战权限“正面”应用以下应用的前提,是被限制的用户不在Administrators组,否则将可能发生越权访问,后面反面应用会讲到。执行权限设置的用户至少需要为Power Users组的成员,才有足够权限进行设置。实例1:我的文档你别看-保护你的文件或文件夹假设A电脑中有三个用户,用户名分别为User1、User2、User3。Userl不想让User2和User3查看和操作自己的“test”文件夹。第一步:右击test文件夹并选择属性,进入安全选项卡,你将会看到组或用户名称栏里有Administrators(AAdministrators)、CREATOR OWNER、SYSTEM Users(AUsers)、User1(A User1)。他们分别表示名为A电脑的管理员组,创建、所有者组,系统组,用户组以及用户User1对此文件夹的权限设置。当然,不同的电脑设置和软件安装情况,此栏里的用户或用户组信息不一定就是和我描述的一样.但正常情况下最少将包含3项之一:Administrators、SYSTEM、Users或Everyone。第二步:依次选中并删除Administrators、CREATOR OWNER、SYSTEM、Users,仅保留自己使用的Userl账户。在操作中可能会遇到的提示框。其实只要单击高级按钮,在权限选项卡中,取消从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目的复选框,在弹出对话框中单击删除即可。该操作使此文件夹清除了从上一级目录继承来的权限设置,仪保留了你使用的User1账户。就这么轻松,你就实现了其他用户,甚至系统权限都无法访问test文件夹的目的。★需要注意的是,如果这个文件夹中需要安装软件,那么就不要删除SYSTEM,不然可能引起系统访问出错★Administrator并不是最高指挥官:你可能会问,为什么这里会有一个SYSTEM账户呢?同时许多朋友认为windows2000/XP中的Administrator是拥有权限最高的用户,其实不然,这个SYSTEM才具有系统最高权限,因为它是作为操作系统的一部分工作,任何用户通过某种方法获取了此权限,就能凌驾一切。实例2:上班时间别聊天-禁止用户使用某程序第一步:找到聊天程序的主程序,如QQ,其主程序就是安装目录下的QQ.exe,打开它的属性对话框,进入安全选项卡,选中或添加你要限制的用户,如User3。第二步:接着选择完全控制为拒绝,读取和运行也为拒绝。第三步:单击高级按钮进入高级权限没置,选中User3,点编辑按钮,进入权限项目。在这里的拒绝栏中选中更改权限和取得所有权的复选框。也可以使用组策略编辑器来实现此功能,但安全性没有上面方法高。点击开始→运行,输入gpedit.msc,回车后打开组策略编辑器,进入计算机设置→windows设置→安全设置→软件限制策略→其他规则,右击,选择所有任务→新路径规则,接着根据提示设置想要限制的软件的主程序路径,然后设定想要的安全级别,是不允许的还是受限制的。实例3:来者是客--微软内部增强系统安全的秘技本实战内容将需要管理员权限。所谓入侵,无非就是利用某种方法获取到管理员级别的权限或系统级的权限,以便进行下一步操作,如添加自己的用户。如果想要使入侵者进来之后不能进行任何操作呢?永远只能是客人权限或比这个权限更低,就算本地登录,连关机都不可以。那么,他将不能实施任何破坏活动。注意:此法有较高的危险性.建议完全不知道以下程序用途的读者不要尝试.以免误操作引起系统不能进入或出现很多错误。第一步:确定要设置的程序搜索系统目录下的危险程序,它们可以用来创建用户夺取及提升低权限用户的权限,格式化硬盘,引起电脑崩溃等恶意操作:cmd.exe、regedit.exe、regsvr32.exe、regedt32.exe、gpedit.msc、format.com、compmgmt.msc、mmc.exe、telnet.exe、tftp.exe、ftp.exe、XCOPY.EXE、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、net.exe、tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、cscript.exe、netstat.exe、issync.exe、runonce.exe、debug.exe、rexec.exe、wscript.exe、command.com、comspd.exe第二步:按系统调用的可能性分组设置按照下面分组.设置这些程序权限。完成一组后,建议重启电脑确认系统运行是否一切正常,查看事件查看器,是否有错误信息(控制面板→管理工具→事件查看器)。(1)cmd.exe、net.exe gpedit.msc telnet.exe command.com(仅保留你自己的用户,SYSTEM也删除)(2)mmc.exe、tftp.exe、ftp.exe、XCOPY.EXE、comspd.exe(仅保留你自己的用户,SYSTEM也删除)(3)regedit.exe、regedt32.exe、format.com、compmgmt.msc、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、debug.exe、wscript.exe、cscript.exe、rexec.exe(保留你自己的用户和SYSTEM)(4)tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、netstat.exe、issync.exe、runonce.exe、regsvr32.exe(保留你自己的用户和SYSTEM)第三步:用户名欺骗这个方法骗不了经验丰富的入侵者,但却可以让不够高明的伪黑客们弄个一头雾水。打开控制面板一管理工具一计算机管理,找到用户,将默认的Administrator和Guest的名称互换,包括描述信息也换掉。完成后,双击假的Administrator用户,也就是以前的Guest用户.在其属性窗口中把隶属于列表里的Guests组删除.这样.这个假的管理员账号就成了无党派人士,不属于任何组,也就不会继承其权限。此用户的权限几乎等于0,连关机都不可以,对电脑的操作几乎都会被拒绝。如果有谁处心积虑地获取了这个用户的权限,那么他肯定吐血。第四步:集权控制,提高安全性打开了组策略编辑器,找到计算机设置→windows设置→安全设置→本地策略→用户权利指派,接着根据下面的提示进行设置。(1)减少可访问此计算机的用户数,减少被攻击机会找到并双击从网络访问此计算机,删除账户列表中用户组,只剩下Administrators;找到并双击拒绝本地登录,删除列表中的Guest用户,添加用户组Guests。(2)确定不想要从网络访问的用户,加入到此黑名单内找到并双击拒绝从刚络访问这台计算机,删除账户列表中的Guest用户,添加用户组Guests;找到并双击取得文件或其他对象的所有权,添加你常用的账户和以上修改过名称为Guest的管理员账户,再删除列表中Administrators。(3)防止跨文件夹操作找到并双击跳过遍历检查,添加你所使用的账户和以上修改过名称为Guest的管理员账户,再删除账户列表中的Administrators、Everyone和Users用户组。(4)防止通过终端服务进行的密码猜解尝试找到并双击通过终端服务拒绝登录,添加假的管理员账户Administrator;找到通过终端服务允许登录,双击,添加你常用的账户和以上修改过名称为Guest的管理员账户,再删除账户列表中的Administrators,Remote Desktop User和HelpAssistant(如果你不用远程协助功能的话才可删除此用户)。(5)避免拒绝服务攻击找到并双击调整进程的内存配额,添加你常用的账户,再删除账户列表中的Administrators实例4:你的文档别独享——突破文件夹私有的限制windows XP安装完成并进入系统时,会询问是否将我的文档设为私有(专用),如果选择了是,那将使该用户下的我的文档文件夹不能被其他用户访问,删除,修改。其实这就是利用权限设置将此文件夹的访问控制列表中的用户和用户组删除到了只剩下系统和你的用户,所有者也设置成了那个用户所有,Administrators组的用户也不能直接访问。如果你把这个文件夹曾经设置为专用,但又在该盘重装了系统,此文件夹不能被删除或修改。可按照下面步骤解决这些问题,让你对这个文件夹的访问,畅通无阻。第一步:登录管理员权限的账户,如系统默认的Administrator,找到被设为专用的我的文档,进入其属性的安全选项卡,你将会看到你的用户不在里面,但也无法添加和删除。第二步:单击高级按钮,进入高级权限设置,选择所有者选项卡,在将所有者更改为下面的列表中选中你现在使用的用户,如Userl(AUserl),然后再选中替换子容器及对象的所有者的复选框,然后单击应用,等待操作完成。第三步:再进入这个文件夹看看,是不是不会有任何权限的提示了?可以自由访问了?查看里面的文件,复制、删除试试看.是不是一切都和自己的一样了?嘿嘿。如果你想要删除整个文件夹,也不会有什么阻止你了。 ServerWinStationsRDP-Tcp 改3389 的

E. 怎么查看linux下的模块,很多命令的介绍

1、lsmod 列加以挂载的内核模块;lsmod 是列出目前系统中已加载的模块的名称及大小等;另外我们还可以查看 /proc/moles ,我们一样可以知道系统已经加载的模块;代码:[[email protected] beinan]# lsmod 2、modinfo 查看模块信息;modinfo 可以查看模块的信息,通过查看模块信息来判定这个模块的用途;代码:[[email protected] beinan]# moinfo 模块名 举例:代码:[[email protected] beinan]# modinfo ne2k-pcifilename: /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.koauthor: Donald Becker / Paul Gortmakerdescription: PCI NE2000 clone driverlicense: GPLparmtype: debug:intparmtype: options:array of intparmtype: full_plex:array of intparm: debug:debug level (1-2)parm: options:Bit 5: full plexparm: full_plex:full plex setting(s) (1)vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0depends: 8390alias: pci:v000010ECd00008029sv*sd*bc*sc*i*alias: pci:v00001050d00000940sv*sd*bc*sc*i*alias: pci:v000011F6d00001401sv*sd*bc*sc*i*alias: pci:v00008E2Ed00003000sv*sd*bc*sc*i*alias: pci:v00004A14d00005000sv*sd*bc*sc*i*alias: pci:v00001106d00000926sv*sd*bc*sc*i*alias: pci:v000010BDd00000E34sv*sd*bc*sc*i*alias: pci:v00001050d00005A5Asv*sd*bc*sc*i*alias: pci:v000012C3d00000058sv*sd*bc*sc*i*alias: pci:v000012C3d00005598sv*sd*bc*sc*i*alias: pci:v00008C4Ad00001980sv*sd*bc*sc*i*srcversion: 6ACE95F441CD26DF9DC31C2 上 面的例子是我们查看 ne2k-pci 这个模块的信息,通过查看,我们知道ne2k-pci 模块是8029网卡(PCI NE2000 clone driver)的驱动;模块是位于 /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko我们现在常用的网卡也有8139的,8139网卡所用的驱动是 8139too ;查查看?代码:[[email protected] beinan]# modinfo 8139too 我们再查查vfat 和ntfs 的模块信息;代码:[[email protected] beinan]# modinfo vfat[[email protected] beinan]# modinfo ntfs 自己尝试一下;注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;3、modprobe 挂载新模块以及新模块相依赖的模块modprobe 我们常用的功能就是挂载模块,在挂载某个内核模块的同时,这个模块所依赖的模块也被同时挂载;当然modprobe 也有列出内核所有模块,还有移除模块的功能;下在我们举个例子说一说咱们常用的功能和参数;代码:modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters…]modprobe -r [-n] [-i] [-v] …modprobe -l -t [ -a …]上面是modprobe 的用法,具体更为详细的帮助,我们可以查看 man modprobe ;代码:[[email protected] beinan]# modprobe -cmodprobe -c 可以查看moles 的配置文件,比如模块的别名是什么等;代码:[[email protected] beinan]# modprobe -l modprobe -l 是列出内核中所有的模块,包括已挂载和未挂载的;通过modprobe -l ,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l 读取的模块列表就位于 /lib/moles/'uname -r' 目录中;其中uname -r 是内核的版本;代码:[[email protected] beinan]# uname -r2.6.11-1.1369_FC4[[email protected] beinan]# ls /lib/moles/2.6.11-1.1369_FC4/ 通过上面的命令,自己试试看?代码:[[email protected] beinan]# modprobe 模块名 注:挂载一个模块; 举例:代码:[[email protected] beinan]# modprobe ne2k-pci 注:挂载 ne2k-pci 模块;[[email protected] beinan]# modprobe vfat 注:挂载vfat 模块[[email protected] beinan]# modprobe ntfs 注:挂载ntfs 模块[[email protected] beinan]# lsmod 注:列出已挂载模块, 我们会看到ne2k-pci ,vfat ,ntfs的模块 ; 注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;代码:[roo[email protected] beinan]# modprobe -r 模块名 注:移除已加载的模块,和rmmod 功能相同; 注意:模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;代码:[[email protected] beinan]# modprobe -r 模块名 举例:代码:[[email protected] beinan]# modprobe -r ne2k-pci 就说这么多吧,更为详细的还是用 man modprobe 来查看和尝试;4、rmmod 移除已挂载模块;命令格式:代码:rmmod 模块名注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;举例:代码:[[email protected] beinan]# rmmod vfat 注:移除已挂载的模块vfat5、depmod 创建模块依赖关系的列表这 个模块管理工具是创建模块依赖关系的列表,有几个参数我们注意一下就行了,目前的的Linux 发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,目前有两种驱动,一种是udev ,在内核中有,但目前不太稳定;另一种办法是用usb-storage驱动,而usb-storage 依赖的模块是scsi 模块,所以我们要用usb-storage 的模块,也得把scsi 编译安装;再 举个例子:sata的硬盘,在Linux中的设备表示的是/dev/sd* ,比如 /dev/sda,/dev/sdb 等… 系统要驱动 sata硬盘,则需要把sata在内核中选中,或编译成模块,或内置于内核之中,在此同时,还需要在内核中选中ide ,scsi 的支持等;depmod 工具的洋文原意:depmod — program to generate moles.dep and map files.(我译的:为moles.dep 文件或映射文件创建依赖关系)代码:[[email protected] beinan]# depmod -a 注:为所有列在/etc/modprobe.conf 或/etc/moles.conf 中的所有模块创建依赖关系,并且写入到moles.dep文件;[[email protected] beinan]# depmod -e 注:列出已挂载但不可用的模块;[[email protected] beinan]# depmod -n 注:列出所有模块的依赖关系,但仅仅是输出出来 (Write the dependency file on stdout only) 注:moles.dep 位于 /lib/moles/内核版本 目录比如 Fedora Core 4.0 中,系统默认的内核:代码:[[email protected] beinan]# ls /lib/moles/2.6.11-1.1369_FC4/moles.dep/lib/moles/2.6.11-1.1369_FC4/moles.dep 6、insmod 挂载模块;insmod 这个工具,和modprobe 有点类似,但功能上没有modprobe 强,modprobe 在挂载模块是不用指定模块文件的路径,也不用带文件的后缀.o 或.ko ;而insmod 需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀的(molefile.o 或molesfile.ko );对于这个工具,我们只是介绍一下, 并不推荐使用。因为模块有依赖关系,对于新手来说,可能不知道这个模块依赖和哪个模块依赖;举例:代码:[[email protected] beinan]# insmod /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko我们要到 /lib/moles/内核版本 uname -r 的命令输出/kernel/drivers 中找相对应的模块才行,要有绝对路径,而且必须要用到文件名的全称,不能把文件名的后缀省略;四、与内核模块加载相关的配置文件;1、模块的配置文件 moles.conf 或 modprobe.conf内 核模块的开机自动挂载模块一般是位于一个配置文件,一般的Linux发行版本都有 /etc/moles.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 内核模块开机自动加载文件是 /etc/modprobe.conf ;在这个文件中,一般是写入模块的加载命令或模块的别名的定义等;比如我们在moles.conf 中可能会发行类似的一行 ;代码:alias eth0 8139too 而8029的网卡应该是代码:alias eth0 ne2k-pci 这样系统启动的时候,首先会modprobe 8139too ,然后再为8139too 指定别名为 eth0,然后我们在登录的时候,用 ifconfig 就会查看到网卡的IP 等情况,当然您得为网卡设置IP 才行;一 般的情况下,modproe.conf 或moles.conf的内容 是我们用相应的硬件配置工具而生成的;如果您的硬件驱动是没有被内核支持,您自己到硬件的厂商下载而来的驱动。一般的情况下都有安装和帮助文件。他们的驱 动在配置时,他会写入硬件的支持到moles.conf 或modprobe.conf 文件中。再比如我们的声卡在moles.conf 或modprobe.conf 中也有相应的内容,这是由alsaconf 配置工具生成的,明白了吧;同理网卡在modprobe.conf 或moles.conf中的内容也是由网卡的配置工具而来的。有些硬件是以内核模块的方式驱动的,模块一旦加载上就能用,也没有什么配置工具,比如vfat 和ntfs 的支持;如果是硬件驱动不以模块的方式支持,而是直接编入内核,也不会用在modprobe.conf 或 moles.conf 中加入什么内容;如果您有些模块不能开机加载,您想让一些模块加机自动加载,就可以把modprobe 模块 直接写入配置文件;2、内核模块其它配置文件内核模块的其它配置文件还是需要了解的,比如 /lib/moles/内核版本目录下的几个文件;了解一下就行;比如:代码:[[email protected] beinan]# uname -r2.6.11-1.1369_FC4[[email protected] beinan]# ls /lib/moles/2.6.11-1.1369_FC4/build misc moles.ccwmap moles.ieee1394map moles.isapnpmap moles.symbols sourcekernel moles.alias moles.dep moles.inputmap moles.pcimap moles.usbmap 五、硬件驱动在系统中的目录;硬件驱动在内核中以模块支持的目录;硬 件驱动是必须由内核支持的,无论是我们自己安装驱动,还是内核自带的驱动都是如此。硬件驱动如果是以内核模块支持的,驱动目录位于: /lib/moles/内核版本/kernel/目录 或 /lib/moles/内核版本/kernel/drivers 目录中;代码:[[email protected] beinan]# uname -r2.6.11-1.1369_FC4[[email protected] beinan]# ls /lib/moles/2.6.11-1.1369_FC4/kernelarch crypto drivers fs lib net sound 注:只有驱动在内核中以模块的方法支持,驱动才位于 /lib/moles/相应的目录;如果是直接置入内核的,不会出现在/lib/moles驱动相关的目录;六、自己编译驱动的办法;通 过源码编译驱动一般是./configure ;make;make install ,有时程序不提供./configure ,我们可以make或make install ,或者执行make;make install ;如果不能make install ,则需要我们自己复制.o或者.ko文件到 /lib/moles/内核版本/kernel/目录 或 /lib/moles/内核版本/kernel/drivers 目录中相应的驱动目录;这个还是自己尝试吧,说也说不清楚,遇到问题后就知道怎么弄了;具体的还是驱动的REAME和INSTALL为准;现在大多驱动都是在编译安装时,都自动复制.o或.ko 文件到内核模块目录,大多不用我们自己动手复制过去。如果您尝试编译安装声卡驱动 alsa-drivers 就会明白我所说的意思。

F. 如何提取linux kernel的配置文件

如果你是一个喜欢编译内核的狂人,同时也是经常忘记将默认的.config文件备份的懒家伙,那么下面的方法将会使你的内核配置工作变得更轻松,从linux 2.6开始内核提供了一种将.config附加到映像文件的方法,通过这种方法,内核配置者可以不必备份当前的.config文件,而是在需要的时候直接从内核映像中提取.config文件。步骤如下:1. 配置内核1.1 make menuconfig;1.2 选择如下:General setup —> <*> Kernel .config support [*] Enable access to .config through /proc/config.gz1.3 make uImage2. 提取配置文件2.1 方法一,从uImage文件中提取:2.1.1 打开控制台,cd进入到linux源码树根目录,我的为:/root/Desktop/easy2440/linux-2.6.30.9-easy24402.1.2 输入如下命令:scripts/extract-ikconfig arch/arm/boot/uImage > config2.1.3 命令执行完后,将会在linux源码树根目录下面生成config文件;2.1.4 config文件即为我们需要的内核配置文件,可以将其替代.config文件。2.2 方法二,从开发板的/proc/config.gz中提取:2.2.1 将新生成的uImage文件下载到开发板;2.2.2 准备串口控制台,启动开发板;2.2.3 开发板正常启动后,在控制台输入命令:cat /proc/config.gz | gzip -d > /home/config2.2.4 命令执行完后,将会在/home目录下生成config文件2.2.5 config文件即为我们需要的内核配置文件,可以将其替代.config文件。

G. Linux内核配置与编译相关流程

linux内核配置与编译相关流程1、清除临时文件、中间文件和配置文件makeclean不删除配置文件。makemrpropermakedistclean删除编辑的backup文件、补丁文件等2、确定目标系统的软硬件配置情况,比如CPU的类型,网卡的型号,所需要支持的网络协议。3、使用命令配置内核makeconfig基于文本模式的交互配置。makemenuconfig基于文本模式的菜单配置。makeoldconfig使用已有的配置文件(.config),但是会询问新增的配置选项。makexconfig图形化的配置(需要安装图形化系统)。4、编译内核makezImagemakebzImage区别:在X86平台上,zImage只能用于小雨512k内核。如果需要获取详细编译信息,则在后面加上V=1.编译好的内核位于arch/<cpu>/boot/目录下。5、编译内核模块makemoes6、安装内核模块makemoes_install将编译好的内核模块从内核源代码目录到/lib/moes下。7、制作initramdiskmkinitrd$initrd-$version-$version内核安装(X86)1、cparch/X86/boot/bzImage/boot/vmliuz-$version2、cp$initrd/boot/3、修改etc/grub.conf或/etc/lilo.conf$version为所编译的内核版本号。


赞 (0)