问题标签 [ahci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

operating-system - 如何使用 AHCI 驱动程序读取磁盘配置?

嗨,我正在学习操作系统并尝试按照一本书来编写内核。

本书使用IDE来控制磁盘,同时我尝试使用AHCI和MSI来使其更容易和更高效。

我成功读取/写入信息并发出 MSI 中断。但我不知道如何读取磁盘配置,尤其是可用的总扇区数。

非常感谢!

0 投票
0 回答
17 浏览

linux - platform_driver 和 *_ops 结构中的函数之间的区别

如果我们以一个ahci驱动为例。在 ahci_platform.c 中有一些驱动功能描述如下:

platform_driver问题是:结构下描述的功能和*_opsahci_ops例如)下描述的功能有什么区别?

据我了解,以platform_driver加载/卸载驱动程序为例,通常会自动调用结构中的函数。中描述的功能*_ops是更多用户可访问的功能。那是对的吗?

0 投票
1 回答
233 浏览

c - SCSI 读取容量 (10) 报告错误的 LBA 和扇区大小

我一直在尝试在裸机上为我的爱好操作系统测试我的 AHCI 驱动程序。在此之前,我在 QEMU 中使用以下参数测试了我的驱动程序:

输出是这样的:

PCI 设备是使用上述参数启动 QEMU 时使用的 AHCI 控制器。现在,我有足够的信心相信同样的设置也可以在真实的硬件上运行,所以我试了一下。这是屏幕上打印的内容:

我还在另一台机器上对其进行了测试,该机器没有 AHCI 控制器,而是在 AHCI 模式下运行的 RAID 控制器。在该机器上,输出与其他裸机设置基本相同:

根据 SCSI 规范,4068212736( 0xF27C0000) 的值没有固定的含义。此外,块大小设置为零,这与我在 QEMU 上看到的不匹配。只有 QEMU 控制台中显示的输出是正确的。在我的两台真实机器上,报告的容量都是错误的,具有相同的值。

接下来我该怎么做?这是与供应商相关的问题吗?似乎该read capacity (10)命令对于该类型的所有 SCSI 设备都是强制性的,因此在我没有经验的情况下,我认为这不是问题所在。

编辑:我在读取容量(10)命令之后放置了一个 SCSI 请求感知,因为有人说应该在每个 SCSI 命令之后放置请求感知以停止设备。

现在,报告的块数是65263,这仍然是错误的,但也不同于4068212736,所以我不确定我现在是否朝着正确的方向前进。此外,块大小现在正确地报告为2048字节。

0 投票
0 回答
15 浏览

ide - SATA 选项 IDE 转 AHCI

我在 BIOS 中使用 SATA Option IDE 在旧 M93p 上设置了 WIN 7 PC。当我将 SATA 上的 BIOS 设置重置为 AHCI 时,我可以将此 SSD 克隆到另一个 SDD 吗?目的是一个新的 SSD 克隆,其中 SATA 选项应该是 AHCI。谢谢沃尔特

0 投票
0 回答
547 浏览

storage - 无法创建 ESXI VMFS 数据存储并出现错误“无法更改主机配置”

我在戴尔 3930 机架式 PC 上运行 ESXI 7.0。这台 PC 插入了 NVME SSD 和 1TB Sata HDD。我在设置时使用了 Dell ESXI ISO 映像。

浏览存储时可以看到 NVM 和 PCH 控制器。显示的控制器名称为:'Cannon Lake PCH-H AHCI Controller'

当我转到设备时,我还可以在那里看到“本地 ATA 磁盘”。尽管尝试了所有尝试,但我无法创建 VMFS 数据存储并且总是收到错误消息“无法更改主机配置”

我尝试从 ESXI Web 客户端清除分区,但也没有成功。当我尝试创建数据存储时,vmkernel 日志显示以下内容

我怀疑计算机的 AHCI 控制器(Cannon Lake PCH-H AHCI 控制器)是否与 esxi 7 兼容,但找不到任何证实这一点的资源。我在某处读到通过以下 ssh 命令禁用默认 AHCI 驱动程序可能会有所帮助:

我试过这个,如果驱动程序被禁用,重启后控制器甚至根本不会显示。所以这必须重新启用。

我还尝试清除分区表,因为该驱动器没有有用的信息,但它总是向任何 partedUtil 命令抛出“输入/输出”错误。似乎对该设备的任何写入尝试都不起作用。

当我尝试使用 partedUtil getptbl 命令时,分区格式被描述为“未知”。

仅供参考,在我设置 ESXI 之前,有问题的硬盘是 Ubuntu 操作系统的磁盘驱动器并且可以访问。

欢迎任何可以帮助解决此问题的线索。

0 投票
0 回答
14 浏览

ahci - 什么设置 AHCI 基地址?

我正在制作一个用于学习目的的爱好操作系统。我在 Ring 0,所以我可以直接与几乎所有东西互动。我知道在哪里可以找到我的 PCI 端口上的 AHCI 控制器的基地址,但我不知道我是否应该在内核中设置它,或者引导加载程序是否已经完成了。换句话说:因为它现在包含一些东西,它是否只包含我的内核必须覆盖的随机垃圾,还是在我的内核启动之前由其他东西正确设置?作为记录,我使用 Grub 作为我在 x86(32 位)内核上的引导加载程序,在 Virtualbox 中运行。

0 投票
0 回答
13 浏览

linux - 我们如何可靠地将磁盘(和元素)映射到 Linux 中的机箱插槽/端口?

我正在尝试查看 Linux 中是否有一种可靠的方法来识别哪个磁盘位于哪个机箱插槽中。

例如,磁盘 /dev/sda 位于机箱 #1 的 #3 插槽中。