我有一台旧的 MacBook Pro 4,1(2008 年初) - 但我认为答案适用于许多 MacBook Pro。
它有一个英特尔 IDE/SATA 控制器 (ICH8M/ICH8M-E)。
我安装了一个修补的 MBR,它应该将我的控制器置于 AHCI 模式。它通过设置一些我不理解的控制器端口值来实现这一点。
这似乎有效,因为我从 lspci 获得了这个:
00:1f.1 IDE interface: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03)
00:1f.2 IDE interface: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 03)
现在,大多数(可能是所有)提供解决方案(启用 AHCI)的网站都建议,在睡眠/唤醒循环之后,由于 Apple 支持 Windows 的方式,控制器将恢复到 IDE 模式。
他们建议禁用睡眠功能。
注意:我没有安装 Boot Camp,也没有安装 Windows。
有没有办法证明我的控制器处于 IDE 或 AHCI 模式?
后台数据
使用 patchedcode.bin MBR 我在系统日志中得到以下信息:
Jun 12 22:33:22 max kernel: [ 1.860955] ahci 0000:00:1f.2: version 3.0
Jun 12 22:33:22 max kernel: [ 1.861052] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X
Jun 12 22:33:22 max kernel: [ 1.861117] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 1.5 Gbps 0x1 impl SATA mode
Jun 12 22:33:22 max kernel: [ 1.861120] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc ems
Jun 12 22:33:22 max kernel: [ 1.861130] ahci 0000:00:1f.2: setting latency timer to 64
Jun 12 22:33:22 max kernel: [ 1.880880] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)
Jun 12 22:33:22 max kernel: [ 1.880983] scsi2 : ahci
Jun 12 22:33:22 max kernel: [ 1.884552] scsi3 : ahci
Jun 12 22:33:22 max kernel: [ 1.886932] scsi4 : ahci
Jun 12 22:33:22 max kernel: [ 1.886998] ata3: SATA max UDMA/133 abar m2048@0xdb504000 port 0xdb504100 irq 45
Jun 12 22:33:22 max kernel: [ 1.887000] ata4: DUMMY
Jun 12 22:33:22 max kernel: [ 1.887002] ata5: DUMMY
Jun 12 22:33:22 max kernel: [ 2.204103] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
Jun 12 22:33:22 max kernel: [ 2.204656] ata3.00: ATA-8: FUJITSU MHY2200BH, 0081000D, max UDMA/100
Jun 12 22:33:22 max kernel: [ 2.204662] ata3.00: 390721968 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
Jun 12 22:33:22 max kernel: [ 2.205324] ata3.00: configured for UDMA/100
Jun 12 22:33:22 max kernel: [ 2.205554] scsi 2:0:0:0: Direct-Access ATA FUJITSU MHY2200B 0081 PQ: 0 ANSI: 5
使用我的原始 MBR,我从系统日志中获取以下信息:
Jun 13 18:07:13 max kernel: [ 0.622861] ata_piix 0000:00:1f.1: version 2.13
Jun 13 18:07:13 max kernel: [ 0.622869] ata_piix 0000:00:1f.1: power state changed by ACPI to D0
Jun 13 18:07:13 max kernel: [ 0.622924] ata_piix 0000:00:1f.1: setting latency timer to 64
Jun 13 18:07:13 max kernel: [ 0.623339] scsi0 : ata_piix
Jun 13 18:07:13 max kernel: [ 0.623730] scsi1 : ata_piix
Jun 13 18:07:13 max kernel: [ 0.623765] ata1: PATA max UDMA/100 cmd 0x8108 ctl 0x811c bmdma 0x80e0 irq 21
Jun 13 18:07:13 max kernel: [ 0.623767] ata2: PATA max UDMA/100 cmd 0x8100 ctl 0x8118 bmdma 0x80e8 irq 21
Jun 13 18:07:13 max kernel: [ 0.623810] ata_piix 0000:00:1f.2: MAP [
Jun 13 18:07:13 max kernel: [ 0.623811] P0 -- -- -- ]
Jun 13 18:07:13 max kernel: [ 0.623866] ata_piix 0000:00:1f.2: setting latency timer to 64
Jun 13 18:07:13 max kernel: [ 0.624241] scsi2 : ata_piix
Jun 13 18:07:13 max kernel: [ 0.624558] scsi3 : ata_piix
Jun 13 18:07:13 max kernel: [ 0.624862] ata3: SATA max UDMA/133 cmd 0x80f8 ctl 0x8114 bmdma 0x8020 irq 18
Jun 13 18:07:13 max kernel: [ 0.624865] ata4: SATA max UDMA/133 cmd 0x80f0 ctl 0x8110 bmdma 0x8028 irq 18
Jun 13 18:07:13 max kernel: [ 1.208879] ata3.00: ATA-8: FUJITSU MHY2200BH, 0081000D, max UDMA/100
Jun 13 18:07:13 max kernel: [ 1.208882] ata3.00: 390721968 sectors, multi 16: LBA48 NCQ (depth 0/32)
Jun 13 18:07:13 max kernel: [ 1.208961] ata1.01: ATAPI: MATSHITA DVD+/-RW UJ-867S, 1.00, max UDMA/33
Jun 13 18:07:13 max kernel: [ 1.216186] ata3.00: configured for UDMA/100
Jun 13 18:07:13 max kernel: [ 1.224396] ata1.01: configured for UDMA/33
答案1
看来我只需要 lspci。IDE 模式表示它处于 IDE 模式,AHCI 模式表示它处于 AHCI/SATA 模式。
我已经记录了这一点这里
我提到的这个修改过的 MBR 看起来就像是这样的:
setpci -s 0:1f.2 90.b=40
它适用于许多使用 ICH7 和 ICH8 控制器的 Apple MacBook,但重要的是使用可以从 lspci 轻松获取的正确 PCI“插槽”值。
例如,在 IDE 模式下,记下插槽,在我的情况下是 0:1f.2。在 AHCI 模式下,此插槽似乎会发生变化。
lspci
...
00:1f.2 IDE interface: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] (rev 03)
...