1# syntax=docker/dockerfile:1
2FROM --platform=linux/amd64 alpine:3.18
3LABEL maintainer.name="The Xen Project" \
4      maintainer.email="xen-devel@lists.xenproject.org"
5
6ENV USER root
7
8RUN mkdir /build
9WORKDIR /build
10
11RUN \
12  # apk
13  apk update && \
14  \
15  # xen runtime deps
16  apk add musl && \
17  apk add libgcc && \
18  apk add openrc && \
19  apk add busybox && \
20  apk add sudo && \
21  apk add dbus && \
22  apk add bash && \
23  apk add python3 && \
24  apk add zlib && \
25  apk add ncurses && \
26  apk add yajl && \
27  apk add libaio && \
28  apk add xz && \
29  apk add util-linux && \
30  apk add argp-standalone && \
31  apk add libfdt && \
32  apk add glib && \
33  apk add pixman && \
34  apk add curl && \
35  apk add udev && \
36  apk add pciutils && \
37  apk add libelf && \
38  \
39  # Xen
40  cd / && \
41  # Minimal ramdisk environment in case of cpio output
42  rc-update add udev && \
43  rc-update add udev-trigger && \
44  rc-update add udev-settle && \
45  rc-update add loopback sysinit && \
46  rc-update add bootmisc boot && \
47  rc-update add devfs sysinit && \
48  rc-update add dmesg sysinit && \
49  rc-update add hostname boot && \
50  rc-update add hwclock boot && \
51  rc-update add hwdrivers sysinit && \
52  rc-update add modules boot && \
53  rc-update add killprocs shutdown && \
54  rc-update add mount-ro shutdown && \
55  rc-update add savecache shutdown && \
56  rc-update add local default && \
57  cp -a /sbin/init /init && \
58  echo "ttyS0" >> /etc/securetty && \
59  echo "hvc0" >> /etc/securetty && \
60  echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab && \
61  echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab && \
62  echo > /etc/modules && \
63  passwd -d "root" root && \
64  \
65  # Create rootfs
66  cd / && \
67  tar cvzf /initrd.tar.gz bin dev etc home init lib mnt opt root sbin usr var
68