minlearn 发表于 2020-5-3 23:02

云主机上的osx?求助,在阿里云主机上启动mojave卡在random seed ++++++

本帖最后由 minlearn 于 2020-5-5 00:48 编辑

1) 事情是这样的:
我有一台阿里去轻量主机,属于BIOS机型(配置是i440fx主板,但是却有cascadelake cpu,带cirrus vga显卡,virtio ssd),我想把它安装上mojave,利用clover启动
1,按照网上的"mojave-mbr-hfs-firmware-check-patch"教程,我做了一个mbr分区的系统镜像,共分了二个区,第一个区是200M的fat32,命名为BOOT,这里是准备放clover.iso,EFI文件夹的地方,第二个区是一个大于15G的hfs+分区,用来放osx10.14.6系统
2,我使用的clover是5068(从源码编译得到,去除了源码树中Commit r3907的改变,否则在clover启动时会发生"Type 0D 通用保护错误" ),我把clover本身的启动过程称为preboot过程,因为接下来就是最重要的osx的kernel启动过程。
3,为了得到镜像我在本地linux架了kvm+qemu1.21,将osx10.14.6安装过去,(当然,整个qemu的配置,就是尽可能接近云主机的配置,这样,才能同时在本地和远程得到一致的结果,但是CPU我没有做到精确模拟)
在本地qemu虚拟机的测试中,mojave是可以启动到桌面的(接下来也会讲到,有点瑕疵)
4,我把从虚拟机得到的7.8G镜像上传安装到了云主机中,希望经过调试,它也能像在本地一样启动。也或许因为这二个环境区别永远不可能启动,但总得试试吧

(grub2+memdisk用来加载clover.iso,我还做了一个基于tinycorelinux的pe,这样我可以持续修改EFI中的config.plist,达到动态调试的目的)

(这是clover的启动菜单)


minlearn 发表于 2020-5-4 12:59

本帖最后由 minlearn 于 2020-5-5 15:13 编辑

2) 测试过程中使用到的软硬配置,配置文件,启动脚本,和其它资源:
(boot.sh在本地用于启动和安装镜像的qemu配置)
qemu-system-x86_64 -enable-kvm \
-machine pc-i440fx-2.1 \
-cpu Penryn,kvm=off,vendor=GenuineIntel \
-m 990 \
-device cirrus-vga,bus=pci.0,addr=0x2 \
-usb -device usb-kbd -device usb-mouse \
-device virtio-blk-pci,bus=pci.0,addr=0x5,drive=MacHDD \
-drive id=MacHDD,if=none,cache=writeback,format=raw,file=./osxkvm10146 \
-device virtio-net-pci,bus=pci.0,addr=0x3,mac='52:54:00:c9:18:27',netdev=MacNET \
-netdev bridge,id=MacNET,br=virbr0,"helper=/usr/lib/qemu/qemu-bridge-helper"

(这是ecs和虚拟机测试中都用的clover config.plist:)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

<key>RtVariables</key>
<dict>
<key>BooterConfig</key>
<string>0x28</string>
<key>CsrActiveConfig</key>
<string>0x67</string>
</dict>

<key>GUI</key>
<dict>
<key>ScreenResolution</key>
<string>1024x768</string>
<key>TextOnly</key>
<true/>
<key>ConsoleMode</key>
<string>Min</string>
</dict>

<key>Boot</key>
<dict>
<key>Arguments</key>
<string>Kernel="kernel" "Graphics Mode"="1024x768" "Boot Graphics"=No "Text Mode"=Yes -v debug=0x100</string>
<key>DefaultVolume</key>
<string>OSXKVM</string>
<key>Timeout</key>
<integer>10</integer>

<key>Debug</key>
<true/>
<key>Log</key>
<true/>
</dict>

<key>SystemParameters</key>
<dict>
<key>InjectKexts</key>
<string>Detect</string>
<key>NoCaches</key>
<string>No</string>
</dict>

<key>KernelAndKextPatches</key>
<dict>
<key>KernelToPatch</key>
<array>
<dict>
</dict>
<array/>

<key>Debug</key>
<true/>
</dict>

<key>SMBIOS</key>
<dict>
<key>BiosReleaseDate</key>
<string>12/22/2016</string>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>IM142.88Z.0118.B17.1612221936</string>
<key>Board-ID</key>
<string>Mac-27ADBB7B4CEE8E61</string>
<key>Family</key>
<string>iMac</string>
<key>Manufacter</key>
<string>Apple Inc.</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProductName</key>
<string>iMac14,2</string>
<key>SerialNumber</key>
<string>C02KK5W9F8J2</string>
<key>Version</key>
<string>1.0</string>

<key>Mobile</key>
<false/>
</dict>

</dict>
</plist>



minlearn 发表于 2020-5-4 13:29

本帖最后由 minlearn 于 2020-5-5 16:50 编辑

3) 测试结果和过程图
测试开始,变色龙,clover prebooting过程在本地vm和远程ecs都pass,能过


(vm端过chameleon verbose,进入Darwin verbose,后期有过一段花屏。)

(但是在vm端,当clover prebooting完成时,白屏占据了本应 "Darwin kernel verbose" 发生时的整个过程)



但二者最后,都能成功进入系统。



与使用变色龙clover这些本地vm测试不同结果的是,在ecs端,当完成clover preboot时,clover是卡在 "random seed,+++++"有时自动重启(就像其它贴子中常提到的),变色龙是显示一个黑屏。都无法进入桌面
这是2 种测试下的debug logs
ecs上的debug.log 0:7550:000=== [ GetCPUProperties ] ==================================
0:7550:000CPU Vendor = 756E6547 Model=50657
0:7550:000   The CPU supported SSE4.1
0:7550:000BrandString = Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
0:7550:000got cores from CPUID_1 = 2
0:7550:000   The CPU not supported turbo
0:7550:000   TSC/CCC Information Leaf:
0:7550:000    numerator   : 200
0:7550:000    denominator   : 2
0:7550:000   Calibrated ARTFrequency: 25000942
0:7550:000   Rounded ARTFrequency: 25100000
0:7550:000FSBFrequency = 100 MHz, DMI FSBFrequency = 0 MHz, Corrected FSBFrequency = 100 MHz
0:7550:000MaxDiv/MinDiv: 25.0/6
0:7550:000Turbo: 0/0/0/0
0:7550:000Features: 0x1F8BFBFF
0:7550:000Threads: 2
0:7550:000Cores: 2
0:7550:000FSB: 100 MHz
0:7550:000CPU: 2500 MHz
0:7550:000TSC: 2500 MHz
0:7550:000PIS: 400 MHz
0:7550:000ExternalClock: 100 MHz
=== [ GetAcpiTablesList ] =================================
4:0350:441Get Acpi Tables List from RSDT:
4:0620:026   - : FACPBXPCFACP len=116
4:0760:014   - : SSDTBXPCSSDT len=3107
4:0900:013   - : APICBXPCAPIC len=120
4:1050:014   - : SRATBXPCSRAT len=184
4:1180:013Calibrated TSC Frequency = 2500094240 = 2500MHz
21:1340:011=== [ PatchSmbios ] =======================================
21:6700:535SmbiosTable: Type 2 (BaseBoard Information) not found, create new
21:6810:010insert table 9 for dev 5:0
21:6930:011Trusting SMBIOS...
21:7040:011Channels: 1
21:7130:008Interleave: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
22:0600:347   partNum unknown
22:0730:013SMBIOS Type 17 Index = 0 => 0 0:
22:0890:015BANK 0 DIMM0 0MHz 1024MB
22:1010:011mTotalSystemMemory = 1024
22:1150:014NumberOfMemoryDevices = 1
22:1270:011=== [ PatchACPI ] =========================================
22:6800:552Xsdt is not found! Creating new one
22:6950:015RsdPointer is Acpi 1.0 - creating new one Acpi 2.0
22:7120:016RsdPointer Acpi 2.0 installed
22:7290:016RSDT entries = 4
22:7430:013Xsdt reallocation done
22:7590:016old FADT length=74
22:7750:015   SignatureFixup: 0x0 -> 0x0
22:7910:015Apply DsdtFixMask=0x00000000
22:8040:013   drop _DSM mask=0xFFFF
22:8160:011=== [ FixBiosDsdt ] =======================================
23:2910:474    0 replacements
23:3020:011PreCleanup XSDT: count=4, length=68
23:3200:018PreCleanup XSDT, corrected XSDT: count=4, length=68
23:3340:013=== [ ACPIDropTables ] ====================================
23:8710:537    0 replacements
23:8830:012CPUBase=0 and ApicCPUBase=0 ApicCPUNum=1
23:8950:011Unsupported CPU (0x6): P-States not generated !!!
23:9070:011GeneratePStates failed: Status=Not Found
23:9200:013SSDT with CPU C-States generated successfully
23:9300:009Cleanup XSDT: count=5, length=76
23:9430:013corrected XSDT count=5, length=76虚拟机上的debug.log 3:2460:000=== [ GetCPUProperties ] ==================================
3:2460:000CPU Vendor = 756E6547 Model=10673
3:2460:000   The CPU supported SSE4.1
3:2470:000BrandString = Intel Core 2 Duo P9xxx (Penryn Class Core 2)
3:2470:000   The CPU not supported turbo
3:2470:000MSR dumps:
3:2470:000          @0x00CD=3
3:2470:000          @0x0198=400000003E8
3:2470:000FSBFrequency = 942 MHz, DMI FSBFrequency = 0 MHz, Corrected FSBFrequency = 942 MHz
3:2470:000MaxDiv/MinDiv: 3.0/6
3:2470:000Turbo: 4/0/0/0
3:2470:000Features: 0x078BFBFD
3:2470:000Threads: 1
3:2470:000Cores: 1
3:2470:000FSB: 942 MHz
3:2470:000CPU: 2826 MHz
3:2470:000TSC: 2826 MHz
3:2470:000PIS: 3768 MHz
3:2470:000ExternalClock: 942 MHz
=== [ GetAcpiTablesList ] =================================
28:8523:726Get Acpi Tables List from RSDT:
29:1370:285   - : FACPBXPCFACP len=116
29:2570:120   - : SSDTBXPCSSDT len=3065
29:4550:197   - : APICBXPCAPIC len=120
29:5370:082   - : HPETBXPCHPET len=56
29:7120:174Calibrated TSC Frequency = 2825957220 = 2825MHz
83:5580:027=== [ PatchSmbios ] =======================================
87:4403:881SmbiosTable: Type 2 (BaseBoard Information) not found, create new
87:5210:080insert table 9 for dev 3:0
87:6870:166Trusting SMBIOS...
87:7930:106Channels: 1
87:8970:104Interleave: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
90:1992:301   partNum unknown
90:2710:071SMBIOS Type 17 Index = 0 => 0 0:
90:3880:117BANK 0 DIMM0 0MHz 990MB
90:5910:202mTotalSystemMemory = 990
90:6900:099NumberOfMemoryDevices = 1
90:8290:139=== [ PatchACPI ] =========================================
94:6373:807Xsdt is not found! Creating new one
94:7140:076RsdPointer is Acpi 1.0 - creating new one Acpi 2.0
94:8330:119RsdPointer Acpi 2.0 installed
94:9610:128RSDT entries = 4
95:2550:293Xsdt reallocation done
95:4030:148old FADT length=74
95:4700:066   SignatureFixup: 0x0 -> 0x0
95:5360:066Apply DsdtFixMask=0x00000000
95:9140:378   drop _DSM mask=0xFFFF
96:0370:123=== [ FixBiosDsdt ] =======================================
100:3034:266    0 replacements
100:3920:088PreCleanup XSDT: count=4, length=68
100:6530:261PreCleanup XSDT, corrected XSDT: count=4, length=68
100:7640:110=== [ ACPIDropTables ] ====================================
105:4834:719    0 replacements
105:5540:070CPUBase=0 and ApicCPUBase=0 ApicCPUNum=1
105:6300:075Cleanup XSDT: count=4, length=68
105:8220:191corrected XSDT count=4, length=68

minlearn 发表于 2020-5-4 13:32

本帖最后由 minlearn 于 2020-5-5 15:14 编辑

4)我从ecs抽取的BIOS ROMs
64kb bios(qemu使用128kb bios)



minlearn 发表于 2020-5-4 13:35

本帖最后由 minlearn 于 2020-5-5 15:15 编辑

{:5_277:}重点!!重点!!重点!!

所以,是什么使得本地测试和ECS一个能进桌面,一个不能结果不同呢,如果是CPU选型导致的,如何调试解决?或者其它非CPU途径的方法?
期待你的帮助和回复
页: [1]
查看完整版本: 云主机上的osx?求助,在阿里云主机上启动mojave卡在random seed ++++++