@@ -6,19 +6,28 @@ set -o pipefail
66machine=$( uname -m)
77
88case ${machine} in
9- aarch64 )
10- TOOLBOX_DOCKER_IMAGE=arm64v8/fedora
11- TOOLBOX_DOCKER_TAG=latest
12- ;;
13- x86_64 )
14- TOOLBOX_DOCKER_IMAGE=fedora
15- TOOLBOX_DOCKER_TAG=latest
16- ;;
17- * )
18- echo " Warning: Unknown machine type ${machine} " >&2
19- ;;
9+ arm)
10+ PLATFORM=linux/arm/v7
11+ ;;
12+ aarch64)
13+ PLATFORM=linux/arm64/v8
14+ ;;
15+ riscv64)
16+ PLATFORM=linux/riscv64
17+ ;;
18+ x86)
19+ PLATFORM=linux/386
20+ ;;
21+ x86_64)
22+ PLATFORM=linux/amd64
23+ ;;
24+ * )
25+ echo " Warning: Unknown machine type ${machine} " >&2
26+ ;;
2027esac
2128
29+ TOOLBOX_DOCKER_IMAGE=docker.io/library/debian
30+ TOOLBOX_DOCKER_TAG=unstable-slim
2231TOOLBOX_USER=root
2332TOOLBOX_DIRECTORY=" /var/lib/toolbox"
2433TOOLBOX_BIND=" --bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run --bind=/sys/fs/bpf:/sys/fs/bpf"
4857machinename=$( echo " ${USER} -${TOOLBOX_NAME} " | sed -r ' s/[^a-zA-Z0-9_.-]/_/g' )
4958machinepath=" ${TOOLBOX_DIRECTORY} /${machinename} "
5059osrelease=" ${machinepath} /etc/os-release"
60+
5161if [ ! -f " ${osrelease} " ] || systemctl is-failed -q " ${machinename} " ; then
52- sudo mkdir -p " ${machinepath} "
53- sudo chown " ${USER} :" " ${machinepath} "
62+ sudo mkdir -p " ${machinepath} "
63+ sudo chown " ${USER} :" " ${machinepath} "
64+
65+ if docker stats --no-stream & > /dev/null; then
66+ # Download and extract the image.
67+ sudo --preserve-env docker pull " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} "
68+ dcid=$( sudo --preserve-env docker create " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " )
69+ sudo --preserve-env docker export -o " ${machinepath} /${dcid} .tar" ${dcid}
70+ sudo --preserve-env docker rm ${dcid}
71+ sudo --preserve-env docker rmi " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " || true
72+ sudo tar xvf " ${machinepath} /${dcid} .tar" -C " ${machinepath} "
73+ sudo rm -f " ${machinepath} /${dcid} .tar"
5474
55- # Download and extract the image.
56- sudo --preserve-env docker pull " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} "
57- dcid=$( sudo --preserve-env docker create " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " )
58- sudo --preserve-env docker export -o " ${machinepath} /${dcid} .tar" ${dcid}
59- sudo --preserve-env docker rm ${dcid}
60- sudo --preserve-env docker rmi " ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} " || true
61- sudo tar xvf " ${machinepath} /${dcid} .tar" -C " ${machinepath} "
62- sudo rm -f " ${machinepath} /${dcid} .tar"
75+ elif ctr version & > /dev/null; then
76+ sudo --preserve-env ctr images pull --platform ${PLATFORM} ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG}
77+ sudo ctr images mount --rw --platform ${PLATFORM} ${TOOLBOX_DOCKER_IMAGE} :${TOOLBOX_DOCKER_TAG} ${machinepath}
78+ fi
6379
64- sudo touch " ${osrelease} "
80+ sudo touch " ${osrelease} "
6581fi
6682
6783# Special case for when SSH tries to pass a shell command with -c
0 commit comments