Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions ic-os/guestos/context/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# First build stage:
# - Download 3rd party tools
#
FROM ubuntu:24.04 as download
FROM ubuntu:26.04 as download

USER root:root

Expand All @@ -37,11 +37,11 @@ RUN cd /tmp/ && \

#
# Second build stage:
# - Download and cache minimal Ubuntu Server 24.04 LTS Docker image
# - Download and cache minimal Ubuntu Server 26.04 LTS Docker image
# - Install and cache upstream packages from built-in Ubuntu repositories
# - Copy downloaded archives from first build stage into the target image
#
FROM ubuntu:24.04
FROM ubuntu:26.04

USER root:root

Expand All @@ -56,16 +56,14 @@ ARG PACKAGE_FILES=packages.common
# The kernel is installed here to keep the extra modules in sync.
# Unfortunately, there is no metapackage to track the extra modules that does
# not also include firmware.
ARG _KERNEL_PACKAGE=linux-image-virtual-hwe-24.04
ARG _KERNEL_PACKAGE=linux-image-virtual-hwe-26.04
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY packages.* /tmp/
RUN apt-get -y update && \
apt-get -y upgrade && \
apt-get -y --no-install-recommends install $(for P in ${PACKAGE_FILES}; do cat /tmp/$P | sed -e "s/#.*//" ; done) \
# TODO(NODE-1852): Temporarily pin the kernel here.
# ${_KERNEL_PACKAGE} \
# linux-modules-extra-$(apt-cache depends ${_KERNEL_PACKAGE} | sed -n -e 's/ Depends: linux-image-\(.*\)-generic/\1/p')-generic && \
linux-image-6.14.0-37-generic linux-modules-extra-6.14.0-37-generic && \
${_KERNEL_PACKAGE} \
linux-modules-$(apt-cache depends ${_KERNEL_PACKAGE} | sed -n -e 's/ Depends: linux-image-\(.*\)-generic/\1/p')-generic && \
rm /tmp/packages.*

# Install node_exporter
Expand Down
2 changes: 1 addition & 1 deletion ic-os/guestos/context/packages.dev
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ strace
setools

# flamegraphs (scalability suite)
linux-tools-virtual-hwe-24.04
linux-tools-virtual-hwe-26.04

# performance testing additions
fio
Expand Down
26 changes: 3 additions & 23 deletions ic-os/hostos/context/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# First build stage:
# - Download 3rd party tools
#
FROM ubuntu:24.04 AS download
FROM ubuntu:26.04 AS download

USER root:root

Expand All @@ -37,36 +37,18 @@ RUN cd /tmp/ && \
echo "c46e5b6f53948477ff3a19d97c58307394a29fe64a01905646f026ddc32cb65b node_exporter-1.10.2.linux-amd64.tar.gz" > node_exporter.sha256 && \
sha256sum -c node_exporter.sha256

# Download pre-built QEMU 10.2 (Ubuntu 24.04 comes with only version 8)
# Note: file name is confusing but it's actually QEMU 10.2
RUN cd /tmp/ && \
curl -L -O https://github.com/dfinity/sev-snp-deps/releases/download/qemu-02944cc/qemu_10-1_amd64.deb && \
echo "d9a6c76e2a58db9a504e24dc652b05c24b85a0c343842a94327d0707308ecef6 qemu_10-1_amd64.deb" > qemu.sha256 && \
sha256sum -c qemu.sha256

#
# Second build stage:
# - Download and cache minimal Ubuntu Server 24.04 LTS Docker image.
# - Download and cache minimal Ubuntu Server 26.04 LTS Docker image.
# - Install and cache upstream packages from built-in Ubuntu repositories.
# - Install compiled packages from the second stage.
#
FROM ubuntu:24.04
FROM ubuntu:26.04

USER root:root

ARG CPU_SUPPORT
ENV SOURCE_DATE_EPOCH=0
ENV TZ=UTC
ENV DEBIAN_FRONTEND=noninteractive

COPY --from=download /tmp/qemu_10-1_amd64.deb /tmp/
RUN dpkg -i /tmp/qemu_10-1_amd64.deb && rm /tmp/qemu_10-1_amd64.deb

# Add future release, as opt-in targets
RUN echo "deb http://archive.ubuntu.com/ubuntu plucky main universe restricted multiverse" >> /etc/apt/sources.list.d/future.list && \
echo "Package: *" >> /etc/apt/preferences && \
echo "Pin: release n=plucky" >> /etc/apt/preferences && \
echo "Pin-Priority: -10" >> /etc/apt/preferences

# For the prod image, just use packages.common to define the packages installed
# on target.
Expand All @@ -75,10 +57,8 @@ RUN echo "deb http://archive.ubuntu.com/ubuntu plucky main universe restricted m
ARG PACKAGE_FILES=packages.common
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY packages.* /tmp/
# NODE-1718: libvirt-daemon-config-network must be installed early to avoid a broken dependency ordering
RUN apt-get -y update && \
apt-get -y upgrade && \
apt-get -y --no-install-recommends install libvirt-daemon-config-network && \
apt-get -y --no-install-recommends install $(for P in ${PACKAGE_FILES}; do cat /tmp/$P | sed -e "s/#.*//" ; done) && \
rm /tmp/packages.*

Expand Down
33 changes: 7 additions & 26 deletions ic-os/hostos/context/packages.common
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# image only.

# Need kernel to boot anything
linux-image-generic-hwe-24.04
linux-image-generic-hwe-26.04
initramfs-tools

# Need systemd for boot process
Expand Down Expand Up @@ -36,8 +36,7 @@ lvm2
netcat-openbsd
nftables
traceroute
# NODE-1718: Parted has a conflict with the new libvirt, install it below
# parted
parted
python-is-python3
rsync
sudo
Expand All @@ -60,32 +59,14 @@ checkpolicy
dosfstools
ethtool
ipmitool
lsof
libvirt-daemon-system
libvirt-dev
locales
lsof
moreutils
mtools
nvme-cli
ovmf
pciutils
qemu-system-x86
strace

# Install select components from future releases
# Install >=2025 OVMF
ovmf/plucky # Top level

# NODE-1718: Parted has a conflict with the new libvirt, it should be installed above once
# this is resolved
parted/plucky

# Install >=10.5.0 libvirt
libvirt-daemon-system/plucky # Top level
libvirt-dev/plucky # Top level
libvirt-daemon-config-network/plucky # Dependency
libvirt-daemon-config-nwfilter/plucky # Dependency
libvirt-daemon-driver-network/plucky # Dependency
libvirt-daemon-driver-nodedev/plucky # Dependency
libvirt-daemon-driver-nwfilter/plucky # Dependency
libvirt-daemon-driver-qemu/plucky # Dependency
libvirt-daemon-driver-secret/plucky # Dependency
libvirt-daemon-driver-storage/plucky # Dependency
libvirt-daemon-log/plucky # Dependency
libvirt-daemon/plucky # Dependency
4 changes: 2 additions & 2 deletions ic-os/setupos/context/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# - `docker push/pull dfinity/setupos-base-dev:<tag>`
#
# First build stage:
# - Download and cache minimal Ubuntu Server 24.04 LTS Docker image
# - Download and cache minimal Ubuntu Server 26.04 LTS Docker image
# - Install and cache upstream packages from built-in Ubuntu repositories
#
# NOTE! If you edit this file, you will need to perform the following
Expand All @@ -16,7 +16,7 @@
# 1. Get your MR approved and merged into master
# 2. On the next hourly master pipeline, click the "deploy-setup-os-baseimg" job
# 3. Note the sha256 and update the sha256 reference in the neighboring Dockerfiles.
FROM ubuntu:24.04
FROM ubuntu:26.04

USER root:root

Expand Down
2 changes: 1 addition & 1 deletion ic-os/setupos/context/packages.common
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# operation for the "prod" image.

# Need kernel to boot anything
linux-image-generic-hwe-24.04
linux-image-generic-hwe-26.04
initramfs-tools

# Need systemd for boot process
Expand Down
Loading