草庐IT

linux - 关闭源代码 Linux 内核模块?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭7年前。Improvethisquestion我的理解是某些内核模块(例如专有的Android图形驱动程序)不会提供其实现的完整源代码。如果这是真的,制造商是如何规避GPL许可的?

linux - 如何设置 linux 内核不发送 RST_ACK,这样我就可以在原始套接字中提供 SYN_ACK

我想问一个关于原始套接字编程和linux内核TCP处理的经典问题。我已经对一些相同的线程进行了研究,例如linuxrawsocketprogrammingquestion,HowtoreproduceTCPprotocol3-wayhandshakewithrawsocketscorrectly?,和TCPACKspoofing,但仍然无法得到解决方案。我尝试制作一个不监听任何端口的服务器,但会嗅探来自远程主机的SYN数据包。服务器做一些计算后,会发回一个SYN_ACK包给相应的SYN包,这样我就可以手动创建TCP连接,而不包括内核的操作。我已经创建了原始套接字并通过它发送了SYN_A

linux - 如何针对新源编译内核模块

我正在尝试编译一个HelloWorld模块。我的系统中有一个全新的Ubuntu,它没有任何已编译的内核。我的内核是:2.6.32-34-通用我给出了以下Makefile并得到了错误:obj-m+=hello-1.oall:make-C/lib/modules/$(shelluname-r)/buildM=$(PWD)modulesclean:make-C/lib/modules/$(shelluname-r)/buildM=$(PWD)clean#makemake-C/lib/modules/2.6.32-34-generic/buildM=/home/james/Desktop/he

linux - Linux内核设备驱动中的filp_open

filp_open允许我们打开文件系统中的文件。但是从内核空间使用安全吗?如果使用需要注意什么。这是否也会在未来的Linux内核版本中得到支持。目前使用2.6.28Linux内核版本。 最佳答案 很多驱动程序都使用filp_open()函数,它是在内核空间中打开文件的好helper。没有理由认为它不会继续得到支持。甚至内核的文件系统子系统也使用filp_open()。 关于linux-Linux内核设备驱动中的filp_open,我们在StackOverflow上找到一个类似的问题:

linux - 关于内核中的 CONFIG_NO_HZ

因此,如果设置了CONFIG_NO_HZ,我相信它会生成无滴答内核。但我相信这只是意味着当系统空闲时,它可能会变得不滴答以节省能源。当它工作时,它仍然是tick内核,对吗?感谢:> 最佳答案 基本上,是的。有一些正在进行的项目可以使周期性滴答声在不空闲时也消失,但这是一项需要进行大量更改的大量工作,目前尚不清楚它是否会完成。 关于linux-关于内核中的CONFIG_NO_HZ,我们在StackOverflow上找到一个类似的问题: https://stack

linux - 为什么每次从内核模块读取时 CR3 寄存器内容都不同?

我正在编写一个内核驱动程序,目的是剖析Linux内核页表。我发现,每当我从驱动程序内部读取CR3寄存器时,每次读取CR3的内容都会不同!为什么会这样?既然驱动在内核态执行,CR3需要指向内核页目录(对吧?),那为什么CR3每次都变了?如果CR3不断变化,驱动程序如何按预期正确进行内存访问? 最佳答案 正如其他人所提到的,您看到的是当前进程的“分页表”。对于x86,输入低于3的特权级别不会更改页表。这就是大多数操作系统为内核保留虚拟地址空间部分的原因。该空间中的内存被映射到每个进程中。通过将页框中的u/s标志设置为“0”,内核地址空间

来自 ISO 镜像的 Linux 内核版本

使用uname命令,它有不同的选项,我可以在机器上安装内核版本。假设我想从ISO镜像中找出内核版本,只需挂载它(无需安装)。如何在不安装的情况下从ISO中找到完整的内核版本? 最佳答案 您可以使用命令file。file/mnt/boot/vmlinuz-x.y.z这将生成这样的输出/boot/vmlinuz-3.6.10-2.fc17.x86_64:Linuxkernelx86bootexecutablebzImage,version3.6.10-2.fc17.x86_64(mockbuild@)#1SMPTueDec1118:07

linux - Linux 内核中 slab 内存管理的缓存着色

最近看了slab系统的缓存着色,没看懂。为什么给不同slab中的对象添加不同偏移量的缓存着色可以提高性能?我的初步猜测是:具有缓存偏移量的slab分配器,尝试将slab的第一个对象放在不同缓存颜色的内存中。如果客户端从这些slab中分配N个对象,它将获得具有N种缓存颜色的N个对象。我的猜测是否正确,或者有人可以给我更多提示吗?非常感谢, 最佳答案 我建议阅读“UnderstandingLinuxvirtualmemory”一书-slab分配器一章。正如它引用的那样,Thefinaltaskoftheslaballocatorisop

linux - 使内核头文件对用户空间可用

我已经编写了一个自定义设备驱动程序作为树内核模块。该设备驱动程序定义了一组用户空间应用程序所需的ioctl。ioctl在自定义头文件中定义。这个头文件的标准安装位置是什么?这应该是/usr/include吗?或者可能与安装标准内核包含文件的位置相同?我已阅读thisquestion但它没有指定自定义头文件的安装位置。 最佳答案 我认为您应该像对待其他任何人一样对待您的公共(public)用户空间APIheader,并将它们放在/usr/include下。如果它是一个小API,则作为单个文件,或者在子目录中。只需确保在该header中

linux - 在 Linux 内核中支持浮点运算的开销

众所周知,基于Linux/BSD的内核不支持浮点(FP)算法。在内核中处理FP寄存器的开销是多少? 最佳答案 通常的回答是,如果内核不使用float,则不必在进入内核时保存浮点寄存器或在退出时恢复它们。这将所有系统调用的成本削减数百个周期。我不知道是否有人尝试将这种节省与内核可以不加选择地使用这些寄存器时可能获得的性能改进进行比较。请注意,如果您小心谨慎,您可以在内核中使用它们,并且这是在可以获得巨大速度优势的环境中完成的,例如使用SSE指令加速memcpy等。(在Linux源代码中查找对kernel_fpu_begin的调用。)