标签: kernel

内核源代码树包含什么?这与 Linux 内核头文件有关吗?

在书籍中,我通常会阅读对 Linux 源代码树的引用/usr/src/linux以及通常的子目录集 ( arch, block, crypto, ...)。

我期待这棵树包含组成内核的二进制文件。在我的系统(Ubuntu 10.04)中...

  1. 对于我拥有的不同内核(使用自动软件下载,而不是手动安装),我在这个位置找到了每个内核的两个子目录,如下所示:

    /usr/src/linux-headers-2.6.32-22
    /usr/src/linux-headers-2.6.32-22-generic
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在子目录中,我期望二进制文件等。但是,我检查了相当数量的树,这里的最后一个子目录似乎总是有一个Makefile(在阅读它时,它听起来通常更像是一个配置文件而不是安装文件),偶尔还有一些孤立的其他文件(大部分Kconfig)。

我的问题可能很幼稚,但我有点困惑。是 (2) 我应该在内核源代码树中看到的内容;为什么我明确提到“标题”?我需要linux-generic-headers为其他一些软件安装一段时间,但不确定这是否相关。我意识到makefiles有很好的理由(例如,在/driver子目录中安装模块),但是(几乎)只有makefiles?

source ubuntu kernel

25
推荐指数
1
解决办法
2万
查看次数

25
推荐指数
1
解决办法
2657
查看次数

Linux内核线程真的是内核进程吗?

我在很多地方读到 Linux 为 Java VM 中的每个用户线程创建一个内核线程。(我看到术语“内核线程”以两种不同的方式使用:

  1. 为执行核心操作系统工作而创建的线程和
  2. 操作系统知道并安排执行用户工作的线程。

我说的是后一种。)

内核线程是否与内核进程相同,因为 Linux 进程支持父子进程之间的共享内存空间,还是真的是一个不同的实体?

linux process kernel thread linux-kernel

24
推荐指数
3
解决办法
1万
查看次数

BSD 内核对比 Linux内核?

我想从技术角度了解;BSD Kernel和之间有什么区别Linux Kernel
在 Linux 中,我们可以下载源内核然后patchmakemake modules它。即使我们有多种工具来编辑内核,config例如menuconfig,xconfig和 ... 。
但是我在 BSD 上找不到这么广阔的领域。首先,我可以下载BSD kernel吗?我怎么能配置呢?和 ...

所以我要问的是:(不涉及祖先和词源)

  • Kernel在每种情况下(在)依赖于分布的?
  • 配置Kernel适用于工作的每个和工具的方法?
  • 在每种情况下是否可以完成任何补丁工作?
  • kernel分布范围之外的可用性?( Kernel Sources)?
  • Kernels每种情况下可用的风味( X??BSD/ Linux) 喜欢XEN/Vmware/GEN吗?

linux kernel bsd kernel-modules linux-kernel

24
推荐指数
2
解决办法
2万
查看次数

内核黑客环境

我一直在像 uCOS、ThreadX 这样的嵌入式操作系统中工作。虽然我已经在 Linux 中编写了应用程序,但现在我打算开始学习 Linux 内核。我有几个关于环境的问题。

  1. 哪个是最好的发行版,哪个具有易于使用的内核开发工具?(到目前为止,我已经使用过 RHEL 和 Fedora。虽然我对这些很满意,但看起来 Ubuntu 也有内置脚本可以轻松编译内核,例如make_kpkg等)

  2. 你能描述内核调试的最佳设置吗?在调试其他嵌入式操作系统时,我使用了串口转储进度、JTAG 等。Linux 内核开发人员使用哪种设置?(我的带串口的测试台 PC 是否足以满足我的需要?如果是,如何配置内核以转储到串口?)我打算将内核消息重定向到串行控制台,该控制台将在我的笔记本电脑中读取。

  3. 什么工具最适合调试和跟踪内核代码?如前所述,串行控制台是唯一的方法吗?或者是否存在用于 PC 的任何 IDE/JTAG 类型的接口?

linux debugging kernel development serial-console

22
推荐指数
2
解决办法
3940
查看次数

新的 glibc 版本可以与旧内核一起使用吗?

显然可以编译 glibc--enable-kernel以支持旧的内核版本。但是,我无法找到有关特定 glibc 版本支持哪些内核版本的信息。理想情况下,我希望看到每个 glibc (2.x) 和内核 (2.6.x) 版本的兼容性矩阵。它存在吗?

如果它不存在,也许是因为每个 glibc 版本(在过去 5 年左右)都支持自 2.6.0 以来的所有内核?

(Arch = x86-64,如果这很重要)

linux kernel compatibility glibc

22
推荐指数
3
解决办法
2万
查看次数

我怎么知道哪个 IRQ 导致 CPU 使用率高

由于磁盘控制器故障,我已将服务器从一个主板移到另一个主板。

从那时起,我注意到其中一个核心的 25% 总是会转到 IRQ,但是我还没有设法让自己知道哪个 IRQ 对此负责。

内核是 Linux 2.6.18-194.3.1.el5 (CentOS)。mpstat -P ALL显示:

18:20:33     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
18:20:33     all    0,23    0,00    0,08    0,11    6,41    0,02    0,00   93,16   2149,29
18:20:33       0    0,25    0,00    0,12    0,07    0,01    0,05    0,00   99,49    127,08
18:20:33       1    0,14    0,00    0,03    0,04    0,00    0,00    0,00   99,78      0,00
18:20:33       2    0,23    0,00    0,02    0,03    0,00    0,00    0,00   99,72      0,02
18:20:33       3    0,28    0,00    0,15    0,28   25,63    0,03    0,00   73,64 …
Run Code Online (Sandbox Code Playgroud)

cpu kernel centos

22
推荐指数
3
解决办法
6万
查看次数

我应该如何配置 grub 以从 USB 硬盘驱动器启动 linux 内核?

我在外部机箱中有一个笔记本电脑硬盘驱动器,用作大型笔式驱动器。另外,我在其上安装了 Linux,因此我可以使用我选择的发行版启动任何机器(例如,用于数据恢复或修复 b0rked 系统或仅使用借来的笔记本电脑而不破坏预装的 Windows)。

问题是,根据硬件配置,USB 硬盘驱动器可能在不同路径下可见。对于 grub 配置,我只是使用(hda0,0)它,因为它与启动 grub 的设备相关。我在/etc/fstab. 我还在rootwait内核参数中指定,以便它在尝试挂载设备之前等待 USB 子系统稳定下来。

我应该将什么传递给内核root=?目前,从 pendrive 启动一次,检查调试消息以查看/dev/sdX内核已将哪些设备分配给 USB 驱动器,然后重新启动并编辑 grub 配置。除了Boot from USB hard drive在 BIOS 中启用并将其设置为比内部硬盘驱动器更高的优先级之外,我无法更改 PC 上的任何内容。

有多种 initrd 生成脚本在根设备路径中包含对 UUID 的支持,不幸的是,Gentoo 原生脚本(genkernel)不支持rootwait,我没有运气尝试使用其他脚本。

启动过程是这样的(在 Windows 中非常相似):

  1. BIOS 选择引导设备并加载其 MBR(恰好是 grub stage-1)。
  2. Grub 从它设置为的设备加载它的配置和第 2 阶段文件root,使用(hd0)它从 BIOS 加载的设备。
  3. Grub 加载并启动内核(仍然是相同的编号,所以我可以(hd0,0)再次使用)。
  4. 内核初始化所有内置设备(rootwait现在是不是很神奇)。
  5. 内核挂载它作为传递的分区root(这是一个内核参数,而不是 grub …

linux boot kernel usb grub2

22
推荐指数
2
解决办法
4362
查看次数

为什么在 Vanilla 内核中不包含 grsecurity 补丁?

grsecurity默认情况下,内核中不包含补丁(或其带来的安全功能)的原因是什么?在考虑安全性的好处时,香草内核似乎非常不安全。

如果这是一种权衡(某些应用程序您想避免安全措施),似乎grsecurity可以在 vanilla 内核中启用它。

主流 vanilla 内核中有这么多东西,我很难理解为什么社区不想包含grsecurity.

linux kernel grsecurity

22
推荐指数
2
解决办法
7596
查看次数

OpenWRT 上人类可读的 dmesg 时间戳

dmesg 的输出显示自系统启动以来的秒数+毫秒数。

[   10.470000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[   14.610000] device eth0 entered promiscuous mode
[   18.750000] cfg80211: Calling CRDA for country: DE
[   18.750000] cfg80211: Regulatory domain changed to country: DE
Run Code Online (Sandbox Code Playgroud)

问:如何将秒+毫秒转换为可读格式?

我的消息:

root@OpenWrt:/tmp# dmesg -h
dmesg: invalid option -- h
BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) multi-call binary.

Usage: dmesg [-c] [-n LEVEL] [-s SIZE]

Print or control the kernel ring buffer

    -c      Clear ring buffer after printing
    -n LEVEL    Set console logging level
    -s …
Run Code Online (Sandbox Code Playgroud)

scripting boot kernel openwrt dmesg

22
推荐指数
2
解决办法
3万
查看次数