ARM Máquina virtual no Ubuntu

2

Estou seguindo este guia para instalar um ambiente virtual de ARM no Ubuntu.

  • Eu instalei os pacotes linaro e qemu:

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

  • Cross compilers:

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

  • Download de um pacote de hardware e lançamento do Linaro:

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

  • Criado uma imagem de disco da VM:

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

Estou com defeito em Extraindo o kernel e o initrd . As instruções dizem para executar:

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

Mas estou recebendo o erro:

mount: failed to parse mount options

Há uma nota no guia que diz:

The actual names of the files might vary slightly in your build.

Então alguém sabe como modificar essa última linha para caber no Ubuntu?

    
por Alaa M. 01.11.2016 / 15:42

1 resposta

2

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

O que o comando acima está fazendo é realmente simples: Ele encontra o setor inicial da partição 2 da imagem vexpress.img , multiplica por 512 e toma o resultado como offset para montar como um dispositivo de loop.

O comando mount aceita valor de deslocamento em byte . Cada setor tem 512 bytes, portanto, multiplicar o deslocamento do setor inicial por 512 resultará no deslocamento inicial em bytes.

Aqui está uma maneira alternativa de fazer isso: (Eu uso uma imagem raspbian raw como exemplo)

  1. Encontre o deslocamento:

    $ 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
    

O deslocamento inicial da partição dois é 137216 . Como seu vexpress.img , a partição 2 é a partição raiz na qual estamos interessados.

  1. Matemática simples:

    $ perl -e "print 137216*512"
    70254592
    
  2. Monte:

    sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp
    
por 01.11.2016 / 16:58