Files
ps5-linux-image/docker/image-builder/Dockerfile
Bug Bounty Zip ed54e99482 Add Fedora 44 (GNOME) image support
New fedora distro: distrobuilder fedora-http recipe with full GNOME
desktop (GDM autologin), the PS5 IW620 internal WiFi modules built from
nxp-imx/mwifiex + ps5-linux-mwifiex, and an RPM packaging path for the
shared PS5 kernel (docker/kernel-builder-rpm).

Notable PS5-specific fix: the kernel patches write into the
request_firmware() buffer to skip the firmware signature header
(gfx_v10_0_early_init, amdgpu_sdma_init_microcode). Fedora ships
firmware xz-compressed, and the kernel maps xz-decompressed firmware
read-only (fw_decompress_xz_pages -> fw_map_paged_buf -> vmap
PAGE_KERNEL_RO), so the write oopses amdgpu before /dev/dri exists and
the display never comes up. Distros with zstd or uncompressed firmware
decompress into writable buffers, which is why only Fedora was
affected. The recipe therefore ships the cyan_skillfish GPU firmware
uncompressed, materializing linux-firmware's dedup symlinks first
(unxz refuses symlinks).

Also installs umoci/skopeo in the image builder (Fedora 41+ bases ship
as OCI archives) and wires fedora into build_image.sh (FORMAT=rpm) and
the image-builder entrypoint.

Tested on PS5 hardware: GNOME displays over HDMI, internal WiFi scans
and connects.

[skip ci]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 07:00:06 +08:00

42 lines
1.5 KiB
Docker

FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
# System dependencies for distrobuilder and image creation
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates wget git make gcc libc6-dev build-essential \
debootstrap rsync gpg dirmngr squashfs-tools \
parted dosfstools e2fsprogs kmod \
initramfs-tools fdisk gdisk udev kpartx \
xz-utils bzip2 zstd \
&& rm -rf /var/lib/apt/lists/*
# Install Go (Ubuntu 24.04 only has 1.22, distrobuilder needs newer)
RUN wget -q https://go.dev/dl/go1.25.6.linux-amd64.tar.gz -O /tmp/go.tar.gz && \
tar -C /usr/local -xzf /tmp/go.tar.gz && \
rm /tmp/go.tar.gz
ENV PATH="/usr/local/go/bin:/root/go/bin:${PATH}"
# Build distrobuilder from source per upstream instructions
RUN mkdir -p /root/go/src/github.com/lxc/ && \
cd /root/go/src/github.com/lxc/ && \
git clone --depth 1 --branch v3.3.1 https://github.com/lxc/distrobuilder && \
cd distrobuilder && \
make && \
cp /root/go/bin/distrobuilder /usr/local/bin/ && \
rm -rf /root/go/src /root/go/pkg
# Fedora 41+ base images ship as OCI archives; distrobuilder's fedora-http
# downloader unpacks them with umoci/skopeo.
RUN apt-get update && apt-get install -y --no-install-recommends \
umoci skopeo \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /build
COPY docker/image-builder/entrypoint.sh /entrypoint.sh
COPY docker/image-builder/entrypoint-multi.sh /entrypoint-multi.sh
RUN chmod +x /entrypoint.sh /entrypoint-multi.sh
ENTRYPOINT ["/entrypoint.sh"]