Questions tagged «linux-kernel»

有关Linux内核和Linux内核相关主题的问题,例如。实现细节,例如系统调用,内核自定义等。对于不涉及内核细节的Linux用户空间主题,[linux]或发行标签更为合适。


1
src版本3. *和3。*-generic之间有什么区别
在我的本地Linux / Ubuntu中,我有两个Linux src目录 /usr/src/linux-3.16.0 /usr/src/linux-3.16.0-generic 我发现3.16.0中的代码比3.16.0-generic中的代码要多得多。我想知道为什么这两个目录以及它们如何不同(它们代表什么?)

2
为什么无线工具版本30成为永久Beta?
我在本问答中找到了一些有关无线工具的好信息。显然,它是由惠普赞助的Jean Tourrhiles在1997年引入Linux内核的。 编辑:看来WE(无线扩展)是由Tourrhiles添加到内核的,而不是无线工具本身。在大多数发行版中都可以使用这些工具,这是与WE进行通信的主要方式。您可以在的内核中看到WE /proc/net/wireless。 发布的最新版本是v29Ubuntu 14和16,但似乎包含v30beta(iwconfig -v)。 我很好奇这个包裹怎么了?为什么“ beta”版本30成为使用的事实上的标准版本? 惠普是否停止了让·图尔希尔斯的资助,所以开发工作停止了?或者,也许已经确定它足够稳定以停止开发,但是如果真是这样,为什么30仍然是beta? 我找到了这个Github页面,但它似乎仅供参考。 版本记录

2
无文件恶意软件在Linux上如何工作?
我了解无文件恶意软件的定义: 并非基于文件而是仅存在于内存中的恶意代码……更具体地说,无文件恶意代码……将自身附加到内存中的活动进程中…… 有人可以解释一下将其附加到内存中的活动进程如何工作的情况吗? 此外,针对此类攻击可以使用哪些(内核)保护/强化措施?

1
为什么用户空间应用程序需要内核标头?
我正在为嵌入式设备构建busy-box和iptables,它们的依赖项之一是内核标头。 我已经在整个文件系统中搜索* .ko文件,但没有找到。所以我得出结论,这些应用程序没有创建任何可加载的驱动程序(内核模块)。 用户空间应用程序还需要内核头文件还有哪些其他情况?

2
printk在内部如何工作?
我知道printf操作系统需要帮助才能完成其工作。 我也知道printf在Linux源代码中不起作用,因为没有库。因此,我们需要printk进行调试。 那么,printk当操作系统仍在引导时,如何工作?

2
为什么Linux内核实际上不在智能节点上时报告“磁盘空间不足”
我的一个朋友喜欢在Linux环境中编程,但对Linux的管理了解不多,最近遇到了一个问题,即他的操作系统(Ubuntu)报告“ XXX卷上的磁盘空间不足”。但是当他去检查卷时,仍然还有700 GB的空间。经过大量的时间浪费之后,他最终能够确定自己没有使用inode。(他在此卷上存储了来自备份系统的许多小增量更新,并通过所有inode进行了刻录。) 他问我为什么Linux内核报告错误消息(“磁盘空间不足”)而不是正确报告(“索引节点不足”)。我不知道,所以我想问一下StackExchange。 有人知道为什么会这样吗?以及为什么这些年来没有得到解决?(我记得1995年有一位朋友告诉我这个问题。)

3
如何编写make menuconfig脚本以自动化Linux内核构建配置?
我想自动化Linux构建,但最终到了我需要运行似乎很手动的步骤的地步:make menuconfig。这似乎在OS和内核配置之间同步配置? cp git-tracked-config .config make defconfig make menuconfig # <- how to automate/script this? make V=s 基本上,如何删除对make menuconfig构建脚本的调用? 顺便说一句,这是对似乎在我从未调用过make menuconfig的情况下发生的构建错误的反应: make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop. 可能是因为makefile本身不存在,或者makefile尚未生成/变形以包含该规则,但这是一个单独的问题,这可能是makefile中缺少规则的原因。 可能有一种更聪明的方法来共同解决这个问题。还有其他我没有跟踪但应该跟踪的配置(例如oldconfig)吗?


1
什么是PCI怪癖?
在阅读有关Linux内核的文章时,我听到很多关于PCI怪癖的信息,但是没有网站解释或定义PCI怪癖。什么是PCI怪癖?
10 linux-kernel  pci 

1
是内核线程进程和守护程序吗?
从Mauerer的Linux内核体系结构中, 内核线程是由内核本身直接启动的进程。他们将内核函数委派给一个单独的进程,并在其中与系统中的其他进程“并行”执行(实际上,与内核本身的执行并行)。内核线程通常称为(内核)守护程序。它们用于执行例如以下任务: 定期将修改的内存页面与页面所源自的块设备同步(例如,使用mmap映射的文件)。 如果很少使用内存页,则将其写入交换区域。 管理延迟的操作。 为文件系统实现事务日志。 基本上,内核线程有两种类型: 类型1-线程启动并等待直到内核请求执行特定操作为止。 类型2 —类型一旦启动,线程就会定期运行,检查特定资源的利用率,并在利用率超过或低于设置的限制值时采取措施。内核使用这种类型的线程进行连续监视任务。 由于Mauerer的书说内核线程是进程,所以我认为它们必须在用户模式而不是内核模式下运行。(或者我错了吗?一个进程可以在不同时间以用户模式或内核模式运行,还是只能以一种模式运行?) 但是Bovet的《了解Linux内核》指出,内核线程仅在内核模式下运行(请参见下面的引用)。两本书中的“内核线程”的概念是否相同? 传统的Unix系统将一些关键任务委托给间歇性运行的进程,包括刷新磁盘缓存,换出未使用的页面,为网络连接服务等。实际上,以严格的线性方式执行这些任务并不高效。如果将它们安排在后台,则它们的功能和最终用户流程都将获得更好的响应。由于某些系统进程仅在内核模式下运行,因此现代操作系统将其功能委托给内核线程,而内核线程不会受到不必要的用户模式上下文的阻碍。在Linux中,内核线程在以下方面与常规进程不同: 内核线程仅在内核模式下运行,而常规进程在内核模式和用户模式下交替运行。 由于内核线程仅在内核模式下运行,因此它们仅使用大于PAGE_OFFSET的线性地址。另一方面,常规过程在用户模式或内核模式下都使用全部四个千兆字节的线性地址。 Mauerer的书说内核线程是直接由内核启动的,似乎还说守护程序是内核线程的同义词。因此,我认为守护程序必须直接由内核启动。 但是https://unix.stackexchange.com/a/193918/674说,screen的守护进程是通过screen用户界面启动的(请参见下面的引用)。我认为screen用户界面是一个过程,而不是内核。是的概念daemon在Mauerer的书,并在链接的答复同一个概念? 首次启动时screen,实际上是在启动用户界面(ui),默认情况下会创建一个守护程序(会话管理器)。 通常,您如何理解“内核线程”,“进程”和“守护程序”的概念,它们之间的关系和差异?

3
为什么Linux在许多文件上存储CPU温度?
我有一台2 cpus的笔记本电脑(thinkpad)。目前,我可以使用cat(1)从以下文件中读取CPU温度: cat /sys/class/thermal/thermal_zone0/temp cat /sys/class/thermal/thermal_zone1/temp cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input cat /sys/devices/LNXSYSTM:00/LNXCPU:00/thermal_cooling/subsystem/thermal_zone1/temp cat /sys/devices/LNXSYSTM:00/LNXCPU:01/thermal_cooling/subsystem/thermal_zone0/temp 我的问题是为什么内核将这些信息存储在这么多不同的地方,并且哪个是读取CPU温度的“标准”文件? 这是由于systemd(我正在使用Arch Linux)发生,还是诸如Slackware之类的非systemd Linux发行版采用了不同的方法?

2
Linux版本号约定
对于Linux的第一个版本,正确的版本号是0.01(如Tanenbaum的OS书中所示),还是应该将第一个版本写成0.0.1(包括点)?

7
休眠恢复在Linux内核4.9.0,Debian 9上失败
我最近将内核从3.16.4(Debian jessie)升级到4.9.0(Debian Stretch)。一切都很好,直到我尝试“休眠”(挂到磁盘)。 当我在LXDE中使用休眠选项时,它似乎处于休眠状态。我可以听到磁盘主轴的滴答声和写入数据。但是从休眠状态恢复时出现问题。内核成功地从交换中恢复了映像,但随后冻结并重新启动,所有工作都丢失了。我在互联网上的任何地方都找不到答案。人们只是在解决一些错误,包括不设置/etc/initramfs-tools/conf.d/resume或设置内核参数,或在/ etc / fstab中输入错误。我说的对。在/etc/initramfs-tools/conf.d/resume中更正UUID,更正fstab且未设置恢复内核参数。 我将交换分区从扩展分区的外部移到了主分区。UUID已保存并应用于新的交换。 系统到达“还原映像100%”,然后到达“挂起的控制台”,然后关闭电源并正常启动,而所有工作都将丢失。 尝试全新安装,但没有运气。 仅在i386(32位x86)上发生,而amd64(64位x86)不受影响。 磁盘分区表布局: NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 HDD <ROOT-UUID> / └─sda2 swap HDD-SWAP <SW-UUID> [SWAP] sr0 升级之前,sda2是逻辑的(在内部扩展)。 Fstab: UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1 UUID=<SW-UUID> none swap sw 0 0 /etc/initramfs-tools/conf.d/resume RESUME=UUID=<SW-UUID> 内核cmdline BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet …

1
什么是通用套接字,它与网络设备有什么关系?
我试图了解网络驱动程序如何在Linux下工作。此次问答表明,Linux中的网络设备未由设备文件表示。它指出网络驱动程序可以使用sockets。 例如,这引用了如何通过ioctl呼叫来设置网络设备。ioctl但是,由于没有用于网络驱动程序的设备文件,因此需要一个文件描述符,唯一可以传递的文件描述符是套接字中的文件描述符。 这使我明白了问题的重点。到目前为止,似乎是物理网卡的软件表示形式的网络接口实际上是套接字的劣等对象。 但是,从抽象的角度来说,套接字是什么,它仅仅是支持推送通知的设备文件的另一个名称吗?我通过用户空间应用程序绑定到网络接口上的address:port对的连接点来理解TCP套接字。我不了解套接字是设置网络接口的先决条件。 Linux上的网络接口(如eth0列出的ifconfig)是否可以不带套接字? ifconfig或某些网络管理器守护程序是否保持套接字打开以允许我们设置网络接口选项?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.