Máquina virtual ARM en Ubuntu

Máquina virtual ARM en Ubuntu

estoy siguiendoesta guíapara instalar un entorno ARM virtual en Ubuntu.

  • Instalé los paquetes linaro y qemu:

sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get install linaro-image-tools qemu-user-static qemu-system

  • Compiladores cruzados:

sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi

  • Descargué una versión de Linaro y un paquete de hardware:

wget http://releases.linaro.org/platform/linaro-n/nano/alpha-3/linaro-natty-nano-tar-20110302-0.tar.gz
wget http://releases.linaro.org/platform/linaro-n/hwpacks/alpha-3/hwpack_linaro-vexpress_20110302-0_armel_supported.tar.gz

  • Creó una imagen de disco de VM:

linaro-media-create --image_file vexpress.img --dev vexpress \
--binary linaro-natty-nano-tar-20110302-0.tar.gz \
--hwpack hwpack_linaro-vexpress_20110302-0_armel_supported.tar.gz

estoy fallando enExtrayendo el kernel y el initrd. Las instrucciones dicen que ejecute:

sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } /partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp

Pero recibo el error:

montaje: no se pudieron analizar las opciones de montaje

Hay una nota en la guía que dice:

Los nombres reales de los archivos pueden variar ligeramente en su compilación.

Entonces, ¿alguien sabe cómo modificar esta última línea para que quepa en Ubuntu?

Respuesta1

sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } \
/partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp

Lo que hace el comando anterior es realmente simple: encuentra el sector inicial de la partición 2 de la imagen vexpress.img, lo multiplica por 512 y toma el resultado como desplazamiento para montarlo como un dispositivo de bucle.

El mountcomando acepta el valor de compensación enbyte. Cada sector tiene 512 bytes, por lo que multiplicar el desplazamiento del sector inicial por 512 dará el desplazamiento inicial en bytes.

Aquí hay una forma alternativa de hacer esto: (tomo una imagen raspbian sin formato como ejemplo)

  1. Encuentra el desplazamiento:

    $ fdisk -lu 2016-09-23-raspbian-jessie-lite.img 
    Disk 2016-09-23-raspbian-jessie-lite.img: 1.3 GiB, 1389363200 bytes, 2713600 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x5a7089a1
    
    Device                               Boot  Start     End Sectors  Size Id Type
    2016-09-23-raspbian-jessie-lite.img1        8192  137215  129024   63M  c W95 FAT32 (LBA)
    2016-09-23-raspbian-jessie-lite.img2      137216 2713599 2576384  1.2G 83 Linux
    

El desplazamiento inicial de la partición dos es 137216. Al igual que su vexpress.imgpartición 2, es la partición raíz que nos interesa.

  1. Matemáticas simples:

    $ perl -e "print 137216*512"
    70254592
    
  2. Móntalo:

    sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp
    

información relacionada