Message ID | 20250414101843.2348330-5-andrew.cooper3@citrix.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Rootfs/argo cleanup and microcode support | expand |
On Mon, Apr 14, 2025 at 11:18:40AM +0100, Andrew Cooper wrote: > bash, busybox, musl and zlib are all in the base container. > > python3 and ncurses are in principle used by bits of Xen, but not in anything > we test in CI. argp-standlone, curl, dbus, libfdt, libgcc and sudo aren't > used at all (for x86 at least). > > libbz2 and libuuid were pulled in transitively before, and need to be included > explicitly now. > > Use apk --no-cache to avoid keeping a ~2M package index on disk. > > Remove the modules scan on boot. We don't have or build any. This removes a > chunk of warnings on boot. Strictly speaking there is xen-argo.ko, but that's handled manually anyway, so probably not worth mentioning. > This shrinks the rootfs from ~30M down to ~8M. > > No practical change. This also adds some preparation (the case on `uname -m`) for ARM64 rootfs, would be nice to mention it too. Especially since libfdt removed here will be re-added for ARM. > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> > --- > CC: Anthony PERARD <anthony.perard@vates.tech> > CC: Stefano Stabellini <sstabellini@kernel.org> > CC: Michal Orzel <michal.orzel@amd.com> > CC: Doug Goldstein <cardoe@cardoe.com> > CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> > --- > scripts/alpine-rootfs.sh | 60 +++++++++++++++++++++++----------------- > 1 file changed, 34 insertions(+), 26 deletions(-) > > diff --git a/scripts/alpine-rootfs.sh b/scripts/alpine-rootfs.sh > index 75e2f8648ce5..72c29e0a0a13 100755 > --- a/scripts/alpine-rootfs.sh > +++ b/scripts/alpine-rootfs.sh > @@ -4,33 +4,42 @@ set -eu > > WORKDIR="${PWD}" > COPYDIR="${WORKDIR}/binaries" > +UNAME=$(uname -m) > > -apk update > +apk --no-cache update This is no-op, no? IIUC the only thing `apk update` does is updating the cache, which you disabled... > -# xen runtime deps > -apk add musl > -apk add libgcc > -apk add openrc > -apk add busybox > -apk add sudo > -apk add dbus > -apk add bash > -apk add python3 > -apk add zlib > -apk add lzo > -apk add ncurses > -apk add yajl > -apk add libaio > -apk add xz > -apk add util-linux > -apk add argp-standalone > -apk add libfdt > -apk add glib > -apk add pixman > -apk add curl > -apk add udev > -apk add pciutils > -apk add libelf > +PKGS=( > + # System > + openrc > + udev > + util-linux > + > + # Xen toolstack runtime deps > + libbz2 > + libuuid > + lzo > + xz > + yajl > + > + # QEMU > + glib > + libaio > + pixman > + ) > + > +case $UNAME in > + x86_64) > + PKGS+=( > + # System > + pciutils > + > + # QEMU > + libelf > + ) > + ;; > +esac > + > +apk add --no-cache "${PKGS[@]}" > > # Xen > cd / > @@ -45,7 +54,6 @@ rc-update add dmesg sysinit > rc-update add hostname boot > rc-update add hwclock boot > rc-update add hwdrivers sysinit > -rc-update add modules boot > rc-update add killprocs shutdown > rc-update add mount-ro shutdown > rc-update add savecache shutdown > -- > 2.39.5 >
On 14/04/2025 12:25 pm, Marek Marczykowski-Górecki wrote: > On Mon, Apr 14, 2025 at 11:18:40AM +0100, Andrew Cooper wrote: >> bash, busybox, musl and zlib are all in the base container. >> >> python3 and ncurses are in principle used by bits of Xen, but not in anything >> we test in CI. argp-standlone, curl, dbus, libfdt, libgcc and sudo aren't >> used at all (for x86 at least). >> >> libbz2 and libuuid were pulled in transitively before, and need to be included >> explicitly now. >> >> Use apk --no-cache to avoid keeping a ~2M package index on disk. >> >> Remove the modules scan on boot. We don't have or build any. This removes a >> chunk of warnings on boot. > Strictly speaking there is xen-argo.ko, but that's handled manually > anyway, so probably not worth mentioning. Hmm, it's an awkward way around in the series, but yes. The lack of doing any of the normal module work in the kernel build is what causes xen-argo.ko to be more special than I'd like. > >> This shrinks the rootfs from ~30M down to ~8M. >> >> No practical change. > This also adds some preparation (the case on `uname -m`) for ARM64 > rootfs, would be nice to mention it too. Especially since libfdt removed > here will be re-added for ARM. "Factor out some x86-isms in preparation for ARM64 support." >> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >> --- >> CC: Anthony PERARD <anthony.perard@vates.tech> >> CC: Stefano Stabellini <sstabellini@kernel.org> >> CC: Michal Orzel <michal.orzel@amd.com> >> CC: Doug Goldstein <cardoe@cardoe.com> >> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> >> --- >> scripts/alpine-rootfs.sh | 60 +++++++++++++++++++++++----------------- >> 1 file changed, 34 insertions(+), 26 deletions(-) >> >> diff --git a/scripts/alpine-rootfs.sh b/scripts/alpine-rootfs.sh >> index 75e2f8648ce5..72c29e0a0a13 100755 >> --- a/scripts/alpine-rootfs.sh >> +++ b/scripts/alpine-rootfs.sh >> @@ -4,33 +4,42 @@ set -eu >> >> WORKDIR="${PWD}" >> COPYDIR="${WORKDIR}/binaries" >> +UNAME=$(uname -m) >> >> -apk update >> +apk --no-cache update > This is no-op, no? IIUC the only thing `apk update` does is updating the > cache, which you disabled... Lovely. This ought to be upgrade, so we pull in updates to the packages in the base image. ~Andrew
diff --git a/scripts/alpine-rootfs.sh b/scripts/alpine-rootfs.sh index 75e2f8648ce5..72c29e0a0a13 100755 --- a/scripts/alpine-rootfs.sh +++ b/scripts/alpine-rootfs.sh @@ -4,33 +4,42 @@ set -eu WORKDIR="${PWD}" COPYDIR="${WORKDIR}/binaries" +UNAME=$(uname -m) -apk update +apk --no-cache update -# xen runtime deps -apk add musl -apk add libgcc -apk add openrc -apk add busybox -apk add sudo -apk add dbus -apk add bash -apk add python3 -apk add zlib -apk add lzo -apk add ncurses -apk add yajl -apk add libaio -apk add xz -apk add util-linux -apk add argp-standalone -apk add libfdt -apk add glib -apk add pixman -apk add curl -apk add udev -apk add pciutils -apk add libelf +PKGS=( + # System + openrc + udev + util-linux + + # Xen toolstack runtime deps + libbz2 + libuuid + lzo + xz + yajl + + # QEMU + glib + libaio + pixman + ) + +case $UNAME in + x86_64) + PKGS+=( + # System + pciutils + + # QEMU + libelf + ) + ;; +esac + +apk add --no-cache "${PKGS[@]}" # Xen cd / @@ -45,7 +54,6 @@ rc-update add dmesg sysinit rc-update add hostname boot rc-update add hwclock boot rc-update add hwdrivers sysinit -rc-update add modules boot rc-update add killprocs shutdown rc-update add mount-ro shutdown rc-update add savecache shutdown
bash, busybox, musl and zlib are all in the base container. python3 and ncurses are in principle used by bits of Xen, but not in anything we test in CI. argp-standlone, curl, dbus, libfdt, libgcc and sudo aren't used at all (for x86 at least). libbz2 and libuuid were pulled in transitively before, and need to be included explicitly now. Use apk --no-cache to avoid keeping a ~2M package index on disk. Remove the modules scan on boot. We don't have or build any. This removes a chunk of warnings on boot. This shrinks the rootfs from ~30M down to ~8M. No practical change. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Anthony PERARD <anthony.perard@vates.tech> CC: Stefano Stabellini <sstabellini@kernel.org> CC: Michal Orzel <michal.orzel@amd.com> CC: Doug Goldstein <cardoe@cardoe.com> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> --- scripts/alpine-rootfs.sh | 60 +++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 26 deletions(-)