File tree 6 files changed +36
-6
lines changed
6 files changed +36
-6
lines changed Original file line number Diff line number Diff line change 4
4
/rd.yaml
5
5
/std.yaml
6
6
/nerdctl- *
7
+ /qemu- *
Original file line number Diff line number Diff line change 1
1
ARG ALPINE_VERSION=latest
2
+ ARG BINFMT_IMAGE=tonistiigi/binfmt:latest
3
+
4
+ FROM ${BINFMT_IMAGE} as binfmt
5
+
2
6
FROM alpine:${ALPINE_VERSION}
3
7
RUN apk add alpine-sdk build-base apk-tools alpine-conf busybox \
4
8
fakeroot xorriso squashfs-tools sudo \
@@ -8,6 +12,8 @@ RUN apk add alpine-sdk build-base apk-tools alpine-conf busybox \
8
12
ARG TARGETARCH
9
13
RUN if [ "${TARGETARCH}" = "amd64" ]; then apk add syslinux; fi
10
14
15
+ COPY --from=binfmt /usr/bin /binfmt
16
+
11
17
RUN addgroup root abuild
12
18
RUN abuild-keygen -i -a -n
13
19
RUN apk update
Original file line number Diff line number Diff line change @@ -18,24 +18,30 @@ ARCH_ALIAS_aarch64 = arm64
18
18
ARCH_ALIAS = $(shell echo "$(ARCH_ALIAS_$(ARCH ) ) ")
19
19
20
20
NERDCTL_VERSION =0.14.0
21
+ QEMU_VERSION =v6.1.0
22
+ BINFMT_IMAGE =tonistiigi/binfmt:qemu-$(QEMU_VERSION )
21
23
22
24
.PHONY : mkimage
23
25
mkimage :
24
26
cd src/aports && git fetch && git checkout $(GIT_TAG )
25
27
docker build \
26
28
--tag mkimage:$(ALPINE_VERSION ) -$(ARCH ) \
27
29
--build-arg ALPINE_VERSION=$(ALPINE_VERSION ) \
30
+ --build-arg BINFMT_IMAGE=$(BINFMT_IMAGE ) \
28
31
--platform linux/$(ARCH_ALIAS ) \
29
32
.
30
33
31
34
.PHONY : iso
32
- iso : nerdctl-$(NERDCTL_VERSION ) -$(ARCH )
33
- ALPINE_VERSION=$(ALPINE_VERSION ) NERDCTL_VERSION=$(NERDCTL_VERSION ) REPO_VERSION=$(REPO_VERSION ) EDITION=$(EDITION ) BUILD_ID=$(BUILD_ID ) ARCH=$(ARCH ) ARCH_ALIAS=$(ARCH_ALIAS ) ./build.sh
35
+ iso : nerdctl-$(NERDCTL_VERSION ) -$(ARCH ) qemu- $( QEMU_VERSION ) -copying
36
+ ALPINE_VERSION=$(ALPINE_VERSION ) NERDCTL_VERSION=$(NERDCTL_VERSION ) QEMU_VERSION= $( QEMU_VERSION ) REPO_VERSION=$(REPO_VERSION ) EDITION=$(EDITION ) BUILD_ID=$(BUILD_ID ) ARCH=$(ARCH ) ARCH_ALIAS=$(ARCH_ALIAS ) ./build.sh
34
37
35
38
36
39
nerdctl-$(NERDCTL_VERSION ) -$(ARCH ) :
37
40
curl -o $@ -Ls https://github.com/containerd/nerdctl/releases/download/v$(NERDCTL_VERSION ) /nerdctl-full-$(NERDCTL_VERSION ) -linux-$(ARCH_ALIAS ) .tar.gz
38
41
42
+ qemu-$(QEMU_VERSION ) -copying :
43
+ curl -o $@ -Ls https://raw.githubusercontent.com/qemu/qemu/$(QEMU_VERSION ) /COPYING
44
+
39
45
.PHONY : lima
40
46
lima :
41
47
ALPINE_VERSION=$(ALPINE_VERSION ) EDITION=$(EDITION ) ARCH=$(ARCH ) ./lima.sh
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ docker run --rm \
17
17
-v " ${PWD} /lima-init-local.openrc:/home/build/lima-init-local.openrc:ro" \
18
18
-v " ${PWD} /lima-network.awk:/home/build/lima-network.awk:ro" \
19
19
-v " ${PWD} /nerdctl-${NERDCTL_VERSION} -${ARCH} :/home/build/nerdctl.tar.gz:ro" \
20
+ -v " ${PWD} /qemu-${QEMU_VERSION} -copying:/home/build/qemu-copying:ro" \
20
21
-v " ${PWD} /sshd.pam:/home/build/sshd.pam:ro" \
21
22
$( env | grep ^LIMA_ | xargs -n 1 printf -- ' -e %s ' ) \
22
23
-e " LIMA_REPO_VERSION=${REPO_VERSION} " \
Original file line number Diff line number Diff line change @@ -159,7 +159,20 @@ if [ "${LIMA_INSTALL_DOCKER}" == "true" ]; then
159
159
fi
160
160
161
161
if [ " ${LIMA_INSTALL_BINFMT_MISC} " == " true" ]; then
162
- echo " qemu-aarch64" >> " $tmp " /etc/apk/world
162
+ # install qemu-aarch64 on x86_64 and vice versa
163
+ OTHERARCH=aarch64
164
+ if [ " $( uname -m) " == " ${OTHERARCH} " ]; then
165
+ OTHERARCH=x86_64
166
+ fi
167
+
168
+ # Installing into /usr/bin instead of /usr/local/bin because that's
169
+ # where /etc/init.d/qemu-binfmt will be looking for it
170
+ mkdir -p " ${tmp} /usr/bin/"
171
+ cp /binfmt/qemu-${OTHERARCH} " ${tmp} /usr/bin/"
172
+
173
+ # Copy QEMU license into /usr/share/doc (using Debian naming convention)
174
+ mkdir -p " ${tmp} /usr/share/doc/qemu/"
175
+ cp /home/build/qemu-copying " ${tmp} /usr/share/doc/qemu/copyright"
163
176
164
177
mkdir -p " ${tmp} /etc/init.d/"
165
178
APKBUILD=/home/build/aports/community/qemu-openrc/APKBUILD
@@ -168,6 +181,12 @@ if [ "${LIMA_INSTALL_BINFMT_MISC}" == "true" ]; then
168
181
wget " ${URL} /v${PKGVER} /qemu-binfmt.initd" -O " ${tmp} /etc/init.d/qemu-binfmt"
169
182
chmod +x " ${tmp} /etc/init.d/qemu-binfmt"
170
183
184
+ # qemu-binfmt doesn't include an entry for x86_64
185
+ magic=" 7f454c4602010100000000000000000002003e00"
186
+ mask=" fffffffffffefe00fffffffffffffffffeffffff"
187
+ arch=" x86_64"
188
+ sed -i " /^FMTS=/a \\ \t${magic} ${mask} ${arch} " " ${tmp} /etc/init.d/qemu-binfmt"
189
+
171
190
rc_add qemu-binfmt default
172
191
fi
173
192
Original file line number Diff line number Diff line change @@ -27,9 +27,6 @@ profile_lima() {
27
27
if [ " ${LIMA_INSTALL_LIMA_INIT} " == " true" ]; then
28
28
apks=" $apks e2fsprogs lsblk sfdisk shadow sudo udev"
29
29
fi
30
- if [ " ${LIMA_INSTALL_BINFMT_MISC} " == " true" ]; then
31
- apks=" $apks qemu-aarch64"
32
- fi
33
30
if [ " ${LIMA_INSTALL_K3S} " == " true" ]; then
34
31
apks=" $apks k3s"
35
32
fi
You can’t perform that action at this time.
0 commit comments