标签: kernel-parameters

无法编译内核:错误,内核不支持 PIC 模式

我在重新编译内核时遇到了麻烦。下载源码包,解压运行

fakeroot make-kpkg kernel_image  
Run Code Online (Sandbox Code Playgroud)

导致我出错

               [...]

  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
  CHK     include/generated/package.h
  UPD     include/generated/package.h
  CC      kernel/bounds.s
kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
Run Code Online (Sandbox Code Playgroud)

该问题可以通过更改使用 获得的内核配置来解决make menuconfig

如何摆脱这个错误并成功编译

kernel-modules linux-kernel kali-linux kernel-parameters

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

选择用于控制台输出的显卡

我有一台 HP DL380G9 服务器,上面安装了两个独立的 nvidia 显卡,运行 RHEL 6 和内核 2.6.32-573。两张卡具有相同的芯片组 (NV117),但型号不同。K620(插槽 5 地址 88:00.0)、K2200(插槽 4 地址 84:00.0)。K2200 是 Linux 选择的用于输出 plymouth 和引导消息的卡。

交换卡会导致 HP 服务器 BIOS 出现页面错误,即使在清除 CMOS 和 BIOS 设置之后也是如此。换回卡解决了这个问题。BIOS 中没有选择主独立显卡的选项。Linux 似乎会选择 PCI 总线地址最低的显卡。

是否有内核命令行选项或其他一些配置文件来为默认的 pre-X11 显示器选择不同的显卡?

rhel graphic-card kernel-parameters

8
推荐指数
1
解决办法
5333
查看次数

Linux 3.x 无法分配 PCI BAR 内存

我有一台 IBM x3850 类型 8864 机器,我可以使用 2.6.32 内核成功启动,但是当我尝试使用 3.10 内核或更新内核时,内核无法初始化所有 PCI 插槽(我可以(手动)修复此问题,见下文) :

pci 0000:19:00.0: BAR 14: can't assign mem (size 0x1a00000)
pci 0000:19:00.0: BAR 13: can't assign io (size 0x3000)
pci 0000:19:00.0: BAR 14: can't assign mem (size 0x1600000)
pci 0000:19:00.0: BAR 13: can't assign io (size 0x3000)
pci 0000:1a:00.0: BAR 14: can't assign mem (size 0x1600000)
pci 0000:1a:00.0: BAR 13: assigned [io  0x7000-0x8fff]
pci 0000:1b:02.0: BAR 14: can't assign mem (size 0xa00000)
pci 0000:1b:04.0: BAR 14: can't assign …
Run Code Online (Sandbox Code Playgroud)

linux pci linux-kernel dmesg kernel-parameters

7
推荐指数
1
解决办法
4147
查看次数

net.ipv4.conf.all.forwarding 和 net.ipv4.ip_forward 之间的区别

根据https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

conf/all/*    is special, changes the settings for all interfaces
Run Code Online (Sandbox Code Playgroud)
forwarding - BOOLEAN
    Enable IP forwarding on this interface.  This controls whether packets
    received _on_ this interface can be forwarded.
Run Code Online (Sandbox Code Playgroud)
ip_forward - BOOLEAN
    0 - disabled (default)
    not 0 - enabled

    Forward Packets between interfaces.

    This variable is special, its change resets all configuration
    parameters to their default state (RFC1122 for hosts, RFC1812
    for routers)
Run Code Online (Sandbox Code Playgroud)

因此,net.ipv4.conf.all.forwarding=0禁用所有接口上的 IPv4 数据包转发,与net.ipv4.ip_forward=0禁用所有接口上的 IPv4 数据包转发,与禁用所有接口上的 IPv4 数据包转发

net.ipv4.conf.all.forwarding任何人都可以解释一下内核参数和内核参数之间的区别吗net.ipv4.ip_forward …

networking linux-kernel forwarding kernel-parameters

7
推荐指数
1
解决办法
3973
查看次数

LUKS 丢弃/TRIM:冲突的内核命令行选项

我的各种方式之间的混淆LUKS/ dmcrypt/cryptsetup丢弃/ TRIM操作可以通过Linux的内核命令行来实现。

  1. dracut手册页

    rd.luks.allow-discards

    允许在所有 LUKS 分区上使用丢弃 (TRIM) 请求。

  2. systemd-cryptsetup-generator手册页

    luks.options=, rd.luks.options=

    ... 如果只指定了没有 UUID 的选项列表,则它们适用于其他地方未指定的任何 UUID,并且 /etc/crypttab 中没有条目。...

    此处rd.luks.options=discard推荐该参数。

  3. 关于 LUKS 和 SSDArch wiki 部分 显示了第三个以冒号分隔的字段:

    cryptdevice=/dev/sdaX:root:allow-discards

问题:

  1. discard和 和有allow-discards什么区别?前者是强制性的,后者是可选的吗?
  2. luks.options=rd.luks.options=申请给定cryptdevice=/dev/sda2(例如不是 UUID)?如果cryptdevice=给了一个 UUID,那算不算“在别处指定的”?
  3. 请问luks.options=rd.luks.options=覆盖/添加/添加如果cryptsetup=已经给出了选择?
  4. rd.luks.allow-discards如果到处都需要 TRIM,那么使用似乎最简单的方法有什么缺点吗?

dm-crypt luks cryptsetup kernel-parameters

6
推荐指数
1
解决办法
4220
查看次数

modprobe 和 sysctl -w 在设置系统参数方面的区别?

我们知道 sysctl 命令可以通过以下方式更改内核参数:

# sysctl -w kernel.domainname="example.com"
Run Code Online (Sandbox Code Playgroud)

或直接编辑/proc/sys目录中的文件。对于持久更改,必须将参数写入/etc/sysctl.d/<moduleName>.conf文件,如下所示:

# echo kernel.domainname="example.com" > /etc/sysctl.d/domainname.conf
Run Code Online (Sandbox Code Playgroud)

但是,我们也可以使用 modprobe 命令更改内核参数:

# modprobe kernel domainname="example.com"
Run Code Online (Sandbox Code Playgroud)

然后是/etc/modprobe.d目录中的 modprobe.conf 文件,它存在于多个位置:/etc/modprobe.d/usr/lib/modprobe.d. 它包含多个.conf文件,可以在模块的相应 conf 文件中提供选项,如下所示:

options kernel domainname="example.com"
Run Code Online (Sandbox Code Playgroud)

那么,每种方法之间有什么区别呢?在什么具体情况下应该使用哪种方法?

kernel modprobe sysctl kernel-parameters

6
推荐指数
1
解决办法
1251
查看次数

高交换环境的微调内核

我拥有 8GB RAM Dell XPS13 9343;RAM的数量是这台电脑最大的痛点,它焊接在主板上。尽管 CPU 支持更多 RAM,但由于主板设计,即使通过固件修改重新焊接更大的内存也不是一种选择。所以为了让这台电脑仍然有用,我用更快的 M.2 NVMe 替换了 M.2 SATA 磁盘,并添加了两个额外的交换文件。

我的互联网浏览标准配置是 8GM RAM + 8GM 交换分区,而按需我有两个额外的交换文件驻留在 ext4/(root) 上。这给了我总共 32GB 的交换空间。还值得一提的是,包括所有交换在内的所有文件系统都驻留在加密的 LUKS + LVM 上。这是故意的,因为我不希望在计算机关闭时暴露我的 RAM。

这种设置通常有效;当我启用大量内存占用(通常是基于 Java + 浏览器的内容,偶尔是单个虚拟机)时,我只打开两个交换文件,在启动所有需要的应用程序后,总负载不超过 20% CPU 和总磁盘我/O 不超过 20M/s。

现在问题部分:整个解决方案偶尔 - 每周一次,当我每周使用内存密集型任务几次时变得不稳定/不可靠。有时它会重新启动 - 不确定是否是某些硬件问题的内核恐慌,但图形卡缓冲区损坏不到一秒钟,然后计算机重新启动。由于戴尔的固件,我无法使用 kdump-tools 来调试内核崩溃,我的 UEFI 无法识别 NVMe 磁盘,我只需要在引导阶段将 rEFInd 放在 USB 上。第二个问题是,偶尔当 CPU 负载增加并且我在后台播放音乐时,它会随着我的 X11 开始卡顿。

虽然有些部分是预期的,因为这不是不错的硬件,但我担心这种负载会影响音频缓冲区,因此我正在寻找一种方法来使其更稳定。恕我直言,负载应该只影响用户空间应用程序,而不会产生那些系统范围的问题。

我在它上面使用 Ubuntu,我知道存在一个低延迟内核,但想知道我是否可以先测试一些可以在运行时来回切换的更轻量级的解决方案。喜欢与文件描述符数量或通过 cgroups 分配一些优先级相关的事情吗?

ubuntu kernel-panic swap kernel-parameters

6
推荐指数
2
解决办法
525
查看次数

内核参数“console”和“earlycon”是指旧硬件吗?

我首先通过研究 的参数发现这一点,earlycon但发现 的选项console看起来几乎相同。两者均如下所示,并取自来源:

从文档中console我们有:

console=    [KNL] Output console device and options.

    tty<n>  Use the virtual console device <n>.

    ttyS<n>[,options]
    ttyUSB0[,options]
        Use the specified serial port.  The options are of
        the form "bbbbpnf", where "bbbb" is the baud rate,
        "p" is parity ("n", "o", or "e"), "n" is number of
        bits, and "f" is flow control ("r" for RTS or
        omit it).  Default is "9600n8".

        See Documentation/serial-console.txt for more
        information.  See
        Documentation/networking/netconsole.txt for …
Run Code Online (Sandbox Code Playgroud)

linux kernel kernel-parameters uart

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

Grub.conf 与 sysctl.conf

这两个文件都用于将参数传递给内核。那么两者到底有什么区别呢?每个文件的用途是什么?

grub kernel parameter linux-kernel kernel-parameters

5
推荐指数
0
解决办法
434
查看次数

如何使用内核命令行参数设置 sysctl?

是否可以使用内核命令行(在 中可见的那些)设置 Linux 内核sysctl设置(那些通常在 中设置)?/etc/sysctl.d/proc/cmdline

(使用grub配置文件/etc/default/grub变量GRUB_CMDLINE_LINUX="..."。)

linux command-line grub2 sysctl kernel-parameters

5
推荐指数
1
解决办法
905
查看次数