การทำอีมูเลชัน iPhone 11 บน QEMU
(github.com/ChefKissInc)- QEMU เป็นซอฟต์แวร์อีมูเลตเครื่องและยูสเซอร์สเปซสำหรับสถาปัตยกรรมที่หลากหลาย
- เมื่อไม่นานมานี้ มีการเปิดเผยโปรเจ็กต์อีมูเลชัน Apple Silicon และ iPhone 11 ที่ทำงานบน QEMU
- QEMU รองรับทั้ง ประสิทธิภาพที่ยอดเยี่ยม ด้วยการแปลงแบบไดนามิก และ ความสามารถในการเชื่อมต่อกับไฮเปอร์ไวเซอร์ อย่าง KVM, Xen เป็นต้น
- สามารถใช้งานได้บน หลายระบบ เช่น Linux, OS-X, Windows และมีการวางกระบวนการมีส่วนร่วมแบบโอเพนซอร์สไว้อย่างเป็นระบบ
- มีการสนับสนุนด้าน เอกสารและคอมมูนิตี้ อย่างคึกคัก พร้อมระบบติดตามบั๊กและการส่งแพตช์ที่จัดการได้อย่างมีประสิทธิภาพ
แนะนำโอเพนซอร์ส QEMU และโปรเจ็กต์อีมูเลชัน Apple Silicon
QEMU เป็นอีมูเลเตอร์เครื่องและยูสเซอร์สเปซแบบโอเพนซอร์สอเนกประสงค์ รวมถึงเป็นเครื่องมือด้านเวอร์ชวลไลเซชันด้วย โปรเจ็กต์สำหรับอีมูเลต Apple Silicon และ iPhone 11 ได้ดำเนินการบนพื้นฐานของ QEMU ซึ่งมอบข้อดีหลายด้านเมื่อเทียบกับโซลูชันเวอร์ชวลไลเซชันอื่น ๆ เช่น ความสามารถในการขยายตัว การสนับสนุนจากคอมมูนิตี้ และความเข้ากันได้ข้ามสถาปัตยกรรม
ภาพรวมของ QEMU
- QEMU สามารถรันเครื่องหลากหลายประเภทด้วยซอฟต์แวร์ผ่านความสามารถด้าน การอีมูเลตทั้งระบบ โดยไม่ต้องพึ่งฮาร์ดแวร์เวอร์ชวลไลเซชัน
- ใช้เทคโนโลยี dynamic translation เพื่อเพิ่มประสิทธิภาพของการอีมูเลต
- สามารถรองรับฮาร์ดแวร์ในระดับไฮเปอร์ไวเซอร์ได้ผ่านการทำงานร่วมกับ Xen และ KVM
- ด้วยการอีมูเลต CPU โดยตรง จึงช่วยให้การพอร์ตและการทดสอบระบบปฏิบัติการข้ามอุปกรณ์เป็นไปได้ (เช่น สภาพแวดล้อม ARMv7 → x86_64)
- มี API virtualization ในระดับยูสเซอร์สเปซ ทำให้สามารถรันไบนารีโดยตรงข้ามสภาพแวดล้อมสถาปัตยกรรมต่างชนิดได้
การใช้งานหลักและคุณลักษณะเด่น
- ผู้ใช้สามารถควบคุมการตั้งค่าและพฤติกรรมการทำงานโดยละเอียดได้ผ่าน ตัวเลือกบรรทัดคำสั่ง โดยตรง
- ยังถูกนำไปใช้เพื่อการผสานรวมกับเลเยอร์การจัดการโอเพนซอร์สระดับสูงอย่าง oVirt, OpenStack, virt-manager และ libvirt
- มี อินเทอร์เฟซบรรทัดคำสั่ง และ Monitor API ที่เสถียร
- ซอร์สโค้ดทั้งหมดเผยแพร่ภายใต้ไลเซนส์ GNU GPL v2
เอกสาร
- เอกสารทางการมีให้ใช้งานออนไลน์บน เว็บไซต์ (https://www.qemu.org/documentation/)
- เอกสารสำหรับเวอร์ชันพัฒนาล่าสุดถูกเก็บไว้ในโฟลเดอร์ docs/ ภายในซอร์ส และสร้างด้วยเครื่องมือ Sphinx
สภาพแวดล้อมการบิลด์
- QEMU รองรับ การบิลด์ข้ามแพลตฟอร์ม บน Linux รุ่นใหม่, OS-X, Win32 (Mingw64 toolchain) และสภาพแวดล้อม UNIX อื่น ๆ
- โฟลว์การบิลด์หลักประกอบด้วยขั้นตอน configure และ make
- วิธีบิลด์ของแต่ละแพลตฟอร์มสามารถดูได้จาก QEMU Wiki (https://wiki.qemu.org/Hosts/Linux เป็นต้น)
แนวทางการส่งแพตช์
- ซอร์สของ QEMU ใช้ระบบควบคุมเวอร์ชัน Git
- เมื่อส่งแพตช์ แนะนำให้ใช้ git format-patch และ git send-email
- ทุกแพตช์ต้องมีบรรทัด Signed-off-by และต้องปฏิบัติตามสไตล์ไกด์สำหรับนักพัฒนา (https://www.qemu.org/docs/master/devel/style.html)
- สามารถใช้ยูทิลิตี git-publish เพื่อทำให้ขั้นตอนการส่งแพตช์ซ้ำ ๆ หรือจำนวนมากง่ายขึ้น
- สามารถติดตามซีรีส์แพตช์ได้ง่ายพร้อมการจัดการเวอร์ชันของแต่ละแพตช์ (v1, v2)
การรายงานบั๊ก
- มีระบบรายงานบั๊กทางการผ่าน GitLab issue tracker (https://gitlab.com/qemu-project/qemu/-/issues)
- หากใช้งานดิสทริบิวชันแบบแพ็กเกจ แนะนำให้รายงานผ่านตัวติดตามของผู้พัฒนา OS นั้นก่อน
- QEMU Wiki มีข้อมูลเพิ่มเติม เช่น วิธีเขียนบั๊กรายงาน
ประวัติการเปลี่ยนแปลง
- ประวัติและรายละเอียดการเปลี่ยนแปลงของ QEMU สามารถตรวจสอบได้จาก Wiki ทางการ (https://wiki.qemu.org/ChangeLog/) หรือผ่าน Git history
ช่องทางติดต่อคอมมูนิตี้
- มี ช่องทางคอมมูนิตี้ที่หลากหลาย เช่น mailing list (qemu-devel@nongnu.org) และ IRC (#qemu, irc.oftc.net)
- ข้อมูลเพิ่มเติมเกี่ยวกับการมีส่วนร่วมในคอมมูนิตี้และคำแนะนำสำหรับผู้เริ่มต้นสามารถดูได้จาก QEMU Wiki
บทสรุป
QEMU สามารถนำไปใช้อย่างกว้างขวางกับ การอีมูเลตสถาปัตยกรรมและระบบปฏิบัติการที่หลากหลาย เวอร์ชวลไลเซชัน และการทำงานอัตโนมัติด้านการพัฒนา/ทดสอบ และ Apple Silicon (เช่น iPhone 11) ก็ถูกรวมอยู่ในโปรเจ็กต์ QEMU ด้วย จุดเด่นสำคัญคือเอกสารที่แข็งแรง กระบวนการมีส่วนร่วมที่ชัดเจน การจัดการบั๊กที่คึกคัก และการสนับสนุนจากคอมมูนิตี้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
มีการแชร์เธรด Hacker News เกี่ยวกับ upstream repository ลิงก์ และ “Emulating an iPhone in QEMU” ที่กล่าวถึงโปรเจกต์นี้ ลิงก์
การที่มันบูตได้จริงและอย่างน้อยขึ้นไปถึง Springboard ได้ ถือว่าเป็นผลงานที่น่าทึ่งมากจริงๆ
อยากเรียกว่านี่คือสุดยอดงานแฮ็กด้าน emulation ของจริง ขอแสดงความยินดีกับผู้มีส่วนร่วมทุกคน ความสำเร็จนี้เป็นสัญญาณเชิงบวกต่อโปรเจกต์ Hackintosh ด้วย แม้ตอนนี้ยังอีกไกล แต่ถ้า ARM PC แพร่หลายขึ้น ก็พอจะคาดหวัง emulation ที่มีประสิทธิภาพได้จริง
สงสัยว่ารองรับ trollstore และความสามารถในการถอดรหัส IPA ด้วยหรือไม่
คิดว่าควรมีความพยายามอย่างน้อยในการนำบางส่วนเข้า upstream ไม่อย่างนั้นก็อาจหายไปในที่สุดเหมือนความพยายามในอดีต
รู้สึกประทับใจมากที่สามารถบูต iPhone 11 บน QEMU ได้จนสุดทาง ขอชื่นชมทีม ChefKissInc และผู้มีส่วนร่วมทุกคนที่พามาถึงจุดนี้
ในฐานะมือใหม่ อยากรู้ว่าวิธีนี้สามารถติดตั้งแอป iOS ได้หรือไม่
ตอนนี้ยังไม่สะดวกเพราะเอกสารทางการเกี่ยวกับการใช้ qemu บน Windows ทั้งวิธีใช้ ตัวเลือก และอาร์กิวเมนต์ ยังไม่ดีพอ ต้องอาศัยอ่านบทความกระจัดกระจายตามอินเทอร์เน็ต หรือดึงตัวอย่างฝั่ง Linux มาปรับใช้ถึงจะพอแก้ปัญหาได้
สงสัยว่านี่คือการ emulation ของ iOS ทั้งระบบจริงๆ หรือแค่รัน iOS binary เท่านั้น และทำไมถึงระบุเจาะจงว่าเป็น iPhone 11
อยากถามว่า Qemu m68k รันระบบปฏิบัติการ Mac แบบคลาสสิกได้ดีแค่ไหน