IOS Emulation: Difference between revisions
Add further steps |
→Starting restore: Add steps for companion VM |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Following guide describes how to setup iOS emulation using the project [https://github.com/ChefKissInc/QEMUAppleSilicon QEMU-AppleSilicon]. Currently emulation iPhone 11 with iOS 14.0 beta 5 is supported. | |||
== Setup == | == Setup == | ||
{{Security Warning|Do not share any IVs, keys or files, such as pre-made modified or unmodified images or decrypted, patched, modified or unmodified firmware, etc. That all surely violates Apple's EULA. EULA violations or any of the aforementioned actions may be a crime in your jurisdiction.}}{{Warning|Most parts of this guide are not yet supported by the latest stable NixOS release. It should be available with the next 25.11 release.}} | {{Security Warning|Do not share any IVs, keys or files, such as pre-made modified or unmodified images or decrypted, patched, modified or unmodified firmware, etc. That all surely violates Apple's EULA. EULA violations or any of the aforementioned actions may be a crime in your jurisdiction.}}{{Warning|Most parts of this guide are not yet supported by the latest stable NixOS release. It should be available with the next 25.11 release.}} | ||
Line 36: | Line 38: | ||
==== Starting restore ==== | ==== Starting restore ==== | ||
Prepare and run the companion VM, required for the restore process. Create the file <code>configuration.nix</code><syntaxhighlight lang="nix"> | |||
{ config, pkgs, ... }: | |||
{ | |||
imports = [ <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix> ]; | |||
boot.loader.grub.device = "/dev/vda"; | |||
fileSystems."/" = { | |||
device = "/dev/vda1"; | |||
fsType = "ext4"; | |||
}; | |||
networking.hostName = "nixos-companionvm"; | |||
services.openssh.enable = true; | |||
users.users.root.initialPassword = "root"; | |||
environment.systemPackages = [ pkgs.idevicerestore ]; | |||
documentation.enable = false; | |||
} | |||
</syntaxhighlight>Build the VM image<syntaxhighlight lang="bash"> | |||
nix-build '<nixpkgs/nixos>' -A config.system.build.qcow2Image -I nixos-config=./configuration.nix | |||
</syntaxhighlight>Run the companion VM<syntaxhighlight lang="bash"> | |||
qemu-system-x86_64 -m 2024 -nic user -hda ./result/nixos.qcow2 -nographic -usb -device usb-ehci,id=ehci -device usb-tcp-remote,conn-type=ipv4,conn-addr=127.0.0.1,conn-port=8030,bus=ehci.0 -nic user,model=virtio-net-pci,hostfwd=tcp::32222-:22 | |||
</syntaxhighlight> | |||
Some parts in this documentation is missing, so please consult [https://github.com/ChefKissInc/QEMUAppleSilicon/wiki/Running-&-Restoring upstream documentation].The companion VM must always be started before the emulated iPhone otherwise no USB connection is established. | |||
Now run the iOS emulator on your host<syntaxhighlight lang="bash"> | |||
qemu-system-aarch64 -M t8030,trustcache=iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/Firmware/038-44135-124.dmg.trustcache,ticket=root_ticket.der,sep-fw=sep-firmware.n104.RELEASE.new.img4,sep-rom=AppleSEPROM-Cebu-B1,kaslr-off=true \ | qemu-system-aarch64 -M t8030,trustcache=iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/Firmware/038-44135-124.dmg.trustcache,ticket=root_ticket.der,sep-fw=sep-firmware.n104.RELEASE.new.img4,sep-rom=AppleSEPROM-Cebu-B1,kaslr-off=true \ | ||
-kernel iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/kernelcache.research.iphone12b -dtb iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/Firmware/all_flash/DeviceTree.n104ap.im4p \ | -kernel iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/kernelcache.research.iphone12b -dtb iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/Firmware/all_flash/DeviceTree.n104ap.im4p \ | ||
Line 51: | Line 82: | ||
-drive file=panic_log,format=raw,if=none,id=panic_log -device nvme-ns,drive=panic_log,bus=nvme-bus.0,nsid=7,nstype=8,logical_block_size=4096,physical_block_size=4096 \ | -drive file=panic_log,format=raw,if=none,id=panic_log -device nvme-ns,drive=panic_log,bus=nvme-bus.0,nsid=7,nstype=8,logical_block_size=4096,physical_block_size=4096 \ | ||
-initrd iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/038-44135-124.dmg \ | -initrd iPhone11_8_iPhone12_1_14.0_18A5351d_Restore/038-44135-124.dmg \ | ||
-M t8030,usb-conn-type=ipv4,usb-conn-addr=127.0.0.1,usb-conn-port=8030 \ | |||
-display gtk,zoom-to-fit=on,show-cursor=on | -display gtk,zoom-to-fit=on,show-cursor=on | ||
</syntaxhighlight>On the companion VM, start recovery with following command as soon the iOS device is ready to receive images<syntaxhighlight lang="bash"> | </syntaxhighlight>On the companion VM, start recovery with following command as soon the iOS device is ready to receive images<syntaxhighlight lang="bash"> | ||
Line 76: | Line 108: | ||
-display gtk,zoom-to-fit=on,show-cursor=on | -display gtk,zoom-to-fit=on,show-cursor=on | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Virtualization]] |