linux为啥要编译内核

author author     2023-05-12     219

关键词:

新手,不懂,希望讲的低级点,以下是几个问题。
1:平时在linux下c编程,也没有用到编译内核什么的,经常看到“内核源码树”这个词汇,就不懂的。难道我正在使用的这个linux系统不是编译出来的一个系统吗?为什么还要再编译一次?
2:下载源码后编译出来的东西,和我正在使用的linux系统,差别在哪。
3:想学习linux驱动,必须要买板子吗?现在真没头绪啊。

Linux内核版本是不断更新的,通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。而已安装好的Linux系统如果不是滚动升级的,或者没有内核更新选择的话,如果用户想要使用这些新特性,或想根据自己的硬件平台定制一个更高效,更稳定,更快速的内核,就需要重新编译内核。

下载源码编译内核,如果不做相关优化,直接编译,结果就跟现在正在使用的系统没什么区别。

学习linux驱动,必须要有实践的平台环境吧,至于需不需要购置平台,要看你的学习目的了。追问

还是不太理解。比如,我装了redhat 9,内核版本是2.6,我在官网下载了3.0的内核代码,然后我在机器上编译后,结果是什么?这些编译的结果代替了我现有系统,也就是我的redhat内核版本变成3.0?如果不是,那目的是什么的?

追答

新旧内核是共存于/boot下的,由grub引导菜单选择不同的内核启动系统。
如果编译的内核运行正常,可以删除原内核,也可以保留。如果新内核有问题,还可以用原来的内核引导进入系统,重新配置内核选项编译。

参考技术A 因为linux是一个开源的操作系统,提供了强有力的开放接口,允许用户自行开发、修改,从而可能会有用户的的系统经过修改,不再是一个固有的东西,这是就需要编译内核 参考技术B 编译出的不同系统就跟你用的QQ软件的不同版本一样,有不同的功能,来满足不同的需要,内核源码树就是内核代码的目录 参考技术C 内核的任务是管理 内存,CPU,磁盘,外部设备驱动程序的集合,也就是传统意义上的操作系统,内核代码树就是指内核的源代码。你用的Linux系统是由内核以及gnome桌面应用程序和shell命令管理模块构成。内核只能保证机器正常运行,只是没有桌面的枯燥的操作系统而已。 参考技术D 1.这是因为内核源码里面有一些头文件。
2.系统里有一些必要的组件,内核则没有。
3.想买就买,有总比没有好

鸟哥的linux,为啥要分配biosboot分区?为啥/boot要分配1g这么多?

因为boot文件系统必须在主分区才能启动,所以要做一个boot分区。下面我对不知道怎么分区的用户而言说说高级用户应该明白自己需要什么,例如确定自己使用的BIOS可能无法读取100GB后的位置或是要使用LVM等。 linux社区的一... 查看详情

在linux2.6内核中为啥找不到inet

参考技术A如果编译qt-desktop版,关键你的开发版的linux中的x-server是否有显卡驱动,并支持opengl这个才是重要,如果你的x-server只是驱动framebuffer那是无法使用opengl加速的如果编译qt-embeded版,那就看你的显卡提供了qt所用的opengl加速插件... 查看详情

linux进程为啥有用户栈和内核栈,

linux下的cpu有两个状态:内核态和用户态,内核态的cpu的权限高于用户态下的cpu。linux下的内存分为用户态内存和内核态内存,一般4个G内存,3个G的分给用户态,1个G分给内核态。linux进程有时需要调用内核资源时,如读写文件,... 查看详情

linux内核配置编译以及模块开发(代码片段)

...Linux内核架构虚拟文件系统内核源码结构Linux内核配置与编译为什么要配置内核?内核配置方法编译内核过程Linux内核模块开发什么是内核模块内核模块设计安装与卸载模块可选信息模块申明模块参数符号导出总结-对比应用编... 查看详情

linux内核配置编译以及模块开发(代码片段)

...Linux内核架构虚拟文件系统内核源码结构Linux内核配置与编译为什么要配置内核?内核配置方法编译内核过程Linux内核模块开发什么是内核模块内核模块设计安装与卸载模块可选信息模块申明模块参数符号导出总结-对比应用编... 查看详情

不修改linux内核文件,直接用makefile编译驱动,是否要先把内核编译一遍?

不修改内核文件编译驱动模块:建立一个名字为led的文件夹。把LED驱动源码micro2440_leds.c复制到该目录。在该目录下创建Makefile文件如下:点击(此处)折叠或打开obj-m:=micro2440_leds.oKERNEL_DIR?=/home/samba/linux-2.6.32.2-micro2440all: $(MAKE)-C$(KERN... 查看详情

为啥linux编译内核模块时报错,说找不到/sys/types.h,/sys/socket.h/等头文件???

这些文件都在/usr/include/中啊!!!/sys/socket.h你还能在内核模块中使用???这个不是用户空间的API吗???/usr/include下面统统是用户空间的使用的,内核模块中不能使用/usr/include下面的函数!!!只能使用/usr/src/下面的头文件所... 查看详情

为啥编译内核时不能得到相同的符号?

】为啥编译内核时不能得到相同的符号?【英文标题】:Whycan\'tIgetthesamesymbolswhencompilingkernel?为什么编译内核时不能得到相同的符号?【发布时间】:2021-10-1510:47:50【问题描述】:我正在编译Centos7.6.1810的内核(4.14.0-115.el7a.0.1.aarch... 查看详情

linux内核源码如何编译

...完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。3、编译,依次执行make、makebzImage、makemodules、makemodules4、安装,makeinstall5、.创建系统启动映像,到/boot目录下,执行mkinitramfs-oinitrd.img-2.6.3... 查看详情

为啥linux系统很难保证向下兼容

如题,总有好一些程序,在新的内核下就不能编译了,要修改,特别是驱动程序方面,不能像windows下那么向下兼容(比如win7可以装xp的驱动)Linux是个非常活跃的项目,各类库、应用程序也在不断发展,添加新功能的同时,还在... 查看详情

如何编译一个linux下的驱动模块

...得到满足。首先,读者要保证你有适合于你的内核版本的编译器、模块工具,以及其他必要工具。在内核文档目录下的文件Documentation/Changes里列出了需要的工具版本;在开始构造内核前,读者有必要查看该文件,并确保已安装了... 查看详情

为啥打印不出linux内核调试信息

参考技术A用dmesg-c命令查看打印信息。ctrl+alt+F1切换到纯终端,可以在终端直接看到打印信息 查看详情

最近沉迷redis网络模型,无法自拔!终于知道redis为啥这么快了

1.用户空间和内核态空间1.1为什么要区分用户和内核服务器大多都采用Linux系统,这里我们以Linux为例来讲解:ubuntu和Centos都是Linux的发行版,发行版可以看成对linux包了一层壳,任何Linux发行版,其系统内核都是Linux。我们的应用都... 查看详情

为啥内存 NX 需要 Linux 内核中的硬件支持?

】为啥内存NX需要Linux内核中的硬件支持?【英文标题】:WhydoesmemoryNXneedhardwaresupportinLinuxkernel?为什么内存NX需要Linux内核中的硬件支持?【发布时间】:2015-09-2505:15:03【问题描述】:在Linux内核中,页表项(PTE)包含R/W位,但没有执... 查看详情

问一下,为啥代码在redhat里面gcc编译出错,提示找不到module.h等头文件

在网上拷贝了一些关于linux钩子的函数使用,问一下,为什么代码在RedHat里面gcc编译出错,提示找不到module.h等头文件,然后我下了3.2.6的内核解压出来把module.h拷到usr/include/linux目录下但是出了一大堆关于头文件内部的问题,,... 查看详情

linux为啥要采用三级页表?该机制如何工作

  Linux启动并建立一套完整的页表机制要经过以下几个步骤:  1.临时内核页表的初始化(setup_32.s)  2.启动分页机制(head_32.s)  3.建立低端内存和高端内存固定映射区的页表(init_memory_mapping())  4.建立高端内存永久映射区... 查看详情

编译linux内核问题

...stamp/build/kernel]错误2这要怎么解决?参考技术A可能原因是编译器版本与内核版本匹配度的问题。请用gcc4或gcc3的版本试试 参考技 查看详情

linux内核移植入门(代码片段)

...Makefile各子目录Makefile如何配置内核?1.配置仓库选取2.交叉编译器的修改3.体系结构体的选择4.修改配置文件内核编译编译结果:几种linux内核文件的区别开发板上U-Boot启动linux内核内核Kconfig语法使用1.makemenuconfig是如何找到Kconfig࿱... 查看详情