Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[KVM] Hướng dẫn đóng image Windows Server 2012 R2 Standard với cloud-init và QEMU Guest Agent


Bạn cần tải ISO của OS tại trang chủ của Microsoft và file virio driver phiên bản stable theo link dưới.

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.141-1/virtio-win-0.1.141.iso

Đầu tiên bạn hãy tạo 1 ổ đĩa để chứa OS theo lệnh sau.

qemu-img create -f qcow2 /kvm-volumes-ssd/win2k12r2.qcow2 30G

Hãy verify lại ổ đĩa đã tạo.

$ qemu-img info /kvm-volumes-ssd/win2k12r2.qcow2
image: /kvm-volumes-ssd/win2k12r2.qcow2
file format: qcow2
virtual size: 30 GiB (32212254720 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

Hãy chạy đoạn cli dưới để khởi tạo máy ảo.

qemu-img info /kvm-volumes-ssd/win2k12r2.qcow2
virt-install --connect qemu:///system \
--name win2k12 --ram 4096 --vcpus 4 \
--network network:bridged-network,model=virtio \
--disk path=/kvm-volumes-ssd/win2k12r2.qcow2,format=qcow2,device=disk,bus=virtio \
--cdrom /kvm-volumes-hdd/images/windows_server_2012r2.iso \
--disk path=/kvm-volumes-hdd/images/virtio-win-0.1.141.iso,device=cdrom \
--vnc --os-type windows --os-variant win2k8 \
--console pty,target_type=serial

Bạn sẽ nhận được output như vậy trên màn hình cli.

WARNING  Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING  No console to launch for the guest, defaulting to --wait -1

Starting install...
Domain installation still in progress.
Waiting for installation to complete.

Để cài đặt mới hệ điều hành win2k12, bạn cần một màn hình console và ở đây mình sử dụng cockpit để console vào VM. Bạn nhìn dưới sẽ thấy máy ảo win2k12 của mình đã tạo bằng cli đã xuất hiện.

image

Hãy bấm vào tab consoles để kết nối console vào máy ảo.

image

Bấm next để qua trang cài đặt mới, chọn bản GUI Standard.

image

Do mình đang sử dụng disk loại virtio nên win2k12 không thấy được disk dạng này, để làm cho nó thấy disk chúng ta cài đặt drive cho nó bằng cách click vào Load Driver.

image

Chọn vào ổ CD virtio-win-0.1.141.iso mà chúng ta đã mount ở bước trên.

image

Tìm đến thư mục viostor-> 2k12R2 – > amd64 và bấm ok.

image

Bạn sẽ thấy hệ thống load 1 file inf như dưới, hãy bấm next để tiếp tục.

image

Bây giờ bạn đã thấy ổ đĩa xuất hiện, hãy bấm new để tạo disk mới hoặc bạn muốn cài luôn thì bấm next để tiếp tục.

image

Quá trình cài đặt win2k12 bắt đầu.

image

Sau khi cài xong, hãy tạo password cho tài khoản administrator.

image

Sau khi login được vào windows hãy vào phần Computer Management -> Device Manager. Tại phần Other devices bấm chuột phải vào Ethernet Controller và chọn Update Driver Software.

image

Bấm vào Browse my computer for driver software

image

Bạn hãy tìm đến ổ đĩa CD virtio-win-0.1.141.iso đã mount như phần trên.

image

Tìm đến NetKVM -> 2k12R2 -> amd64 và bấm ok.

image

Bấm next để tiếp tục.

image

Bấm Install để tiếp tục cài đặt.

image

Sau khi cài đặt xong, mạng đã kết nối. Bạn có thể bấm yes để tiếp tục.

image

Sau khi cài đặt xong networt, bạn sẽ thấy thông tin network như dưới.

image

Cài đặt Baloon driver cho Memory

Hãy vào ổ đĩa mount CD virtio-win-0.1.141.iso và tìm đến Baloon/2k12R2/amd64, sao chép thư muc amd64 sang ổ đĩa C:/

image

Sao chép xong bạn sẽ có thư mục như dưới.

image

Tại thư mục này bạn hãy vào PowerShell bằng các bước như mình chỉ để powershell vào thẳng thư mục hiện tại bạn đang đứng luôn (cụ thể là thư mục C:/amd64).

image

Từ thư mục C:/amd64 hãy chạy lệnh dưới.

.\blnsvr.exe -i

Bạn sẽ có kết quả như dưới.

image

Bạn có thể vào kiểm tra service Balloon đã xuất hiện.

image

Bây giờ bạn hãy cài đặt Baloon driver cho CPU.

image

Chọn Browse my computer for driver software.

image

Hãy tìm đến ổ đĩa CD virtio-win-0.1.141.iso như các bước ở trên và tìm tới thư mục E:\Balloon\2k12R2\amd64

image

Sau khi cài đặt nó xong, bạn sẽ thấy Driver Balloon đã xuất hiện.

image

Kết quả.

image

Giờ hãy vào ổ đĩa CD virtio-win-0.1.141.iso, tìm đến thư mục guest-agent.

image

Sao chép qemu-ga-x64 vào đĩa C:/ và tiến hành chạy để cài đặt nó.

image

Hộp thoại cài đặt sẽ biến mất khi hệ thống cài đặt xong. Để xác nhận kết quả cài đặt thành công, bạn hãy vào powershell và chạy lệnh Get-Service QEMU-GA. Nếu đầu ra xuất hiện như dưới là quá trình cài đặt thành công.

image

Kiểm tra lại version của qemu-guest-agent (phải đảm bảo version >= 7.3.2).

image

Hãy cài đặt một số cài đặt ví dụ như off firewall.

image

Hoặc enable remote desktop.

image

Cài đặt cloud-init bản mới nhất.

Download cloud base init cho Windows bản mới nhất tại đây. Sau khi tải xong, hãy cài đặt bằng cách chạy nó.

image

Chọn I accept the terms in the License Agrmement.

image

Giờ nguyên config và bấm next.

image

Phần username điền vào user administrator, phần Serial chọn COM1 và bấm Next.

image

Chọn Install.

image

Tích vào Run Sysprep…Shutdown …

image

Bấm Finish, quá trình Sysprep bắt đầu.

image

File cloudbase nằm theo đường dẫn như dưới.

C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf

Convert .qcow2* sang định dạng .img* để sử dụng. Đầu tiên hãy cài đặt tool dưới để có thể convert.

sudo apt install libguestfs-tools -y

Sau khi cài đặt xong, hãy chạy lệnh dưới đến convert (bạn hãy thay các trường đúng với môi trường của bạn nhé).

$ virt-sparsify --compress /kvm-volumes-ssd/win2k12r2.qcow2 /kvm-volumes-hdd/images/windows-2012-64bit.img
[   0.6] Create overlay file in /tmp to protect source disk
[   0.7] Examine source disk
◓ 25% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════⟧ --:--
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ --:--
[   9.5] Fill free space in /dev/sda1 with zero
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ --:--
[  15.2] Fill free space in /dev/sda2 with zero
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[ 320.5] Copy to destination and make sparse

Sau khi quá trình convert hoàn thành, bạn sẽ có file image mới windows-2012-64bit.img để sử dụng.

Chúc các bạn thành công.