{"id":20673385,"url":"https://github.com/meedamian/simple-qemu","last_synced_at":"2025-04-19T19:39:58.058Z","repository":{"id":141680143,"uuid":"202925055","full_name":"meeDamian/simple-qemu","owner":"meeDamian","description":"Emulating other CPU architectures in Docker made easy","archived":false,"fork":false,"pushed_at":"2022-03-09T16:04:02.000Z","size":368,"stargazers_count":14,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T12:22:29.490Z","etag":null,"topics":["aarch64","arm","arm64","cpu-emulator","cross-platform","docker","qemu","risc-v","riscv64"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/meedamian/simple-qemu","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meeDamian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://hodl.studio"]}},"created_at":"2019-08-17T19:45:54.000Z","updated_at":"2024-10-14T07:47:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"c02d35fc-d982-4b39-a971-e83356ed6b6c","html_url":"https://github.com/meeDamian/simple-qemu","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeDamian%2Fsimple-qemu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeDamian%2Fsimple-qemu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeDamian%2Fsimple-qemu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeDamian%2Fsimple-qemu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meeDamian","download_url":"https://codeload.github.com/meeDamian/simple-qemu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249782535,"owners_count":21324959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aarch64","arm","arm64","cpu-emulator","cross-platform","docker","qemu","risc-v","riscv64"],"created_at":"2024-11-16T20:41:13.483Z","updated_at":"2025-04-19T19:39:58.052Z","avatar_url":"https://github.com/meeDamian.png","language":"Shell","funding_links":["https://hodl.studio"],"categories":[],"sub_categories":[],"readme":"meedamian/simple-qemu\n=====================\n\n[![action_img]][action_url] [![lasttag_img]][lasttag_url] [![pulls_img]][hub] [![size_img]][hub]\n\n[action_img]: https://github.com/meeDamian/simple-qemu/workflows/Check%20master%20or%20PR/badge.svg\n[action_url]: https://github.com/meeDamian/simple-qemu/actions?query=workflow%3A%22Check+master+or+PR%22\n\n[lasttag_url]: https://github.com/meedamian/simple-qemu/releases/latest\n[lasttag_img]: https://badgen.net/github/tag/meedamian/simple-qemu\n\n[size_img]: https://badgen.net/docker/size/meedamian/simple-qemu/arm64?icon=docker\u0026label=size%20%28arm64%29\n[pulls_img]: https://badgen.net/docker/pulls/meedamian/simple-qemu?icon=docker\u0026label=pulls\n[hub]: https://hub.docker.com/r/meedamian/simple-qemu\n\nThis project aims to make cross-compilation, and running programs and images built for a different CPU architecture _simple_.\n\nCurrently, the only **host** architecture supported is `amd64` (AKA `x86_64`), while the architectures that can be emulated are:\n\n1. `i386` (AKA `x86`, `i686`)\n1. `arm` (AKA `arm32v7`)\n1. `aarch64` (AKA `arm64v8`, `arm64`)\n1. `riscv32`\n1. `riscv64`\n\n\n### Image categories\n\nThere are 3 distinct categories of images below:\n\n1. An image containing binaries for [all architectures].  Tagged with a version alone, ex: `:v5.1.0`, or `:latest`.\n1. An enable-emulation-only image.  It contains no `qemu` binaries, but can be used to enable emulation for use with your own `qemu` binary.  Tagged with the keyword `enable`, ex: `:v5.1.0-enable`, or `:enable`.\n1. A single-architecture image.  These images contain a single architecture plus a script to enable emulation.  Tagged with the name of the architecture, ex: `v5.1.0-arm`, or `aarch64`.\n\n[all architectures]: ./built-architectures.txt\n\n\n\nSimple tags\n-----------\n\nFor a complete list of available tags see: [`r/meedamian/simple-qemu/tags`](https://hub.docker.com/r/meedamian/simple-qemu/tags)\n\n### v5.1.0\n* `v5.1.0`        , `v5.1`        , `v5`        , `latest`\n* `v5.1.0-arm`    , `v5.1-arm`    , `v5-arm`    , `arm`     (or: `arm32v7`)\n* `v5.1.0-aarch64`, `v5.1-aarch64`, `v5-aarch64`, `aarch64` (or: `arm64v8` \u0026 `arm64`)\n* `v5.1.0-riscv32`, `v5.1-riscv32`, `v5-riscv32`, `riscv32`\n* `v5.1.0-riscv64`, `v5.1-riscv64`, `v5-riscv64`, `riscv64`\n* `v5.1.0-enable` , `v5.1-enable` , `v5-enable` , `enable`\n\n### v5.0.1\n* `v5.0.1`        , `v5.0`\n* `v5.0.1-arm`    , `v5.0-arm`     (or: `-arm32v7`)\n* `v5.0.1-aarch64`, `v5.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v5.0.1-riscv32`, `v5.0-riscv32`\n* `v5.0.1-riscv64`, `v5.0-riscv64`\n* `v5.0.1-enable` , `v5.0-enable`\n\n### v4.2.1\n* `v4.2.1`        , `v4.2`        , `v4`\n* `v4.2.1-arm`    , `v4.2-arm`    , `v4-arm`     (or: `-arm32v7`)\n* `v4.2.1-aarch64`, `v4.2-aarch64`, `v4-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.2.1-riscv32`, `v4.2-riscv32`, `v4-riscv32`\n* `v4.2.1-riscv64`, `v4.2-riscv64`, `v4-riscv64`\n* `v4.2.1-enable` , `v4.2-enable` , `v4-enable`\n\n### v4.1.1\n* `v4.1.1`        , `v4.1`\n* `v4.1.1-arm`    , `v4.1-arm`      (or: `-arm32v7`)\n* `v4.1.1-aarch64`, `v4.1-aarch64`  (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.1.1-riscv32`, `v4.1-riscv32`\n* `v4.1.1-riscv64`, `v4.1-riscv64`\n* `v4.1.1-enable` , `v4.1-enable`\n\n### v4.0.1\n* `v4.0.1`        , `v4.0`\n* `v4.0.1-arm`    , `v4.0-arm`     (or: `-arm32v7`)\n* `v4.0.1-aarch64`, `v4.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.0.1-riscv32`, `v4.0-riscv32`\n* `v4.0.1-riscv64`, `v4.0-riscv64`\n* `v4.0.1-enable` , `v4.0-enable`\n\n### v3.1.1\n* `v3.1.1`        , `v3.1`        , `v3`\n* `v3.1.1-arm`    , `v3.1-arm`    , `v3-arm`     (or: `-arm32v7`)\n* `v3.1.1-aarch64`, `v3.1-aarch64`, `v3-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v3.1.1-riscv32`, `v3.1-riscv32`, `v3-riscv32`\n* `v3.1.1-riscv64`, `v3.1-riscv64`, `v3-riscv64`\n* `v3.1.1-enable` , `v3.1-enable` , `v3-enable`\n\n\n\u003cdetails\u003e\n    \u003csummary\u003eOlder versions here\u003c/summary\u003e\n\n### v5.0.0\n* `v5.0.0`\n* `v5.0.0-arm`     (or: `-arm32v7`)\n* `v5.0.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v5.0.0-riscv32`\n* `v5.0.0-riscv64`\n* `v5.0.0-enable`\n\n### v4.2.0\n* `v4.2.0`\n* `v4.2.0-arm`     (or: `-arm32v7`)\n* `v4.2.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.2.0-riscv32`\n* `v4.2.0-riscv64`\n* `v4.2.0-enable`\n\n### v4.1.0\n* `v4.1.0`\n* `v4.1.0-arm`     (or: `-arm32v7`)\n* `v4.1.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.1.0-riscv32`\n* `v4.1.0-riscv64`\n* `v4.1.0-enable`\n\n### v4.0.0\n* `v4.0.0`\n* `v4.0.0-arm`     (or: `-arm32v7`)\n* `v4.0.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v4.0.0-riscv32`\n* `v4.0.0-riscv64`\n* `v4.0.0-enable`\n\n### v3.1.0\n* `v3.1.0`\n* `v3.1.0-arm`     (or: `-arm32v7`)\n* `v3.1.0-aarch64` (or: `-arm64v8` \u0026 `-arm64`)\n* `v3.1.0-riscv32`\n* `v3.1.0-riscv64`\n* `v3.1.0-enable`\n\n\u003c/details\u003e\n\n\nUsage\n=====\n\nFirst, enabling emulation needs to be coordinated with host's kernel:\n\n```shell script\ndocker run --rm --privileged meedamian/simple-qemu -p yes\n```\n\nOnce that's done, two things become possible:\n\n\n#### Running\n\nTo run image built for a different CPU architecture:\n\n```shell script\ndocker run --rm  arm32v7/alpine  uname -m\n```\n\nAlternatively ([`buildx`][buildx] style):\n\n```shell script\ndocker run --rm  --platform=linux/arm/v7  alpine  uname -m\n```\n\n\n#### Extending\n\nTo build _`FROM`_ different CPU architecture image:\n\n```dockerfile\nFROM arm32v7/alpine\n\n# Everything written here will be run on an emulated architecture\n``` \n\nAlternatively ([`buildx`][buildx] style):\n\n```dockerfile\nFROM --platform=linux/arm/v7 alpine\n\n# Everything written here will be run on an emulated architecture\n``` \n\nIt's that _simple_ :).\n\n[buildx]: https://github.com/docker/buildx#buildx\n\n\u003e **Note:** To learn what architectures are available for the given base image you can use `docker manifest inspect` command, for example:\n\u003e\n\u003e ```shell script\n\u003e $ docker manifest inspect alpine | jq -r '.manifests[].platform | .os + \"/\" + .architecture + \"/\" + .variant'\n\u003e linux/amd64\n\u003e linux/arm/v6\n\u003e linux/arm/v7\n\u003e linux/arm64/v8\n\u003e linux/386\n\u003e linux/ppc64le\n\u003e linux/s390x\n\u003e```\n\n\n\nPerformance\n------------\n\nDepending on `qemu` version used, the speed of emulation can vary from _hardly bearable_ all the way to nightmarishly slow.\n\nFor daily generated speed comparisons see: https://github.com/lncm/docker-bitcoind/issues/9\n\n\nBugs and feedback\n------------------\n\nIf you discover a bug please report it [here](https://github.com/meeDamian/simple-qemu/issues/new).  Express gratitude [here](https://hodl.studio).\n\nMail me at bugs@meedamian.com, or on twitter [@meeDamian](http://twitter.com/meedamian).\n\n\nLicense\n--------\n\nMIT @ [Damian Mee](https://meedamian.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeedamian%2Fsimple-qemu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeedamian%2Fsimple-qemu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeedamian%2Fsimple-qemu/lists"}