UTM - เครื่องเสมือนสำหรับ iOS และ macOS
(github.com/utmapp)- UTM เป็นทั้ง ซิสเต็มอีมูเลเตอร์ และโฮสต์เครื่องเสมือนที่ทำงานบน iOS และ macOS โดยอิงจาก QEMU ทำให้สามารถรัน Windows, Linux และอื่น ๆ บน Mac, iPhone และ iPad ได้
- ใช้การจำลองทั้งระบบด้วย QEMU เพื่อจัดการ MMU และอุปกรณ์ต่าง ๆ และรองรับโปรเซสเซอร์มากกว่า 30 แบบ รวมถึง x86_64, ARM64 และ RISC-V
- โหมดกราฟิก VGA ใช้ SPICE และ QXL พร้อมรองรับโหมดเทอร์มินัลแบบข้อความ, อุปกรณ์ USB และ การเร่งความเร็วแบบ JIT ที่อิงกับ QEMU TCG
- เป็นฟรอนต์เอนด์สำหรับ macOS 11 และ iOS 11+ ที่ให้สร้าง, จัดการ และรัน VM ได้บนอุปกรณ์โดยตรง
- บน macOS รองรับการจำลองเสมือนแบบเร่งด้วยฮาร์ดแวร์โดยใช้ Hypervisor.framework และ QEMU และบน macOS 12+ สามารถบูต macOS guest ได้ด้วย Virtualization.framework
- UTM SE คือ “slow edition” ที่สามารถไซด์โหลดบน iOS ได้เหมือนแอปทั่วไปโดยไม่ต้องเจลเบรกหรือใช้วิธีเลี่ยง JIT และใช้ threaded interpreter ซึ่งเร็วกว่าอินเทอร์พรีเตอร์แบบดั้งเดิม แต่ช้ากว่า JIT
- UTM/QEMU ต้องใช้การสร้างโค้ดแบบไดนามิก (JIT) เพื่อให้ได้ประสิทธิภาพสูงสุด และบนอุปกรณ์ iOS การใช้ JIT ต้องอาศัยการเจลเบรกหรือวิธีเลี่ยงสำหรับ iOS บางเวอร์ชัน
- UTM SE มีเฉพาะสถาปัตยกรรม ARM, PPC, RISC-V และ x86 เพื่อปรับขนาดและเวลาในการบิลด์ให้เหมาะสม และมีทั้งรุ่น 32 บิตและ 64 บิตสำหรับแต่ละสถาปัตยกรรม
- คู่มือการติดตั้ง UTM และ UTM SE สำหรับ iOS มีที่ https://getutm.app/install/ และ UTM สำหรับ macOS มีที่ https://mac.getutm.app/
- เผยแพร่ภายใต้ไลเซนส์ Apache 2.0 แต่มีการใช้คอมโพเนนต์หลายส่วนที่เป็น (L)GPL โดยปลั๊กอิน gstreamer ถูกลิงก์แบบสแตติก และโค้ดบางส่วนดึงมาจาก qemu ซึ่งควรคำนึงถึงเมื่อมีการแจกจ่ายต่อ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อไม่กี่สัปดาห์ก่อน ผมลองติดตั้ง Windows 11 ARM บน UTM เพื่อแทนที่ Fusion บนเครื่อง M2 ใหม่ที่ลง macOS Ventura แล้วค่อนข้างผิดหวัง
เครื่องมือผสานการทำงานอย่างการคัดลอก/วางหรือการแชร์ไฟล์ระหว่าง virtual machine กับโฮสต์ไม่ทำงาน และกราฟิกก็เพี้ยนอยู่เรื่อย ๆ ก่อนจะมักกลายเป็นหน้าจอสีเทา
ดูเหมือนไม่มีวิธีกู้คืน จึงต้องบังคับรีสตาร์ต virtual machine และวันที่ของไดรเวอร์/เครื่องมือเสริมก็ระบุเป็นปี 2012
เพราะเป็นผลิตภัณฑ์ฟรีจึงไม่มีสิทธิ์คาดหวังอะไร และสุดท้ายก็กลับไปใช้ Fusion จริง ๆ แต่ในฐานะคนที่หวังว่าโอเพนซอร์สจะมาแทนโซลูชัน virtual machine เชิงพาณิชย์ได้ ผมยังคิดว่ายังทำได้ยากอยู่
https://docs.getutm.app/guest-support/windows/#windows-xp-an...
ผมก็ไม่เคยเจอข้อผิดพลาดด้านกราฟิกเหมือนกัน แต่ไม่ได้จะเล่นเกม แค่ใช้แอปเดสก์ท็อปพื้นฐานเท่านั้น
แก้ไข: Fusion 2023 Tech Preview [1] ติดตั้ง VMware Tools แบบเต็มและรองรับการคัดลอก/วาง
UTM ยอดเยี่ยม และถ้าเพิ่ม ฟีเจอร์ snapshot [1] เข้ามา ผมน่าจะใช้เป็นคำแนะนำหลัก ระหว่างนี้จะใช้ Parallels ต่อไป
อนึ่ง มีตัวจัดการ snapshot แบบไม่เป็นทางการอยู่ [2]
1: https://github.com/utmapp/UTM/issues/5484
2: https://github.com/Metamogul/UTM-Snapshot-Manager
ปัญหาที่พบบ่อยที่สุดคือ shared folder หายไปจาก guest virtual machine แบบกะทันหัน และต้องใช้ workaround บ่อย ๆ เพื่อให้มันกลับมา
ต่อมา VMWare Fusion ก็มีปัญหาเดียวกัน ส่วน Parallels ดูแพงเกินไป เลยย้ายไปใช้ Lima
ดีใจที่ได้รู้จัก Lima มันก็ใช้ QEMU เป็นฐานและช่วยเปิด Linux virtual machine ได้ง่าย พร้อมมี network sharing มาให้ในตัว
ตอนนี้ผมทำงานพัฒนาทั้งหมดใน Lima virtual machine และไม่เจอปัญหา ถ้าจำเป็นก็น่าจะส่งต่อหน้าจอได้ แต่ตอนนี้เพราะมี VSCode จึงใช้เป็นอินสแตนซ์แบบ headless ก็เพียงพอแล้ว
อาจง่ายพอ ๆ กับ
cp -cแต่ถ้าเป็นอย่างนั้นจริงก็น่าจะถูกทำไปแล้ว
clonefileได้สำเร็จ แต่ implementation ที่กำลังทำอยู่ก็ใช้วิธีนั้นพอดีปัญหาใหญ่ที่สุดของ UTM คือมันทำงานได้ดีมากสำหรับบางคน และแย่มากสำหรับบางคน
ถ้าดูเธรดในหน้านี้ขึ้นลง จะเห็นทั้งคนพูดว่า “อยากใช้ UTM แต่มันไม่ทำงานหรือช้าจนใช้ไม่ได้” และคำตอบว่า “แปลกนะ ของผมใช้ได้ดี” อยู่มากพร้อม ๆ กัน
กรณีของผม UTM ไม่เคยทำงานได้ถูกต้องเลยแม้แต่ครั้งเดียว ผมลองติดตั้ง Ubuntu ARM แบบมาตรฐานบน Mac M1 ปี 2021 ตามคู่มือ https://docs.getutm.app/guides/ubuntu/ แล้วล้มเหลว ตอนนี้เห็นแค่เคอร์เซอร์กะพริบบนหน้าจอดำ
น่าเสียดายที่คนที่ใช้งานได้ดีแทบให้การสนับสนุนทางเทคนิคที่เป็นประโยชน์แก่คนที่ใช้งานไม่ได้ไม่ได้เลย
ผมจ่ายเงินให้ UTM ใน Mac App Store ไปถึง 10 ดอลลาร์ แต่ช่องทางซัพพอร์ตมีแค่ Discord และในนั้นมีคำตอบแนว “ฮ่า ๆ ของฉันใช้ได้นะ ปัญหาฝีมือเอง” อยู่เยอะ
ถ้าจะแนะนำ UTM ก็คุ้มที่จะลองใช้ ถ้าถูกใจจะประหยัดเงินได้มาก แต่ถ้าใช้ไม่ได้เลยเหมือนผม สุดท้ายก็ต้องจ่าย Parallels ปีละ 100 ดอลลาร์อยู่ดี ซึ่ง Parallels น่าจะมีโอกาสสูงที่จะใช้งานได้เลย
ถ้า Parallels ใช้ไม่ได้ คุณยังคุยกับบริษัทที่มีแรงจูงใจให้คุณต่ออายุไลเซนส์ได้โดยตรง และเขามีแรงจูงใจที่จะช่วยให้คุณใช้งานสำเร็จ
ถ้าตั้งค่าดิสก์ของ virtual machine สำหรับบูตให้ใหญ่เกินขนาดหนึ่ง ซึ่งผมคิดว่าไม่ได้ใหญ่มาก แค่ราว 30GB~100GB การบูต virtual machine จะช้ามาก
ถ้าตั้งให้ใหญ่พอก็จะไม่บูตเลย การเพิ่มไดรฟ์ที่สองไม่ว่าขนาดใดจะไม่ก่อให้เกิดบั๊กนี้
บริษัทให้ M1 MacBook Pro มาใช้ แต่ผมพัฒนาทั้งหมดบน Linux มาตลอด ตั้งแต่ปลายยุค 90 Linux ก็เป็นสภาพแวดล้อมที่ชอบใช้
ฮาร์ดแวร์ของ MacBook Pro ดี แต่ macOS อืดและน่าอึดอัด ทำให้ประสิทธิภาพการทำงานตกลงมาก
ดังนั้นผมจึงรัน Fedora aarch64 แบบเต็มหน้าจอบน UTM มันทำงานได้ค่อนข้างดี และบ่อยครั้งก็ลืมไปเลยว่ากำลังอยู่บน Mac
เพียงแต่อยากให้ macOS ไม่เข้ามารบกวน และไม่เด้งออกจากโหมดเต็มหน้าจอเป็นครั้งคราว
ผมปรับตัวเพราะเสียดายอายุแบตเตอรี่ที่เสถียร
อาจมีวิธีแก้บางอย่างที่ช่วยให้คงโหมดเต็มหน้าจอไว้ได้
บางครั้ง utility ไม่รองรับอาร์กิวเมนต์บรรทัดคำสั่งที่คุ้นเคย แต่เรื่องนั้นใกล้เคียงกับความต่างของเวอร์ชันมากกว่าปัญหา Mac/Linux และก็เคยเจอหลายครั้งตอนย้ายไปใช้อุปกรณ์เครื่องอื่นในบริษัท
ปัญหาที่ใหญ่ที่สุด แม้จะไม่ได้ใหญ่โต คือความต่างระหว่าง ARM กับ x86 บางครั้งเจอแพ็กเกจที่ไม่รองรับบน ARM แต่ก็พบได้น้อยลงเรื่อย ๆ
UTM เป็น ไฮเปอร์ไวเซอร์ ที่เสถียรสำหรับผมมาตลอด 2 ปีที่ผ่านมา และในช่วงนั้นก็ได้รับการปรับปรุงฟีเจอร์ดี ๆ หลายอย่าง
แต่สิ่งที่ชอบที่สุดเกี่ยวกับ UTM คือมันย่อมาจาก Universal Turing Machine สำหรับชื่อผลิตภัณฑ์ virtualization แล้วถือว่าแทบจะดีที่สุด
สิ่งที่ไม่ชอบใน Parallels กับ VMWare คือพยายามผลักดันการผสานรวมระหว่างระบบปฏิบัติการมากเกินไป เช่น เปิดหน้าต่าง Windows บน macOS หรือเปิดเอกสารของ macOS ใน Windows ได้ทันที
ผมชอบให้ virtual machine ถูก แยก ออกจาก macOS หลักมากกว่า ดังนั้นจึงต้องคอยไล่ดูการตั้งค่าว่าต้องปิดอะไรบ้าง
รู้ว่าในคำอธิบายโปรเจกต์บน GitHub มีคำว่า “for iOS” แต่ผมว่าค่อนข้างทำให้เข้าใจผิด
ตัวเลือกการติดตั้งบน iOS โดยพื้นฐานแล้วคือเจลเบรก หรือเป็นวิธีที่ทำไม่ได้บน CPU/iOS เวอร์ชันใหม่ ๆ ไม่เช่นนั้นก็ต้องอยู่ในสถานะกึ่ง tethered ที่ต้องโหลด/เซ็นแอปใหม่ทุก ๆ ไม่กี่วัน
https://docs.getutm.app/installation/ios/#summary
ไม่จำเป็นต้องติดตั้งตัวแอปใหม่ แค่ต่ออายุใบรับรองการเซ็นก็พอ
ถ้า EEA มีการใช้งาน sideload จริงก็คงง่ายขึ้นมาก เลยตั้งตารอ
Apple สร้างฮาร์ดแวร์ที่แจกจ่ายให้คนมากกว่า 1 พันล้านคนได้สำเร็จ และทั้งที่หลายคนในนั้นมีสิ่งที่จะได้จากการเจลเบรก แต่ก็ยังไม่มีใครทำได้
แม้มันจะทำงานได้โดยไม่ต้องใช้วิธีแบบนั้น แต่ในสามวิธีการรัน วิธีนี้ช้าที่สุด
ถ้าจะรัน virtual machine สำหรับสภาพแวดล้อมพัฒนาบน Mac สิ่งที่ต้องการคือ OrbStack: https://orbstack.dev/
https://lima-vm.io/
https://github.com/abiosoft/colima
มีคนแนะนำ Lima มา ซึ่งคล้ายกับ WSL2 สำหรับ macOS อยู่บ้าง: https://lima-vm.io
ไม่ค่อยแน่ใจว่าข้างในใช้อะไร แต่สำหรับผมมันทำงานได้ดีมาก
colima เป็นเลเยอร์ที่วางบน Lima ช่วยตั้งค่า virtual machine ได้ง่ายในสไตล์ docker-machine/boot2docker
UTM ดีมากสำหรับการใช้งานพื้นฐาน แต่ประสิทธิภาพแย่มากจนไม่ค่อยเป็นจริงนักที่จะใช้เป็นเครื่องหลักสำหรับงานประจำวัน
บน Mac ไม่มีอะไรชนะ Parallels ได้ และคุ้มค่ากับเงินที่จ่ายแน่นอน
ถ้า virtual machine เป็น aarch64 ประสิทธิภาพดีจนน่าทึ่ง และผมแนะนำ UTM ได้อย่างเต็มที่