Questions tagged «kernel»

有关UNIX内核的所有内容:开发,配置,编译,设计等。

2
拥有多个版本的Linux内核好吗?
一次,我正在安装一些内核补丁,而在拥有数百个客户端的实时服务器上出了点问题。系统中只有一个内核。因此,服务器停机了一段时间,并使用现场CD,我们使系统启动并运行并进行了进一步的修复工作。 现在我的问题是:拥有2个版本的内核是一个好主意,这样,如果内核损坏了,我们总是可以使用另一个可用的内核重新启动?请告诉我。 另外,同一内核可以有2个版本吗?这样在发生内核损坏时可以选择另一个内核? Edited: My Server Details: 2.6.32-431.el6.x86_64 CentOS release 6.5 (Final) 我如何拥有该内核的相同副本,以便在内核损坏时可以启动备份内核?
14 linux  centos  kernel 

5
如果不是用编程语言实现的话,“系统调用”是什么意思?
我想了解“系统调用”一词。我很熟悉,系统调用用于从用户空间应用程序获取内核服务。 我需要澄清的部分是“系统调用”和“系统调用的C实现”之间的区别。 这句话使我感到困惑: 在类似Unix的系统上,该API通常是C库(libc)的实现的一部分,例如glibc,该库为系统调用提供包装函数,通常将其命名为与调用的系统调用相同的名称。 什么是“他们调用的系统调用”?他们的来源在哪里?我可以直接将它们包含在我的代码中吗? 从一般意义上讲,“系统调用”只是一个POSIX定义的接口,但实际上要查看实现,可以检查C源代码,并在其中查看内核通信的实际用户空间实际上如何运行? 背景说明:最后,我试图了解每个c函数是否最终与中的设备进行交互/dev。
14 kernel  c  posix  system-calls 

6
Busybox ping IP有效,但是主机名nslookup失败,并显示“地址错误”
我正在编译自己的3.14内核。我担心我可能遗漏了一些重要的网络功能来使DNS工作。 我无法解析域名。我可以ping我的DNS服务器。我可以解决在其他计算机上使用该DNS的问题,因此我知道它不是服务器。 ~ # cat /etc/resolv.conf nameserver 192.168.13.5 ~ # nslookup google.com Server: 192.168.13.5 Address 1: 192.168.13.5 nslookup: can't resolve 'google.com' ~ # ping -c 1 google.com ping: bad address 'google.com' ~ # ping -c 1 192.168.13.5 PING 192.168.13.5 (192.168.13.5): 56 data bytes 64 bytes from 192.168.13.5: seq=0 ttl=128 time=0.382 …


3
Linux内核如何处理共享的IRQ?
根据到目前为止的读物,“当内核收到中断时,将调用所有已注册的处理程序。” 我了解每个IRQ的已注册处理程序都可以通过进行查看/proc/interrupts,并且我也了解已注册处理程序来自调用了request_irq传递大致形式的回调的驱动程序: irqreturn_t (*handler)(int, void *) 根据我所知道的,应该调用与特定IRQ相关的每个中断处理程序回调,并且由处理程序确定是否确实应由该中断处理该中断。如果处理程序不应该处理特定的中断,则它必须返回内核宏IRQ_NONE。 我无法理解的是,每个驱动程序如何确定是否应该处理中断。我想如果他们期望中断,他们可以在内部保持跟踪。如果是这样,我不知道他们将如何处理同一个IRQ后面的多个驱动程序都希望中断的情况。 我试图了解这些细节的原因是因为我弄乱了在kexec系统操作过程中重新执行内核的机制,同时使用了PCIe桥以及下游PCI上的复位引脚和各种寄存器设备。这样做时,重新启动后,我可能会出现内核崩溃,或者其他驱动程序抱怨即使没有进行任何操作,它们也会收到中断。 处理程序如何决定应由其处理中断是一个谜。 编辑:如果相关,则所讨论的CPU体系结构为x86。
14 linux  kernel  pci  interrupt  irq 

3
增加内核内存大小
我有一个带有512MB RAM的嵌入式板,运行Linux 2.6.29和UBoot引导程序。但是内核只能使用128MB的RAM。 我尝试更改的值XCODE_MEMSIZE,我认为该值确定内核使用多少RAM。 当我将其设置为512时,内核在启动时崩溃。是否还有其他需要更改的配置参数?

2
内核/发行版的发行版和版本有什么区别?
我使用以下命令查看内核的名称,发行版和版本。 -bash-4.1$ uname -s Linux -bash-4.1$ uname -r 2.6.32-279.el6.x86_64 -bash-4.1$ uname -v #1 SMP Wed Jun 13 18:24:36 EDT 2012 内核的发行版和版本之间有什么区别和关系?谢谢! 对于Linux发行版(例如Ubuntu,Mint等),是否存在类似问题?即Linux发行版和版本之间有什么区别和关系?
14 kernel 

3
如何生成Module.symvers?
我最近经历了解包内核源rpm离系统(OpenSuse)?; 并且在我的机器上花费了超过10个小时后,想象一下我惊奇的发现,在完成上面描述的过程之后,我什么Module.symvers都找不到! 当我搜索“ generate Module.symvers”时,得到以下信息: 注意:即使 设置了CONFIG_MODVERSIONS,“ modules_prepare”也不会生成Module.symvers 。因此,需要 执行完整的内核构建以使模块版本控制工作。 (Linux内核文档:: kbuild:modules.txt) ...但是我并没有真正理解它-上一步中没有构建内核(在上面的链接中进行了描述吗?我确定知道CC花费超过10小时才能生成一堆* .o文件和LD来链接它们,因此必须已经构建了一些东西,如果是,那么在哪里Module.symvers呢? 用更明确的术语来说,究竟应该调用什么命令来生成Module.symvers?我知道那make prepare将行不通-但是命令将是什么?




1
如何(真正)在Linux中禁用NCQ
我在VHDL中实现了自己的串行ATA主机总线适配器(HBA),并将其编程到FPGA上。FPGA是可以用任何数字电路编程的芯片。它还配备了串行收发器,可为SATA或PCIe生成高速信号。 该SATA控制器支持SATA 6 Gb / s线速,并使用ATA-8 DMA-IN / OUT命令在设备之间最多传输32 MiB数据块。经验证,该设计可在最高速度下工作(例如,三星SSD 840 Pro-> 550 MiB / s以上)。 在对多个SSD和HDD设备进行了一些测试之后,我购买了一个新的Seagate 6 TB存档HDD(ST6000AS0002)。该HDD的读取性能高达190 MiB / s,但写入性能却只有30到40 MiB / s! 因此,我更深入地研究并测量了传输的帧(是的,在FPGA设计中是可能的)。据我所知,Seagate HDD已准备好一次接收传输的前32 MiB。传输速度最高为580 MiB / s。之后,HDD将剩余字节停顿800毫秒以上!然后,HDD准备接收下一个32 MiB,并再次停顿800 ms。1 GiB传输总共需要30秒钟以上,大约等于35 MiB / s。 我假设此HDD具有32 MiB写高速缓存,该高速缓存在突发周期之间刷新。小于32 MiB的数据传输不会显示此行为。 我的控制器使用DMA-IN和DMA-OUT命令来传输数据。我没有使用QUEUED-DMA-IN和QUEUED-DMA-OUT命令,它们由具有NCQ功能的AHCI控制器使用。在FPGA平台上添加AHCI和NCQ非常复杂,我的应用层不需要。 我想在我的Linux PC上重现这种情况,但是Linux AHCI驱动程序默认情况下启用了NCQ。我需要禁用NCQ,因此我找到了描述如何禁用NCQ的网站,但是它不起作用。 Linux PC的写入性能仍然达到190 MiB / s。 > …
13 linux  kernel  drivers  sata 

3
Linux如何加载“ initrd”映像?
我一直在尝试了解引导过程,但是我头顶上只有一件事。 一旦启动Linux内核并安装了根文件系统(/),就可以运行程序并可以集成其他内核模块以提供其他功能。要挂载根文件系统,必须满足某些条件。内核需要相应的驱动程序来访问根文件系统所在的设备(特别是SCSI驱动程序)。内核还必须包含读取文件系统所需的代码(ext2,reiserfs,romfs等)。还可以想到,根文件系统已被加密。在这种情况下,需要密码来挂载文件系统。 初始ramdisk(也称为initdisk或initrd)精确地解决了上述问题。Linux内核提供了一个选项,即将小型文件系统加载到RAM磁盘,然后在安装实际的根文件系统之前在其中运行程序。initrd的加载由引导加载程序(GRUB,LILO等)处理。引导加载程序仅需要BIOS例程即可从引导介质加载数据。如果引导加载程序能够加载内核,则它也可以加载初始虚拟磁盘。不需要特殊的驱动程序。 如果/ boot不是一个不同的分区,而是/分区中的分区,那么引导加载程序是否不要求SCSI驱动程序访问“ initrd”映像和内核映像?如果您可以直接访问图像,那么为什么我们确实需要SCSI驱动程序?
13 linux  kernel  boot  initrd 

1
可以防止程序启动时的熵消耗吗?
我将Knoppix(或其他Live CD / DVD)用作创建有价值的加密密钥的安全环境。不幸的是,在这样的环境中,熵是有限的资源。我只是注意到,每个程序启动都消耗一些熵。这似乎是由于某些堆栈保护功能需要地址随机化所致。 不错的功能,但在我的情况下完全没用,而且更糟。是否有可能禁用此功能?我希望有一个允许我继续使用原始的Knoppix(或任何其他形式)图像,并且只需要在运行时进行一些配置的图像。 我读到这是glibc引起的。我很惊讶,strace -p $PID -f -e trace=open当我启动程序时,反对bash不会显示对/ dev / random的任何访问。但是我不熟悉execve()和链接程序的交互。
13 linux  kernel  security 

3
关于SSD nukes系统性能的大量写入活动
我注意到当我做大量的写应用程序时,整个系统会变慢。为了进一步测试,我运行了这个(相对)低CPU高磁盘活动: john -incremental > file_on_SSD 这每秒将数万个字符串抽出到我的系统磁盘上的文件中。 执行此操作时,鼠标会滞后,TTY变得无响应,应用程序“消失”,并且通常整个计算机都无法使用。当我最终可以使用Control + C时john,系统将在几秒钟后恢复到完整的状态。 这是一个极端的例子,但是我遇到了类似的问题,即写入强度较低的活动(例如从快速的源中复制大文件或转码)的活动较少。 我的主操作系统磁盘是带有EXT4 的相当快的SSD(OCZ Agility 60GB)。如果将johnEXT4的输出写入机械磁盘,尽管速度慢得多(SSD每秒约42,000个字,机械速度8,000 w / s),但我不会遇到同样的速度下降。吞吐量可能是相关的。机械磁盘也与系统无关。只是数据而已。 而且我正在使用内核2.6.35-2,但是我注意到了这个问题,因为当我大概在使用.31或类似的东西时,我得到了这个SSD。 那么,是什么原因导致经济放缓?EXT4问题?内核问题?SSD问题?上述所有的?还有吗 如果您认为我需要进行其他测试,只需在注释中告诉我该怎么做,然后将结果添加到问题中即可。
13 kernel  performance  io  ssd 

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.