透過Qemu在X86機器上執行Pi

Pi是Arm的CPU架構,因此在執行上無法透過X86的機器來執行Pi所編譯出來的image與相關程式... 而參考Resin跟Philipzh大大的文章後,大致上可以了解用qemu的

Install Qemu

在你的Docker Host上安裝qemu arm的套件

apt-get -y install qemu-system-arm

Run Pi image

安裝後,接下來找出qemu-system-arm的安裝位置

# which qemu-system-arm
/usr/bin/qemu-system-arm

然後可以透過下面指令讓pi的相關image跑起來

docker run -it --rm -v /usr/bin/qemu-system-arm:/usr/bin/qemu-arm-static philipz/rpi-raspbian bash

在X86上build Pi image

在build的時候,因為docker build限制只能載入目前目錄底下的資料,因此我們直接把qemu-system-arm複製到當前目錄裡面...

cp /usr/bin/qemu-system-arm .

然後透過類似下面的Dockerfile

FROM hypriot/rpi-node
COPY qemu-arm /usr/bin/qemu-arm
RUN apt-get update -y
RUN apt-get install libapparmor-dev -y

ADD ./app /app
WORKDIR /app

CMD ["npm", "start"]

其中只有一行比較特別... 就是"COPY qemu-arm /usr/bin/qemu-arm",只要有這行,一般的Linux image都可以直接透過X86來做docker build...

docker build -t test/my-pi-image .

Reference

results matching ""

    No results matching ""