在我的 MacBook5,2(Nvidia 9400m 显卡)上,如果在 Windows 中安装了驱动程序,Windows 无法启动。如果这很重要,Windows 是以 EFI 模式安装的。
答案1
startup.nsh
我在EFI Shell 文件中输入了以下内容:
mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi
现在,如果只有一种方法可以在 EFI 变量中设置这些寄存器......
技术信息:虽然 Windows 8 不再要求 EFI 系统具有兼容 VGA 的视频,但 Nvidia 驱动程序显然仍具有兼容 VGA 的视频,如果未检测到,就会崩溃。上述命令应该在显卡中启用 VGA 支持。
答案2
首先,@kinokijuf 工作得很好,但我很难理解其背后到底发生了什么。
首先,这个解决方案在我使用 Windows 10 和 Macbook 5,2(白色/2009)的电脑上有效
如果你是不是关于什么是 EFI,我将尝试解释一下:这是一种启动系统的新方法,磁盘上有一个分区,里面有一堆小型 EFI 程序。此分区通常存在于 Mac/Windows 上(如果使用 EFI 选项安装),除非您安装它,否则您看不到它。
对于在 Mac 上安装:
diskutil list
sudo mkdir /Volumes/efi
sudo mount -t msdos /dev/disk0s1 /Volumes/efi
- 其中 /dev/disk0s1 是第一个命令中列出的 EFI 分区。
来源:http://themacadmin.com/mounting-the-efi-boot-partition-on-mac-os-x/
要在 Windows 上安装,请以管理员权限打开提示符并:
mountvol S: /S
好的,那我为什么需要知道这个呢?
你需要启动你的 Windows,但在此之前你需要运行这个该死的命令,所以我的建议是首先安装更好的引导程序。我推荐 rEFInd,它对我帮助很大,我一直在使用它。
网站:http://www.rodsbooks.com/refind/ 下载页面:http://www.rodsbooks.com/refind/getting.html 在 Windows 或 Mac 页面上安装:http://www.rodsbooks.com/refind/installing.html#windows
你做过那件事吗?
如果是,您目前知道存在 EFI 分区,并且您已将所有 refind 文件复制到该位置。您可以启动,您将看到 refind 正在执行启动加载过程。
您也知道在此过程中您复制了一个名为 refind.conf 的文件,对吗?
在此文件上,您可以配置“特殊手动 Windows 条目”,我的是这样的:
menuentry "Windows via shell script" {
icon \EFI\refind\icons\os_win.png
loader \EFI\tools\Shell_Full.efi
options "fs0:\EFI\tools\startup.nsh"
}
如果你检查的话,你会发现实际上在conf文件中有一个与此非常相似的。
此条目将显示,但为了使其起作用,您还需要另一个步骤! 我在 EFI 分区(EFI 文件夹内)创建了一个名为 tools 的文件夹,在里面我复制我从英特尔下载的一个 EFI 程序,通常称为 EFI Shell 2,文件名是 Shell_Full.efi。
来源如下:https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
我不会撒谎,我不知道这到底是干什么的,但它是一个程序,你把它放在工具文件夹中,然后您将传递一个 Shell 脚本作为该程序的参数运行。
因此,正如您在我的 refind.conf 条目的这一部分看到的,这里是参数:
options "fs0:\EFI\tools\startup.nsh"
你应该创造这个文件也作为参数传递,你将把解决你生活的命令放在那里。我的(startup.nsh)如下:
mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi
就是这样了,我现在在 Windows 10 上用这个该死的 Nvidia 驱动程序 341.74 写作,我花了整整两天时间重新启动、修复、重新安装、更新,直到我最终找到完整的解决方案。
因此,如果您在 EFI 上安装 Windows 10 时遇到此修复/重启/循环,则可以使用此方法。我希望将来能找到一种使用较少中间程序来启动我的 MacBook 的方法。
答案3
对于那些在旧 Mac 上遇到问题的用户,请尝试更改启动.nsh值:
mm 0010003E 1 ;PCI :8
mm 03000004 1 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi
答案4
在我的MacBook 2009 年末(Macbook6,1 或 a1342)这efi 外壳命令“ pci -b
”显示:
Seg Bus Dev Func
--- --- --- ----
00 00 00 00 ==> Bridge Device - Host/PCI bridge
Vendor 10DE Device 0A82 Prog Interface 0
00 00 00 01 ==> Memory Controller - RAM memory controller
Vendor 10DE Device 0A88 Prog Interface 0
00 00 03 00 ==> Bridge Device - PCI/ISA bridge
Vendor 10DE Device 0AAE Prog Interface 0
00 00 03 01 ==> Memory Controller - RAM memory controller
Vendor 10DE Device 0AA4 Prog Interface 0
00 00 03 02 ==> Serial Bus Controllers - System Management Bus
Vendor 10DE Device 0AA2 Prog Interface 0
00 00 03 03 ==> Memory Controller - RAM memory controller
Vendor 10DE Device 0A89 Prog Interface 0
00 00 03 04 ==> Memory Controller - RAM memory controller
Vendor 10DE Device 0A98 Prog Interface 0
00 00 03 05 ==> Processors - Co-processor
Vendor 10DE Device 0AA3 Prog Interface 0
00 00 04 00 ==> Serial Bus Controllers - USB
Vendor 10DE Device 0AA5 Prog Interface 10
00 00 04 01 ==> Serial Bus Controllers - USB
Vendor 10DE Device 0AA6 Prog Interface 20
00 00 06 00 ==> Serial Bus Controllers - USB
Vendor 10DE Device 0AA7 Prog Interface 10
00 00 06 01 ==> Serial Bus Controllers - USB
Vendor 10DE Device 0AA9 Prog Interface 20
00 00 08 00 ==> Multimedia Device - UNDEFINED
Vendor 10DE Device 0AC0 Prog Interface 0
00 00 09 00 ==> Bridge Device - PCI/PCI bridge
Vendor 10DE Device 0AAB Prog Interface 1
00 00 0A 00 ==> Network Controller - Ethernet controller
Vendor 10DE Device 0AB0 Prog Interface 0
00 00 0B 00 ==> Mass Storage Controller - UNDEFINED
Vendor 10DE Device 0AB9 Prog Interface 1
00 00 10 00 ==> Bridge Device - PCI/PCI bridge
Vendor 10DE Device 0AA0 Prog Interface 0
00 00 15 00 ==> Bridge Device - PCI/PCI bridge
Vendor 10DE Device 0AC6 Prog Interface 0
00 02 00 00 ==> Display Controller - VGA/8514 controller
Vendor 10DE Device 0863 Prog Interface 0
00 03 00 00 ==> Network Controller - Other network controller
Vendor 14E4 Device 4353 Prog Interface 0
我有两个PCI-PCI 桥接器
00 00 10 00 ==> Bridge Device - PCI/PCI bridge
00 00 15 00 ==> Bridge Device - PCI/PCI bridge
和我的VGA 控制器正在
00 02 00 00 ==> Display Controller - VGA/8514 controller
为了正常工作,必须启用VGA 控制器和PCI-PCI 桥接器连接于VGA 控制器。
我尝试启用PCI-PCI 桥接器 00 00 10 00
在登记处3E
放置;PCI :8
和VGA 控制器 00 02 00 00
在登记处04
放; PCI :7
。我的“启动.nsh” 变成这样了。
mm 000010003E ;PCI :8
mm 0002000004 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi
不幸的是,这不是正确的PCI-PCI 桥接器所以我改变了我的启动.nsh以启用00 00 15 00
PCI-PCI 桥接器
mm 000015003E ;PCI :8
mm 0002000004 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi
并且成功了。就是这样