Jak uruchomić Raspberry Pi OS w wirtualnej maszynie z QEMU i KVM

Jak uruchomić Raspberry Pi OS w wirtualnej maszynie z QEMU i KVM

Chociaż wiele systemów operacyjnych jest dostępnych dla Raspberry Pi, oficjalny jest Raspberry Pi OS. System operacyjny ma działać dla ramię Architektura i można ją łatwo zainstalować na karcie SD, która będzie używana jako główne urządzenie do przechowywania Raspberry Pi. Czasami możemy chcieć wykonać niektóre testy lub wypróbować niektóre aplikacje bez fizycznego maszyny Raspberry Pi; W tym samouczku zobaczymy, w jaki sposób możemy utworzyć maszynę wirtualną z systemem Raspberry Pi OS za pomocą Qemu I Kvm (Maszyna wirtualna jądra).

W tym samouczku się nauczysz:

  • Jak zainstalować QEMU i KVM
  • Jak pobrać i sprawdzić integralność najnowszej wersji Raspberry Pi OS (Buster)
  • Jak uruchomić system Raspberry Pi w wirtualnej maszynie
Jak uruchomić Raspberry Pi OS w wirtualnej maszynie z QEMU i KVM

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Qemu, Qemu-System-Arm, KVM i git
Inny Nic
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Instalowanie Qemu

Qemu, zgodnie z definicją na oficjalnej stronie internetowej, jest „emulator maszyny i open source i wirtualizator”. Możemy go użyć do uruchamiania systemu operacyjnego dla każdego rodzaju maszyny. W Linux jest często używany w połączeniu z kvm, który jest pełnym rozwiązaniem wirtualizacji zawartym w jądrze. Aby móc wirtualizować nasz system Raspberry Pi, musimy zainstalować go na naszej ulubionej dystrybucji wraz z Qemu-System-Arm pakiet, który zapewnia emulator systemu dla RAMIĘ systemy. QEMU i KVM są dostępne w repozytoriach oprogramowania głównych dystrybucji Linux. Aby zainstalować je na Fedora, możemy użyć DNF Menedżer pakietów:

$ sudo dnf instalacja @virtualizacja Qemu-System-Arm 


Tutaj zainstalowaliśmy wirtualizacja grupa pakietów (zauważ @ Prefiks): obejmuje wszystko, co potrzebne do wirtualizacji na Fedorze, z wyjątkiem Qemu-System-Arm pakiet, który zainstalowaliśmy osobno.

W dystrybucjach Debian i Debian możemy uruchomić następujące polecenia w celu synchronizacji naszej dystrybucji ze zdalnymi repozytoriami i zainstalować potrzebne pakiety w naszym systemie:

$ sudo apt-get aktualizacja && sudo apt-get instaluj qemu-system-arm qemu-kvm libvirt-clients libvirt-daemon-system mosta-UTILS virtinst libvirt-daemon wirtuer 

Pobieranie i weryfikacja najnowszego obrazu Raspberry Pi OS

Możemy pobrać najnowszą wersję Raspberry Pi OS z oficjalnej witryny Raspberry Pi. Możemy zasadniczo wybierać między 3 wersjami systemu: niektóre są bardziej minimalne, inne są wyposażone w większy zestaw pakietów i
Graficzny pulpit już zainstalowany. Linki do pobrania są następujące:

  • Raspberry Pi OS Lite
  • Raspberry Pi OS z komputerami stacjonarnymi
  • Raspberry Pi OS z komputerami stacjonarnymi i dodatkowymi pakietami

W tym samouczku użyjemy wersji Raspberry Pi OS „Lite”. Pobieranie go za pomocą przeglądarki internetowej to tylko kwestia klikania jednego z linków podanych powyżej. Jeśli chcemy go pobrać z wiersza poleceń, możemy użyć narzędzi takich jak wget Lub kędzior:

# Korzystanie z wget $ wget https: // pobieranie.Raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-buster-armhf-lite.Zip # za pomocą curl $ curl -o https: // pobieranie.Raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-buster-armhf-lite.zamek błyskawiczny 

Wykonując jedno z dwóch powyższych poleceń, obraz zostanie pobrany w bieżącym katalogu roboczym. Po zakończeniu pobierania możemy zweryfikować integralność obrazu, porównując jego SHA256Sum z tym podanym na stronie internetowej.
W naszym przypadku Hashsum powinien być D49D6FAB1B8E533F7EFC40416E98EC16019B9C034BC89C59B83D0921C2AEFEEF. Aby to zweryfikować, możemy uruchomić następujące polecenie:

$ SHA256Sum 2021-01-11-Raspios-Buster-Armhf-Lite.zamek błyskawiczny 

Polecenie powyżej, w naszym przypadku zwraca następujący wynik:

49D6FAB1B8E533F7EFC40416E98EC16019B9C034BC89C59B83D0921C2AEFEEF 2021-01-11-RASPIOS-BUSTER-BUSTER-ARMHF-Lite.zamek błyskawiczny 

Widać, że dwa hashsums pasują, więc jesteśmy gotowi iść. To, co musimy teraz zrobić, to wyodrębnienie obrazu, ponieważ jest on zamykany. Aby to zrobić, możemy uruchomić następujące polecenie:

$ UNZIP 2021-01-11-RASPIOS-BUSTER-BUSTER-ARMHF-Lite.zamek błyskawiczny 


Ponieważ jądro zawarte w oficjalnym obrazie systemowym nie można uruchomić bezpośrednio z QEMU, musimy sklonować repozytorium GIT, które zawiera serię jądra zbudowanego w tym celu. Zobaczymy, jak to zrobić w następnej sekcji.

Uzyskanie jądrów gotowych do qemu z Github

Repozytorium, które musimy sklonować z GitHub, jest dhruvvyas90/qemu-rpi-kernel. Wszystko, co musimy zrobić, to uruchomić następujące polecenie:

$ git clone https: // github.com/dhruvvyas90/qemu-rpi-kernel 

Proces klonowania może zająć trochę czasu, co zależy od szybkości połączenia internetowego. Gdy repozytorium zostanie sklonowane, jesteśmy gotowi iść. Oto jego treść:

$ ls qemu-rpi-kernel jądro.10.25-wyważnie Readme.MD Kernel-Qemu-4.14.79 narzędzi STRETKTU KERNEL-QEMU-4.19.50-bramkowy wszechstronny-buster-5.4.51.DTB Kernel-Qemu-4.4.34-Jessie Versatile-Pb-Buster.DTB Kernel-Qemu-5.4.51-bramkowy wszechstronny PB.DTB Native Ememuation 

Ponieważ chcemy naśladować najnowszą wersję systemu operacyjnego Raspberry Pi, potrzebujemy plików Kernel-Qemu-4.19.50-buster I wszechstronny-buster.DTB. Pierwszy to rzeczywisty obraz jądra, drugi to Blob drzewa urządzenia. Jaki jest cel tego pliku?

Aby opisać sprzęt dostępny w systemie na płycie Raspberry Pi, DTS (Źródło drzewa urządzenia) używane są pliki; Wywołana jest skompilowana wersja tych plików DTB i przechowywane w plikach z .DTB rozszerzenie. W naszym przypadku moglibyśmy alternatywnie użyć Kernel-Qemu-5.4.51-buster, razem z Wszechstronny-buster-5.4.51.DTB plik.

Naśladowanie Raspberry Pi OS

Ze wszystkich potrzebnych plików możemy wreszcie wirtualizować obraz Raspberry Pi OS. Zauważ, że tutaj zakładam, że katalog roboczy jest taki sam, jak pobraliśmy obraz systemu. Przed uruchomieniem faktycznego polecenia, tylko w Debian musimy uruchomić domyślną sieć pomostową, która nie jest uruchamiana automatycznie; Aby to zrobić, musimy uruchomić:

$ sudo virsh--connect = qemu: /// System Net-Start Default 

Aby to zacząć automatycznie, możemy uruchomić:

$ sudo virsh--connect = qemu: // system System-Autostart 

Teraz, aby zbudować maszynę wirtualną, musimy uruchomić następujące polecenie:

$ sudo vir-install \ --name rpios \-armv6l \--machine versatilepb \--cpu arm1176 \ --vcpus 1 \--memory 256 \ --import \--disk 2021-01-11-raspios -Buster-Armhf-Lite.IMG, format = RAW, BUS = Virtio \ --Network Bridge, Source = virbr0, model = virtio \ --video vga \ --Graphics Spice \ --boot 'dtb = qemu-rpi-kernel/versatile-pb-buster-buster.DTB, jądro = qemu-rpi-kernel/jądro-qemu-4.19.50-buster, kernel_args = root =/dev/vda2 Panic = 1 '\ --vents on_reboot = zniszcz 

Powinno pojawić się okno virviewera; Tam powinniśmy być w stanie wizualizować rozruch Raspberry Pi OS:



Spójrzmy krótko na opcje, których użyliśmy do budowy maszyny wirtualnej za pomocą Virt-install Komenda; niektóre są dość oczywiste, inne trochę bardziej niejasne.

Przede wszystkim użyliśmy --nazwa Opcja: Dzięki niej możemy ustawić nazwę instancji maszyny wirtualnej (powinna być unikalna). Druga opcja, której używaliśmy, jest --łuk: konieczne jest żądanie dla gościa nierodzinnej architektury procesora
system; Jeśli go nie użyjemy, zakłada się architekturę hosta.

Z --maszyna Opcja przekazujemy rodzaj maszyny do naśladowania do Qemu: W tym przypadku użyliśmy VersatilePB. Z --procesor Opcja konfigurujemy model procesora i funkcje narażone na gościa; Tutaj użyliśmy Arm1176, od
Raspberry Pi opiera się na ramię architektura.

--VCPU Potrzebna jest opcja, aby ustawić liczbę wirtualnych procesorów dla maszyny gościa, tylko jeden w tym przypadku. Jak można go łatwo odgadnąć, zamiast tego --pamięć Zamiast tego jest używana do ustawienia pamięci do alokacji dla gościa.

--import Opcja jest tutaj naprawdę ważna, ponieważ służy do instruowania aplikacji do pominięcia instalacji systemu operacyjnego i po prostu zbudowanie gościa wokół już istniejącego obrazu, który później jest określony za pomocą --dysk opcja.

Używamy --sieć Aby połączyć gościa z siecią hosta. W takim przypadku łączymy się przez Virbr0 most, który jest domyślnie tworzony przez Libvirt. Z --wideo Opcja określamy, które rodzaj urządzenia wideo powinno być dołączone do gościa i z --grafika Określamy, w jaki sposób można uzyskać dostęp do graficznego wyświetlacza gościa: w tym przypadku użyliśmy przyprawa, Aby użyć protokołu o tej samej nazwie.

Z --uruchomić opcja możliwe jest określenie DTB i jądro plik do użycia, ale także wiersz polecenia jądra Kernel_args. Wreszcie z --wydarzenia Opcja określamy wartości zdarzeń dla gościa. W tym przypadku my zniszczyć dla on_reboot wydarzenie.

Po uruchomieniu maszyny wirtualnej możemy również zarządzać nim graficznie za pośrednictwem Virt-manager aplikacja. Możemy teraz cieszyć się naszym wirtualizowanym Raspberry Pi OS!

Wniosek

W tym samouczku widzieliśmy, jak możemy uruchomić surowy obraz Raspberry Pi OS za pomocą QEMU i KVM, bez rzeczywistego sprzętu Raspberry Pi. Widzieliśmy, jak pobrać i weryfikować obraz systemowy, jak go wyodrębnić, jak sklonować repozytorium git zawierające pliki jądra i DTB potrzebne do uruchomienia obrazu z QEMU, oraz rzeczywiste polecenie, które powinniśmy uruchomić, aby uruchomić wirtualizację systemu.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mastering Bash Script Loops
  • Wprowadzenie do silników magazynowych MySQL
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Jak sprawdzić zdrowie dysku twardego z wiersza poleceń…
  • Ubuntu 20.04 Przewodnik