标签: linux-kernel

SATA 在什么意义上“谈论”SCSI?SCSI 和 ATA 之间共享多少?

至少这对我来说并不新鲜,SATA 实际上“谈论”SCSI,因此为什么这些 SATA 设备在 Linux 中显示为 SCSI 设备。

之前有人问过一个相关的问题,例如为什么我的 SATA 设备会出现在 /proc/scsi/scsi 下?

然而,在我之前讨论过的地方没有提到的是 SATA 与 SCSI 的关系,以及它们的不同之处。

我认为它们在物理层上有所不同是理所当然的,因为它们不共享兼容的电缆。

但是,堆栈的更高位置呢?我知道 Linux 如何将现代内核上的 SATA 甚至 IDE 磁盘表示为 SCSI 到 SCSI 子系统。但是总线上使用的实际协议呢?

我也知道 ATAPI 是对 SCSI 的封装,但是常规的 ATA 呢?我注意到 SCSI 的一些特性,例如 NCQ、FUA、DPO 等(如果我没记错的话)已经从 SCSI 中采用了。但不清楚有多少 SCSI 命令集实际上是共享或相似的。

具有 ATA 规范的现代 SATA 设备是否实现了 SCSI 命令集的子集,但进行了封装(如在 ATAPI 中)?同一套?超集?或者可能只有选定的功能作为不完全相同的变体来实现?

我在哪里可以找到关于此的一些明确信息,尤其是它与 Linux 内核的关系?驱动程序开发的某种教程会很好,但即使只是一个没有完全跳过所有细节的概述也足够了。我知道我只能阅读实际的规范,但这又太详细了,很难找到你真正想要的东西,而且对我和大多数其他用户来说,在时间意义上是不现实的。

hard-disk linux-kernel protocols

31
推荐指数
1
解决办法
9538
查看次数

Linux 内核构建过程的每一步都发生了什么?

我已经阅读了许多关于如何使用这些内核构建自定义内核和启动 Ubuntu 的教程,并成功地遵循了指南并启动了自定义内核,但我不了解指南中的每个命令的作用以及实际发生的情况每个命令。

Ubuntu 网站上描述的过程对fakeroot, dpkg, make-kpkg, 一些 initramfs 和其他可怕的东西做了很多工作,但根本无法帮助我理解发生了什么。

  • makelinux内核目录中的输出是什么?
  • 它是否创建了“压缩内核映像”?
  • “压缩内核映像”文件的名称是什么?它放在哪里?
  • 有什么作用make modules
  • 应该make modules在之前还是之后make
  • 不会make自动构建我的模块吗?
  • 将新构建的内核添加到可引导内核列表的过程是什么(英文,不仅仅是命令列表)?
  • 有什么作用make install
  • make install它添加到我的可引导内核列表中,这样我就不必再做任何事情了吗?
  • 有等价物make modules_install吗?

ubuntu make linux-kernel

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

我什么时候需要在 UEFI/EFI 引导中指定 add_efi_memmap 作为内核参数?

我正在阅读一些如何使用 EFI 存根 (efistub) 加载 Linux 内核的教程。这些指令经常使用内核引导参数add_efi_memmap。预期的硬件是具有 8GB RAM 的 Intel x64。我当前的设置正在运行grub-efi引导加载程序和内核 v3.13。

GRUB引导,而不add_efi_memmap引导参数:

  • 23BIOS-e820 线dmesg | grep BIOS-e820: | wc -l
  • 243EFI 内存行计数dmesg | grep efi:\ mem | wc -l
  • DMA 区域:24保留的页面
  • 内存:7840568K/8283384K可用
  • 442816K 保留

GRUB引导 add_efi_memmap和EFI存储器映射大小似乎确实有所不同:

  • 23 BIOS-e820线
  • 57 EFI 内存线
  • DMA 区域:22保留的页面
  • 内存:7885076K/8283384K可用
  • 398308K 预留

EFI 存根启动没有 add_efi_memmap

  • 22 BIOS-e820线
  • 60 EFI …

boot linux-kernel arguments uefi

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

NetworkManager、networkd、netplan、ifupdown2 和 iproute2 究竟是如何交互的?

我正在学习关于Linux的Kubuntu我18.04工作站上的网络,我看到有两个NetworkManagernetworkd-dispatcher正在运行:

oleg@eclectic:~$ sudo ps -ef | grep -i net
root        56     2  0 Oct11 ?        00:00:00 [netns]
root      1097     1  0 Oct11 ?        00:00:02 /usr/sbin/NetworkManager --no-daemon
root      1098     1  0 Oct11 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1250     1  0 Oct11 ?        00:00:02 /usr/sbin/inetd
root      1593  1097  0 Oct11 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...
Run Code Online (Sandbox Code Playgroud)

NetworkManager似乎被配置为通过netplan以下方式处理“一切” :

oleg@eclectic:~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2 …
Run Code Online (Sandbox Code Playgroud)

networking networkmanager linux-kernel systemd-networkd netplan

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

找出与 sysctl.conf 和 sysctl.d 相关的内核选项的值

在我的 Ubuntu 机器上,在/etc/sysctl.conf文件中,我默认注释掉了反向路径过滤选项,如下所示:

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
Run Code Online (Sandbox Code Playgroud)

但在/etc/sysctl.d/10-network-security.conf它们中(同样,默认情况下)没有注释掉:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
Run Code Online (Sandbox Code Playgroud)

那么是否启用了反向路径过滤?哪个配置位置优先?如何检查这些和其他内核选项的当前值?

linux ubuntu configuration sysctl linux-kernel

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

为什么默认情况下 Linux 的电池寿命比 Windows 差?

默认情况下,Linux 操作系统是否有一些固有的东西使它们无法管理电池电源?我原以为像 Lubuntu 这样的轻型发行版会比 Windows 具有明显的电池寿命优势,但事实似乎并非如此。这是硬件供应商的问题——笔记本电脑是否只是为了在 Windows 操作系统上更高效地工作而设计的?

例如,根据我在同一台笔记本电脑上的经验,与 Windows 相比,给定的 linux 发行版的电池寿命似乎总是很短。我的旧笔记本电脑(Thinkpad X61)在启动到 Lubuntu 时的使用寿命几乎是使用 Windows XP 时的一半。在较新的型号上,我在使用 Fedora 20 与 Windows 8.1 时获得了类似的糟糕性能。

windows acpi linux-kernel battery

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

更新 Linux 内核,同时保留系统的其余部分

我是 OpenBSD 用户。在OpenBSD FAQ 中,它说:

OpenBSD 是一个完整的系统,旨在保持同步。它不是可以单独升级的内核和实用程序。

当您升级系统时,您可以一次性完成;内核和基本系统被替换。然后你去更新你的第 3 方包。如果从源代码编译,则重新编译内核并引导它。然后你重建基本系统,然后是你已经安装的包。如果自上次重建所有内容以来已经过去了几个星期/几个月,您首先安装一个快照并从那里重建(如果您正在关注最新的 CVS 分支)。

具有不同步的内核、基本系统和/或 3rd 方软件包是潜在问题的来源,并且或多或少使您无法从官方邮件列表中获得任何认真的帮助。

我对此很满意。事实上,这也是我使用 OpenBSD 的原因之一。它使系统成为一个一致的单元,并使我很容易对它形成一个心理概述。

在 Linux 上感觉如何?我所知道的大多数 Linux 都没有与 BSD 相同意义上的“基本系统”,而是由分发提供商组装的一组软件包。然后由本地管理员以这样的方式添加更多软件,使得从一开始就有的软件和后来添加的软件之间的界限充其量是模糊的。

Linux(一般而言)是否没有强大的内核与用户空间耦合? 据我所知,内核已更新,就像任何其他软件包一样,这让我有点困惑,这完全是可能的。除此之外,有些甚至编译自定义内核(在 OpenBSD 上不鼓励这样做),并且在其引导菜单中列出了多种不同的内核版本。

谁或什么保证 Linux 系统的各个子系统能够相互协作,即使它们彼此独立更新?

我问的原因是因为该站点上的另一个用户问是否可以用更新的版本替换他的 Linux 系统中的内核“可行”。从 OpenBSD 方面来看,我不能说是的,这将保证不会破坏系统。


我使用上面的“Linux”作为“Linux 发行版”、内核 + 实用程序的简写。

dependencies linux-kernel

28
推荐指数
3
解决办法
3989
查看次数

Linux:是否只能看到内核空间线程/进程?

我知道程序有两个“级别”:用户空间和内核空间。

我的问题是:我只想看到内核程序,或者更好:内核空间上的程序。

这种方法是否正确?

ps -ef|grep "\["

root         1     0  0 20:23 ?        00:00:00 init [4]
root         2     0  0 20:23 ?        00:00:00 [kthreadd]
root         3     2  0 20:23 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 20:23 ?        00:00:00 [kworker/0:0H]
root         7     2  0 20:23 ?        00:00:06 [rcu_sched]
root         8     2  0 20:23 ?        00:00:00 [rcu_bh]
root         9     2  0 20:23 ?        00:00:00 [migration/0]
root        10     2  0 20:23 ?        00:00:00 [migration/1]
root        11     2  0 20:23 ?        00:00:00 [ksoftirqd/1]
root …
Run Code Online (Sandbox Code Playgroud)

process linux-kernel

28
推荐指数
1
解决办法
8112
查看次数

哪里可以下载特定版本的Linux Kernel源代码?

是否有下载特定内核版本源的资源?比如我想拿到2.6.36.2的源码来和这个包对比,看看有什么变化?

source version linux-kernel

27
推荐指数
4
解决办法
8万
查看次数

内核如何知道它是从休眠状态恢复,而不是启动?

当Linux系统休眠并从休眠状态恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?

起初,我认为GRUB(或其他引导加载程序)通过内核参数告诉内核。但只要我检查/proc/cmdline,内核参数就和平常一样了。是否有任何机制让内核知道它正在恢复?

boot-loader power-management hibernate linux-kernel

27
推荐指数
1
解决办法
3469
查看次数