标签: linux-kernel

UEFI & SecureBoot 的影响,有多严重?

我打算在未来几天购买一台新笔记本电脑,我对新的、酷炫的超极本印象深刻。作为 GNU/Linux 的长期用户,我当然会在其上安装我选择的发行版。

很有可能我必须购买一台预装了 Windows 8 的电脑;并且很有可能它会运行 UEFI 并具有“安全启动”,在该安全启动上未签名的内核将无法启动。

UEFI 可能不错,BIOS 可能需要退休。我猜毛茸茸的东西是Secure Boot

据我所知,一些受信任的证书将嵌入到固件中,因此嵌入到内核等中。如果内核的证书可以追溯到固件中的任何一个,内核将启动,否则 UEFI 会告诉我关闭并拒绝启动。此过程将阻止未经认证的软件启动。这可能有好处,尽管我看不到它们。

我想知道开源内核如何获得这些密钥之一并且仍然是免费的。我已经阅读了 Linux 邮件列表上的一个线程,其中 Red hat 员工要求 Linus Torvalds 提取一个变更集,该变更集实现了解析 PE 二进制文件的工具并采取一组复杂的操作让内核在安全启动模式下启动(据我所知)。他们想这样做是因为微软只对 PE 二进制文件进行签名。Torvalds 先生善意地拒绝了这个变更集,指出内核已经实现了标准,而不是 PE。RedHat 正在尝试将此代码推送到内核,以便他们有一天不必分叉它。

看,这是一件复杂的事情。让我问我的问题:

  • 作为家庭用户,使用 UEFI 和安全启动可以获得哪些好处?
  • 这个签名是怎么做的?
  • 谁可以获得签名/证书?是付费的吗?可以公开吗?(它应该在 Linux 的源代码中可用,不是吗?)
  • Microsoft 是唯一提供签名的机构吗?不应该有一个独立的基金会来提供它们吗?
  • 这将如何影响开源和免费内核、爱好者/学术内核开发人员。例如,这会引导吗(一个非常基本的引导扇区代码):

    hang:
       jmp hang
    times 510-($-$$) db 0
    db 0x55
    db 0xAA
    
    Run Code Online (Sandbox Code Playgroud)

这个网站上的一条新闻是对这个问题的启发。一个名为 …

free-software linux-kernel uefi secure-boot

18
推荐指数
2
解决办法
2268
查看次数

GRUB2 和内核 vga= 参数

根据文档,vga=从 GRUB2 开始不推荐使用内核参数。某些较新的内核似乎不再在某些适配器上支持它这一事实无关紧要,因为我拥有的显卡已有七到八年的历史了。

现在的问题是我想使用更高分辨率的文本模式,例如 80x50 而不是默认的 80x25 字符。显然,该显卡 (ATI Rage XL) 的所有图形 (VBE/VESA) 模式都不存在 - 可用模式列表仅0通过6. 680x60但看起来很可怕,所以我想用1(80x50)。

在获取可用模式列表后,我已经看到 80x50 和 80x60 在不支持默认模式(默认已注释掉GRUB_TERMINAL=console)并且提示我选择时工作。

如果我不应该在内核命令行上设置模式并且每次使用GRUB_GFXMODE(有或没有预加载vbe模块)并且GRUB_GFXPAYLOAD_LINUX=keep失败,我该如何设置模式?失败:屏幕保持空白,因为它是我在这台机器上使用的卡的无效图形模式?

我的想法是nomodeset仍然传递给内核,但是引导加载程序仍然必须设置图形模式。除了vga=内核参数之外,我看不到任何其他选项。

注意: GRUB2 控制台上的vbetestvideotest命令会使屏幕变黑,然后在声称没有视频输入后屏幕会切换到睡眠模式。vbeinfovideoinfo显示除上述以外的一些可用模式,但没有提到应该在哪里设置。此外,当在内核命令行上传递vga=1(没有nomodeset)时,我看到一个关于它被弃用的非常简短的警告,但它太长而无法完全阅读 - 并且输出没有出现在dmesg.

boot parameter grub2 linux-kernel

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

如何搜索 linux 内核邮件列表档案?

我想通过在 Linux 内核邮件列表中搜索有关该主题的最新讨论来研究为什么我的 Linux 安装中似乎缺少 Linux 内核功能。我发现的唯一提供邮件列表档案搜索的站点是gmane。但是,在 gmane 上搜索带引号的术语(例如,“/usr/firmware”)并不会限制结果仅包含被引用的短语。是否有更高级的 Linux 内核邮件列表搜索可用?

linux-kernel

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

谁负责 Linux 内核?

到今天为止,有很多 Linux 发行,如UbuntuFedoraGentooMintDebian等。这些发行版的更新周期不同。Ubuntu 似乎每周或每月更新其内核,而 Debian 不愿意更新内核。

我想知道这些发行版是否维护自己的内核。或者他们只是从Linus Torvalds获取原始内核代码,根据需要对其进行一些修改,然后使用他们的包管理系统发布修改后的内核?

所有发行版都使用来自 Linus Torvalds 的相同内核吗?如果是这样,为什么不同的发行版在不同的周期更新/发布它们的内核?

history linux-kernel

18
推荐指数
2
解决办法
2495
查看次数

锁定、忽略 SIGKILL 的进程是可运行的(不是僵尸进程或处于不间断睡眠状态)。它处于什么状态?

我有一个进程,现在多次停止响应并且似乎完全锁定。它不会响应任何尝试 strace 或偷看 gdb(gdb 只是挂在 wait4() 系统调用上)。该进程是可运行的,并且不等待系统调用 (/proc/X/syscall:)running或处于不间断睡眠状态 (/proc/X/status:) State: R (running)

这个过程究竟处于什么状态?这可能是某种类型的内核错误吗?

进程是redis,这种情况现在已经发生过几次了。似乎唯一可以终止进程的是重新启动。操作系统是 Cent 7。

编辑:内核版本是 3.10.0-123.13.2.el7.x86_64。尝试更新到 3.10.0-229.11.1.el7 以查看是否有任何区别。

process linux-kernel redis

18
推荐指数
1
解决办法
1064
查看次数

禁用在内核中编译的内核模块(未加载)

我的服务器有两个 1-Gbit 和两个 10-Gbit 板载网卡。

我需要完全禁用 1-Gbit 网卡,以便ifconfig -a不显示它们。

网卡使用不同的内核模块。10-Gbit 使用ixgbe,1-Gbit 使用igb

01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
Subsystem: Dell Ethernet 10G 4P X520/I350 rNDC
Kernel driver in use: ixgbe

05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
Subsystem: Dell I350 Gigabit Network Connection
Kernel driver in use: igb 
Run Code Online (Sandbox Code Playgroud)

双方ixgbeigb在内核中(而不是作为一个可加载模块)静态编译。我需要使用内核启动参数禁用该模块。

我曾尝试将以下内容附加到我的内核中,但没有效果:

igb.blacklist=yes
igb.enable=0
igb.disable=yes
Run Code Online (Sandbox Code Playgroud)

igb 网卡还在显示

如何完全禁用 igb?

boot kernel linux-kernel

18
推荐指数
1
解决办法
3850
查看次数

在 Linux 进程的虚拟内存空间中拥有内核部分有什么用?

我发现了一个类似的问题,但它仍然没有回答我的问题 所有进程的虚拟地址空间在它们的“内核”部分都有相同的内容吗?

  1. 首先,考虑到用户进程无权访问这部分,我猜如果他们尝试访问它,会导致错误,那么为什么还要将这部分包含在用户进程虚拟空间中呢?你们能给我一个真实的生活场景,说明这部分必不可少和有用吗?

  2. 另外,还有一个问题是我一直认为内存的内核部分是动态的,这意味着它可能会增长,例如当我们在我们的程序中使用动态库时,这是真的吗?如果是这样,那么操作系统如何确定我们进程的虚拟空间中内核的大小?

  3. 当我们在物理内存中的内核增长或变化时,是否会在所有进程的虚拟内存的内核部分发生相同的效果?这个虚拟内核到真实内核的映射是一对一的映射吗?

在此处输入图片说明

linux process kernel memory linux-kernel

18
推荐指数
1
解决办法
6297
查看次数

操作系统理论中的进程状态与 Linux 中的进程状态

我正在尝试将 Linux 进程状态代码(如ps)映射到操作系统状态图中的状态,但我似乎无法映射它们。是不是因为 Linux 进程状态不一定与理论上的 OS 状态图匹配?具体地讲,我不确定其中D/ S/ T/I配合的图中

  • ps来自手册页的进程状态代码

    PROCESS STATE CODES
           Here are the different values that the s, stat and state output
           specifiers (header "STAT" or "S") will display to describe the
           state of a process:
    
                   D    uninterruptible sleep (usually IO)
                   I    Idle kernel thread
                   R    running or runnable (on run queue)
                   S    interruptible sleep (waiting for an event to
                        complete)
                   T    stopped by job control …
    Run Code Online (Sandbox Code Playgroud)

process process-management linux-kernel

18
推荐指数
1
解决办法
2192
查看次数

在内核中启用 IOMMU 以实现显卡直通

简短的问题:

如何打开intel_iommuLinux内核中的设置?我使用 grub2 引导加载程序运行 Debian 主机。我见过的文档说要 edit /boot/grub/menu.lst,这似乎只与 grub 1.x 相关,因为我没有那个文件。

我的理解(也是我能想到的最后一个选项)更改此引导选项可能会消除以下错误消息 /var/log/kern.log

vboxpci: No IOMMU domain (attach)
Run Code Online (Sandbox Code Playgroud)

长问题:

允许来宾操作系统直接访问显卡

我最近意识到可以通过 PCI-express 设备传递到在 Virtualbox 中运行的来宾操作系统。酷,我想!我有两个 NVIDIA Quadro FX 显卡(SLI 桥接连接到位,我希望这不会造成麻烦)并且想将第二个显卡专用于来宾操作系统,以便我可以在其中使用 OpenGL 功能Photoshop 等。

NVIDIA 销售这种“ SLI 多操作系统”配置,这基本上是我多年来一直想要设置的配置,但我不想在虚拟化软件(Parallels 工作站极限)上花太多钱,当我已经多年来一直很高兴地使用 VirtualBox。

主机系统

我在相当高端的工作站设备(华硕 P6T7 WS 超级计算机主板,带英特尔 ICH10R 芯片组和至强 W3680 CPU)上运行 Debian 存储库中的 linux-3.5.0-19,并希望在内核中打开 IOMMU 支持,最好不必自己编译。

BIOS

在 BIOS 设置中,我启用了 VT-x 和 VT-d 支持。不过,我看不到任何特别提到 IOMMU 的内容。

连接 PCI 设备

这令人愉快地出乎意料地简单!官方 VirtualBox 文档在这里。我所做的,我发现不那么模棱两可的是,打开nvidia-settings,选择辅助图形卡并记下总线 ID(在我的例子中是“PCI:5:0:0”)。然后,从主机的命令行:-

VBoxManage modifyvm …
Run Code Online (Sandbox Code Playgroud)

pci grub2 virtualbox linux-kernel

17
推荐指数
1
解决办法
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 ms

--- 192.168.13.5 ping ststistics ---
1 packets transmitted, 1 packets recieved, 0% packet loss
reound-trip min/avg/max = 0.382/0.382/0.382 ms …
Run Code Online (Sandbox Code Playgroud)

linux kernel dns busybox linux-kernel

17
推荐指数
1
解决办法
4万
查看次数