3 คะแนน โดย GN⁺ 2023-09-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 2023-09-02
ความคิดเห็นจาก Hacker News
  • เมื่อไม่กี่สัปดาห์ก่อน ผมลองติดตั้ง Windows 11 ARM บน UTM เพื่อแทนที่ Fusion บนเครื่อง M2 ใหม่ที่ลง macOS Ventura แล้วค่อนข้างผิดหวัง
    เครื่องมือผสานการทำงานอย่างการคัดลอก/วางหรือการแชร์ไฟล์ระหว่าง virtual machine กับโฮสต์ไม่ทำงาน และกราฟิกก็เพี้ยนอยู่เรื่อย ๆ ก่อนจะมักกลายเป็นหน้าจอสีเทา
    ดูเหมือนไม่มีวิธีกู้คืน จึงต้องบังคับรีสตาร์ต virtual machine และวันที่ของไดรเวอร์/เครื่องมือเสริมก็ระบุเป็นปี 2012
    เพราะเป็นผลิตภัณฑ์ฟรีจึงไม่มีสิทธิ์คาดหวังอะไร และสุดท้ายก็กลับไปใช้ Fusion จริง ๆ แต่ในฐานะคนที่หวังว่าโอเพนซอร์สจะมาแทนโซลูชัน virtual machine เชิงพาณิชย์ได้ ผมยังคิดว่ายังทำได้ยากอยู่

    • การคัดลอก/วางทำงานแน่นอน ผมใช้สลับไปมาตลอดทั้งวันอยู่ ควรตรวจดูว่าได้ติดตั้ง SPICE tools แล้วหรือยัง
      https://docs.getutm.app/guest-support/windows/#windows-xp-an...
      ผมก็ไม่เคยเจอข้อผิดพลาดด้านกราฟิกเหมือนกัน แต่ไม่ได้จะเล่นเกม แค่ใช้แอปเดสก์ท็อปพื้นฐานเท่านั้น
    • ผมใช้ UTM เป็น QEMU wrapper ที่ดีมาก และถ้ามองแบบนั้นมันยอดเยี่ยมเลย
    • สงสัยว่าใน Fusion การคัดลอก/วางและ shared folder ทำงานกับ Windows ARM virtual machine หรือไม่ ครั้งสุดท้ายที่เช็ก VMware Tools ยังไม่รองรับฟีเจอร์เหล่านั้น
      แก้ไข: Fusion 2023 Tech Preview [1] ติดตั้ง VMware Tools แบบเต็มและรองรับการคัดลอก/วาง
      1. https://customerconnect.vmware.com/downloads/get-download?do...
    • ไม่น่าแปลกใจ เพราะ OpenGL ไม่ทำงาน พอคิดว่าแอปจำนวนมากในยุคนี้ใช้ OpenGL ก็ทำให้ประโยชน์ลดลงพอสมควร
    • ถ้าเชื่อมต่อด้วย MS RDP tools อาจให้ประสบการณ์ใช้งานที่ดีกว่า
  • UTM ยอดเยี่ยม และถ้าเพิ่ม ฟีเจอร์ snapshot [1] เข้ามา ผมน่าจะใช้เป็นคำแนะนำหลัก ระหว่างนี้จะใช้ Parallels ต่อไป
    อนึ่ง มีตัวจัดการ snapshot แบบไม่เป็นทางการอยู่ [2]
    1: https://github.com/utmapp/UTM/issues/5484
    2: https://github.com/Metamogul/UTM-Snapshot-Manager

    • ผมรักษานิสัยการพัฒนาใน virtual machine แทนระบบจริงมาตลอด และใช้ UTM มานานเพื่อรัน ARM64 Linux virtual machine บน M1 MacBook Pro แต่ปัญหา file sharing คอยกวนใจตลอด
      ปัญหาที่พบบ่อยที่สุดคือ shared folder หายไปจาก guest virtual machine แบบกะทันหัน และต้องใช้ workaround บ่อย ๆ เพื่อให้มันกลับมา
      ต่อมา VMWare Fusion ก็มีปัญหาเดียวกัน ส่วน Parallels ดูแพงเกินไป เลยย้ายไปใช้ Lima
      ดีใจที่ได้รู้จัก Lima มันก็ใช้ QEMU เป็นฐานและช่วยเปิด Linux virtual machine ได้ง่าย พร้อมมี network sharing มาให้ในตัว
      ตอนนี้ผมทำงานพัฒนาทั้งหมดใน Lima virtual machine และไม่เจอปัญหา ถ้าจำเป็นก็น่าจะส่งต่อหน้าจอได้ แต่ตอนนี้เพราะมี VSCode จึงใช้เป็นอินสแตนซ์แบบ headless ก็เพียงพอแล้ว
    • APFS รองรับ snapshot แบบ copy-on-write สำหรับไฟล์ทุกประเภทอยู่แล้ว ฟีเจอร์ snapshot ของ UTM น่าจะเป็นการห่อฟังก์ชันนั้นไว้อีกชั้น
      อาจง่ายพอ ๆ กับ cp -c
      แต่ถ้าเป็นอย่างนั้นจริงก็น่าจะถูกทำไปแล้ว
    • กำลังจะบอกว่าผมเลียนแบบ snapshot ในรูปแบบจำกัดด้วย clonefile ได้สำเร็จ แต่ implementation ที่กำลังทำอยู่ก็ใช้วิธีนั้นพอดี
    • สงสัยว่ารองรับ TPM emulation และ ansible/vagrabt หรือไม่
  • ปัญหาใหญ่ที่สุดของ 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 ใช้ไม่ได้ คุณยังคุยกับบริษัทที่มีแรงจูงใจให้คุณต่ออายุไลเซนส์ได้โดยตรง และเขามีแรงจูงใจที่จะช่วยให้คุณใช้งานสำเร็จ

    • ผมลองใช้ Debian รุ่นล่าสุดที่ดาวน์โหลดจากเว็บไซต์ และนอกจากปัญหาแปลก ๆ อย่างหนึ่งก็ไม่มีปัญหา
      ถ้าตั้งค่าดิสก์ของ virtual machine สำหรับบูตให้ใหญ่เกินขนาดหนึ่ง ซึ่งผมคิดว่าไม่ได้ใหญ่มาก แค่ราว 30GB~100GB การบูต virtual machine จะช้ามาก
      ถ้าตั้งให้ใหญ่พอก็จะไม่บูตเลย การเพิ่มไดรฟ์ที่สองไม่ว่าขนาดใดจะไม่ก่อให้เกิดบั๊กนี้
    • ยังมี VirtualBox ด้วย
  • บริษัทให้ M1 MacBook Pro มาใช้ แต่ผมพัฒนาทั้งหมดบน Linux มาตลอด ตั้งแต่ปลายยุค 90 Linux ก็เป็นสภาพแวดล้อมที่ชอบใช้
    ฮาร์ดแวร์ของ MacBook Pro ดี แต่ macOS อืดและน่าอึดอัด ทำให้ประสิทธิภาพการทำงานตกลงมาก
    ดังนั้นผมจึงรัน Fedora aarch64 แบบเต็มหน้าจอบน UTM มันทำงานได้ค่อนข้างดี และบ่อยครั้งก็ลืมไปเลยว่ากำลังอยู่บน Mac
    เพียงแต่อยากให้ macOS ไม่เข้ามารบกวน และไม่เด้งออกจากโหมดเต็มหน้าจอเป็นครั้งคราว

    • คงต้องจับตาดู Fedora Asahi Linux ให้ดี
    • ประสบการณ์การย้ายจาก Linux ไป macOS สุดท้ายคือการทนและปรับตัวกับปัญหาของ macOS หรือแก้ให้พอรับได้ด้วยโซลูชันจากภายนอก บางทีก็ต้องทำทั้งสองอย่างนิดหน่อย
      ผมปรับตัวเพราะเสียดายอายุแบตเตอรี่ที่เสถียร
      อาจมีวิธีแก้บางอย่างที่ช่วยให้คงโหมดเต็มหน้าจอไว้ได้
    • อยากรู้ว่าประสิทธิภาพการทำงานตกลงเพราะอะไรเป็นพิเศษ ถ้าเปิด bash terminal บน Mac ใช้ ก็รู้สึกว่าแทบเหมือน Linux
      บางครั้ง utility ไม่รองรับอาร์กิวเมนต์บรรทัดคำสั่งที่คุ้นเคย แต่เรื่องนั้นใกล้เคียงกับความต่างของเวอร์ชันมากกว่าปัญหา Mac/Linux และก็เคยเจอหลายครั้งตอนย้ายไปใช้อุปกรณ์เครื่องอื่นในบริษัท
      ปัญหาที่ใหญ่ที่สุด แม้จะไม่ได้ใหญ่โต คือความต่างระหว่าง ARM กับ x86 บางครั้งเจอแพ็กเกจที่ไม่รองรับบน ARM แต่ก็พบได้น้อยลงเรื่อย ๆ
    • อยากรู้ว่าถ้าใช้งานแบบนั้นคิดว่าประสิทธิภาพเสียไปประมาณแค่ไหน ถ้าไม่มากก็ดูเป็นทางออกที่ดี
    • มีบอกว่า Asahi Fedora จะออกมาในอีกไม่กี่วัน ยังมีความหวัง
  • UTM เป็น ไฮเปอร์ไวเซอร์ ที่เสถียรสำหรับผมมาตลอด 2 ปีที่ผ่านมา และในช่วงนั้นก็ได้รับการปรับปรุงฟีเจอร์ดี ๆ หลายอย่าง
    แต่สิ่งที่ชอบที่สุดเกี่ยวกับ UTM คือมันย่อมาจาก Universal Turing Machine สำหรับชื่อผลิตภัณฑ์ virtualization แล้วถือว่าแทบจะดีที่สุด

  • สิ่งที่ไม่ชอบใน Parallels กับ VMWare คือพยายามผลักดันการผสานรวมระหว่างระบบปฏิบัติการมากเกินไป เช่น เปิดหน้าต่าง Windows บน macOS หรือเปิดเอกสารของ macOS ใน Windows ได้ทันที
    ผมชอบให้ virtual machine ถูก แยก ออกจาก macOS หลักมากกว่า ดังนั้นจึงต้องคอยไล่ดูการตั้งค่าว่าต้องปิดอะไรบ้าง

    • ใน Parallels มีตัวเลือกเดียวในแท็บตั้งค่าความปลอดภัยชื่อ “Isolate VM from macOS” ซึ่งปิดการผสานรวมทุกอย่างระหว่างกัน
    • นึกถึงตอนติดตั้ง Parallels ทุกครั้งที่ดับเบิลคลิกไฟล์ มันพยายามจะเปิดด้วย Notepad ของ Windows อยู่เรื่อย
  • รู้ว่าในคำอธิบายโปรเจกต์บน GitHub มีคำว่า “for iOS” แต่ผมว่าค่อนข้างทำให้เข้าใจผิด
    ตัวเลือกการติดตั้งบน iOS โดยพื้นฐานแล้วคือเจลเบรก หรือเป็นวิธีที่ทำไม่ได้บน CPU/iOS เวอร์ชันใหม่ ๆ ไม่เช่นนั้นก็ต้องอยู่ในสถานะกึ่ง tethered ที่ต้องโหลด/เซ็นแอปใหม่ทุก ๆ ไม่กี่วัน
    https://docs.getutm.app/installation/ios/#summary

    • ถ้ามีบัญชีนักพัฒนา Apple ก็สามารถ sideload แอปที่อยู่ได้ 1 ปี ผมใช้แบบนั้นอยู่
    • เคยใช้แอปชื่อ reprosion ซึ่งสามารถจัดการการเซ็นบนอุปกรณ์ iOS และทำให้เป็นอัตโนมัติได้ด้วย ผมใช้ตอนลงเจลเบรกแบบกึ่ง tethered และข้อจำกัดคือ 7 วัน
      ไม่จำเป็นต้องติดตั้งตัวแอปใหม่ แค่ต่ออายุใบรับรองการเซ็นก็พอ
      ถ้า EEA มีการใช้งาน sideload จริงก็คงง่ายขึ้นมาก เลยตั้งตารอ
    • ถ้าคิดถึงประเด็นที่ว่า “เจลเบรกทำไม่ได้ในสภาพแวดล้อมรุ่นใหม่” ก็ถือว่าน่าทึ่ง
      Apple สร้างฮาร์ดแวร์ที่แจกจ่ายให้คนมากกว่า 1 พันล้านคนได้สำเร็จ และทั้งที่หลายคนในนั้นมีสิ่งที่จะได้จากการเจลเบรก แต่ก็ยังไม่มีใครทำได้
    • ถ้าเป้าหมายมีแค่การ sideload แอป วิธีกึ่ง tethered อาจดูน่าสงสัยน้อยกว่าเจลเบรกเสียอีก
      แม้มันจะทำงานได้โดยไม่ต้องใช้วิธีแบบนั้น แต่ในสามวิธีการรัน วิธีนี้ช้าที่สุด
    • อยากเห็นเร็ว ๆ ว่า EU sideloading จะทำงานอย่างไร หวังว่าจะทำออกมาได้ดี
  • ถ้าจะรัน virtual machine สำหรับสภาพแวดล้อมพัฒนาบน Mac สิ่งที่ต้องการคือ OrbStack: https://orbstack.dev/

    • เมื่อพ้นช่วงเบต้าแล้ว การใช้งานเชิงพาณิชย์จะคิดราคา 8 ดอลลาร์ต่อเดือนต่อนักพัฒนา
    • สำหรับ use case ส่วนใหญ่ ผมว่า Lima และ Colima ก็เพียงพอแล้ว
      https://lima-vm.io/
      https://github.com/abiosoft/colima
    • สำหรับเครื่องมือที่ชูจุดเด่นตัวเองด้วยข้อความแบบด้านล่าง การ ไม่รองรับ vagrant นั้นสะดุดตามาก

      ไม่ว่าจะเป็น use case ใด OrbStack ก็มีฟีเจอร์ที่ช่วยทำให้ workflow ของคุณเรียบง่ายขึ้นและเคลื่อนตัวได้เร็วขึ้น

    • อยากรู้ว่าสามารถสร้างการตั้งค่าเครือข่ายที่ซับซ้อนด้วยสิ่งนี้ได้ไหม ข้อไม่พอใจใหญ่ที่สุดกับ UTM คือใส่ network interface ให้ virtual machine ได้แค่อันเดียว
  • มีคนแนะนำ Lima มา ซึ่งคล้ายกับ WSL2 สำหรับ macOS อยู่บ้าง: https://lima-vm.io
    ไม่ค่อยแน่ใจว่าข้างในใช้อะไร แต่สำหรับผมมันทำงานได้ดีมาก

    • ตอนสร้าง virtual machine สามารถเลือกได้ระหว่าง QEMU หรือ Virtualization.framework
      colima เป็นเลเยอร์ที่วางบน Lima ช่วยตั้งค่า virtual machine ได้ง่ายในสไตล์ docker-machine/boot2docker
  • UTM ดีมากสำหรับการใช้งานพื้นฐาน แต่ประสิทธิภาพแย่มากจนไม่ค่อยเป็นจริงนักที่จะใช้เป็นเครื่องหลักสำหรับงานประจำวัน
    บน Mac ไม่มีอะไรชนะ Parallels ได้ และคุ้มค่ากับเงินที่จ่ายแน่นอน

    • เห็นด้วยว่าถ้ารัน virtual machine x86 บน Apple Silicon ประสิทธิภาพจะย่ำแย่ เรื่องนี้ผมค่อนข้างมั่นใจว่าใกล้เคียงกับ ปัญหาของ QEMU มากกว่าจะเป็นความผิดของ UTM
      ถ้า virtual machine เป็น aarch64 ประสิทธิภาพดีจนน่าทึ่ง และผมแนะนำ UTM ได้อย่างเต็มที่