Code Monkey home page Code Monkey logo

Comments (24)

qmfrederik avatar qmfrederik commented on May 18, 2024

So this is what I tried so far:

export kernel_filename=~/ipsw/kernelcache.release.iphone11b.decompressed
export ramdisk_filename=~/ipsw/038-96262-062.dmg.payload
export dtb_filename=~/ipsw/DeviceTree.n104ap.im4p.decompressed
export trustcache_filename=~/ipsw/Firmware/038-96262-062.dmg.trustcache.payload
export kargs=debug=0x8 kextlog=0xfff cpus=1 rd=disk0 serial=2

qemu-system-aarch64 -D log.txt -M t8030,kernel-filename=${kernel_filename},ramdisk-filename=${ramdisk_filename},dtb-filename=${dtb_filename},trustcache-filename=${trustcache_filename},kern-cmd-args="${kargs}",xnu-ramfb=off

This results in:

g_virt_base: 0xfffffff004000000
g_phys_base: 0x0000000800000000
kernel_low: 0xfffffff004004000
kernel_high: 0xfffffff009aa2c08
Failed to find gap of requested size: 18446744073641918464
Aborted (core dumped)

With the following backtrace:

Thread 1 "qemu-system-aar" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff7630859 in __GI_abort () at abort.c:79
#2  0x0000555555dfb118 in find_ram_offset (size=18446744073641918464) at ../softmmu/physmem.c:1574
#3  0x0000555555dfbb82 in ram_block_add (new_block=0x555557db1a80, errp=0x7fffffffdac8, shared=false) at ../softmmu/physmem.c:1869
#4  0x0000555555dfc456 in qemu_ram_alloc_internal (size=18446744073641918464, max_size=18446744073641918464, resized=0x0, host=0x0, resizeable=false, share=false, mr=0x555557db1500, errp=0x7fffffffdb60)
    at ../softmmu/physmem.c:2070
#5  0x0000555555dfc539 in qemu_ram_alloc (size=18446744073641918464, share=false, mr=0x555557db1500, errp=0x7fffffffdb60) at ../softmmu/physmem.c:2089
#6  0x0000555555ec77f6 in memory_region_init_ram_shared_nomigrate (mr=0x555557db1500, owner=0x0, name=0x55555622e09f "RAM", size=18446744073641918464, share=false, errp=0x7fffffffdbf8) at ../softmmu/memory.c:1550  
#7  0x0000555555ec7764 in memory_region_init_ram_nomigrate (mr=0x555557db1500, owner=0x0, name=0x55555622e09f "RAM", size=18446744073641918464, errp=0x7fffffffdbf8) at ../softmmu/memory.c:1535
#8  0x0000555555ecc6d7 in memory_region_init_ram (mr=0x555557db1500, owner=0x0, name=0x55555622e09f "RAM", size=18446744073641918464, errp=0x5555567b2be0 <error_fatal>) at ../softmmu/memory.c:3207
#9  0x0000555555bf7a2a in allocate_ram (top=0x5555568ff300, name=0x55555622e09f "RAM", addr=34561589248, size=18446744073641918464) at ../hw/arm/xnu_mem.c:120
#10 0x0000555555c2e915 in T8030_memory_setup (machine=0x555556b00410) at ../hw/arm/t8030.c:593
#11 0x0000555555c307a5 in T8030_machine_init (machine=0x555556b00410) at ../hw/arm/t8030.c:1012
#12 0x0000555555b84944 in machine_run_board_init (machine=0x555556b00410) at ../hw/core/machine.c:1134
#13 0x0000555555e3c63d in qemu_init (argc=5, argv=0x7fffffffe128, envp=0x7fffffffe158) at ../softmmu/vl.c:4369
#14 0x0000555555849e75 in main (argc=5, argv=0x7fffffffe128, envp=0x7fffffffe158) at ../softmmu/main.c:49

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

UPDATE: Follow this guide

You need to set -M 4G or something like that I believe

qemu-t8030/build/qemu-system-aarch64 -s -M t8030,kernel-filename=kernelcache.research.iphone12b.out,dtb-filename=Firmware/all_flash/DeviceTree.n104ap.im4p.out,kern-cmd-args="debug=0x8 kextlog=0xffff io=0xfff rd=md0 serial=2 -v nvme=0xffff pmgr-debug=0xff",ramdisk-filename=038-44087-125.dmg.out,xnu-ramfb=on,trustcache-filename=Firmware/038-44087-125.dmg.trustcache.out -cpu max -m 4G -serial mon:stdio -monitor telnet:127.0.0.1:1235,server,nowait -smp 6

The tools for unpacking im4p can be found at https://github.com/TrungNguyen1909/xnu-qemu-arm64-tools

The ramdisk FS need to be decompressed. resize it with something like
hdiutil resize -size 512M -imagekey diskimage-class=CRawDiskImage 038-44087-125.dmg.out
attach:
hdiutil attach -imagekey diskimage-class=CRawDiskImage 038-44087-125.dmg.out

To decompress, do sudo afscexpand /path/to/mount/point or do a rsync -av back and forth.

That should get launchd up.

P/s: .out files are extracted using scripts inside xnu-qemu-arm64-tools/bootstrap_scripts/

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

Thanks, @TrungNguyen1909 , I get this far:

BSD root: md0, major 3, minor 0
apfs_vfsop_mountroot:2214: apfs: mountroot called!
apfs_vfsop_mount:1777: unable to root from devvp <ptr> (root_device): 2
apfs_vfsop_mountroot:2218: apfs: mountroot failed, error: 2
hfs: mounted AzulD18D52.arm64eCustomerRamDisk on device b(3, 0)
dyld: setting comm page to 0x0
Attempting to forcibly halt cpu 4
cpu 4 failed to halt with error -5: halt not supported for this configuration
Debugger synchronization timed out; waited 10000000 nanoseconds
IOPlatformPanicAction -> AppleT8030PMGR
Kernel data abort. at pc 0xfffffff008bcad2c, lr 0xfffffff008bcad24 (saved state: 0xffffffe80e4ab2d0)
          x0: 0x0000000000000000  x1:  0x0000000000000014  x2:  0x0000000000000000  x3:  0x0000000000000000
          x4: 0x0000000000000062  x5:  0x000000023b040000  x6:  0xffffffe8001e1d80  x7:  0x0988fff0078f14f0
          x8: 0xffffffe80e4c0048  x9:  0x0000000000000028  x10: 0x00000000fffd8000  x11: 0xffffffe4cda82e10
          x12: 0x000000007fffffff x13: 0x00000000ffffffff  x14: 0x0000000000000000  x15: 0x0000000000000010
          x16: 0xfffffff0078f1148 x17: 0xfffffff0078f1148  x18: 0x0000000000000000  x19: 0xffffffe8001c0000
          x20: 0x0000000000088000 x21: 0xffffffe8001e23a0  x22: 0xcda1ffe8001c0000  x23: 0x000000023b084000
          x24: 0x0000000000084000 x25: 0x000000023d284000  x26: 0x0000000000000001  x27: 0xfffffff11a306a50
          x28: 0xfffffff009aa8000 fp:  0xffffffe80e4ab660  lr:  0xfffffff008bcad24  sp:  0xffffffe80e4ab620
          pc:  0xfffffff008bcad2c cpsr: 0x204003c4         esr: 0x96000010          far: 0xffffffe80e4c0048
panic(cpu 5 caller 0xfffffff008178694):  initproc exited -- exit reason namespace 6 subcode 0x5 description: dyld cache load error: shared cache file open() failed
Library not loaded: /usr/lib/system/libcommonCrypto.dylib
  Referenced from: /usr/lib/libSystem.B.dylib
  Reason: no suitable image found.  Did find:
        /usr/lib/system/libcommonCrypto.dylib: code signature invalid for '/usr/lib/system/libcommonCrypto.dylib'

        /usr/lib/system/libcommonCrypto.dylib: stat() failed with errno=25
        /usr/lib/system/libcommonCrypto.dylib: unknown file type, first eight bytes: 0x01 0x0D 0x01 0xC0 0x0B 0x40 0x01 0x0D

although the exact error message can vary slightly.

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

The ramdisk FS need to be decompressed. resize it with something like
hdiutil resize -size 512M -imagekey diskimage-class=CRawDiskImage 038-44087-125.dmg.out
attach:
hdiutil attach -imagekey diskimage-class=CRawDiskImage 038-44087-125.dmg.out

To decompress, do sudo afscexpand /path/to/mount/point or do a rsync -av back and forth.

For the rsync -av method, you need to erase the HFS+ partition before copy back.

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

Thanks, looks like the disk was too small (I used 128M instead of 512M) and this caused afscexpand to silently fail. Doh!

So this is what I get now:

BSD root: md0, major 3, minor 0
apfs_vfsop_mountroot:2214: apfs: mountroot called!
apfs_vfsop_mount:1777: unable to root from devvp <ptr> (root_device): 2
apfs_vfsop_mountroot:2218: apfs: mountroot failed, error: 2
hfs: mounted AzulD18D52.arm64eCustomerRamDisk on device b(3, 0)
dyld: setting comm page to 0x0
Thu Jan  1 00:05:50 1970  com.apple.xpc.launchd[1] <Notice>: hello
Darwin Bootstrapper Version 7.0.0: Sun Dec 20 17:53:52 PST 2020; root:libxpc_executables-2038.80.3~5/launchd/RELEASE_ARM64E
boot-args = debug=0x8 kextlog=0xffff io=0xfff rd=md0 serial=2 -v nvme=0xffff pmgr-debug=0xff
Thu Jan  1 00:05:50 1970 localhost com.apple.xpc.launchd[1] <Notice>: Restore environment starting.
Thu Jan  1 00:07:20 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering ondemand mode
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fsck
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: mount-phase-1
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: data-protection
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-obliteration
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: commit-boot-mode
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: boot-mode committed: (null)
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: restore-datapartition
Thu Jan  1 00:07:23 1970 localhost com.apple.xpc.launchd[1] <Notice>: restore-datapartition: optional boot task not present
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: mount-phase-2
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: init-with-data-volume
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: MSUEarlyBootTask
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fips
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: keybag
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: usermanagerd
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: init_featureflags
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fud
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: tzinit
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-restore
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-demo-restore
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: sysstatuscheck
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: prng_seedctl
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Error>: Unable to open /System/Library/xpc/launchd.plist [2:No such file or directory]
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: launchd_cache_loader
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Error>: No MRM cache found
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Warning>: Unable to load cache
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: launchd UUID: 2AA0C171-F3A9-3C91-85B9-AAB0371DAC25
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Early boot complete. Continuing system boot.
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering bootstrap mode
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker) <Warning>: Unknown key for Boolean: EnablePressureExit
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.KeyMaker (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.PurpleReverseProxy.ramdisk (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.diskimagesiod.ram (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.restored_external (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemonsAltAccount, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /AppleInternal/Library/LaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting bootstrap mode
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting ondemand mode
Attempting to forcibly halt cpu 0
cpu 0 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 1
cpu 1 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 2
cpu 2 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 4
cpu 4 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 5
cpu 5 failed to halt with error -5: halt not supported for this configuration
Debugger synchronization timed out; waited 10000000 nanoseconds
IOPlatformPanicAction -> AppleT8030PMGR
Kernel data abort. at pc 0xfffffff008bcad2c, lr 0xfffffff008bcad24 (saved state: 0xffffffe80de2b3c0)
          x0: 0x0000000000000000  x1:  0x0000000000000014  x2:  0x0000000000000000  x3:  0x0000000000000000
          x4: 0x0000000000000062  x5:  0x000000023b040000  x6:  0xffffffe80070dd80  x7:  0x0988fff0078f14f0
          x8: 0xffffffe80dde0048  x9:  0x0000000000000028  x10: 0x00000000fffd8000  x11: 0xffffffe4cdfad230
          x12: 0x000000007fffffff x13: 0x00000000ffffffff  x14: 0x0000000000000000  x15: 0x0000000000000010
          x16: 0xfffffff0078f1148 x17: 0xfffffff0078f1148  x18: 0x0000000000000000  x19: 0xffffffe8006ec000
          x20: 0x0000000000088000 x21: 0xffffffe80070e3a0  x22: 0xcda1ffe8006ec000  x23: 0x000000023b084000
          x24: 0x0000000000084000 x25: 0x000000023d284000  x26: 0x0000000000000001  x27: 0xfffffff14a30e910
          x28: 0xfffffff009aa8000 fp:  0xffffffe80de2b750  lr:  0xfffffff008bcad24  sp:  0xffffffe80de2b710
          pc:  0xfffffff008bcad2c cpsr: 0x204003c4         esr: 0x96000010          far: 0xffffffe80dde0048
panic(cpu 3 caller 0xfffffff007a7ec68): "Ticket spinlock timeout; start: 0x41871adaf, end: 0x4189f746f, current: 0x418a0628a, lock: 0xfffffff009aa8f80, *lock: 0x12, waiting for 0x15, owner: 0"

Do you get a similar result?

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

It can be workarounded by removing pmgr-debug=0xff boot args.

This is due to the hacky PMGR implementation which I haven't got enough time to work on.

Thanks, looks like the disk was too small (I used 128M instead of 512M) and this caused afscexpand to silently fail. Doh!

So this is what I get now:

BSD root: md0, major 3, minor 0
apfs_vfsop_mountroot:2214: apfs: mountroot called!
apfs_vfsop_mount:1777: unable to root from devvp <ptr> (root_device): 2
apfs_vfsop_mountroot:2218: apfs: mountroot failed, error: 2
hfs: mounted AzulD18D52.arm64eCustomerRamDisk on device b(3, 0)
dyld: setting comm page to 0x0
Thu Jan  1 00:05:50 1970  com.apple.xpc.launchd[1] <Notice>: hello
Darwin Bootstrapper Version 7.0.0: Sun Dec 20 17:53:52 PST 2020; root:libxpc_executables-2038.80.3~5/launchd/RELEASE_ARM64E
boot-args = debug=0x8 kextlog=0xffff io=0xfff rd=md0 serial=2 -v nvme=0xffff pmgr-debug=0xff
Thu Jan  1 00:05:50 1970 localhost com.apple.xpc.launchd[1] <Notice>: Restore environment starting.
Thu Jan  1 00:07:20 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering ondemand mode
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fsck
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: mount-phase-1
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: data-protection
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-obliteration
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: commit-boot-mode
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: boot-mode committed: (null)
Thu Jan  1 00:07:21 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: restore-datapartition
Thu Jan  1 00:07:23 1970 localhost com.apple.xpc.launchd[1] <Notice>: restore-datapartition: optional boot task not present
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: mount-phase-2
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: init-with-data-volume
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: MSUEarlyBootTask
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fips
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: keybag
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: usermanagerd
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: init_featureflags
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: fud
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: tzinit
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-restore
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: finish-demo-restore
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: sysstatuscheck
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: prng_seedctl
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Error>: Unable to open /System/Library/xpc/launchd.plist [2:No such file or directory]
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Skipping boot-task: launchd_cache_loader
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Error>: No MRM cache found
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Warning>: Unable to load cache
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: launchd UUID: 2AA0C171-F3A9-3C91-85B9-AAB0371DAC25
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] <Notice>: Early boot complete. Continuing system boot.
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering bootstrap mode
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker) <Warning>: Unknown key for Boolean: EnablePressureExit
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.KeyMaker (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.PurpleReverseProxy.ramdisk (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.diskimagesiod.ram (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:24 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.restored_external (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemonsAltAccount, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /AppleInternal/Library/LaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting bootstrap mode
Thu Jan  1 00:07:25 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting ondemand mode
Attempting to forcibly halt cpu 0
cpu 0 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 1
cpu 1 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 2
cpu 2 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 4
cpu 4 failed to halt with error -5: halt not supported for this configuration
Attempting to forcibly halt cpu 5
cpu 5 failed to halt with error -5: halt not supported for this configuration
Debugger synchronization timed out; waited 10000000 nanoseconds
IOPlatformPanicAction -> AppleT8030PMGR
Kernel data abort. at pc 0xfffffff008bcad2c, lr 0xfffffff008bcad24 (saved state: 0xffffffe80de2b3c0)
          x0: 0x0000000000000000  x1:  0x0000000000000014  x2:  0x0000000000000000  x3:  0x0000000000000000
          x4: 0x0000000000000062  x5:  0x000000023b040000  x6:  0xffffffe80070dd80  x7:  0x0988fff0078f14f0
          x8: 0xffffffe80dde0048  x9:  0x0000000000000028  x10: 0x00000000fffd8000  x11: 0xffffffe4cdfad230
          x12: 0x000000007fffffff x13: 0x00000000ffffffff  x14: 0x0000000000000000  x15: 0x0000000000000010
          x16: 0xfffffff0078f1148 x17: 0xfffffff0078f1148  x18: 0x0000000000000000  x19: 0xffffffe8006ec000
          x20: 0x0000000000088000 x21: 0xffffffe80070e3a0  x22: 0xcda1ffe8006ec000  x23: 0x000000023b084000
          x24: 0x0000000000084000 x25: 0x000000023d284000  x26: 0x0000000000000001  x27: 0xfffffff14a30e910
          x28: 0xfffffff009aa8000 fp:  0xffffffe80de2b750  lr:  0xfffffff008bcad24  sp:  0xffffffe80de2b710
          pc:  0xfffffff008bcad2c cpsr: 0x204003c4         esr: 0x96000010          far: 0xffffffe80dde0048
panic(cpu 3 caller 0xfffffff007a7ec68): "Ticket spinlock timeout; start: 0x41871adaf, end: 0x4189f746f, current: 0x418a0628a, lock: 0xfffffff009aa8f80, *lock: 0x12, waiting for 0x15, owner: 0"

Do you get a similar result?

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

Thanks!

This gets me a step further:

Thu Jan  1 00:07:04 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering bootstrap mode
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker) <Warning>: Unknown key for Boolean: EnablePressureExit
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.KeyMaker (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.PurpleReverseProxy.ramdisk (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.diskimagesiod.ram (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: com.apple.restored_external (lint): Unable to find persona with type 6: kpersona_find returned -1
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemonsAltAccount, error = 2: No such file or directory
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /System/Library/NanoLaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:06 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Error>: Failed to bootstrap path: path = /AppleInternal/Library/LaunchDaemons, error = 2: No such file or directory
Thu Jan  1 00:07:07 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting bootstrap mode
Thu Jan  1 00:07:07 1970 localhost com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: exiting ondemand mode
Thu Jan  1 00:08:02 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker.3) <Warning>: Could not find and/or execute program specified by service: 2: No such file or directory: /usr/local/bin/KeyMaker
Thu Jan  1 00:08:02 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker.3) <Notice>: Service setup event to handle failure and will not launch until it fires.
Thu Jan  1 00:08:02 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker.3) <Error>: Missing executable detected. Job: 'com.apple.KeyMaker' Executable: '/usr/local/bin/KeyMaker'
Thu Jan  1 00:08:18 1970 localhost com.apple.xpc.launchd[1] (com.apple.KeyMaker.3) <Warning>: Service exited with abnormal code: 78
Thu Jan  1 00:09:13 1970 localhost com.apple.xpc.launchd[1] (com.apple.restored_external.4) <Warning>: Binary is improperly signed.
Thu Jan  1 00:09:13 1970 localhost com.apple.xpc.launchd[1] <Error>: Host-level exception raised: pid = 4, thread = 0x1107, exception type = 0xd, codes = { 12884901890 }, states = { 0 }

Are the errors about the missing files and the improperly signed executable?

Should we be able to interact with the device over USB at this point (once an USB controller is emulated)? I can see the device-tree lists a usb-drd device like this:

      +--usb-drd:
|  |  |  +--clock-gates 8 bytes: (null) 0x67 0x00 0x00 0x00 0xf5 0x00 0x00 0x00
|  |  |  +--AAPL,phandle 4 bytes: (null) 0x8d 0x00 0x00 0x00
|  |  |  +--configuration-string 19 bytes: stdMuxPTPEthValIDA 0x73 0x74 0x64 0x4d 0x75 0x78 0x50 0x54 0x50 0x45 0x74 0x68 0x56 0x61 0x6c 0x49 0x44 0x41 0x00
|  |  |  +--atc-phy-parent 4 bytes: (null) 0x8c 0x00 0x00 0x00
|  |  |  +--function-dock_parent 8 bytes: (null) 0xf3 0x00 0x00 0x00 0x50 0x63 0x63 0x61
|  |  |  +--tunable 80 bytes: (null) 0x00 0x00 0x00 0x00 0x1c 0xc1 0x00 0x00 0xf0 0x00 0xe0 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 0x2c 0xc1 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x64 0xc1 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0c 0xc6 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x40 0x00 0x00 0x01 0x00 0x00 0x00 0x18 0x00 0x00 0x00 0xff 0x00 0x00 0x00 0x33 0x00 0x00 0x00
|  |  |  +--iommu-parent 4 bytes: (null) 0x91 0x00 0x00 0x00
|  |  |  +--host-mac-address 40 bytes: (null) 0x6d 0x61 0x63 0x61 0x64 0x64 0x72 0x2f 0x77 0x69 0x66 0x69 0x61 0x64 0x64 0x72 0x2c 0x73 0x79 0x73 0x63 0x66 0x67 0x2f 0x57 0x4d 0x61 0x63 0x2f 0x36 0x2c 0x7a 0x65 0x72 0x6f 0x65 0x73 0x2f 0x36 0x00
|  |  |  +--device-mac-address 39 bytes: macaddr/ethaddr,syscfg/EMac/6,zeroes/6 0x6d 0x61 0x63 0x61 0x64 0x64 0x72 0x2f 0x65 0x74 0x68 0x61 0x64 0x64 0x72 0x2c 0x73 0x79 0x73 0x63 0x66 0x67 0x2f 0x45 0x4d 0x61 0x63 0x2f 0x36 0x2c 0x7a 0x65 0x72 0x6f 0x65 0x73 0x2f 0x36 0x00
|  |  |  +--bus-number 4 bytes: (null) 0x00 0x00 0x00 0x00
|  |  |  +--name 8 bytes: usb-drd
|  |  |  +--interrupt-parent 4 bytes: (null) 0x1a 0x00 0x00 0x00
|  |  |  +--port-type 4 bytes: (null) 0x0c 0x00 0x00 0x00
|  |  |  +--compatible 28 bytes: (null) 0x75 0x73 0x62 0x2d 0x64 0x72 0x64 0x2c 0x74 0x38 0x30 0x33 0x30 0x00 0x75 0x73 0x62 0x2d 0x64 0x72 0x64 0x2c 0x74 0x38 0x30 0x32 0x37 0x00
|  |  |  +--clock-ids 4 bytes: (null) 0x4b 0x01 0x00 0x00
|  |  |  +--interrupts 16 bytes: (null) 0xf1 0x01 0x00 0x00 0xf2 0x01 0x00 0x00 0xf3 0x01 0x00 0x00 0xf4 0x01 0x00 0x00
|  |  |  +--tunable_setting 72 bytes: (null) 0x1c 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0xf0 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x64 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|  |  |  +--port-number 4 bytes: (null) 0x01 0x00 0x00 0x00
|  |  |  +--device_type 8 bytes: (null) 0x75 0x73 0x62 0x2d 0x64 0x72 0x64 0x00
|  |  |  +--eps-dir-bitmap 4 bytes: (null) 0x64 0x02 0x00 0x00
|  |  |  +--reg 48 bytes: (null) 0x00 0x00 0x01 0x39 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x39 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0xc0 0x01 0x39 0x00 0x00 0x00 0x00 0x00 0x18 0x00 0x00 0x00 0x00 0x00 0x00
         +--usb-drd-port-hs:
|  |  |  |  +--port 4 bytes: (null) 0x01 0x00 0x00 0x00
|  |  |  |  +--AAPL,phandle 4 bytes: (null) 0x8e 0x00 0x00 0x00
|  |  |  |  +--port-speed 4 bytes: (null) 0x02 0x00 0x00 0x00
|  |  |  |  +--port-current-limit 4 bytes: (null) 0x32 0x00 0x00 0x00
|  |  |  |  +--device_type 16 bytes: (null) 0x75 0x73 0x62 0x2d 0x64 0x72 0x64 0x2d 0x70 0x6f 0x72 0x74 0x2d 0x68 0x73 0x00
|  |  |  |  +--name 16 bytes: usb-drd-port-hs
|  |  |  |  +--port-type 4 bytes: (null) 0x02 0x00 0x00 0x00

which seems to indicate that the USB device is using the 0x390100 - 0x390200, 0x390200 - 0x390300 and 0x3901c0 - 0x39d800 address spaces (the last one overlaps with the first) and using the 0x01f1, 0x1f2, 0x01f3, 0x01f4 interrupts, right?

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

Are the errors about the missing files and the improperly signed executable?

This is the current status of the project, I haven't gone any further than that.

Should we be able to interact with the device over USB at this point (once an USB controller is emulated)? I can see the device-tree lists a usb-drd device like this:

Hopefully.

which seems to indicate that the USB device is using the 0x390100 - 0x390200, 0x390200 - 0x390300 and 0x3901c0 - 0x39d800 address spaces (the last one overlaps with the first) and using the 0x01f1, 0x1f2, 0x01f3, 0x01f4 interrupts, right?

These are actually offsets from the arm-io SOC base physical address.

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

Thanks. I've made a very naive attempt at registering read/write handlers for the USB address space: https://github.com/qmfrederik/qemu-t8030/commit/5eee15de406ba6a344c4e4b4769b987e7594efee, but it looks like the handlers are not being invoked.

I'm not sure whether this is because there's an obvious bug in my code, or because the interrupts are not registered.

(never mind my comment about the AIC, I can see there's a hw/intc/apple-aic.c file)

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

UPDATE: You can find the updated tutorial here

from qemu-t8030.

cutesmilee avatar cutesmilee commented on May 18, 2024

have you tested this on macOS too? i saw a "guide" for compiling this on macOS, but it doesn't work, at least on Big Sur (11.2.2). this is a log with the "macOS guide" (https://github.com/TrungNguyen1909/qemu-t8030/pull/6/checks (i tried both build_aarch64_softmmu_macos, and build_macos_all)), but the same thing happen using you commands.

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

What errors do you get?
I work on a Catalina machine

have you tested this on macOS too? i saw a "guide" for compiling this on macOS, but it doesn't work, at least on Big Sur (11.2.2). this is a log with the "macOS guide" (https://github.com/TrungNguyen1909/qemu-t8030/pull/6/checks (i tried both build_aarch64_softmmu_macos, and build_macos_all)), but the same thing happen using you commands.

from qemu-t8030.

cutesmilee avatar cutesmilee commented on May 18, 2024

oh seems like i forgot to include the link for the log, here it is https://ghostbin.com/paste/imt1R

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

@cutecodee, you are building on a M1 machine, right?

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

@TrungNguyen1909 Yes, I can get launchd up with the ans-dev branch:

BSD root: disk0s1, major 1, minor 1
virtual bool AppleEmbeddedNVMeController::StartController()::1547:Setting NAND status to Ready
virtual bool AppleEmbeddedNVMeController::StartController()::1547:Setting NAND status to Ready
apfs_vfsop_mountroot:2188: apfs: mountroot called!
dev_init:297: disk0s1 device accelerated crypto: 3 (compiled @ Aug 12 2020 22:19:57)
dev_init:300: disk0s1 device_handle block size 512 block count 15030424 features 6 internal solidstate
nx_kernel_mount:1134: disk0s1 initializing cache w/hash_size 4096 and cache size 10064
nx_kernel_mount:1402: disk0s1 checkpoint search: largest xid 56, best xid 56 @ 3
apfs_vfsop_mount:1848: Promoter has been locked for disk0s1
failed to find root-snapshot-name snapshot
handle_mount:627: vol-uuid: 5133F48D-5D9E-499B-A8BA-45E692E36FD9 block size: 4096 block count: 1878803 (unencrypted; flags: 0x1; features: 8.0.12)
handle_mount:640: setting dev block size to 4096 from 512
nx_volume_group_update:6634: Volume AzulSeed18A5351d.N104N841DeveloperOS is not in a volume group
apfs_vfsop_mount:2171: disk0s1s1:0 mounted volume: AzulSeed18A5351d.N104N841DeveloperOS
void AppleNVMeController::LowPowerTimerEvent()::1188:
void IONVMeController::CheckForTimeout(IOTimerEventSource *)::5214:
dyld: setting comm page to 0x0
Thu Jan  1 00:02:16 1970  com.apple.xpc.launchd[1] <Notice>: hello
Darwin Bootstrapper Version 7.0.0: Mon Aug 10 04:09:14 PDT 2020; root:libxpc_executables-2038.0.13~13/launchd/RELEASE_ARM64E
boot-args = debug=0x8 kextlog=0xffff serial=2 -v nvme=0xffff rd=disk0s1
Thu Jan  1 00:02:17 1970  com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system) <Notice>: entering ondemand mode
Thu Jan  1 00:02:17 1970 localhost com.apple.xpc.launchd[1] <Notice>: Doing boot task: fsck
void IONVMeController::CheckForTimeout(IOTimerEventSource *)::5214:
Attempting to forcibly halt cpu 1
cpu 1 failed to halt with error -5: halt not supported for this configuration
Debugger synchronization timed out; waited 10000000 nanoseconds
IOPlatformPanicAction -> AppleANS2NVMeController
IOPlatformPanicAction -> RTBuddyV2
IOPlatformPanicAction -> RTBuddyV2
IOPlatformPanicAction -> AppleT8030PMGR
Kernel data abort. at pc 0xfffffff008b2e0ec, lr 0xfffffff008b2e0e4 (saved state: 0xffffffe815f82210)
          x0: 0x0000000000000000  x1:  0x0000000000000014  x2:  0x0000000000000000  x3:  0x0000000000000000
          x4: 0x0000000000000062  x5:  0x000000023b040000  x6:  0xffffffe8004c1d48  x7:  0x0988fff0078b70b8
          x8: 0xffffffe80e848048  x9:  0x0000000000000028  x10: 0x00000000fffd8000  x11: 0xffffffe4cdd7af80
          x12: 0x000000007fffffff x13: 0x00000000ffffffff  x14: 0x0000000000000000  x15: 0x0000000000000010
          x16: 0xfffffff0078b6d10 x17: 0xfffffff0078b6d10  x18: 0x0000000000000000  x19: 0xffffffe8004a0000
          x20: 0x0000000000088000 x21: 0xffffffe8004c2368  x22: 0xcda1ffe8004a0000  x23: 0x000000023b084000
          x24: 0x0000000000084000 x25: 0x000000023d284000  x26: 0x0000000000000001  x27: 0xfffffff1482b0a40
          x28: 0xfffffff0099a6000 fp:  0xffffffe815f825a0  lr:  0xfffffff008b2e0e4  sp:  0xffffffe815f82560
          pc:  0xfffffff008b2e0ec cpsr: 0x204003c4         esr: 0x96000010          far: 0xffffffe80e848048
panic(cpu 4 caller 0xfffffff008128350): Kernel data abort. at pc 0xfffffff007a3c458, lr 0xfffffff007a3d3a8 (saved state: 0xffffffe815f82e90)
          x0: 0xfffffff0076c89b8  x1:  0xffffffe80060c000  x2:  0x0000000000000000  x3:  0x0000000000000000
          x4: 0xffffffe19bd74080  x5:  0x0000000000000000  x6:  0x30767aa33a29cd7d  x7:  0xfffffff1482b1080
          x8: 0xffffffe80060c000  x9:  0x0000000000000000  x10: 0x0000000000000003  x11: 0xffffffe80060c008
          x12: 0xfffffff0099abba8 x13: 0x00000000ff866f5d  x14: 0x0000000000000000  x15: 0x0000000000000001
          x16: 0xfffffff0076cb028 x17: 0xffffffe815f83230  x18: 0x0000000000000000  x19: 0xffffffe19b9e5020
          x20: 0xffffffe815f83380 x21: 0x0000000000000001  x22: 0x0000000000050000  x23: 0x0000000000000000
          x24: 0x0000000000020090 x25: 0x000000000000fab0  x26: 0xfffffff009a33000  x27: 0x000000000005ea00
          x28: 0xffffffe19bdbdf80 fp:  0xffffffe815f831e0  lr:  0xfffffff007a3d3a8  sp:  0xffffffe815f831e0
          pc:  0xfffffff007a3c458 cpsr: 0x60400204         esr: 0x96000006          far: 0x0000000000000048

I had some issues preparing the OS disk using your instructions (basically a timeout when running the detach command), so I just attached the original .dmg files to the guest using -drive file=OS.dmg,format=dmg,if=none,id=drive.1.

I'm not sure whether the error is related to that (it may very well be); do you get any further in boot process on your side?

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

@qmfrederik have you decompress the fs?

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

@TrungNguyen1909 No, it's not decompressed; I got a timeout when detaching the disk.

The logs seemed to indicate the kernel could find the disk and mount the file system, which would mean that the ANS/NVMe controller code you added works, so just wanted to share that part of the good news ;-).

from qemu-t8030.

cutesmilee avatar cutesmilee commented on May 18, 2024

@cutecodee, you are building on a M1 machine, right?

nope, i'm using an x86 machine

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

@cutecodee, you might want to try to run ./configure again with the correct command, the correct flags are --target-list=aarch64-softmmu --disable-capstone --disable-slirp.

Your build seems to fail while building capstone, but we are not using capstone here.

from qemu-t8030.

cutesmilee avatar cutesmilee commented on May 18, 2024

https://pastebin.com/mCrxK353 that's the output

from qemu-t8030.

qmfrederik avatar qmfrederik commented on May 18, 2024

@cutecodee Looks like you're on Xcode 12.5 beta. Is it possible for you to try this with an earlier Xcode version?

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

https://pastebin.com/mCrxK353 that's the output

@cutecodee, try make it again, please.

from qemu-t8030.

cutesmilee avatar cutesmilee commented on May 18, 2024

https://pastebin.com/52hFq8EV

from qemu-t8030.

TrungNguyen1909 avatar TrungNguyen1909 commented on May 18, 2024

Closed. Tutorial

from qemu-t8030.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.