linux学习之路之模块管理和内核编译

我们知道linux内核再启动过程中,主要完成以下几种功能:

1、侦测硬件信息

2、驱动初始化(可能借助intrd文件加载硬件模块)

3、以只读方式挂载根文件系统

4、转载第一支程序init

如果我们的kernel识别不了某些硬件或者实现不了某些功能的话,那么只能将某些功能代码添加在内核当中,或者将这些功能代码做成模块的形式,kernel需要哪些模块就直接调用这些模块即可。通过这两种功能就可以实现相应的功能。

而不同的实现机制和kernel设计有关。

kernel设计分为2种:

一种是单内核:这种内核将某些功能代码直接编译到内核中,因此该内核的容量较大。不过现在的单内

核也借助了微内核的优势,将某些功能做成模块的形式供kernel调用。

另一种是为内核:这种内核是将某些功能的做成模块的形式供kernel调用。

而我们的linux kernel才采用单内核设计。

如何管理模块?

使用lsmod命令可以查看系统上所有的模块

其中第一段为模块的名字。第二段为模块的大小。第三段Used by表示被使用了几次,以及哪些模块使用了该模块。

modprobe MOD_NAME:装在模块,这里接模块名

modprobe -r MOD_NAME:删除某个模块

modinfo  MOD_NAME:查看某个模块的详细信息

其中filename为该模块的文件路径

depends:表示该模块安装依赖于哪个模块(相依属性问题)

insmod /PATH/TO/MODULE_FILENAME:装载指定模块,注意这里是文件路径,不是模块名称

rmmod MOD_NAME:删除指定模块,这里接模块名称

depmod /PATH/TO/MODILES_DIR :可以用来生成模块依赖列表

一般用户说来,空间访问内核空间是通过/proc、/sys这两个目录来完成的

在/proc/sys/目录下,大部分文件具有rw权限

而/sys/目录下,只要部分文件具有w权限

而我们修改内核参数一般是通过/proc/sys/,/sys/来完成的。

修改内核参数有3种方法:

1、使用echo VALUE > /proc/sys/TO/SOMEFILE

例如:修改/proc/sys/vm/drop_caches的参数

2、使用sysctl命令来修改。不过该命令只用于修改/proc/sys/目录下的文件

sysctl -w /proc/sys目录下的子目录.FILE=STRING

例如:修改/proc/sys/kernel/hostname为xsl.www.com

3、使用上述两张方法修改的内核参数,只能立即生效,但是不能永久生效。要想永久生效可以修改内核的配置文件/etc/sysctl.conf.

要想修改配置文件立即生效,使用sysctl -p命令可以重读配置文件

使用sysctl -a可以显示所有内核参数和其值

一般来说,内核的核心功是直接在内核里,其他大多数功能具有以下三种选择:

1、不使用该功能

2、将这些功能编译成模块的形式

3、将这些功能直接编译进内核当中

那么该如何手动编译内核呢?

手动编译的方式:

使用make gconfig命令,不过使用该命令适用于Gnome桌面环境,且需要安装图形开发库

使用make kconfig命令,该命令适用于KDE桌面环境,且需要安装图形开发库

不过最常见的方式是使用make menuconfig命令来编译,使用该命令会产生一个窗口界面

在该窗口下有许多参数可以选择

然后选择完成之后执行make modules_install来安装编译的模块

最后执行make、make install来完成整个编译过程

在二次编译前,最好先执行make clean命令来清理上次编译过程中产生的一些配置文件,核心文件(.config)不会被清理掉

如果是第一次编译,也最好执行make mrproper命令来清理一些残留文件,不过该命令也会将核心配置文件(.config)删除掉,所以建议在执行该命令前,最好将 .config文件备份一下

screen命令:
screen -ls: 显示已经建立的屏幕
screen: 直接打开一个新的屏幕
    Ctrl+a, d: 拆除屏幕
screen -r ID: 还原回某屏幕
exit: 退出

linux学习之路之模块管理和内核编译

时间: 2024-10-22 01:58:17

linux学习之路之模块管理和内核编译的相关文章

linux学习之路之磁盘管理和文件系统三

ext3文件系统和ext2文件系统的区别? 在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上.而当系统重启后,系统可能会对没有保存的数据进行数据恢复.但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整.不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的.所以在这种情况下,也就

linux学习之路之目录管理和文件管理

我们知道linux文件系统是一个树型结构,在最上层是'/'目录,根目录的下面就是其他目录,而这些目录下面又可以有多个子目录,这样一层一层的就形成一个树型结构图.那是不是我们查找某一个文件必须要从根目录开始往下查找的呢?当然不是,在这里我将会介绍两种路径方式:相对路径和绝对路径. 什么是相对路径和绝对路径? 绝对路径:就是从'/'根目录开始往下一级一级的查找,直到目的所经过的线路. 相对路径:就是相对当前位置而言来找到目的地所经过的线路. 目录的创建 mkdir:用于创建目录 语法格式:mkdir

linux学习之路之磁盘管理和文件系统二

从前面的学习中,我们知道磁盘可以划分多个分区,每一个分区可以经过高级格式化以后,就形成了一个文件系统.那么在Linux系统中该如何创建分区呢? 使用fdisk命令可以来创建分区 语法格式为:fdisk [-l] 设备文件名(不能加数字) -l:显示指定硬盘上所有的分区内容.后面不加设备,则显示系统上所有的设备的所有分区内容. 不加任何选项时,可以用来创建分区. 使用fdisk 设备文件名(不能加数字) 其中这些子命令表示如下意思: p:显示当前硬盘上面的所有分区,包括没有保存的. n:表示创建新

Linux学习之路1-用户管理和权限管理

用户管理和权限管理 用户 linux的用户账号记录主要存放在/etc/passwd,每增加一个用户就会新增一行.每一行一共有7个字段,用冒号分隔 每个字段的含义: aa:x:300:503::/home/database:/bin/bash 用户名:密码:UID:GID:注释:家目录:用户默认shell 我们来解析一下每一个字段的含义 用户名:也就账号名,有字母.数字.字符组成,不能以数字开头 密码:这里的密码会用X字符代替,为了安全,真正的密码存放在/etc/shadow里面 UID:用户ID

linux学习之路之进程管理

什么是进程? 所谓进程就是将一个二进制文件加载到内存形成的一个个体,这就是一个进程. 在我们的linux系统中,系统只识别二进制文件,所以一个系统要想正常的运行时,必须启动一些二进制文件,从而形成进程,在以这些进程的方式去执行相应的任务. 我们常常听到所谓的程序,那么程序和进程是什么关系呢? 刚刚说过进程是由二进制文件加载到内存中形成的.而这些二进制文件就是程序. 可以这么来理解: 程序是实实在在地文件,是存放在磁盘上的. 进程是一个逻辑概念,进程是存在内存当中的,所以当机器重启,这些进程也随之

Linux学习之路5-磁盘管理及文件系统管理

磁盘管理及文件系统管理 Linux磁盘管理 分区工具fdisk (最多支持一个硬盘划分15个分区) 管理子命令: n 新建 p 显示分区 t 更改分区类型 d 删除分区 l分区类型说明 w 保存退出 q 放弃保存退出 m 获取帮助 注意:创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别,可以使用以下命令让系统识别: CentOS 5上使用: partprobe [DEVICE],例如pratprobe /dev/sdb1 CentOS 6,

Linux学习之路4-磁盘管理、文件系统简介

(注意:文件系统大部分内容放到下一章了) Linux磁盘管理 分区工具fdisk (最多支持一个硬盘划分15个分区) 管理子命令: n 新建 p 显示分区 t 更改分区类型 d 删除分区 l分区类型说明 w 保存退出 q 放弃保存退出 m 获取帮助 注意:创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别,可以使用以下命令让系统识别: CentOS 5上使用: partprobe [DEVICE],例如pratprobe /dev/sdb1

Linux学习之路-权限的管理

权限管理 文件权限: 用户对文件的访问权限有三种: r,w, x  即读.写.执行 目录权限(这里的x权限和文件的有点不一样要留意): r:可使用ls命令列出目录中的文件或子目录列表:注意:如果只有r权限没有x权限,是不能列出该目录中的文件和子目录的 w:可在此目录中创建或删除文件: x:可使用'ls -l'列出目录文件及子目录的详细属性信息:可使用cd命令切换工作目录为指定目录:简单来说就是没有x权限就进不了这个目录 文件的权限主要针对三类对象进行定义: ownuer:u, 属主: group

Linux学习之路—3.权限管理

重新挂载文件系统使修改生效,也可以重启系统. 使用命令开启acl权限:mount -o remount ,acl 分区目录 1. /etc/fstab 自动挂载配置文件 2.查询acl权限是否启用(默认都启用了) -------------------------------------------------------------------------------------------------------------------- 3.查看ACL命令:getfacl 文件名 4.设定