我打算在未来几天购买一台新笔记本电脑,我对新的、酷炫的超极本印象深刻。作为 GNU/Linux 的长期用户,我当然会在其上安装我选择的发行版。
很有可能我必须购买一台预装了 Windows 8 的电脑;并且很有可能它会运行 UEFI 并具有“安全启动”,在该安全启动上未签名的内核将无法启动。
UEFI 可能不错,BIOS 可能需要退休。我猜毛茸茸的东西是Secure Boot。
据我所知,一些受信任的证书将嵌入到固件中,因此嵌入到内核等中。如果内核的证书可以追溯到固件中的任何一个,内核将启动,否则 UEFI 会告诉我关闭并拒绝启动。此过程将阻止未经认证的软件启动。这可能有好处,尽管我看不到它们。
我想知道开源内核如何获得这些密钥之一并且仍然是免费的。我已经阅读了 Linux 邮件列表上的一个线程,其中 Red hat 员工要求 Linus Torvalds 提取一个变更集,该变更集实现了解析 PE 二进制文件的工具并采取一组复杂的操作让内核在安全启动模式下启动(据我所知)。他们想这样做是因为微软只对 PE 二进制文件进行签名。Torvalds 先生善意地拒绝了这个变更集,指出内核已经实现了标准,而不是 PE。RedHat 正在尝试将此代码推送到内核,以便他们有一天不必分叉它。
看,这是一件复杂的事情。让我问我的问题:
这将如何影响开源和免费内核、爱好者/学术内核开发人员等。例如,这会引导吗(一个非常基本的引导扇区代码):
hang:
jmp hang
times 510-($-$$) db 0
db 0x55
db 0xAA
Run Code Online (Sandbox Code Playgroud)这个网站上的一条新闻是对这个问题的启发。一个名为 …
根据文档,vga=从 GRUB2 开始不推荐使用内核参数。某些较新的内核似乎不再在某些适配器上支持它这一事实无关紧要,因为我拥有的显卡已有七到八年的历史了。
现在的问题是我想使用更高分辨率的文本模式,例如 80x50 而不是默认的 80x25 字符。显然,该显卡 (ATI Rage XL) 的所有图形 (VBE/VESA) 模式都不存在 - 可用模式列表仅0通过6. 6是80x60但看起来很可怕,所以我想用1(80x50)。
在获取可用模式列表后,我已经看到 80x50 和 80x60 在不支持默认模式(默认已注释掉GRUB_TERMINAL=console)并且提示我选择时工作。
如果我不应该在内核命令行上设置模式并且每次使用GRUB_GFXMODE(有或没有预加载vbe模块)并且GRUB_GFXPAYLOAD_LINUX=keep失败,我该如何设置模式?失败:屏幕保持空白,因为它是我在这台机器上使用的卡的无效图形模式?
我的想法是nomodeset仍然传递给内核,但是引导加载程序仍然必须设置图形模式。除了vga=内核参数之外,我看不到任何其他选项。
注意: GRUB2 控制台上的vbetest和videotest命令会使屏幕变黑,然后在声称没有视频输入后屏幕会切换到睡眠模式。vbeinfo并videoinfo显示除上述以外的一些可用模式,但没有提到应该在哪里设置。此外,当在内核命令行上传递vga=1(没有nomodeset)时,我看到一个关于它被弃用的非常简短的警告,但它太长而无法完全阅读 - 并且输出没有出现在dmesg.
我想通过在 Linux 内核邮件列表中搜索有关该主题的最新讨论来研究为什么我的 Linux 安装中似乎缺少 Linux 内核功能。我发现的唯一提供邮件列表档案搜索的站点是gmane。但是,在 gmane 上搜索带引号的术语(例如,“/usr/firmware”)并不会限制结果仅包含被引用的短语。是否有更高级的 Linux 内核邮件列表搜索可用?
我有一个进程,现在多次停止响应并且似乎完全锁定。它不会响应任何尝试 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 以查看是否有任何区别。
我的服务器有两个 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)
双方ixgbe并igb在内核中(而不是作为一个可加载模块)静态编译。我需要使用内核启动参数禁用该模块。
我曾尝试将以下内容附加到我的内核中,但没有效果:
igb.blacklist=yes
igb.enable=0
igb.disable=yes
Run Code Online (Sandbox Code Playgroud)
igb 网卡还在显示
如何完全禁用 igb?
我发现了一个类似的问题,但它仍然没有回答我的问题 所有进程的虚拟地址空间在它们的“内核”部分都有相同的内容吗?
首先,考虑到用户进程无权访问这部分,我猜如果他们尝试访问它,会导致错误,那么为什么还要将这部分包含在用户进程虚拟空间中呢?你们能给我一个真实的生活场景,说明这部分必不可少和有用吗?
另外,还有一个问题是我一直认为内存的内核部分是动态的,这意味着它可能会增长,例如当我们在我们的程序中使用动态库时,这是真的吗?如果是这样,那么操作系统如何确定我们进程的虚拟空间中内核的大小?
当我们在物理内存中的内核增长或变化时,是否会在所有进程的虚拟内存的内核部分发生相同的效果?这个虚拟内核到真实内核的映射是一对一的映射吗?
我正在尝试将 Linux 进程状态代码(如ps)映射到操作系统状态图中的状态,但我似乎无法映射它们。是不是因为 Linux 进程状态不一定与理论上的 OS 状态图匹配?具体地讲,我不确定其中D/ S/ T/I配合的图中
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)简短的问题:
如何打开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) 我正在编译自己的 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)