3 điểm bởi GN⁺ 2023-09-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • UTM là trình giả lập hệ thống kiêm máy chủ máy ảo hoạt động trên iOS và macOS, dựa trên QEMU, cho phép chạy Windows, Linux, v.v. trên Mac, iPhone, iPad
  • Với giả lập toàn bộ hệ thống bằng QEMU, UTM xử lý MMU, thiết bị, v.v. và hỗ trợ hơn 30 bộ xử lý, bao gồm x86_64, ARM64, RISC-V
  • Chế độ đồ họa VGA sử dụng SPICE và QXL; hỗ trợ chế độ terminal văn bản, thiết bị USB và tăng tốc JIT dựa trên QEMU TCG
  • Là frontend cho macOS 11 và iOS 11+, cho phép tạo, quản lý và chạy VM ngay trên thiết bị
  • Trên macOS, hỗ trợ ảo hóa tăng tốc phần cứng bằng Hypervisor.framework và QEMU; trên macOS 12+ có thể khởi động guest macOS bằng Virtualization.framework
  • UTM SE là “slow edition” có thể sideload như ứng dụng thông thường trên iOS mà không cần jailbreak hay обход JIT; sử dụng threaded interpreter, nhanh hơn interpreter truyền thống nhưng chậm hơn JIT
    • UTM/QEMU cần sinh mã động (JIT) để đạt hiệu năng tối đa, và JIT trên thiết bị iOS cần jailbreak hoặc phương pháp обход dành cho một số phiên bản iOS nhất định
    • Để tối ưu kích thước và thời gian build, UTM SE chỉ bao gồm các kiến trúc ARM, PPC, RISC-V, x86, mỗi kiến trúc có biến thể 32-bit và 64-bit
  • Hướng dẫn cài đặt UTM và UTM SE cho iOS được cung cấp tại https://getutm.app/install/ , còn UTM cho macOS tại https://mac.getutm.app/
  • Được phân phối theo giấy phép Apache 2.0 nhưng sử dụng nhiều thành phần (L)GPL; khi tái phân phối cần lưu ý rằng các plugin gstreamer được liên kết tĩnh và một phần mã được lấy từ qemu

1 bình luận

 
GN⁺ 2023-09-02
Ý kiến trên Hacker News
  • Vài tuần trước, tôi đã thử cài Windows 11 ARM bằng UTM trên chiếc M2 mới chạy macOS Ventura để thay thế Fusion, nhưng khá thất vọng
    Các công cụ tích hợp như sao chép/dán hay chia sẻ tệp giữa máy ảo và máy chủ không hoạt động, đồ họa liên tục bị lỗi rồi thường xuyên chuyển sang màn hình xám
    Có vẻ không có cách khôi phục nên tôi phải buộc khởi động lại máy ảo, và ngày của driver/công cụ phụ trợ cũng ghi là năm 2012
    Vì là sản phẩm miễn phí nên không có quyền kỳ vọng gì, và thực tế tôi đã quay lại Fusion, nhưng với tư cách người từng hy vọng mã nguồn mở có thể thay thế các giải pháp máy ảo thương mại thì tôi thấy hiện vẫn còn khó

    • Sao chép/dán chắc chắn hoạt động. Tôi dùng qua lại cả ngày. Có lẽ cần kiểm tra xem đã cài công cụ SPICE chưa
      https://docs.getutm.app/guest-support/windows/#windows-xp-an...
      Tôi cũng chưa từng thấy lỗi đồ họa, nhưng tôi không định chơi game, chỉ dùng các ứng dụng desktop cơ bản
    • Tôi dùng UTM như một wrapper QEMU rất ổn, và nếu đối xử với nó như vậy thì nó rất tuyệt
    • Tôi tò mò liệu sao chép/dán và thư mục chia sẻ có hoạt động trong máy ảo Windows ARM trên Fusion không. Lần cuối tôi kiểm tra thì VMware Tools vẫn chưa hỗ trợ các tính năng đó
      Sửa: Fusion 2023 Tech Preview [1] cài đặt đầy đủ VMware Tools và hỗ trợ sao chép/dán
      1. https://customerconnect.vmware.com/downloads/get-download?do...
    • Không có gì ngạc nhiên. Vì OpenGL không hoạt động. Nghĩ đến việc ngày nay nhiều ứng dụng dùng OpenGL thì nó khá kém hữu dụng
    • Kết nối bằng công cụ MS RDP có thể cho trải nghiệm tốt hơn
  • UTM rất tuyệt, và nếu thêm tính năng snapshot [1] thì có lẽ tôi sẽ lấy nó làm khuyến nghị mặc định. Cho đến lúc đó tôi vẫn sẽ tiếp tục dùng Parallels
    Nhân tiện có một trình quản lý snapshot không chính thức [2]
    1: https://github.com/utmapp/UTM/issues/5484
    2: https://github.com/Metamogul/UTM-Snapshot-Manager

    • Tôi vẫn duy trì thói quen phát triển trong máy ảo thay vì trên hệ thống thật, và đã dùng UTM khá lâu để chạy máy ảo ARM64 Linux trên M1 MacBook Pro, nhưng vấn đề chia sẻ tệp cứ liên tục gây khó chịu
      Vấn đề thường gặp nhất là thư mục chia sẻ đột nhiên biến mất trong máy ảo guest, và tôi thường phải dùng các cách vòng vèo để làm nó xuất hiện lại
      Sau đó VMWare Fusion cũng gặp cùng vấn đề, còn Parallels thì trông quá đắt nên tôi chuyển sang Lima
      Thật may vì đã biết đến Lima. Nó cũng dựa trên QEMU, giúp dựng máy ảo Linux dễ dàng và cung cấp sẵn chia sẻ mạng
      Hiện tôi làm toàn bộ việc phát triển trong máy ảo Lima và chưa gặp vấn đề gì. Nếu cần thì có thể chuyển tiếp màn hình, nhưng hiện tại nhờ VSCode, một instance headless là đủ
    • APFS vốn đã hỗ trợ snapshot copy-on-write cho mọi loại tệp. Tính năng snapshot của UTM có lẽ sẽ là một lớp bọc quanh chức năng đó
      Có thể đơn giản như cp -c
      Tuy vậy nếu thật sự như thế thì có lẽ nó đã được triển khai rồi
    • Tôi định nói rằng mình đã mô phỏng thành công một dạng snapshot hạn chế bằng clonefile, nhưng phần triển khai đang diễn ra đúng là dùng cách đó
    • Tôi tò mò liệu nó có hỗ trợ mô phỏng TPM và ansible/vagrabt không
  • Vấn đề lớn nhất của UTM là với một số người thì nó hoạt động rất tốt, còn với một số người khác thì hoạt động cực kỳ tệ
    Nhìn lên xuống các thread trên trang này sẽ thấy đồng thời rất nhiều câu kiểu “tôi muốn dùng UTM nhưng nó không chạy hoặc chậm đến mức không dùng được” và các câu trả lời “lạ nhỉ, tôi dùng vẫn ổn mà”
    Trường hợp của tôi thì UTM đúng nghĩa là chưa từng hoạt động cho ra hồn. Tôi thử cài Ubuntu ARM tiêu chuẩn trên Mac M1 2021 theo hướng dẫn https://docs.getutm.app/guides/ubuntu/ nhưng thất bại, và giờ chỉ đang nhìn thấy màn hình đen với con trỏ nhấp nháy
    Đáng tiếc là những người chạy tốt gần như không thể hỗ trợ kỹ thuật thực chất cho những người không chạy được
    Tôi thậm chí đã trả 10 đô la cho UTM trên Mac App Store, nhưng kênh hỗ trợ kỹ thuật chỉ có Discord, và ở đó có nhiều phản ứng kiểu “haha tôi chạy được mà, do trình thôi”
    Nếu khuyến nghị thì UTM đáng để thử một lần. Nếu thích, bạn có thể tiết kiệm được rất nhiều tiền; còn nếu hoàn toàn không chạy như tôi, cuối cùng bạn sẽ phải trả Parallels 100 đô la mỗi năm. Parallels có lẽ có khả năng cao là cứ thế hoạt động
    Nếu Parallels không chạy, bạn có thể nói chuyện trực tiếp với một công ty có động lực khiến bạn gia hạn giấy phép, và họ có động cơ giúp bạn thành công

    • Tôi đã thử bản Debian mới nhất tải từ website, và ngoài một vấn đề kỳ lạ thì không gặp trục trặc
      Nếu đặt đĩa máy ảo khởi động vượt quá một kích thước nhất định, hình như không phải quá lớn mà khoảng 30GB~100GB, thì máy ảo khởi động rất chậm
      Nếu đặt đủ lớn thì nó hoàn toàn không khởi động. Việc thêm ổ đĩa thứ hai với bất kỳ kích thước nào không gây ra lỗi này
    • Còn có VirtualBox nữa
  • Ở công ty tôi được cấp một chiếc M1 MacBook Pro, nhưng mọi hoạt động phát triển đều làm trên Linux. Từ cuối thập niên 90, Linux đã là môi trường tôi ưa thích
    Phần cứng MacBook Pro thì tốt, nhưng macOS chậm chạp và bí bách nên năng suất giảm đáng kể
    Vì vậy tôi chạy Fedora aarch64 toàn màn hình trong UTM. Nó hoạt động khá ổn, và tôi thường quên mất là mình đang chạy trên Mac
    Chỉ mong macOS đừng cản trở và thỉnh thoảng đừng đá tôi ra khỏi chế độ toàn màn hình

    • Chắc chắn tôi sẽ theo dõi Fedora Asahi Linux
    • Trải nghiệm chuyển từ Linux sang macOS rốt cuộc là hoặc chịu đựng các vấn đề của macOS rồi thích nghi, hoặc dùng giải pháp bên thứ ba để sửa cho dễ chịu hơn. Thường thì cũng phải làm mỗi thứ một chút
      Tôi đã thích nghi vì tiếc thời lượng pin ổn định
      Có lẽ ở đâu đó có giải pháp giúp giữ nguyên chế độ toàn màn hình
    • Tôi tò mò cụ thể điều gì làm giảm năng suất. Trên Mac, mở terminal bash lên dùng thì tôi thấy gần như giống Linux
      Đôi khi có tiện ích không hỗ trợ tham số dòng lệnh quen thuộc, nhưng đó giống khác biệt phiên bản hơn là vấn đề Mac/Linux, và tôi cũng từng gặp nhiều lần khi chuyển sang các máy khác trong công ty
      Rắc rối lớn nhất, dù không quá lớn, là khác biệt giữa ARM và x86. Thỉnh thoảng gặp gói không được hỗ trợ trên ARM, nhưng ngày càng hiếm
    • Tôi tò mò khi dùng như vậy thì bạn thấy hiệu năng mất khoảng bao nhiêu. Nếu không lớn thì có vẻ là một giải pháp ổn
    • Asahi Fedora được nói là sẽ ra mắt trong vài ngày nữa. Vẫn có hy vọng
  • UTM đã là một hypervisor ổn định với tôi trong 2 năm qua, và trong thời gian đó cũng nhận được nhiều cải tiến tính năng tuyệt vời
    Dù vậy, điều tôi thích nhất ở UTM vẫn là nó là viết tắt của Universal Turing Machine. Với tên một sản phẩm ảo hóa thì gần như là đỉnh nhất

  • Điều tôi không thích ở Parallels và VMWare là họ thúc đẩy tích hợp giữa các hệ điều hành quá mạnh. Ví dụ như mở cửa sổ Windows trong macOS, hoặc mở thẳng tài liệu của macOS bằng Windows
    Tôi thích máy ảo được cách ly với macOS chính hơn. Vì vậy lúc nào tôi cũng phải lục trong phần cài đặt để tìm xem cần tắt cái gì

    • Trong Parallels có một tùy chọn duy nhất tên “Isolate VM from macOS” trong tab cài đặt bảo mật. Nó vô hiệu hóa mọi tích hợp qua lại
    • Tôi nhớ hồi cài Parallels. Mỗi lần nhấp đúp vào một tệp, nó cứ cố mở bằng Notepad của Windows
  • Tôi biết mô tả dự án GitHub có ghi “for iOS”, nhưng tôi thấy cách diễn đạt đó khá dễ gây hiểu lầm
    Tùy chọn cài trên iOS về cơ bản là jailbreak, hoặc là cách không thể thực hiện trên CPU/phiên bản iOS mới, hoặc phải ở trạng thái bán tethered và tải/ký lại ứng dụng sau vài ngày
    https://docs.getutm.app/installation/ios/#summary

    • Nếu có tài khoản nhà phát triển Apple, bạn có thể sideload ứng dụng dùng được trong 1 năm. Tôi đang dùng theo cách đó
    • Trước đây tôi từng dùng một ứng dụng tên reprosion, có thể xử lý việc ký ngay trên thiết bị iOS và còn tự động hóa được. Tôi đã dùng khi chạy jailbreak bán tethered, giới hạn là 7 ngày
      Không cần cài lại chính ứng dụng, chỉ cần gia hạn chứng chỉ ký
      Tôi kỳ vọng khi sideload được triển khai ở EEA thì việc này sẽ dễ hơn nhiều
    • Nghĩ đến việc “jailbreak là bất khả thi trong môi trường mới nhất” thì thật đáng nể
      Apple đã thành công tạo ra phần cứng có thể phân phối cho hơn 1 tỷ người, và dù nhiều người trong số đó có thứ để đạt được nhờ jailbreak, vẫn không ai làm được
    • Nếu mục tiêu chỉ là sideload ứng dụng thì cách bán tethered thậm chí có thể xem là ít đáng ngờ hơn jailbreak
      Nó vẫn hoạt động mà không cần cách đó, nhưng là cách chậm nhất trong ba phương thức chạy
    • Tôi rất muốn sớm thấy sideload ở EU sẽ hoạt động ra sao. Hy vọng họ triển khai cho đúng
  • Nếu chạy máy ảo làm môi trường phát triển trên Mac thì thứ bạn muốn là OrbStack: https://orbstack.dev/

    • Khi hết beta, dùng thương mại dự kiến sẽ có giá 8 USD mỗi tháng cho mỗi nhà phát triển
    • Tôi nghĩ với phần lớn use case thì Lima và Colima là đủ
      https://lima-vm.io/
      https://github.com/abiosoft/colima
    • Với một công cụ quảng bá ưu điểm của mình bằng câu như dưới đây, việc không hỗ trợ vagrant khá nổi bật

      Dù use case của bạn là gì, OrbStack cung cấp các tính năng giúp đơn giản hóa workflow và giúp bạn di chuyển nhanh hơn

    • Tôi tò mò liệu có thể tạo cấu hình mạng phức tạp bằng công cụ này không. Điểm bất mãn lớn nhất của tôi với UTM là mỗi máy ảo chỉ có thể có một giao diện mạng
  • Tôi được giới thiệu Lima, nó hơi giống WSL2 cho macOS: https://lima-vm.io
    Tôi không rõ bên trong nó dùng gì, nhưng với tôi thì nó hoạt động rất tốt

    • Khi tạo máy ảo, bạn có thể chọn giữa QEMU hoặc Virtualization.framework
      colima là một lớp nằm trên Lima, giúp thiết lập máy ảo dễ dàng theo kiểu docker-machine/boot2docker
  • UTM rất tuyệt cho các nhu cầu cơ bản, nhưng hiệu năng quá kém nên không thực tế lắm nếu dùng làm công cụ chính cho công việc hằng ngày
    Trên Mac thì không gì vượt được Parallels, và rất đáng tiền

    • Tôi đồng ý rằng nếu chạy máy ảo x86 trên Apple Silicon thì hiệu năng thảm hại. Tôi khá chắc đây gần với vấn đề của QEMU hơn là lỗi của UTM
      Nếu máy ảo là aarch64 thì hiệu năng tốt đến đáng ngạc nhiên, và tôi có thể mạnh dạn khuyên dùng UTM