12 điểm bởi GN⁺ 2023-12-31 | 2 bình luận | Chia sẻ qua WhatsApp

Vì sao VM trên Apple Silicon lại khác biệt?

  • Việc chạy máy ảo macOS (VM) trên máy Mac Apple Silicon có vẻ không phổ biến, nhưng từ lâu đây đã là một trong những mục tiêu quan trọng của Apple.
  • Khi dùng phần mềm ảo hóa trên máy Mac dòng M, có thể thấy nó khác xa so với việc ảo hóa macOS và các hệ điều hành khác trên máy Mac Intel.
  • Bài viết giải thích vì sao ảo hóa quan trọng và nó đã thay đổi nhiều đến như vậy như thế nào.

Ba trụ cột của Apple Silicon

  • Tại WWDC tháng 6 năm 2020, Craig Federighi đã công bố ba trụ cột của Apple Silicon: ứng dụng Universal chạy trên cả hai kiến trúc, Rosetta 2 để dịch mã Intel sang lệnh Arm, và ảo hóa.
  • Ngay cả trước khi Apple phát hành Developer Transition Kit, Andreas Wendker đã trình diễn một bản phát hành sớm của Parallels Desktop chạy Linux ở vai trò guest, nhưng không hề nhắc đến Windows.

Thời kỳ đầu của ảo hóa

  • Ở giai đoạn đầu, ảo hóa được chia thành hypervisor loại 1 chạy trực tiếp trên phần cứng, và loại 2 (hosted) nơi hệ điều hành chính chạy trên phần cứng rồi hypervisor chạy phía trên nó.
  • Trên máy tính để bàn, các sản phẩm ảo hóa loại 2 như VMware Fusion, Parallels Desktop và Oracle VirtualBox phổ biến hơn.

Hỗ trợ phần cứng và ảo hóa

  • Nếu có hỗ trợ phần cứng cho hypervisor, việc chạy hệ điều hành guest không cần chỉnh sửa sẽ dễ dàng hơn.
  • Có thể dùng bộ tính năng VT-x của Intel hoặc ảo hóa AArch64 trên CPU Arm.
  • Các vấn đề hỗ trợ thiết bị có thể được giải quyết trong framework ảo hóa hoặc do chính phần mềm ảo hóa xử lý.

Điểm độc đáo của chip Apple Silicon

  • Tất cả thiết bị phần cứng trên chip Apple Silicon đều khác với các thiết bị tương ứng trên máy Mac Intel.
  • Ngay cả khi Apple muốn tài liệu hóa đầy đủ để bên ngoài sử dụng, công sức kỹ thuật cần thiết cho hỗ trợ thiết bị như trên máy Mac Intel cũng sẽ quá tốn kém đối với bên thứ ba.
  • Vì vậy, kỳ vọng bắt đầu chỉ từ hypervisor rồi xây dựng thành phần mềm ảo hóa hoàn chỉnh là không khả thi, và cũng khó đạt được hiệu năng cao như Apple và người dùng mong đợi.

Trình điều khiển Virtio và ảo hóa

  • Thay vào đó, Apple đã xây dựng các trình điều khiển Virtio theo cách tích hợp sẵn hỗ trợ thiết bị trong macOS.
  • Virtio là một tiêu chuẩn cung cấp lớp trừu tượng cho các thiết bị I/O: khi hệ điều hành guest muốn mở một tệp, yêu cầu đó được chuyển tới trình điều khiển para của thiết bị lưu trữ frontend Virtio, rồi từ đó tương tác với thiết bị lưu trữ thông qua trình điều khiển backend Virtio.
  • Việc tạo một ứng dụng ảo hóa là cấu hình và mở các thiết bị Virtio cần thiết để guest, Virtio và host tự xử lý công việc.

Lựa chọn Virtio của Apple

  • Việc Apple chọn Virtio một phần bị ảnh hưởng bởi việc Linux khi đó đã có hỗ trợ Virtio rất tốt, trong khi macOS lúc ấy chưa có.
  • Các kỹ sư Apple đã xây dựng hỗ trợ Virtio cho macOS trong vài năm trước khi Monterey ra mắt.
  • Triển khai Virtio trên macOS bao gồm các phần mở rộng hỗ trợ bàn phím và thiết bị trỏ, clipboard chia sẻ ('Spice'), cùng đồ họa hiệu năng cao thông qua hỗ trợ Metal và GPU.

Ưu điểm của mô hình Virtio

  • Trong mô hình Virtio, chính hệ điều hành cung cấp hỗ trợ; điều này giúp giảm chi phí phát triển cho các nhà cung cấp như VMware và Parallels, đồng thời làm giảm giá trị thương mại trong sản phẩm của họ.
  • Apple quyết định phần cứng và tính năng nào sẽ được ảo hóa hỗ trợ trên Apple Silicon.

Tương lai và tính linh hoạt của ảo hóa

  • Chạy các phiên bản macOS cũ trong VM có thể cho phép người dùng tiếp tục chạy ứng dụng chỉ dành cho Intel ngay cả sau khi Rosetta 2 bị ngừng hỗ trợ trên macOS hiện tại.
  • Có thể chạy phần mềm không tương thích với phiên bản macOS tối thiểu trên máy Mac Apple Silicon.
  • Với Linux hoặc macOS, nhà phát triển có thể triển khai các gói VM nhẹ như Docker.

Ý kiến của GN⁺

  • Ảo hóa trên máy Mac Apple Silicon đi theo một cách tiếp cận khác với ảo hóa truyền thống dựa trên Intel, và điều này có vẻ là một phần trong chiến lược tăng cường tích hợp phần cứng và phần mềm của Apple.
  • Ảo hóa thông qua Virtio mang lại cho nhà phát triển một giải pháp hiệu quả về chi phí, đồng thời cho phép tối ưu hiệu năng dưới sự kiểm soát của Apple.
  • Sự phát triển của công nghệ ảo hóa mở ra khả năng cung cấp nhiều môi trường phần mềm khác nhau cho người dùng Mac Apple Silicon trong dài hạn, đặc biệt hữu ích để hỗ trợ các ứng dụng và hệ thống cũ hơn.

2 bình luận

 
molla 2024-01-02

Phần nói về tương lai của ảo hóa có vẻ hơi kỳ lạ.
Không phải cứ ảo hóa được là mặc nhiên có thể tương thích với hệ thống hiện có. Rốt cuộc ở đâu đó vẫn phải có bước chuyển đổi lệnh x86 sang lệnh arm.
Nếu việc này không được hỗ trợ ở HW hay OS (Rosetta?), thì cuối cùng chỉ còn cách mô phỏng ở phía VM; trong trường hợp đó hiệu năng sẽ giảm rất nghiêm trọng.
Ngay cả bây giờ vẫn có thể cài Linux cho x86 trên Mac Apple Silicon, nhưng hiệu năng chậm đến mức khó tin. (Hình như năm ngoái tôi từng cần binary cho x86 nên thử cài để build, rồi bỏ cuộc ngay lập tức.)

 
GN⁺ 2023-12-31
Ý kiến trên Hacker News
  • Windows có nhiều tính năng phụ thuộc vào Hyper-V; khi bật lên thì Windows không khởi động trực tiếp mà Hyper-V sẽ khởi chạy trước, và hệ thống Windows chính sẽ chạy trong một VM đặc quyền.
  • Có người đang tìm thông tin về tình trạng hiện tại của việc ảo hóa Windows/Linux x86-64 trên Apple Silicon, và thấy tiếc vì bài viết không đề cập đến các ứng dụng quan trọng liên quan đến việc này.
  • Có ý kiến mong rằng mọi người dùng OS đều đăng nhập vào một VM được cô lập của OS, để nhờ đó người dùng có thể giữ quyền sở hữu máy tính Apple của mình.
  • macOS chỉ có thể chạy đồng thời hai VM, vì vậy nếu muốn dùng Mac mini làm máy chủ build thì nên mua mẫu rẻ nhất.
  • Có người muốn dùng VM macOS trên Parallels cho mục đích phát triển, nhưng bị hạn chế vì không thể đăng nhập bằng Apple ID.
  • Có người bối rối về lý do Docker chạy rất nhanh trên nền tảng Linux/amd64 với hiệu năng gần như native, trong khi VM x86 trên UTM lại chậm hơn nhiều.
  • Có câu hỏi về tiến độ của lớp virtio cho Windows, ai đang phát triển nó, và liệu trong tương lai gần nó có khả năng hoạt động được hay không.
  • Có nhắc đến driver do Rusty Russell viết; ông thường chia sẻ những góc nhìn sâu sắc về phát triển phần mềm nên được khuyên là đáng theo dõi trên Twitter.
  • Có thắc mắc liệu tất cả VM desktop thương mại (VMWare Fusion/Parallels/UTM/Vimy) hiện nay đều dùng mô hình virtio hay không, và về mặt lý thuyết thì Windows ARM64 có nên hoạt động khá giống nhau trên tất cả hay không.
  • Có người đã cố suốt khoảng một năm để tìm cách tạo Qemu VM trên chip Apple Silicon M2 chỉ bằng một lệnh, nhưng vẫn gặp khó khăn, trong khi trên x86-64 thì việc chạy Alpine Linux + Sway WM bằng Qemu trên macOS hoặc AsahiLinux lại tương đối đơn giản.