Pembuatan Kontainer ARM yang Efisien pada Sistem x86
Tantangan
Untuk pengembangan yang lebih cepat kita ingin membuat kontainer berbasis ARM untuk AXCF2152 atau AXCF1152 pada perangkat keras x86. Untuk tujuan ini, mesin virtual berbasis Debian atau Ubuntu digunakan, yang berjalan pada PC normal kita.
Kami perlu emulator
Untuk menjalankan kode biner ARM pada sistem x86 kita membutuhkan emulator yang memungkinkan kita untuk melakukannya.
Qemu adalah salah satu hypervisor yang sedikit dapat mengemulasi kode biner ARM dan mengompilasinya untuk x86. Yang perlu kita lakukan adalah menginstal Qemu pada sistem host kita dan mengaktifkan emulator.Instal Qemu untuk Ubuntu atau Debian:
apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
update-binfmts --enable qemu-arm
update-binfmts --display qemu-arm
Contoh penggunaan
Untuk menggunakan Qemu sekarang kita membutuhkan ekstensi di dalam kontainer, yaitu biner /usr/bin/qemu-arm-static. Ada beberapa cara untuk menggunakannya di dalam kontainer.
Jika ekstensi hanya diperlukan sementara dan jika tersedia secara lokal, itu dapat dengan mudah diteruskan ke kontainer. Untuk melakukan ini, biner yang diperlukan dipasang ke dalam kontainer.
docker run -it --restart always \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
arm32v7/debian /bin/sh
Ini memulai kontainer dan melompat ke shell di dalam kontainer. Sekarang semua perubahan yang diperlukan dapat dibuat. Perubahan dapat ditransfer ke image nantinya dengan commit.
docker commit ...
Untuk pembuatan kontainer, biner harus ada di dalam kontainer, ada dua cara untuk melakukannya.
1. Biner sudah tersedia, ada image siap pakai di Dockerhub untuk tujuan ini. https://hub.docker.com/u/multiarch/
2. Biner ditambahkan ke image kontainer.Contoh dockerfile:
From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....
Baris COPY harus muncul langsung sebagai perintah kedua setelah FROM. Seluruhnya bekerja dengan semua alat pembangun.
Satu kontainer untuk semua
Jika Anda menginstal ekstensi Qemu pada AXCF3152, Anda dapat menggunakan kontainer yang sama untuk kedua sistem (x86 dan ARM). Terkait performa ini harus diuji secara ekstensif.