Виртуальная машина ARM на Ubuntu

Виртуальная машина ARM на Ubuntu

я следуюэто руководстводля установки виртуальной среды ARM в Ubuntu.

  • Я установил пакеты linaro и qemu:

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

  • Кросс-компиляторы:

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

  • Загрузил релиз Linaro и пакет оборудования:

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

  • Создал образ диска виртуальной машины:

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

Я терплю неудачу вИзвлечение ядра и initrd. В инструкции сказано, что нужно запустить:

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

Но я получаю ошибку:

mount: не удалось проанализировать параметры монтирования

В руководстве есть примечание, в котором говорится:

Фактические имена файлов могут немного отличаться в вашей сборке.

Кто-нибудь знает, как изменить последнюю строку, чтобы она подошла для Ubuntu?

решение1

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

На самом деле, приведенная выше команда выполняет простую операцию: она находит начальный сектор раздела 2 образа vexpress.img, умножает его на 512 и берет результат в качестве смещения для монтирования в качестве циклического устройства.

Команда mountпринимает значение смещения вбайт. Каждый сектор имеет 512 байт, поэтому умножение смещения начального сектора на 512 даст начальное смещение в байтах.

Вот альтернативный способ сделать это: (в качестве примера я взял необработанное изображение Raspbian)

  1. Найдите смещение:

    $ 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
    

Начальное смещение раздела два равно 137216. Как и ваш vexpress.img, раздел 2 — это корневой раздел, который нас интересует.

  1. Простая математика:

    $ perl -e "print 137216*512"
    70254592
    
  2. Смонтируйте его:

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

Связанный контент