Cómo ejecutar la Raspberry Pi OS en una máquina virtual con QEMU y KVM

Cómo ejecutar la Raspberry Pi OS en una máquina virtual con QEMU y KVM

Aunque hay muchos sistemas operativos disponibles para Raspberry Pi, el oficial es el Raspberry Pi OS. El sistema operativo está hecho para ejecutarse para el brazo arquitectura, y se puede instalar fácilmente en la tarjeta SD que se utilizará como el dispositivo de almacenamiento principal de Raspberry Pi. A veces es posible que deseemos realizar algunas pruebas o probar algunas aplicaciones sin tener una máquina física de frambuesa Pi; En este tutorial veremos cómo podemos crear una máquina virtual con el sistema Raspberry Pi OS usando QEMU y KVM (Máquina virtual del núcleo).

En este tutorial aprenderás:

  • Cómo instalar QEMU y KVM
  • Cómo descargar y verificar la integridad de la última versión de Raspberry Pi OS (Buster)
  • Cómo ejecutar el sistema operativo Raspberry Pi en una máquina virtual
Cómo ejecutar la Raspberry Pi OS en una máquina virtual con QEMU y KVM

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Distribución independiente
Software QEMU, QEMU-System-Arm, KVM y Git
Otro Ninguno
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación de QEMU

QEMU, como se define en el sitio web oficial, es un "emulador y virtualizador de máquinas genéricas y de código abierto". Podemos usarlo para ejecutar el sistema operativo para cualquier tipo de máquina. En Linux se usa a menudo en combinación con KVM, que es una solución de virtualización completa incluida en el núcleo. Para poder virtualizar nuestro sistema operativo Raspberry Pi, necesitamos instalarlo en nuestra distribución favorita, junto con el QEMU-System-Arm paquete, que proporciona el emulador del sistema para BRAZO sistemas. QEMU y KVM están disponibles en los repositorios de software de las principales distribuciones de Linux. Para instalarlos en Fedora, podemos usar el DNF gerente de empaquetación:

$ sudo dnf install @Virtualization QEMU-System-Arm 


Aquí instalamos el virtualización grupo de paquetes (observe el @ prefijo): incluye todo lo necesario para la virtualización en Fedora, excepto el QEMU-System-Arm paquete, que instalamos por separado.

En las distribuciones basadas en Debian y Debian, podemos lanzar los siguientes comandos para sincronizar nuestra distribución con los repositorios remotos y obtener los paquetes necesarios instalados en nuestro sistema:

$ sudo apt-get actualización && sudo apt-get install qemu-system-brazo QEMU-KVM Libvirt-Clients libvirt-daemon-system puente-UTILS 

Descargar y verificar la última imagen de Raspberry Pi OS

Podemos descargar la última versión del sistema operativo Raspberry Pi del sitio oficial de Raspberry Pi. Básicamente, podemos elegir entre 3 versiones del sistema: algunos son más mínimos, otros vienen con un conjunto más grande de paquetes y un
escritorio gráfico ya instalado. Los enlaces de descarga son los siguientes:

  • Raspberry pi os lite
  • Raspberry Pi OS con escritorio
  • Raspberry Pi OS con escritorio y paquetes adicionales

En este tutorial usaremos la versión "Lite" Raspberry Pi OS. Descargarlo usando un navegador web, es solo cuestión de hacer clic en uno de los enlaces proporcionados anteriormente. Si queremos descargarlo desde la línea de comando, podemos usar herramientas como wget o rizo:

# Usando wget $ wget https: // descargas.fraspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.zip # usando curl $ curl -o https: // descargas.fraspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.cremallera 

Al ejecutar uno de los dos comandos anteriores, la imagen se descargará en el directorio de trabajo actual. Una vez que la descarga está completa, podemos verificar la integridad de la imagen comparando su sha256sum con el proporcionado en el sitio web.
En nuestro caso, el hashsum debería ser d49d6fab1b8e533f7efc40416e98ec16019b9c034bc89c59b83d0921c2aefeef. Para verificarlo podemos ejecutar el siguiente comando:

$ SHA256SUM 2021-01-11-Raspios-Buster-ArmHF-Lite.cremallera 

El comando anterior, en nuestro caso devuelve el siguiente resultado:

49D6FAB1B8E533F7EFC40416E98EC16019B9C034BC89C59B83D0921C2AEFEEF 2021-01-11-RASPIOS-BUSTER-ArmHF-LITE.cremallera 

Puedes ver que los dos hashsums coinciden, así que estamos listos para irnos. Lo que debemos hacer ahora es extraer la imagen, ya que está con cremallera. Para hacerlo, podemos ejecutar el siguiente comando:

$ Unzip 2021-01-11-Raspios-Buster-ArmHF-Lite.cremallera 


Dado que el núcleo incluido en la imagen oficial del sistema no se puede iniciar directamente desde QEMU, debemos clonar un repositorio GIT que contiene una serie de kernel construido para este propósito exacto. Veremos cómo hacer esto en la siguiente sección.

Obtener núcleos listos para Qemu de Github

El repositorio que necesitamos clonar desde GitHub es dhruvvyas90/qemu-rpi-kernel. Todo lo que tenemos que hacer es ejecutar el siguiente comando:

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

El proceso de clonación podría tardar un tiempo en terminar, que depende de la velocidad de su conexión a Internet. Una vez que el repositorio está clonado, estamos listos para irnos. Aquí está su contenido:

$ ls qemu-rpi-kernel kernel-qemu-3.10.25-Wheezezy Readme.MD Kernel-Qemu-4.14.79 herramientas de estroch kernel-qemu-4.19.Versátil de 50-buter-PB-BUSTER-5.4.51.DTB Kernel-Qemu-4.4.34-jessie versátil-pb-buster.DTB Kernel-Qemu-5.4.51-BUTUS VERSATILI-PB.DTB nativo de emisión 

Dado que queremos emular la última versión del sistema operativo Raspberry Pi, los archivos que necesitamos son kernel-qemu-4.19.50-buter y Versátil-Pb-Buster.DTB. La primera es la imagen real del núcleo, la segunda es un Totón de árbol de dispositivos. ¿Cuál es el propósito de este archivo??

Para describir el hardware disponible en un sistema en una placa PI de Raspberry, DTS (Fuente del árbol del dispositivo) se utilizan archivos; Se llama a la versión compilada de esos archivos DTB y almacenado en archivos con el .DTB extensión. En nuestro caso, podríamos usar alternativamente el kernel-qemu-5.4.51-buter, junto con el versátil-pb-buster-5.4.51.DTB archivo.

Emulando la frambuesa Pi OS

Con todos los archivos necesarios en su lugar, finalmente podemos virtualizar la imagen de Raspberry Pi OS. Tenga en cuenta que aquí supongo que el directorio de trabajo es el mismo donde descargamos la imagen del sistema. Antes de ejecutar el comando real, solo en Debian necesitamos iniciar la red puenteada predeterminada, que no se inicia automáticamente; Para hacer eso debemos ejecutar:

$ sudo virsh --connect = qemu: /// System Net-start predeterminado 

Para que comience automáticamente, podemos ejecutar:

$ sudo virsh --connect = qemu: // System Net-Autostart predeterminado 

Ahora, para construir la máquina virtual, debemos ejecutar el siguiente comando:

$ sudo virt-install \--name rpios \ --Arch armv6l \--Machine versatilepb \--cpu arm1176 \ --vcpus 1 \ --memory 256 \ --import \ --disk 2021-01-11-raspios -Buster-Armhf-Lite.img, format = raw, bus = virtio \--network puente, fuente = virbr0, model = virtio \ --video vga \ --graphics spice \ --boot 'dtb = qemu-rpi-kernel/versatile-pb-buster.dtb, kernel = qemu-rpi-kernel/kernel-qemu-4.19.50-buster, kernel_args = root =/dev/vda2 Panic = 1 '\ --events on_reboot = destruir 

Debería aparecer una ventana virtual-viewer; Allí deberíamos poder visualizar el arranque del sistema operativo Raspberry Pi:



Echemos un vistazo a las opciones que usamos para construir la máquina virtual con el Virt-Install dominio; algunos son bastante obvios, otros un poco más oscuros.

En primer lugar, usamos el --nombre Opción: con él podemos establecer el nombre de la instancia de la máquina virtual (debería ser único). La segunda opción que usamos es --arco: Es necesario solicitar una arquitectura de CPU no nativa para el invitado
sistema; Si no lo usamos, se supone la arquitectura del host.

Con el --máquina Opción Pasamos el tipo de máquina para emular a Qemu: en este caso usamos versatilepb. Con el --UPC Opción Configuramos el modelo de CPU y las características expuestas al invitado; Aquí usamos ARM1176, desde el
Raspberry Pi se basa en el brazo arquitectura.

El --VCPUS Se necesita una opción para establecer el número de CPU virtuales para la máquina invitada, solo una en este caso. Como podría ser fácilmente adivinado, en su lugar, el --memoria La opción, en su lugar, se usa para establecer la memoria para asignar el invitado.

El --importar La opción es realmente importante aquí, ya que se utiliza para instruir a la aplicación para omitir la instalación del sistema operativo y simplemente construir un invitado alrededor de una imagen ya existente, que luego se especifica con el --disco opción.

Usamos --red para conectar el invitado a la red de host. En este caso nos conectamos a través del virBr0 puente, que se crea de forma predeterminada por libvirt. Con el --video Opción Especificamos qué tipo de dispositivo de video debe conectarse al invitado y con --gráficos Especificamos cómo se puede acceder a la pantalla gráfica del invitado: en este caso usamos especia, para usar el protocolo con el mismo nombre.

Con el --bota opción Es posible especificar el DTB y el núcleo Archivo para usar, pero también la línea de comandos del kernel con kernel_args. Finalmente, con el --eventos Opción Especificamos valores de eventos para el invitado. En este caso nosotros destruir Para el on_reboot evento.

Una vez que se inicia la máquina virtual, también podemos administrarla gráficamente a través del gerente de virtud solicitud. Ahora podemos disfrutar de nuestra frambuesa Pi OS virtualizada!

Conclusión

En este tutorial vimos cómo podemos ejecutar una imagen de Raspberry Pi OS en bruto usando QEMU y KVM, sin un hardware real Raspberry Pi. Vimos cómo descargar y verificar la imagen del sistema, cómo extraerla, cómo clonar el repositorio de git que contiene el núcleo y los archivos DTB necesarios para iniciar la imagen con QEMU, y el comando real que debemos ejecutar para iniciar la virtualización del sistema.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Introducción a los motores de almacenamiento MySQL
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Sistema colgado de Linux? Cómo escapar a la línea de comando y ..
  • Archivos de configuración de Linux: los 30 principales más importantes
  • Cómo verificar una salud del disco duro desde la línea de comandos ..
  • Ubuntu 20.04 Guía