UTM - Máy ảo cho iOS và macOS
(github.com/utmapp)- 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
Ý 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ó
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
Sửa: Fusion 2023 Tech Preview [1] cài đặt đầy đủ VMware Tools và hỗ trợ sao chép/dá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
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à đủ
Có thể đơn giản như
cp -cTuy vậy nếu thật sự như thế thì có lẽ nó đã được triển khai rồi
clonefile, nhưng phần triển khai đang diễn ra đúng là dùng cách đó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
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ô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
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
Đô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
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ì
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
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
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ó 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
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/
https://lima-vm.io/
https://github.com/abiosoft/colima
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
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
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