Qemu run arm linux

Arm System emulator¶

QEMU can emulate both 32-bit and 64-bit Arm CPUs. Use the qemu-system-aarch64 executable to simulate a 64-bit Arm machine. You can use either qemu-system-arm or qemu-system-aarch64 to simulate a 32-bit Arm machine: in general, command lines that work for qemu-system-arm will behave the same when used with qemu-system-aarch64 .

QEMU has generally good support for Arm guests. It has support for nearly fifty different machines. The reason we support so many is that Arm hardware is much more widely varying than x86 hardware. Arm CPUs are generally built into “system-on-chip” (SoC) designs created by many different companies with different devices, and these SoCs are then built into machines which can vary still further even if they use the same SoC. Even with fifty boards QEMU does not cover more than a small fraction of the Arm hardware ecosystem.

The situation for 64-bit Arm is fairly similar, except that we don’t implement so many different machines.

As well as the more common “A-profile” CPUs (which have MMUs and will run Linux) QEMU also supports “M-profile” CPUs such as the Cortex-M0, Cortex-M4 and Cortex-M33 (which are microcontrollers used in very embedded boards). For most boards the CPU type is fixed (matching what the hardware has), so typically you don’t need to specify the CPU type by hand, except for special cases like the virt board.

Choosing a board model¶

For QEMU’s Arm system emulation, you must specify which board model you want to use with the -M or —machine option; there is no default.

Because Arm systems differ so much and in fundamental ways, typically operating system or firmware images intended to run on one machine will not run at all on any other. This is often surprising for new users who are used to the x86 world where every system looks like a standard PC. (Once the kernel has booted, most userspace software cares much less about the detail of the hardware.)

If you already have a system image or a kernel that works on hardware and you want to boot with QEMU, check whether QEMU lists that machine in its -machine help output. If it is listed, then you can probably use that board model. If it is not listed, then unfortunately your image will almost certainly not boot on QEMU. (You might be able to extract the filesystem and use that with a different kernel which boots on a system that QEMU does emulate.)

Читайте также:  Линукс dd копирование разделов

If you don’t care about reproducing the idiosyncrasies of a particular bit of hardware, such as small amount of RAM, no PCI or other hard disk, etc., and just want to run Linux, the best option is to use the virt board. This is a platform which doesn’t correspond to any real hardware and is designed for use in virtual machines. You’ll need to compile Linux with a suitable configuration for running on the virt board. virt supports PCI, virtio, recent CPUs and large amounts of RAM. It also supports 64-bit CPUs.

Board-specific documentation¶

Unfortunately many of the Arm boards QEMU supports are currently undocumented; you can get a complete list by running qemu-system-aarch64 —machine help .

  • Arm Integrator/CP ( integratorcp )
  • Arm MPS2 and MPS3 boards ( mps2-an385 , mps2-an386 , mps2-an500 , mps2-an505 , mps2-an511 , mps2-an521 , mps3-an524 , mps3-an547 )
  • Arm Musca boards ( musca-a , musca-b1 )
  • Arm Realview boards ( realview-eb , realview-eb-mpcore , realview-pb-a8 , realview-pbx-a9 )
  • Arm Server Base System Architecture Reference board ( sbsa-ref )
  • Arm Versatile boards ( versatileab , versatilepb )
  • Arm Versatile Express boards ( vexpress-a9 , vexpress-a15 )
  • Aspeed family boards ( *-bmc , ast2500-evb , ast2600-evb )
  • Aspeed minibmc family boards ( ast1030-evb )
  • Facebook Yosemite v3.5 Platform and CraterLake Server ( fby35 )
  • Banana Pi BPI-M2U ( bpim2u )
  • Boundary Devices SABRE Lite ( sabrelite )
  • Canon A1100 ( canon-a1100 )
  • Cubietech Cubieboard ( cubieboard )
  • Emcraft SmartFusion2 SOM kit ( emcraft-sf2 )
  • Calxeda Highbank and Midway ( highbank , midway )
  • Freecom MusicPal ( musicpal )
  • Gumstix Connex and Verdex ( connex , verdex )
  • Intel Mainstone II board ( mainstone )
  • Kyoto Microcomputer KZM-ARM11-01 ( kzm )
  • Nordic nRF boards ( microbit )
  • Nokia N800 and N810 tablets ( n800 , n810 )
  • Nuvoton iBMC boards ( *-bmc , npcm750-evb , quanta-gsj )
  • NXP i.MX25 PDK board ( imx25-pdk )
  • Orange Pi PC ( orangepi-pc )
  • Palm Tungsten|E PDA ( cheetah )
  • Raspberry Pi boards ( raspi0 , raspi1ap , raspi2b , raspi3ap , raspi3b )
  • Sharp XScale-based PDA models ( akita , borzoi , spitz , terrier , tosa )
  • Sharp Zaurus SL-5500 ( collie )
  • Siemens SX1 ( sx1 , sx1-v1 )
  • Stellaris boards ( lm3s6965evb , lm3s811evb )
  • STMicroelectronics STM32 boards ( netduino2 , netduinoplus2 , stm32vldiscovery )
  • ‘virt’ generic virtual platform ( virt )
  • Xilinx Versal Virt ( xlnx-versal-virt )
  • XENPVH ( xenpvh )
Читайте также:  Самый красивый линукс минт

Emulated CPU architecture support¶

Источник

Arm System emulator¶

QEMU can emulate both 32-bit and 64-bit Arm CPUs. Use the qemu-system-aarch64 executable to simulate a 64-bit Arm machine. You can use either qemu-system-arm or qemu-system-aarch64 to simulate a 32-bit Arm machine: in general, command lines that work for qemu-system-arm will behave the same when used with qemu-system-aarch64 .

QEMU has generally good support for Arm guests. It has support for nearly fifty different machines. The reason we support so many is that Arm hardware is much more widely varying than x86 hardware. Arm CPUs are generally built into “system-on-chip” (SoC) designs created by many different companies with different devices, and these SoCs are then built into machines which can vary still further even if they use the same SoC. Even with fifty boards QEMU does not cover more than a small fraction of the Arm hardware ecosystem.

The situation for 64-bit Arm is fairly similar, except that we don’t implement so many different machines.

As well as the more common “A-profile” CPUs (which have MMUs and will run Linux) QEMU also supports “M-profile” CPUs such as the Cortex-M0, Cortex-M4 and Cortex-M33 (which are microcontrollers used in very embedded boards). For most boards the CPU type is fixed (matching what the hardware has), so typically you don’t need to specify the CPU type by hand, except for special cases like the virt board.

Choosing a board model¶

For QEMU’s Arm system emulation, you must specify which board model you want to use with the -M or —machine option; there is no default.

Because Arm systems differ so much and in fundamental ways, typically operating system or firmware images intended to run on one machine will not run at all on any other. This is often surprising for new users who are used to the x86 world where every system looks like a standard PC. (Once the kernel has booted, most userspace software cares much less about the detail of the hardware.)

If you already have a system image or a kernel that works on hardware and you want to boot with QEMU, check whether QEMU lists that machine in its -machine help output. If it is listed, then you can probably use that board model. If it is not listed, then unfortunately your image will almost certainly not boot on QEMU. (You might be able to extract the filesystem and use that with a different kernel which boots on a system that QEMU does emulate.)

Читайте также:  Linux remove users group

If you don’t care about reproducing the idiosyncrasies of a particular bit of hardware, such as small amount of RAM, no PCI or other hard disk, etc., and just want to run Linux, the best option is to use the virt board. This is a platform which doesn’t correspond to any real hardware and is designed for use in virtual machines. You’ll need to compile Linux with a suitable configuration for running on the virt board. virt supports PCI, virtio, recent CPUs and large amounts of RAM. It also supports 64-bit CPUs.

Board-specific documentation¶

Unfortunately many of the Arm boards QEMU supports are currently undocumented; you can get a complete list by running qemu-system-aarch64 —machine help .

  • Arm Integrator/CP ( integratorcp )
  • Arm MPS2 and MPS3 boards ( mps2-an385 , mps2-an386 , mps2-an500 , mps2-an505 , mps2-an511 , mps2-an521 , mps3-an524 , mps3-an547 )
  • Arm Musca boards ( musca-a , musca-b1 )
  • Arm Realview boards ( realview-eb , realview-eb-mpcore , realview-pb-a8 , realview-pbx-a9 )
  • Arm Server Base System Architecture Reference board ( sbsa-ref )
  • Arm Versatile boards ( versatileab , versatilepb )
  • Arm Versatile Express boards ( vexpress-a9 , vexpress-a15 )
  • Aspeed family boards ( *-bmc , ast2500-evb , ast2600-evb )
  • Aspeed minibmc family boards ( ast1030-evb )
  • Facebook Yosemite v3.5 Platform and CraterLake Server ( fby35 )
  • Boundary Devices SABRE Lite ( sabrelite )
  • Canon A1100 ( canon-a1100 )
  • Cubietech Cubieboard ( cubieboard )
  • Emcraft SmartFusion2 SOM kit ( emcraft-sf2 )
  • Calxeda Highbank and Midway ( highbank , midway )
  • Freecom MusicPal ( musicpal )
  • Gumstix Connex and Verdex ( connex , verdex )
  • Intel Mainstone II board ( mainstone )
  • Kyoto Microcomputer KZM-ARM11-01 ( kzm )
  • Nordic nRF boards ( microbit )
  • Nokia N800 and N810 tablets ( n800 , n810 )
  • Nuvoton iBMC boards ( *-bmc , npcm750-evb , quanta-gsj )
  • NXP i.MX25 PDK board ( imx25-pdk )
  • Orange Pi PC ( orangepi-pc )
  • Palm Tungsten|E PDA ( cheetah )
  • Raspberry Pi boards ( raspi0 , raspi1ap , raspi2b , raspi3ap , raspi3b )
  • Sharp XScale-based PDA models ( akita , borzoi , spitz , terrier , tosa )
  • Sharp Zaurus SL-5500 ( collie )
  • Siemens SX1 ( sx1 , sx1-v1 )
  • Stellaris boards ( lm3s6965evb , lm3s811evb )
  • STMicroelectronics STM32 boards ( netduino2 , netduinoplus2 , stm32vldiscovery )
  • ‘virt’ generic virtual platform ( virt )
  • Xilinx Versal Virt ( xlnx-versal-virt )

Emulated CPU architecture support¶

Источник

Оцените статью
Adblock
detector