Ολοκληρωμένος Οδηγός Ανάπτυξης Winboat: CachyOS, Ενσωμάτωση & VirtualBox - Virt-Manager Routing
Η διαχείριση εικονικών μηχανών (VMs) Windows στο Linux συχνά συνοδεύεται από δύο μεγάλα προβλήματα: τη χαμηλή απόδοση του εικονικού δίσκου και την έλλειψη φορητότητας. Σε αυτόν τον οδηγό, θα υλοποιήσουμε ένα enterprise-grade iHack setup στο CachyOS, χρησιμοποιώντας το Winboat.
Θα μετατρέψουμε ένα απλό αρχείο .img σε ένα Raw Block Device που το σύστημα θα αναγνωρίζει ως "φυσικό δίσκο", προσφέροντας αστραπιαίες ταχύτητες και τη δυνατότητα να "πηδάμε" από τον έναν Hypervisor στον άλλον (Virt-Manager σε VirtualBox) χωρίς καμία αλλαγή στο configuration.
ΦΑΣΗ 1: Προετοιμασία Host & Virtualization Stack
Γιατί το κάνουμε:
Για να τρέξουμε Windows μέσα στο Linux, χρειαζόμαστε μια "μηχανή" (Hypervisor). Το KVM/QEMU (μέσω Virt-Manager) προσφέρει επιδόσεις που πλησιάζουν το 99% του φυσικού μηχανήματος, ενώ το VirtualBox προσφέρει μέγιστη συμβατότητα με περιφερειακά. Το Winboat χρησιμοποιεί το Docker για να "χτίσει" το Windows image αυτοματοποιημένα.
Εκτέλεση (Προσοχή: Απαιτείται Restart μετά την προσθήκη στα groups.):
# Ενημέρωση και εγκατάσταση virtualization stack
sudo pacman -Syu winboat docker virt-manager qemu-desktop libvirt edk2-ovmf \
dnsmasq iptables-nft virtualbox virtualbox-host-dkms --noconfirm
# Προσθήκη χρήστη στα groups (Για να έχετε δικαιώματα διαχείρισης hardware)
sudo usermod -aG docker,libvirt,vboxusers $USER
# Ενεργοποίηση των απαραίτητων υπηρεσιών (daemons)
sudo systemctl enable --now docker libvirtdΦΑΣΗ 2: Persistent Disk Routing (Το "Κλειδί" της Σταθερότητας)
Γιατί το κάνουμε:
Το Linux χρησιμοποιεί "loop devices" για να διαβάσει αρχεία .img σαν δίσκους. Όμως, το όνομά τους (π.χ. /dev/loop0) αλλάζει σε κάθε boot αν έχετε Docker ή Snaps. Αν η VM σας ψάχνει το /dev/loop0 και αυτό γίνει /dev/loop1, η VM δεν θα ξεκινήσει ποτέ. Εμείς θα φτιάξουμε ένα σταθερό "μονοπάτι" που δεν αλλάζει ποτέ.
Βήμα 1: Αυτόματο Attach στο Boot (Systemd Service)
Δημιουργούμε μια υπηρεσία που λέει στο Linux: "Μόλις ανοίξεις, σύνδεσε το data.img μου σε μια διαθέσιμη loop device".
sudo nano /etc/systemd/system/loop-dataimg.service
[Unit]
Description=Attach Winboat data.img to loop device
After=home.mount local-fs.target
Requires=home.mount
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/losetup -f --show /home/USERNAME/path/to/data.img
ExecStop=/usr/bin/losetup -D
[Install]
WantedBy=multi-user.target
Βήμα 2: Σταθερό Symlink (Udev Rules)
Τώρα λέμε στο σύστημα: "Όποιο νούμερο κι αν πάρει αυτή η loop device, φτιάξε ένα ψευδώνυμο στο /dev/loop-winboat".
sudo nano /etc/udev/rules.d/99-loop-winboat.rules
KERNEL=="loop*", PROGRAM=="/usr/bin/losetup %N", RESULT=="/home/USERNAME/path/to/data.img", SYMLINK+="loop-winboat"
Βήμα 3: Ενεργοποίηση
sudo systemctl daemon-reload
sudo systemctl enable --now loop-dataimg.service
sudo udevadm control --reload && sudo udevadm trigger
ΦΑΣΗ 3: Εισαγωγή Δίσκου στους Hypervisors
3.1 Virt-Manager (KVM) - Η επιλογή για ταχύτητα
Όταν δημιουργείτε τη VM, επιλέξτε "Import existing disk image" και δώστε τη διαδρομή /dev/loop-winboat. Το KVM θα το δει ως κανονικό σκληρό δίσκο (Block Device), παρακάμπτοντας τα layers του file system για μέγιστο IOPS.
3.2 VirtualBox - Η λύση του "Wrapper"
Το VirtualBox δεν μπορεί να διαβάσει απευθείας raw block devices. Γι' αυτό φτιάχνουμε ένα αρχείο .vmdk που λειτουργεί ως "γέφυρα" (pointer) προς το /dev/loop-winboat.
VBoxManage internalcommands createrawvmdk -filename ~/winboat.vmdk -rawdisk /dev/loop-winboat
chmod 660 ~/winboat.vmdk
ΦΑΣΗ 4: Windows Post-Setup (The God Script)
Γιατί το κάνουμε:
Μέσα στο VM, θέλουμε ένα περιβάλλον που να αυτο-συντηρείται. Αντί να κατεβάζετε χειροκίνητα .exe, χρησιμοποιούμε Package Managers.
Άνοιξε το PowerShell ως Administrator και τρέξε:
# 1. Εγκατάσταση Chocolatey (Ο Pacman των Windows)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 2. Εγκατάσταση του Software Stack
# unigetui: Γραφικό περιβάλλον για ΟΛΟΥΣ τους package managers.
# winfsp: Απαραίτητο για το διαμοιρασμό αρχείων Linux-Windows.
# choco-cleaner: Διαγράφει τα σκουπίδια των updates για να μην φουσκώνει το .img.
choco install chocolatey-gui unigetui choco-butler choco-cleaner winfsp virtualbox-guest-additions-guest.install -y
# 3. Εκτέλεση καθαρισμού
choco-cleaner
ΦΑΣΗ 5: Αναλυτική Παρουσίαση Εφαρμογών
| Εφαρμογή | Τι κάνει | Γιατί την χρειαζόμαστε | Link |
|---|---|---|---|
| Chocolatey | Package Manager | Αυτοματοποιημένη εγκατάσταση & updates λογισμικού χωρίς browser. | Link |
| UniGetUI | Unified GUI | Συνδυάζει Winget, Chocolatey & Scoop σε ένα πανέμορφο περιβάλλον. | Link |
| WinFSP | File System Proxy | Επιτρέπει στα Windows να "βλέπουν" το Linux File System (VirtioFS). | Link |
| Choco Cleaner | Cleanup Tool | Διαγράφει caches & installers. Κρίσιμο για να μη γεμίζει το data.img. | Link |
| Choco Butler | Auto-Updater | Τρέχει στο background και σε ειδοποιεί για updates των εφαρμογών σου. | Link |
ΦΑΣΗ 6: Seamless Sharing (Virtio-FS)
Γιατί το κάνουμε:
Το copy-paste αρχείων μέσω δικτύου είναι αργό. Το Virtio-FS επιτρέπει στο VM να "βλέπει" τον φάκελο /home του CachyOS σαν να ήταν ένας τοπικός δίσκος.
Στο Virt-Manager, πρόσθεσε Hardware -> Filesystem.
Driver:
virtiofs, Source:/home/user, Target:host_home.Μέσα στα Windows, χάρη στο WinFSP, ο φάκελος θα εμφανιστεί αυτόματα, επιτρέποντας αστραπιαίες μεταφορές αρχείων.
Troubleshooting (Όταν κάτι πάει στραβά)
Permission Denied: Βεβαιώσου ότι ο χρήστης σου είναι στο group
vboxusers. Αν όχι, το VirtualBox δεν θα μπορεί να διαβάσει το wrapper vmdk.Device Busy: Συμβαίνει αν προσπαθήσεις να ανοίξεις τη VM ενώ το Winboat docker container είναι ακόμα ενεργό. Πάντα κλείνουμε το ένα πριν ανοίξουμε το άλλο.
Slow Graphics: Στο Virt-Manager, βεβαιώσου ότι έχεις επιλέξει "VirtIO" για την κάρτα γραφικών και έχεις εγκαταστήσει τους drivers.
Hack safe!
Δείτε επίσης: How To Install WinBoat On CachyOS - Video Tutorial
