Wirtualizacja środowiska pozwala na szybką i bezpieczną pracę z systemami informatycznymi. Nie każda aplikacja może jednak być skonteneryzowana i zapakowana w kontener Dockera - tutaj z pomocą przychodzi KVM. KVM, czyli Kernel-based Virtual Machine, jest to środowisko, na którym możliwe jest uruchomienie maszyny wirtualnej. Skojarzenie z VirtualBox jest jak najbardziej trafne - zamysł jest dokładnie ten sam. Technologii pozwalających na tworzenie środowisk wirtualnych jest oczywiście więcej - choćby VMware czy Hyper-V.
W pierwszej kolejności należy sprawdzić, czy procesor wspiera technologię wirtualizacji. Do tego służy poniższe polecenie:
grep -Eoc '(vmx|svm)' /proc/cpuinfo
W moim przypadku polecenie zwróciło 16, czyli liczbę rdzeni CPU. Jeżeli zwrócona zostanie wartość 0, należy w ustawieniach BIOS sprawdzić, czy włączona jest wirtualizacja. Na to nie ma jednego sposobu – warto sprawdzić w instrukcji lub na stronie producenta. Następnym krokiem jest sprawdzenie, czy procesor wspiera wirtualizację sprzętową. Do tego służy polecenie kvm-ok, które staje się dostępne po zainstalowaniu pakietu cpu-checker
:
sudo apt install cpu-checker
Jeżeli wszystko skonfigurowane jest prawidłowo, po uruchomieniu polecenie kvm-ok
, powinna pojawić się mniej więcej taka informacja:
INFO: /dev/kvm exists
KVM acceleration can be used
Kolejną czynnością do wykonania jest zainstalowanie następujących paczek:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
Na koniec zostało dodanie użytkownika do grup kvm
i libvirt
:
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
Aby powyższe polecenia przyniosły efekt, należy się wylogować i zalogować ponownie.
Źródło – https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/
Udało się przygotować środowisko, można więc przejść do postawienia maszyny wirtualnej. Drogi są dwie – można to zrobić ręcznie za pomocą virt-manager
albo użyć rozwiązania automatycznego. Postawimy maszynę wirtualną z systemem Ubuntu Server 20.04, zatem można w tym przypadku użyć narzędzia autoinstall
.
Zaczniemy od przygotowania “miejsca”, gdzie zainstalowany zostanie system. Posłuży do tego polecenie truncate
.
truncate -s 10G image.img
Utworzony zostanie plik mający rozmiar 10GB, który to będzie naszym wirtualnym dyskiem dla maszyny. Teraz czas na przygotowanie konfiguracji automatycznej instalacji. Istnieje oczywiście możliwość zastosowania debianowego preseed (Ubuntu to zmutowany Debian), natomiast bardziej przyjazny będzie wspomniany wcześniej autoinstall. Minimalna
konfiguracja niezbędna do podstawowej instalacji systemu wygląda w ten sposób:
#cloud-config
autoinstall:
version: 1
identity:
hostname: ubuntu-server
password: SOME_HASHED_PASS
username: clurgo
Wartość SOME_HASHED_PASS, jak nazwa wskazuje, zawiera zahashowane hasło, jakie otrzyma tworzony użytkownik. Można je wygenerować na kilka sposobów, natomiast najprostszą metodą jest zastosowanie polecenia mkpasswd. Jeżeli nie jest ono domyślnie zainstalowane, znaleźć je można w pakiecie whois
:
sudo apt install whois
A następnie można wygenerować hash hasła, na przykład tak:
echo -ne "clurgo" | mkpasswd --method=SHA-512 --stdin
Nie przejmuj się, jeżeli to polecenie za każdym razem zwróci inny wynik – jest to jak najbardziej oczekiwane zachowanie (link).
Powyższą konfigurację należy zapisać w jakimś katalogu pod nazwą user-data
. Ostatnim etapem przygotowań jest stworzenie pliku meta-data
, który w naszym przypadku będzie pusty:
touch meta-data
W tym momencie powinniśmy mieć w jakimś katalogu roboczym dwa pliki – user-data
oraz meta-data.
Należy je wystawić po HTTP. Nie będzie potrzebny do tego jakiś specjalny serwer, w tym pomoże nam Python 3:
python3 -m http.server 3003
Już prawie jesteśmy w domu – pozostało jedynie pobranie ISO z obrazem naszego serwera. Plik ten można pobrać ze strony Ubuntu. Po zakończeniu pobierania należy stworzyć katalog, gdzie zamontujemy nasze ISO, można to zrobić na przykład tak:
sudo mkdir -p /mnt/ubuntu-server && sudo mount /home/mlas/Pobrane/ubuntu-20.04.2-live-server-amd64.iso /mnt/ubuntu-server
Ostatnim krokiem jest uruchomienie instalacji:
kvm -no-reboot -m 4096 \
-drive file=image.img,format=raw,cache=none,if=virtio \
-cdrom /home/mlas/Pobrane/ubuntu-20.04.2-live-server-amd64.iso \
-kernel /mnt/ubuntu-server/casper/vmlinuz \
-initrd /mnt/ubuntu-server/casper/initrd \
-append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/'
Jeżeli wszystko zostało wykonane poprawnie, po kilku minutach instalacja się zakończy – parametr -no-reboot sprawia, że maszyna wirtualna wyłącza się po procesie instalacji.
Użyjemy teraz managera maszyn wirtualnych w formie okienkowej. Maszyna jest już gotowa do użycia – skonfigurowaliśmy wirtualizację w systemie, zainstalowaliśmy niezbędne oprogramowanie, skonfigurowaliśmy automatyczną instalację, a następnie uruchomiliśmy cały proces. Teraz mamy plik image.img, który wypadałoby uruchomić.
Uruchamiamy zatem naszego managera – można to zrobić z poziomu listy aplikacji lub linii poleceń:
virt-manager
Następnie tworzymy nową maszynę, wybierając ikonkę monitora po lewej. Naszym oczom ukazuje się takie oto okienko:
Należy zaznaczyć ostatnią opcję – obraz dysku stworzyliśmy już wcześniej, a następnie przechodzimy dalej:
Po wybraniu opcji Przeglądaj zobaczymy okno wyboru woluminu. Można taki wolumin utworzyć w razie potrzeby, nas jednak interesuje znalezienie pliki image.img – tam znajduje się nasza maszyna wirtualna.
Po wybraniu obrazu wracamy do poprzedniego okna, w którym należy wybrać system operacyjny – tutaj będzie to Ubuntu 20.04. Po wpisaniu kilku pierwszych liter pojawiają się podpowiedzi:
W następnym okienku można zdefiniować ilość pamięci oraz liczbę procesorów, ja zostawiłem domyślne:
Na ostatnim ekranie można ustawić nazwę maszyny i zakończyć cały proces:
Po wybraniu opcji Ukończ, maszyna zostaje wystartowana, a my możemy się zalogować:
We’re a team of experienced and skilled software developers – and people you’ll enjoy working with.
Start Your Project