Skip to content

Commit b8b9b20

Browse files
removendo user.component não ajudou em nada para arquivos sem ser RPM
1 parent b803262 commit b8b9b20

1 file changed

Lines changed: 43 additions & 63 deletions

File tree

Containerfile

Lines changed: 43 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,68 @@
11
# Primeiro estágio: Construção dos módulos NVIDIA (akmods)
22
FROM quay.io/fedora/fedora-bootc:44 AS builder
33
RUN KERNEL_VERSION="$(rpm -q kernel-core --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" && \
4-
dnf5 -y --nodocs install "kernel-devel-${KERNEL_VERSION}" wget && \
4+
dnf5 -y install "kernel-devel-${KERNEL_VERSION}" wget && \
55
wget -O /etc/yum.repos.d/fedora-nvidia-580.repo https://negativo17.org/repos/fedora-nvidia-580.repo && \
6-
dnf5 install -y --nodocs nvidia-driver nvidia-driver-cuda && \
6+
dnf5 install -y nvidia-driver nvidia-driver-cuda && \
77
akmods --force --kernels "$KERNEL_VERSION"
88

99
# Segundo estágio: Configuração do sistema e imagem final
1010
FROM quay.io/fedora/fedora-bootc:44 AS final
11-
# 1. Ajuste do sistema de arquivos base, instação do attr e rebuild do Initramfs
12-
RUN dnf5 -y --nodocs install attr && \
13-
mkdir -vp /var/roothome /data /var/home && \
11+
12+
# 1. Ajuste do sistema de arquivos base e rebuild do Initramfs (Pouca variação)
13+
RUN mkdir -vp /var/roothome /data /var/home && \
1414
kver="$(rpm -q kernel-core --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" && \
15-
dnf5 -y --nodocs install "kernel-modules-extra-${kver}" && \
15+
dnf5 -y install "kernel-modules-extra-${kver}" wget && \
1616
printf 'omit_dracutmodules+=" nfs "\nomit_drivers+=" nfs nfsv3 nfsv4 nfs_acl nfs_common sunrpc rxrpc rpcrdma auth_rpcgss rpcsec_gss_krb5 "\n' | tee /etc/dracut.conf.d/no-nfs.conf && \
17-
dracut -f --reproducible "/usr/lib/modules/${kver}/initramfs.img" "${kver}" && \
18-
# Isolar o initramfs gerado em uma camada dedicada
19-
setfattr -n user.component -v "kernel-initramfs" "/usr/lib/modules/${kver}/initramfs.img" && \
20-
dnf5 clean all && \
21-
rm -rf /var/cache/* /var/log/* /tmp/* /var/tmp/*
17+
dracut -f --reproducible /usr/lib/modules/${kver}/initramfs.img ${kver} && \
18+
dnf5 clean all
2219

23-
# 2. Instalação dos módulos e drivers NVIDIA compilados
24-
COPY --from=builder /etc/yum.repos.d/fedora-nvidia-580.repo /etc/yum.repos.d/fedora-nvidia-580.repo
25-
COPY --from=builder /var/cache/akmods/nvidia/kmod-nvidia*.rpm /tmp/nvidia-modules/
26-
RUN dnf5 -y --nodocs install \
27-
nvidia-kmod-common \
28-
nvidia-driver-cuda \
29-
/tmp/nvidia-modules/kmod-nvidia-*.rpm && \
30-
rm -rf /tmp/nvidia-modules && \
31-
# Isolamento dos módulos compilados da NVIDIA
32-
kver="$(rpm -q kernel-core --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" && \
33-
if [ -d "/usr/lib/modules/${kver}/extra" ]; then \
34-
setfattr -n user.component -v "nvidia-kmod" "/usr/lib/modules/${kver}/extra"; \
35-
fi && \
36-
dnf5 clean all && \
37-
rm -rf /var/cache/* /var/log/* /tmp/* /var/tmp/*
20+
# 2. Instalação dos módulos e drivers NVIDIA compilados (Camada pesada)
21+
COPY --from=builder /var/cache/akmods/nvidia/kmod-nvidia*.rpm ./
22+
RUN wget -O /etc/yum.repos.d/fedora-nvidia-580.repo https://negativo17.org/repos/fedora-nvidia-580.repo && \
23+
dnf5 download nvidia-kmod-common nvidia-driver-cuda && \
24+
rpm -vi --nodeps nvidia-kmod-common*.rpm && \
25+
rpm -vi --nodeps nvidia-driver-cuda*.rpm && \
26+
dnf5 -y install ./kmod-nvidia-*.rpm && \
27+
rm -rvf kmod-nvidia-*.rpm nvidia-kmod-common*.rpm nvidia-driver-cuda*.rpm && \
28+
dnf5 clean all
3829

3930
# 3. Pacotes base do ambiente gráfico GNOME Minimalista
40-
RUN dnf5 install -y --nodocs --setopt=install_weak_deps=False gnome-shell && \
41-
dnf5 clean all && \
42-
rm -rf /var/cache/* /var/log/* /tmp/* /var/tmp/*
31+
RUN dnf5 install gnome-shell --setopt=install_weak_deps=False -y && \
32+
dnf5 clean all
4333

4434
# 4. Listas de pacotes personalizadas
45-
COPY pacotes_necessarios pacotes_desktop /tmp/
46-
RUN dnf5 install -y --nodocs \
47-
$(grep -v '^#' /tmp/pacotes_necessarios) \
48-
$(grep -v '^#' /tmp/pacotes_desktop) && \
49-
rm -f /tmp/pacotes_necessarios /tmp/pacotes_desktop && \
50-
dnf5 clean all && \
51-
rm -rf /var/cache/* /var/log/* /tmp/* /var/tmp/*
35+
# Copiadas separadamente para evitar a invalidação do cache do GNOME e NVIDIA
36+
COPY pacotes_necessarios pacotes_desktop ./
37+
RUN grep -v '^#' pacotes_necessarios | tr '\n' ' ' | xargs dnf5 install -y && \
38+
grep -v '^#' pacotes_desktop | tr '\n' ' ' | xargs dnf5 install -y && \
39+
rm -fv pacotes_necessarios pacotes_desktop && \
40+
dnf5 clean all
5241

53-
# 5. Configurações do sistema, scripts, links simbólicos e atribuição de user.component
54-
COPY 10-nvidia-args.toml locale.conf post-install.sh post-install.service vconsole.conf zram-generator.conf /tmp/sysconfig/
55-
RUN rm -rf /opt && mkdir -vp /var/opt && ln -vs /var/opt /opt && \
56-
mkdir -vp /var/usrlocal && mv -v /usr/local/* /var/usrlocal/ 2>/dev/null || true && \
57-
rm -rf /usr/local && ln -vs /var/usrlocal /usr/local && \
58-
mv -v /tmp/sysconfig/zram-generator.conf /usr/lib/systemd/ && \
59-
mv -v /tmp/sysconfig/vconsole.conf /etc/vconsole.conf && \
60-
mv -v /tmp/sysconfig/locale.conf /etc/locale.conf && \
61-
mkdir -p /usr/lib/bootc/kargs.d && \
62-
mv -v /tmp/sysconfig/10-nvidia-args.toml /usr/lib/bootc/kargs.d/10-nvidia-args.toml && \
63-
mv -v /tmp/sysconfig/post-install.sh /usr/bin/post-install.sh && \
64-
mv -v /tmp/sysconfig/post-install.service /usr/lib/systemd/system/post-install.service && \
42+
# 5. Configurações do sistema, scripts e links simbólicos (Arquivos com modificações frequentes)
43+
# Mantidos por último para que edições nesses arquivos executem em instantes
44+
COPY 10-nvidia-args.toml locale.conf post-install.sh post-install.service vconsole.conf zram-generator.conf ./
45+
RUN rm -rvf /opt && mkdir -vp /var/opt && ln -vs /var/opt /opt && \
46+
mkdir -vp /var/usrlocal && mv -v /usr/local/* /var/usrlocal/ && \
47+
rm -rvf /usr/local && ln -vs /var/usrlocal /usr/local && \
48+
mv -v zram-generator.conf /etc/systemd/ && \
49+
mv -v vconsole.conf /etc/vconsole.conf && \
50+
mv -v locale.conf /etc/locale.conf && \
51+
mv -v 10-nvidia-args.toml /usr/lib/bootc/kargs.d/10-nvidia-args.toml && \
52+
mv -v post-install.sh /usr/bin/post-install.sh && \
53+
mv -v post-install.service /usr/lib/systemd/system/post-install.service && \
6554
chmod +x /usr/bin/post-install.sh && \
6655
systemctl enable post-install.service && \
6756
systemctl mask systemd-remount-fs.service && \
6857
systemctl mask akmods-keygen@akmods-keygen.service && \
6958
systemctl enable libvirtd.service && \
7059
systemctl enable spice-vdagentd.service && \
71-
# Atribuição de rótulos user.component para arquivos modificáveis
72-
setfattr -n user.component -v "custom-scripts" /usr/bin/post-install.sh && \
73-
setfattr -n user.component -v "custom-config" /etc/vconsole.conf && \
74-
setfattr -n user.component -v "custom-config" /etc/locale.conf && \
75-
setfattr -n user.component -v "custom-config" /usr/lib/systemd/zram-generator.conf && \
76-
setfattr -n user.component -v "bootc-kargs" /usr/lib/bootc/kargs.d/10-nvidia-args.toml && \
77-
setfattr -n user.component -v "custom-services" /usr/lib/systemd/system/post-install.service && \
78-
rm -rf /tmp/sysconfig \
79-
/var/cache/* \
80-
/var/lib/dnf/* \
81-
/var/log/* \
82-
/var/tmp/* \
83-
/tmp/* \
84-
/var/usrlocal/share/applications/mimeinfo.cache \
85-
/var/roothome/.* 2>/dev/null || true
60+
rm -rfv /var/cache/* \
61+
/var/lib/* \
62+
/var/log/* \
63+
/var/tmp/* \
64+
/var/usrlocal/share/applications/mimeinfo.cache \
65+
/var/roothome/.*
8666

8767
# 6. Validação do bootc
8868
RUN bootc container lint

0 commit comments

Comments
 (0)