chore: migrate from calamares to anaconda installer
Remove Calamares compilation and configuration, replace with Anaconda installer setup. Changes: - Remove Calamares-related entries from .gitignore - Update README with migration status from Calamares to Anaconda - Rename setup-calamares.sh references to setup-aur.sh - Remove Calamares packages from package lists - Add anaconda and liveimg payload packages - Add Anaconda kickstart configuration (interactive-defaults.ks) - Update boot sequence documentation: remove Calamares desktop selection, simplify to Openbox live environment - Remove Calamares-specific troubleshooting entries - Clean up .xinitrc and .zlogin to remove Calamares launcher - Update build scripts to reference local repo generically instead of Calamares-specific
This commit is contained in:
@@ -5,11 +5,9 @@ if [ ! -d /run/archiso ]; then
|
||||
fi
|
||||
|
||||
xsetroot -solid "#1a1a2e"
|
||||
openbox &
|
||||
sleep 1
|
||||
|
||||
# Choix du bureau AVANT Calamares (le module packagechooser n'est pas compilé
|
||||
# dans le paquet calamares AUR). Écrit /run/fws-desktop, lu pendant l'install.
|
||||
/usr/local/bin/fws-pick-desktop || true
|
||||
|
||||
exec calamares
|
||||
# TODO (chantier C) : lancer l'installateur graphique Anaconda dans cette session.
|
||||
# Calamares a été retiré (commit 05ae9c3) et son remplacement Anaconda n'est pas
|
||||
# encore câblé. En attendant, on lance Openbox au premier plan : le serveur X a
|
||||
# ainsi un client (sinon startx rendrait la main et X se fermerait aussitôt).
|
||||
exec openbox
|
||||
|
||||
@@ -4,8 +4,8 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then
|
||||
fi
|
||||
|
||||
# Provisionnement automatique archiso (param noyau script=) : LIVE uniquement.
|
||||
# Sur le système installé /run/archiso n'existe pas ; de plus shellprocess.conf
|
||||
# retire ce fichier de la cible. Ceci est une seconde barrière de sécurité.
|
||||
# Sur le système installé /run/archiso n'existe pas, donc ce bloc ne s'exécute
|
||||
# jamais hors du live — c'est la barrière qui empêche l'auto-script sur la cible.
|
||||
if [[ -d /run/archiso ]]; then
|
||||
~/.automated_script.sh
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Démarrage automatique de Xorg + Calamares uniquement dans le live FWS.
|
||||
# Démarrage automatique de Xorg uniquement dans le live FWS.
|
||||
# Sur le système installé, /run/archiso n'existe pas, donc rien ne se lance.
|
||||
if [[ -d /run/archiso && "$(tty)" == "/dev/tty1" && -z "$DISPLAY" ]]; then
|
||||
exec startx -- vt1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ============================================================
|
||||
# FWS — paquets de l'ISO live
|
||||
# Objectif : système live bootable + installeur Calamares
|
||||
# fonctionnel + jeu minimal d'outils de rescue.
|
||||
# Objectif : système live bootable + installateur Anaconda
|
||||
# (migration depuis Calamares) + jeu minimal d'outils de rescue.
|
||||
# ============================================================
|
||||
|
||||
# --- Base système ---
|
||||
@@ -86,7 +86,7 @@ htop
|
||||
alsa-utils
|
||||
sof-firmware
|
||||
|
||||
# --- Xorg + Openbox (pour Calamares) ---
|
||||
# --- Xorg + Openbox (session graphique de l'installateur) ---
|
||||
xorg-server
|
||||
xorg-xinit
|
||||
xorg-xrandr
|
||||
@@ -100,13 +100,6 @@ xfce4-goodies
|
||||
lightdm
|
||||
lightdm-gtk-greeter
|
||||
|
||||
# --- Calamares (fournis par fws-local) ---
|
||||
calamares
|
||||
kpmcore
|
||||
qt5-base
|
||||
qt5-svg
|
||||
qt6-base
|
||||
|
||||
# --- Agents VM (pratique pour tester l'ISO) ---
|
||||
qemu-guest-agent
|
||||
virtualbox-guest-utils-nox
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
# ============================================================================
|
||||
# FWS — interactive-defaults.ks
|
||||
#
|
||||
# Kickstart de base, lu AUTOMATIQUEMENT par Anaconda quand l'install est
|
||||
# lancée en mode interactif (chemin fixe codé en dur dans Anaconda :
|
||||
# /usr/share/anaconda/interactive-defaults.ks). Aucun inst.ks= n'est requis.
|
||||
#
|
||||
# RÔLE : empêcher Anaconda d'installer Fedora.
|
||||
# ----------------------------------------------------------------------------
|
||||
# Sans payload défini, Anaconda utilise DNF → des RPM depuis les dépôts
|
||||
# Fedora = il installe Fedora. Anaconda n'a AUCUN backend pacman. La seule
|
||||
# façon de poser FWS/Arch est le payload « liveimg » : il recopie une image
|
||||
# de système de fichiers (ici le squashfs du live = FWS) sur le disque, puis
|
||||
# on finalise nous-mêmes (grub, mkinitcpio, bureau) en %post. C'est le modèle
|
||||
# « Sabayon » : le système installé EST une copie du live.
|
||||
#
|
||||
# L'utilisateur garde la main dans le GUI sur tout ce qui N'EST PAS fixé ici :
|
||||
# partitionnement, fuseau, clavier, langue, création d'utilisateur, mot de
|
||||
# passe root, etc.
|
||||
# ============================================================================
|
||||
|
||||
# --- Source d'installation : l'image du live (FWS), surtout pas Fedora -------
|
||||
# Squashfs archiso sur le média booté :
|
||||
# /run/archiso/bootmnt/<install_dir>/<arch>/airootfs.sfs
|
||||
# install_dir=fws, arch=x86_64, airootfs_image_type=squashfs (cf. profiledef.sh).
|
||||
# Anaconda loop-monte ce .sfs et rsync son contenu vers la cible.
|
||||
#
|
||||
# ⚠ À VALIDER sur ISO réelle : certaines versions d'Anaconda attendent une
|
||||
# structure « LiveOS/rootfs.img » à l'intérieur du squashfs (format Fedora
|
||||
# Live) et non un squashfs « plat » comme celui d'archiso. Si l'install
|
||||
# échoue à monter la source, basculer sur un tarball de rootfs dédié :
|
||||
# liveimg --url=file:///run/archiso/bootmnt/fws/x86_64/fws-rootfs.tar.gz
|
||||
# (un build-rootfs.sh produirait alors ce tar via pacstrap).
|
||||
liveimg --url=file:///run/archiso/bootmnt/fws/x86_64/airootfs.sfs
|
||||
|
||||
# --- Bootloader : géré à la main en %post ------------------------------------
|
||||
# Anaconda lancerait « grub2-install » / « grub2-mkconfig » (binaires Fedora,
|
||||
# préfixe grub2-) qui n'existent pas dans un rootfs Arch (lequel fournit
|
||||
# grub-install / grub-mkconfig). On désactive donc l'étape native d'Anaconda.
|
||||
# L'ESP (UEFI) ou la partition bios_boot (BIOS/GPT) reste créée par le
|
||||
# partitionnement (auto ou manuel) car la plateforme l'impose.
|
||||
bootloader --disabled
|
||||
|
||||
# Pas de section %packages : le payload liveimg n'installe aucun paquet
|
||||
# (il copie une image). Toute installation de paquets se fait en %post.
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# %post --nochroot — s'exécute dans le LIVE, la cible montée sous /mnt/sysroot
|
||||
# But : déposer dans la cible ce dont le %post chrooté aura besoin (DNS pour
|
||||
# pacman, choix de bureau écrit par l'addon de sélection).
|
||||
# ============================================================================
|
||||
%post --nochroot --log=/tmp/fws-post-nochroot.log
|
||||
set -x
|
||||
|
||||
# Selon la version d'Anaconda la cible est sous /mnt/sysroot (récent) ou
|
||||
# /mnt/sysimage (ancien).
|
||||
SYSROOT=/mnt/sysroot
|
||||
[ -d "$SYSROOT" ] || SYSROOT=/mnt/sysimage
|
||||
|
||||
# DNS pour que « pacman -S <bureau> » fonctionne dans le chroot.
|
||||
cp -f /etc/resolv.conf "$SYSROOT/etc/resolv.conf" 2>/dev/null || true
|
||||
|
||||
# Choix du bureau (écrit par l'addon « Choix du bureau », à venir ; valeur lue
|
||||
# par le %post chrooté ci-dessous). « cli » par défaut si absent.
|
||||
if [ -f /tmp/fws-desktop ]; then
|
||||
cp -f /tmp/fws-desktop "$SYSROOT/tmp/fws-desktop" 2>/dev/null || true
|
||||
fi
|
||||
%end
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# %post (chroot) — DANS le rootfs FWS recopié. pacman, grub-install,
|
||||
# mkinitcpio existent ici : ce sont les outils Arch de l'image copiée.
|
||||
# Log persistant : /var/log/fws-post.log sur le système installé.
|
||||
# ============================================================================
|
||||
%post --log=/var/log/fws-post.log
|
||||
set -x
|
||||
|
||||
# --- 1) Purge des résidus « live » (modèle Sabayon = live copié tel quel) ----
|
||||
# Ce qui est propre au live casserait ou pollue le système installé.
|
||||
rm -f /etc/mkinitcpio.conf.d/archiso.conf
|
||||
rm -f /etc/systemd/system/getty@tty1.service.d/autologin.conf
|
||||
for svc in choose-mirror.service pacman-init.service \
|
||||
livecd-talk.service livecd-alsa-unmuter.service \
|
||||
etc-pacman.d-gnupg.mount; do
|
||||
rm -f "/etc/systemd/system/$svc"
|
||||
rm -f /etc/systemd/system/*.target.wants/"$svc"
|
||||
done
|
||||
# cloud-init (présent dans l'airootfs archiso) : inutile sur un poste installé.
|
||||
rm -f /etc/systemd/system/cloud-init.target.wants/* 2>/dev/null || true
|
||||
# Hooks initramfs archiso, s'ils ont été recopiés en tant que paquet.
|
||||
if pacman -Q mkinitcpio-archiso &>/dev/null; then
|
||||
pacman -Rns --noconfirm mkinitcpio-archiso || true
|
||||
fi
|
||||
|
||||
# --- 2) initramfs propre (sans le hook « archiso ») --------------------------
|
||||
mkinitcpio -P || echo "[FWS] AVERTISSEMENT : mkinitcpio a échoué"
|
||||
|
||||
# --- 3) GRUB installé à la main (cf. bootloader --disabled) ------------------
|
||||
install_grub() {
|
||||
if [ -d /sys/firmware/efi ]; then
|
||||
pacman -Q efibootmgr &>/dev/null || pacman -Sy --noconfirm efibootmgr || true
|
||||
grub-install --target=x86_64-efi --efi-directory=/boot/efi \
|
||||
--bootloader-id=FWS --recheck
|
||||
else
|
||||
# BIOS : retrouver le disque physique portant « / ».
|
||||
local rootsrc disk
|
||||
rootsrc="$(findmnt -no SOURCE / 2>/dev/null)"
|
||||
disk="$(lsblk -no pkname "$rootsrc" 2>/dev/null | head -1)"
|
||||
[ -n "$disk" ] || { echo "[FWS] Disque BIOS introuvable"; return 1; }
|
||||
grub-install --target=i386-pc --recheck "/dev/$disk"
|
||||
fi
|
||||
}
|
||||
if install_grub; then
|
||||
grub-mkconfig -o /boot/grub/grub.cfg || echo "[FWS] grub-mkconfig a échoué"
|
||||
else
|
||||
echo "[FWS] AVERTISSEMENT : grub-install a échoué — bootloader à refaire à la main"
|
||||
fi
|
||||
|
||||
# --- 4) Bureau choisi : pacman -S du DE (non bloquant si pas de réseau) -------
|
||||
DESK="cli"
|
||||
[ -f /tmp/fws-desktop ] && DESK="$(tr -d '[:space:]' < /tmp/fws-desktop)"
|
||||
DM=""
|
||||
case "$DESK" in
|
||||
kde) PKGS="plasma-meta sddm konsole dolphin"; DM="sddm" ;;
|
||||
gnome) PKGS="gnome gdm"; DM="gdm" ;;
|
||||
xfce) PKGS="xfce4 xfce4-goodies lightdm lightdm-gtk-greeter"; DM="lightdm" ;;
|
||||
hyprland) PKGS="hyprland kitty wofi waybar sddm"; DM="sddm" ;;
|
||||
cli|*) PKGS="" ;;
|
||||
esac
|
||||
if [ -n "$PKGS" ]; then
|
||||
pacman-key --init &>/dev/null || true
|
||||
pacman-key --populate archlinux &>/dev/null || true
|
||||
if pacman -Sy --noconfirm $PKGS; then
|
||||
[ -n "$DM" ] && systemctl enable "$DM" || true
|
||||
systemctl set-default graphical.target || true
|
||||
else
|
||||
echo "[FWS] Bureau '$DESK' non installé (réseau ?) — à refaire après le 1er boot."
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- 5) Sécurité : verrouiller root s'il est resté SANS mot de passe ----------
|
||||
# L'airootfs live a souvent un root sans mot de passe ; si l'utilisateur n'en a
|
||||
# pas défini dans le GUI, on verrouille plutôt que de laisser le compte ouvert.
|
||||
if passwd -S root 2>/dev/null | grep -qE '\bNP\b'; then
|
||||
passwd -l root || true
|
||||
fi
|
||||
|
||||
# --- 6) Le resolv.conf du live ne doit pas rester figé -----------------------
|
||||
# NetworkManager (activé sur le système installé) régénère /etc/resolv.conf.
|
||||
rm -f /tmp/fws-desktop /etc/resolv.conf 2>/dev/null || true
|
||||
%end
|
||||
@@ -1,7 +1,7 @@
|
||||
# ============================================================
|
||||
# FWS — paquets de l'ISO live
|
||||
# Objectif : système live bootable + installeur Calamares
|
||||
# fonctionnel + jeu minimal d'outils de rescue.
|
||||
# Objectif : système live bootable + installateur Anaconda
|
||||
# (migration depuis Calamares) + jeu minimal d'outils de rescue.
|
||||
# ============================================================
|
||||
|
||||
# --- Base système ---
|
||||
@@ -85,7 +85,7 @@ htop
|
||||
alsa-utils
|
||||
sof-firmware
|
||||
|
||||
# --- Xorg + Openbox (pour Calamares) ---
|
||||
# --- Xorg + Openbox (session graphique de l'installateur) ---
|
||||
xorg-server
|
||||
xorg-xinit
|
||||
xorg-xrandr
|
||||
@@ -99,13 +99,6 @@ xfce4-goodies
|
||||
lightdm
|
||||
lightdm-gtk-greeter
|
||||
|
||||
# --- Calamares (fournis par fws-local) ---
|
||||
calamares
|
||||
kpmcore
|
||||
qt5-base
|
||||
qt5-svg
|
||||
qt6-base
|
||||
|
||||
# --- Agents VM (pratique pour tester l'ISO) ---
|
||||
qemu-guest-agent
|
||||
virtualbox-guest-utils-nox
|
||||
|
||||
Reference in New Issue
Block a user