一、内核的介绍
Linux内核是Linux操作系统的核心内容,它负责管理系统的硬件资源,并为上层的应用程序提供接口。(在上文都有所介绍)
功能:
进程管理:内核负责创建、调度、同步和终止进程。它还管理进程间的通信和数据传递,如管道、信号量和消息队列。
内存管理:内核负责分配和回收内存资源,确保每个进程都有足够的内存空间,同时防止一个进程访问另一个进程的内存空间。这包括内存分配、虚拟内存管理、内存保护等功能。
文件系统:Linux内核提供了多种文件系统的支持,如ext4、XFS、Btrfs、FAT32、NTFS等。它负责文件的创建、删除、读写、权限控制等操作。
设备驱动:内核包含了与硬件设备通信的驱动程序,这些驱动程序允许操作系统控制和管理各种硬件设备,如硬盘、显示器、键盘、鼠标等。
网络通信:内核实现了网络协议栈,支持TCP/IP和其他网络协议,使得Linux系统能够进行网络通信和数据传输。
安全性:Linux内核提供了多种安全机制,包括用户和组权限管理、访问控制列表(ACL)、安全模块(如SELinux)等,以保护系统安全。
虚拟化:内核支持虚拟化技术,如KVM(Kernel-based Virtual Machine),允许在单个物理机上运行多个虚拟机。
电源管理:内核负责管理电源使用,包括节能模式、休眠和唤醒等,以延长电池寿命和提高能效。
系统调用接口:内核提供了系统调用接口,允许用户空间的应用程序请求内核提供的服务,如打开文件、读取数据、执行系统命令等
二、Linux内核编译
1.1首先在官网中下载需要的源代库
The Linux Kernel Archives
本次使用的是2.6.32.2—mini2440
1.2解压下载好的文件(进入到文件所在的目录中进行解压)
sudo tar -xvf +文件名
1.3进入到文件目录
由于这里面的内容很多,文件也很多 所以需要使用makefile或者条件编译来编译 对于条件编译,通过#ifXX #endif来选择编译的对象 对于makefile
在.config文件中设置变量,控制makefile中的需要进行操作的文件或功能。
1.4配置内核(进入到可视化界面去) 配置文件千人千面,所以我们将一个官方的配置文件拷贝到.config中,在其中根据需要进行修改。 (1)首先在顶层目录中将默认配置拷贝到.condig中
cp config_mini2440_ td35.config 第一次编译内核
{
这个命令通常用于配置文件的替换或备份,特别是在嵌入式系统或Linux内核编译环境中,.config 文件经常用于存储内核配置选项。例如,如果你正在为基于ARM Cortex-A8的Mini2330开发板编译Linux内核,你可能会使用特定于该开发板的配置文件(如 config_mini2330_td35)作为起点,并将其重命名为 .config,以便内核编译系统能够识别和使用这些配置选项。
在执行这个命令之后,当前目录下的 config_mini2330_td35 文件将不再存在(因为它已经被复制并重命名为 .config),而 .config 文件将包含原 config_mini2330_td35 文件的全部内容。如果 .config 文件已经存在,它将被新内容覆盖,除非你在 cp 命令中使用了额外的选项(如 -i,它会在覆盖前询问用户
}
(2)在进入到可视化配置界面中
make menuconfig //可视化配置菜单——内核活地图
进入到该图形界面后,进行内核配置。配置时,大部分都是使用其默认选项,小部分才根据需要进行选择。
其中,每一个配置选项有三种选择,它们的含义如下:
<*>或[*]:表示将该功能编译进内核
[ ]:表示不将该功能编译进内核
[M]:表示将该功能编译成在需要时动态插入