Image default
Máy Tính

Xây Dựng Môi Trường Phát Triển Windows 11 Chuyên Nghiệp Trên Máy Ảo Proxmox

Là một người dùng Windows qua nhiều thập kỷ, tôi đã quen thuộc với hệ điều hành này cho hầu hết các tác vụ công việc, từ chơi game, thử nghiệm phần cứng mới, cho đến viết các bài báo như bạn đang đọc. Tuy nhiên, tôi không mấy mặn mà với việc làm nặng hệ thống chính của mình bằng quá nhiều ứng dụng, đặc biệt là những ứng dụng liên quan đến lập trình. Các trình đóng gói (packers) xung đột thường gây khó chịu gấp trăm lần khi khắc phục sự cố trên Windows so với Linux, và tôi thà không làm “ô nhiễm” hệ thống của mình bằng một loạt các gói và phụ thuộc.

Các máy ảo (Virtual Machines – VM) chính là giải pháp lý tưởng cho những vấn đề này, cho phép tôi di chuyển tất cả các công cụ của mình vào một môi trường biệt lập và kết nối đến nó thông qua Giao thức Máy tính Từ xa (Remote Desktop Protocol – RDP). Thực tế, Microsoft từng cung cấp các máy ảo được trang bị đầy đủ tiện ích cần thiết cho môi trường phát triển. Từ khóa ở đây là “từng”, bởi lẽ, giống như nhiều sản phẩm hữu ích khác có tiềm năng lớn, Microsoft đã gần như loại bỏ dự án này – với các liên kết tải xuống tệp máy ảo bị “tạm thời không khả dụng” kể từ tháng 10 năm 2024.

Vì tôi sử dụng phòng thí nghiệm tại nhà (home lab) của mình cho hầu hết các dự án khác, tôi đã quyết định tự xây dựng phiên bản môi trường phát triển Windows 11 của riêng mình bên trong một máy ảo. Và tôi rất mừng vì đã làm như vậy, bởi VM “khủng” này có thể xử lý mọi thứ tôi yêu cầu.

Môi trường phát triển Windows 11 trên Proxmox chạy container Jupyter Notebook hiệu quảMôi trường phát triển Windows 11 trên Proxmox chạy container Jupyter Notebook hiệu quả

Proxmox – Giải Pháp Lý Tưởng Cho Máy Ảo

Nếu bạn đã theo dõi các bài viết của tôi trên XDA, bạn sẽ biết rằng Proxmox là nền tảng ảo hóa chính trong phòng thí nghiệm tại nhà của tôi. Chắc chắn, tôi có thể chọn Hyper-V và triển khai máy ảo trên PC chính, nhưng máy trạm Xeon kép của tôi hoạt động cực kỳ hiệu quả với bộ siêu giám sát KVM của Proxmox.

Thiết lập Máy Ảo Windows 11 Với Nhiều Tùy Chỉnh

Việc triển khai máy ảo chạy Windows đòi hỏi một vài tinh chỉnh. Đầu tiên, tôi phải tải xuống VirtIO drivers và gán chúng cho máy ảo sau khi chọn Windows làm hệ điều hành khách (guest OS). Sau đó, tôi kích hoạt EFITPM Storage trước khi gán ổ đĩa local-lvm của mình cho chúng. Đối với số lõi CPUbộ nhớ RAM, tôi quyết định cấu hình khá “khủng” với 16 lõi ảo (v-cores) và 32.768 MB (tức 32 GB) RAM. Vì Windows 11 không tương thích tốt với VirtIO Ethernet drivers, tôi đã chuyển sang Intel E1000E và khởi động máy ảo.

Ngay sau đó, trình hướng dẫn cài đặt Windows quen thuộc đã hiện ra, và tôi chọn phiên bản Pro của hệ điều hành. Do trình hướng dẫn không tự động phát hiện các ổ đĩa lưu trữ của tôi, tôi đã phải sử dụng VirtIO disk để cài đặt SCSI Passthrough Controller. Phần còn lại của quá trình diễn ra suôn sẻ, và tôi nhanh chóng có một bản cài đặt Windows mới tinh.

Từ noVNC Đến RDP và Windows App: Nâng Cấp Trải Nghiệm Truy Cập

Proxmox hỗ trợ noVNC làm giao diện console mặc định cho máy ảo. Mặc dù nó hoạt động tốt cho hầu hết các dự án, độ trễ của nó khá dễ nhận thấy. Hơn nữa, tôi không có quyền truy cập vào clipboard hoặc các chức năng cần thiết khác với noVNC. Spice là một lựa chọn thay thế khá tốt, nhưng tôi đã chọn Remote Desktop Protocol (RDP) – đây cũng là lý do chính tôi chọn Windows 11 Pro thay vì Home.

Truy cập máy ảo Windows 11 thông qua Remote Desktop Protocol (RDP) mang lại hiệu quả caoTruy cập máy ảo Windows 11 thông qua Remote Desktop Protocol (RDP) mang lại hiệu quả cao

Hầu hết các ảnh chụp màn hình này được thực hiện trên PC chính của tôi, nhưng tôi cũng đã “đắm mình” vào sự tiện lợi của macOS trong tuần qua. Do đó, tôi cần một ứng dụng để truy cập môi trường phát triển của mình từ MacBook. May mắn thay, App Store có “Windows App” với cái tên hơi lạ, cho phép tôi kết nối với máy ảo Windows 11 của mình. Tôi nhanh chóng cài đặt các bản cập nhật phần mềm đang chờ xử lý, tạo một snapshot của VM sạch sẽ và bật tính năng ảo hóa lồng ghép (nested virtualization) từ shell của Proxmox.

Visual Studio và Visual Studio Code: Bộ Đôi Công Cụ Lập Trình Cốt Lõi

Với những chuẩn bị ban đầu đã hoàn tất, đã đến lúc trang bị cho môi trường phát triển của tôi những ứng dụng và công cụ thiết yếu. Vì tôi thực sự muốn đi sâu vào lập trình C++ nghiêm túc, tôi quyết định bắt đầu với Visual Studio. Chắc chắn, có rất nhiều IDE ngoài kia, nhưng tôi đã sử dụng nó khá nhiều trong quá khứ, vì vậy đây là công cụ mà tôi quen thuộc nhất.

Giao diện Visual Studio đang được sử dụng thông qua kết nối RDP trong môi trường máy ảoGiao diện Visual Studio đang được sử dụng thông qua kết nối RDP trong môi trường máy ảo

Visual Studio Code – Trình Soạn Thảo Nhẹ và Linh Hoạt

Khi Visual Studio đã sẵn sàng hoạt động, tôi tiếp tục cài đặt VS Code. Mặc dù có tên tương tự, Visual Studio và Visual Studio Code là hai ứng dụng hoàn toàn khác biệt. Visual Studio “nặng ký” hơn là một IDE bao gồm mọi thứ từ trình gỡ lỗi (debugger) đến trình biên dịch (compiler), trong khi phiên bản Code là một trình soạn thảo mã nguồn nhẹ. Tôi thích sử dụng VS Code cho các dự án phát triển web của mình và dựa vào nó bất cứ khi nào tôi cần thực hiện các chỉnh sửa nhanh cho mã. Trong khi đó, tôi dự định sử dụng Visual Studio cho việc phát triển ứng dụng “hardcore”.

Giao diện Visual Studio Code với các extension hỗ trợ phát triển web và chỉnh sửa code nhanh chóngGiao diện Visual Studio Code với các extension hỗ trợ phát triển web và chỉnh sửa code nhanh chóng

Tôi cũng trang bị cho VS Code một loạt các extension hữu ích, từ các thư viện Python và Prettier đến Git Graphs và bộ sưu tập Remote Development. VS Code là ứng dụng lập trình duy nhất mà tôi đã cài đặt trên hầu hết mọi máy trong nhà, vì vậy tôi có thể sử dụng các extension Remote Tunnels và Remote SSH để nhanh chóng chỉnh sửa các tệp mã của mình mà không cần dùng đến RDP.

Podman Desktop và WSL2: Sức Mạnh Của Container và Môi Trường Linux

Bạn có nhớ tôi đã đề cập đến ảo hóa lồng ghép (nested virtualization) trước đó không? Vâng, Podman Desktop không hoạt động nếu không có ảo hóa được bật trong BIOS. May mắn thay, nested virtualization là một giải pháp khắc phục hiệu quả. Mặc dù tôi có các VM riêng biệt dành cho việc chạy container, tôi thường sử dụng các môi trường container hóa để kiểm tra các dự án mã của mình, đó là lý do tại sao Podman là một phần thiết yếu trong thiết lập của tôi.

Bạn hoàn toàn có thể thay thế Podman Desktop bằng Docker, nhưng tôi khuyên bạn nên gắn bó với Podman. Thứ nhất, Podman Desktop cũng hỗ trợ Docker, vì vậy bạn có thể dễ dàng chuyển đổi giữa hai công cụ tùy theo nhu cầu. Khả năng nhóm nhiều ứng dụng vào cùng một pod là một tiện ích tuyệt vời khác, và Podman Desktop cũng tích hợp tốt với Quadlets và Kubernetes.

Cài đặt ứng dụng Gigolo bên trong môi trường WSL2 để phát triển các dự án LinuxCài đặt ứng dụng Gigolo bên trong môi trường WSL2 để phát triển các dự án Linux

Tôi chạy Podman Desktop trên nền WSL2, đây là một bổ sung tuyệt vời khác cho bộ công cụ lập trình của tôi. Điều này là do tôi cuối cùng sẽ phải làm việc với Linux vào một thời điểm nào đó trong hành trình lập trình của mình. Mặc dù tôi có nhiều máy ảo chạy các bản phân phối Linux trên máy chủ Proxmox, WSL2 cho phép tôi thử nghiệm với bất kỳ bản phân phối nào trong môi trường phát triển Windows 11 của mình.

Mô-đun PowerShell và Trình Quản Lý Gói: Tối Ưu Hóa Hệ Thống

Tận Dụng Các Mô-đun PowerShell

Tôi chủ yếu sử dụng VS Code để tạo các script PowerShell, mặc dù có những lúc tôi cần truy cập shell của nó thông qua ứng dụng Terminal. Theo mặc định, giao diện PowerShell rất cơ bản – đặc biệt là kể từ khi tôi trang bị phiên bản PowerShell trên PC chính của mình với một số mô-đun thú vị. Tôi cũng đã trang bị cho VM Git Bash, vì nó sẽ rất hữu ích khi tôi cần kiểm soát phiên bản (version control) cho các dự án mã của mình.

Sức Mạnh Của Trình Quản Lý Gói Trên Windows

Cuối cùng, tôi muốn đề cập đến các trình quản lý gói (package managers). Mặc dù chúng không có chức năng hoặc được trang bị nhiều gói như các đối tác Linux, nhưng các trình quản lý gói đã có những bước tiến dài trên Windows. Tôi thích Chocolatey vì nó có một thư viện ứng dụng rộng lớn, mặc dù WinGet tích hợp tốt hơn với các ứng dụng Windows. Scoop cũng khá hữu ích nếu bạn muốn có một thư mục cài đặt riêng cho các gói của mình, nhưng có thể mất một thời gian để làm quen với những đặc điểm riêng của nó.

Tương Lai Phát Triển Và Mở Rộng Môi Trường Lập Trình

Cho đến nay, tôi đã thêm các dịch vụ hướng đến lập trình yêu thích của mình vào VM, nhưng tôi còn một số công cụ khác mà tôi dự định tích hợp vào máy trạm lập trình của mình. Tôi chưa thử sức với phát triển ứng dụng Android, nhưng tôi khá chắc chắn rằng mình sẽ cài đặt Android Studio sau này. Hiện tại, trung tâm lập trình của tôi chưa bao gồm card đồ họa. Nhưng nếu tôi bắt đầu tham gia vào lĩnh vực AI, tôi sẽ phải trang bị cho nó một GPU chuyên dụng (cùng với một phiên bản Jupyter Notebook tự host), vì các lõi ảo Xeon của tôi sẽ “oằn mình” dưới sức nặng của các thuật toán phức tạp.

Truy cập giao diện quản lý web Proxmox từ máy tính xách tay để cấu hình và giám sát các máy ảoTruy cập giao diện quản lý web Proxmox từ máy tính xách tay để cấu hình và giám sát các máy ảo

Tôi cũng đã nghe nhiều điều tốt đẹp về Laragon và có lẽ tôi sẽ tìm hiểu nó trong những tháng tới. Với việc Rust được tối ưu hóa như thế nào, tôi dự định cài đặt một số công cụ và extension chỉ dành riêng cho ngôn ngữ lập trình hiệu quả cao này.

Kết Luận

Việc xây dựng một môi trường phát triển Windows 11 chuyên nghiệp trên máy ảo Proxmox đã mang lại cho tôi một không gian làm việc cô lập, ổn định và mạnh mẽ, giải quyết triệt để nỗi lo “ô nhiễm” hệ thống chính. Từ việc tùy chỉnh cài đặt máy ảo trên Proxmox với VirtIO và EFI, đến việc lựa chọn RDP để có trải nghiệm truy cập mượt mà, cùng với việc tích hợp các công cụ cốt lõi như Visual Studio, VS Code, Podman Desktop và WSL2, môi trường này đã chứng tỏ khả năng xử lý mọi yêu cầu lập trình khắt khe nhất.

Việc tận dụng các mô-đun PowerShell và trình quản lý gói như Chocolatey, WinGet cũng góp phần tối ưu hóa quy trình làm việc. Đây không chỉ là một giải pháp hiện tại mà còn là nền tảng vững chắc cho những dự án tương lai, từ phát triển ứng dụng Android đến nghiên cứu AI hay khám phá các ngôn ngữ lập trình mới như Rust.

Hãy chia sẻ ý kiến của bạn về cách bạn xây dựng và tối ưu hóa môi trường phát triển của riêng mình trong phần bình luận bên dưới!

Related posts

Sysinternals Suite: Bộ Công Cụ Quản Lý Hệ Thống Windows Nâng Cao Toàn Diện Từ Microsoft

Administrator

Espanso: Text Expander Mã Nguồn Mở Thay Đổi Cách Bạn Tối Ưu Năng Suất Gõ Phím

Administrator

Cập Nhật Tính Năng Mới Đáng Chú Ý Cho Microsoft Excel và Microsoft 365

Administrator

Cách Trực Quan Hóa Dữ Liệu Với Plugin Charts Trong Obsidian: Hướng Dẫn Toàn Diện

Administrator

Khám Phá Rainmeter: Hướng Dẫn Toàn Diện Cách Tùy Biến Windows 11 Độc Đáo

Administrator

Những Sai Lầm Phổ Biến Khi Chọn Linh Kiện PC: Kinh Nghiệm Đắt Giá Từ Người Dùng

Administrator