Máy Tính

Xây dựng môi trường phát triển Windows 11 tối ưu trong máy ảo Proxmox cho lập trình viên

Giao diện terminal hiển thị Jupyter Notebook container đang chạy trong máy ảo Proxmox, minh họa môi trường phát triển containerized.

Là một lập trình viên và người dùng Windows lâu năm, tôi luôn tìm kiếm cách tối ưu hóa môi trường làm việc mà không làm “ô nhiễm” hệ điều hành chính của mình. Việc cài đặt quá nhiều ứng dụng lập trình, đặc biệt là những công cụ có thể gây xung đột hoặc yêu cầu nhiều gói phụ thuộc, thường dẫn đến những rắc rối không đáng có trên Windows. Thật khó chịu khi phải xử lý các vấn đề tương thích gói phần mềm, điều mà trên Linux thường đơn giản hơn nhiều.

Giải pháp tôi luôn hướng tới là sử dụng máy ảo (VMs). Chúng cho phép tôi cô lập tất cả các công cụ cần thiết vào một môi trường riêng biệt và kết nối tới đó qua Remote Desktop Protocol (RDP). Thực tế, Microsoft từng cung cấp các máy ảo được cài đặt sẵn đầy đủ tiện ích cho môi trường phát triển, nhưng đáng tiếc là dự án này đã bị ngừng, với các liên kết tải xuống tệp máy ảo “tạm thời không khả dụng” từ tháng 10 năm 2024.

Với kinh nghiệm sử dụng home lab cho hầu hết các dự án, tôi quyết định tự xây dựng một 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 hài lòng với kết quả đạt được, bởi “con quái vật” máy ảo này có thể xử lý mọi tác vụ mà tôi giao phó. Đây là một giải pháp lý tưởng cho các lập trình viên muốn một môi trường sạch, mạnh mẽ và linh hoạt.

Giao diện terminal hiển thị Jupyter Notebook container đang chạy trong máy ảo Proxmox, minh họa môi trường phát triển containerized.Giao diện terminal hiển thị Jupyter Notebook container đang chạy trong máy ảo Proxmox, minh họa môi trường phát triển containerized.

Proxmox: Nền tảng ảo hóa cho môi trường phát triển của tôi

Nếu bạn đã theo dõi các bài viết của tôi, bạn sẽ biết rằng Proxmox là nền tảng ảo hóa chính trong home lab của tôi. Mặc dù tôi có thể sử dụng Hyper-V và triển khai máy ảo trên PC chính, nhưng workstation với CPU kép Xeon của tôi hoạt động cực kỳ hiệu quả với hypervisor KVM của Proxmox.

Thử thách khi thiết lập máy ảo Windows 11 trên Proxmox

Việc triển khai máy ảo Windows đòi hỏi một vài tinh chỉnh. Trước hết, 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. Sau đó, tôi kích hoạt EFITPM Storage trước khi gán ổ đĩa local-lvm của mình cho chúng. Về số lượng lõi CPUbộ nhớ RAM, tôi quyết định hơi “quá đà” một chút với 16 v-core 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ối ưu hóa kết nối: Từ bỏ noVNC, chọn RDP và ứng dụng Windows

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á rõ rệt. 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ế 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.

Hầu hết các ảnh chụp màn hình này được chụp trên PC chính của tôi, nhưng tôi cũng đã “xiêu lòng” với 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. Rất may, App Store có “Windows App” với tên gọi 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 máy ảo sạch và kích hoạt ảo hóa lồng ghép (nested virtualization) từ shell của Proxmox.

Truy cập máy ảo Windows 11 thông qua Remote Desktop Protocol (RDP), cho thấy khả năng làm việc từ xa hiệu quả.Truy cập máy ảo Windows 11 thông qua Remote Desktop Protocol (RDP), cho thấy khả năng làm việc từ xa hiệu quả.

Visual Studio và Visual Studio Code: Bộ đôi không thể thiếu

Với các bước 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++ chuyên nghiệp, tôi đã quyết định chọn Visual Studio đầu tiên. Chắc chắn có rất nhiều IDE khác 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ụ tôi quen thuộc nhất.

Giao diện môi trường phát triển tích hợp (IDE) Visual Studio đang hoạt động, sẵn sàng cho việc lập trình C++ chuyên sâu.Giao diện môi trường phát triển tích hợp (IDE) Visual Studio đang hoạt động, sẵn sàng cho việc lập trình C++ chuyên sâu.

Visual Studio Code: Trình soạn thảo nhẹ với hệ sinh thái mở rộng

Sau khi Visual Studio đã sẵn sà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ý” giống như một IDE hoàn chỉnh, bao gồm mọi thứ từ trình gỡ lỗi đến trình biên dịch, trong khi VS Code là một trình soạn thảo mã 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ã nguồn. 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 trình soạn thảo mã Visual Studio Code với các extension được kích hoạt, phục vụ phát triển web và chỉnh sửa mã nhanh.Giao diện trình soạn thảo mã Visual Studio Code với các extension được kích hoạt, phục vụ phát triển web và chỉnh sửa mã nhanh.

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

Podman Desktop và WSL2: Sức mạnh của container và Linux trong Windows

Bạn còn 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 kích hoạt trong BIOS. Rất may, ảo hóa lồng ghép là một giải pháp thay thế hiệu quả. Mặc dù tôi có các máy ảo riêng biệt dành riêng cho việc chạy container, tôi thường sử dụng môi trường containerized để kiểm thử các dự án lập trình 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 có thể thay thế Podman Desktop bằng Docker tương đương, 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 tùy thuộc vào nhu cầu của mình. Khả năng nhóm nhiều ứng dụng vào cùng một pod là một tiện ích khác, và Podman Desktop cũng tích hợp tốt với Quadlets và Kubernetes.

WSL2: Môi trường Linux tích hợp cho lập trình viên

Tôi chạy Podman Desktop trê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 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.

Quá trình cài đặt Gigolo trong môi trường Windows Subsystem for Linux 2 (WSL2), minh họa khả năng làm việc với Linux trên Windows.Quá trình cài đặt Gigolo trong môi trường Windows Subsystem for Linux 2 (WSL2), minh họa khả năng làm việc với Linux trên Windows.

PowerShell Modules và Package Managers: Nâng cao năng suất

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à khi tôi đã trang bị cho instance PowerShell trên PC chính của mình một số module thú vị. Tôi cũng đã trang bị cho máy ảo Git Bash, vì nó sẽ rất tiện dụng khi tôi cần quản lý phiên bản (version control) cho các dự án lập trình của mình.

Cuối cùng, tôi muốn nhắc đế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 của chú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 một thư mục cài đặt riêng biệt 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 của môi trường phát triển: Những bổ sung tiềm năng

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 máy ảo, 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 workstation 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 rằng tôi 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 có 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 instance Jupyter Notebook tự host), vì các v-core Xeon của tôi sẽ không thể chịu nổi khối lượng thuật toán phức tạp.

Giao diện quản lý web của Proxmox VE trên laptop, thể hiện khả năng giám sát và quản lý môi trường ảo hóa home lab.Giao diện quản lý web của Proxmox VE trên laptop, thể hiện khả năng giám sát và quản lý môi trường ảo hóa home lab.

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 tốt như vậy, tôi dự định cài đặt một số công cụ và tiện ích mở rộng 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 trong máy ảo Proxmox đã chứng tỏ là một quyết định sáng suốt, mang lại sự linh hoạt, hiệu suất và khả năng cô lập tuyệt vời. Từ việc thiết lập hệ điều hành, tối ưu hóa kết nối, đến tích hợp các IDE mạnh mẽ như Visual Studio, Visual Studio Code, cùng với các công cụ container (Podman Desktop) và môi trường Linux (WSL2), tôi đã tạo ra một “workstation lập trình” cá nhân hiệu quả và dễ quản lý. Hy vọng những chia sẻ này sẽ truyền cảm hứng cho bạn để xây dựng và tùy chỉnh môi trường phát triển riêng, đáp ứng mọi nhu cầu lập trình của mình. Hãy chia sẻ trải nghiệm hoặc các công cụ yêu thích của bạn trong phần bình luận!

Related posts

Không phải lúc nào “Lắp GPU Dọc” cũng là lựa chọn thông minh: Đánh đổi lớn cho thẩm mỹ

Administrator

Tái Sử Dụng Laptop Cũ: Biến Thiết Bị Lỗi Thời Thành Công Cụ Năng Suất Đỉnh Cao

Administrator

5 Linh Kiện PC Tôi Sẽ Không Bao Giờ Dùng Lại: Bài Học Cho Game Thủ Việt

Administrator