- Stiahnite
2020-08-20-raspios-buster-armhf-lite.zipz oficiálnej stránky - Nainštalujte požadované nástroje
sudo pacman -S unzip util-linux docker
- Spustite Docker službu
sudo systemctl start docker.service
Pridajte sa do skupiny docker, inak budú potrebné oprávnenia
sudo usermod -aG docker $(whoami)
su - $(whoami)
Nastavenie QEMU #
- Umožnite svojmu počítaču trvalo emulovať ARM binárne súbory:
yay -S binfmt-qemu-static qemu-user-static
Overte nastavenie emulácie
grep enabled /proc/sys/fs/binfmt_misc/qemu-arm
# enabled
Alternatívne, dočasné riešenie pre väčšinu distribúcií:
docker run --rm --privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3
Spúšťajte privilegované kontajnery s opatrnosťou, aspoň si pozrite vrstvy kontajnera pred spustením
yay -s dive
dive docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3
Nástroj zobrazuje niektoré podrobnosti o súboroch, s ktorými pracuje, v úzkom rozložení
─────── ┃ ● Current Layer Contents ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Layer Permission UID:GID Size Filetree
0 drwxr-xr-x 0:0 1.1 kB ├── etc
1 drwxr-xr-x 0:0 1.1 kB │ └── binfmt.d
2 -rw-rw-r-- 0:0 1.1 kB │ └── 00_linuxkit.conf
drwxr-xr-x 0:0 17 MB └── usr
drwxr-xr-x 0:0 17 MB └── bin
-rwxr-xr-x 0:0 2.2 MB ├── binfmt
-rwxr-xr-x 0:0 4.1 MB ├── qemu-aarch64
-rwxr-xr-x 0:0 3.6 MB ├── qemu-arm
-rwxr-xr-x 0:0 3.9 MB ├── qemu-ppc64le
-rwxr-xr-x 0:0 3.2 MB └── qemu-s390x
Pripojenie #
- Rozbaľte stiahnutý obraz z archívu
unzip <raspios-image>.zip
- Priraďte obraz k zariadeniu slučky
sudo losetup --read-only --show -fP <raspios-image>.img
# /dev/loop0
Skontrolujte oddiely obrazu ak je to potrebné
lsblk -o name,label /dev/loop0
Hľadajte označenie rootfs
NAME LABEL
loop0
├─loop0p1 boot
└─loop0p2 rootfs
- Pripojte oddiel koreňového súborového systému, ak to vaša distribúcia neurobila automaticky
sudo mkdir /tmp/raspios
sudo mount -o ro /dev/loop0p2 /tmp/raspios
Import #
- Vytvorte Docker obraz z koreňového súborového systému Raspios
sudo tar c -C /tmp/raspios . | docker image import - raspios-lite-armhf:buster
- Vytvorte a spustite Docker kontajner z obrazu
docker run -it --name raspios_bare raspios-lite-armhf:buster /bin/bash
Vstúpte do kontajnera znova v prípade náhodného ukončenia
docker start -ai raspios_bare
- Upratanie
sudo umount /tmp/raspios
sudo losetup -d /dev/loop0
Manipulácia s obrazom kontajnera #
- Keď ste vnútri, nainštalujte Node 14 a pkg od vercel globálne
wget -qO- https://deb.nodesource.com/setup_14.x | bash -
apt install nodejs
npm i -g pkg
- Stiahnite predkompilovaný binárny súbor Node pre armhf z repozitára
wget https://github.com/yao-pkg/pkg-binaries/releases/download/v1.0.0/fetched-v14.4.0-linux-armv6 -P /root/.pkg-cache/v2.6/
- Ukončite kontajner stlačením
Ctrl-Dalebo zadaním príkazuexit - Uložte zmeny do obrazu pre opätovné použitie
docker commit raspios_bare raspios_node_pkg
Teraz môžete bezpečne odstrániť základný kontajner
docker rm raspios_bare
Balenie #
- Vytvorte vzorový skript na balenie
echo 'console.log("Hello World")' > index.js
- Vytvorte dočasný kontajner, pripojte aktuálny priečinok ako
/buildv ňom a zabaľte ho pre linux
docker run --rm -v $PWD:/build raspios_node_pkg pkg -t linux --out-dir /build /build/index.js
- Spustiteľný súbor Node pre armhf s názvom
indexje vytvorený v aktuálnom adresári
file index
# index: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (GNU/Linux), ...
Vytvorte spustiteľný skript pre zjednodušenie procesu a spúšťajte ho
napríklad ako armpkg index.js
#!/bin/bash
docker run --rm -v $PWD:/build raspios_node_pkg pkg -t linux --out-dir /build "/build/$1"
Hotovo!
Odkazy #
- https://github.com/vercel/pkg-fetch/releases
- https://github.com/lukechilds/dockerpi
- http://kmdouglass.github.io/posts/how-i-built-a-cross-compilation-workflow-for-the-raspberry-pi/
- http://modernhackers.com/virtualize-raspberry-pi-3-s-to-run-docker-swarm-cluster-on-it/
- https://docs.docker.com/storage/volumes/#start-a-container-with-a-volume
- https://hub.docker.com/r/docker/binfmt/tags