Last active 1 month ago

Revision dbe185089452871a05eae41e5e9b7d1b30d32431

setuparchlinux.zsh Raw
1#!/usr/bin/env zsh
2set -euo nounset
3
4#############################################
5# Arch Linux install non-interactif (UEFI)
6# - ESP montée sur /boot de 2G (FAT32)
7# - Wi-Fi via wlan0 (SSID/PSK en variables)
8#
9# ATTENTION: CE SCRIPT EFFACE LE DISQUE.
10# À lancer depuis l'ISO Arch (archiso) en root.
11#############################################
12
13### ====== VARIABLES À REMPLIR ======
14DISK="/dev/nvme0n1" # ex: /dev/sda ou /dev/nvme0n1
15HOSTNAME="arch"
16USERNAME="user"
17USER_PASSWORD="changeme"
18ROOT_PASSWORD="changeme"
19
20WIFI_INTERFACE="wlan0"
21WIFI_SSID="TON_SSID"
22WIFI_PSK="TON_PSK"
23
24TIMEZONE="Europe/Paris"
25LOCALE="fr_FR.UTF-8"
26KEYMAP="fr"
27### =================================
28die() {
29 echo -u2 "ERROR: $*"
30 exit 1
31}
32
33need() {
34 command -v "$1" >/dev/null 2>&1 || die "Commande manquante: $1"
35}
36
37for c in sgdisk mkfs.fat mkfs.ext4 mount umount pacstrap genfstab arch-chroot iwctl; do
38 need "$c"
39done
40
41[[ -b "$DISK" ]] || die "Disque invalide: $DISK"
42
43echo "==> Vérification UEFI..."
44[[ -d /sys/firmware/efi ]] || die "UEFI requis"
45
46echo "==> Synchronisation de l'heure..."
47timedatectl set-ntp true 2>/dev/null || true
48
49echo "==> Connexion Wi-Fi ($WIFI_INTERFACE)..."
50iwctl --passphrase "$WIFI_PSK" station "$WIFI_INTERFACE" connect "$WIFI_SSID" \
51 || die "Connexion Wi-Fi échouée"
52
53ping -c 6 ambrya.eu >/dev/null 2>&1 || die "Pas d'accès réseau"
54
55echo "==> Partitionnement GPT sur $DISK"
56swapoff -a 2>/dev/null || true
57umount -R /mnt 2>/dev/null || true
58
59PART_PREFIX="$DISK"
60[[ "$DISK" == *nvme* ]] && PART_PREFIX="${DISK}p"
61
62BOOT_PART="${PART_PREFIX}1"
63ROOT_PART="${PART_PREFIX}2"
64
65sgdisk --zap-all "$DISK"
66sgdisk -n 1:0:+2G -t 1:ef00 -c 1:"EFI_SYSTEM" "$DISK"
67sgdisk -n 2:0:0 -t 2:8300 -c 2:"ARCH_ROOT" "$DISK"
68partprobe "$DISK"
69sleep 2
70
71echo "==> Formatage..."
72mkfs.fat -F32 -n BOOT "$BOOT_PART"
73mkfs.ext4 -F -L ROOT "$ROOT_PART"
74
75echo "==> Montage..."
76mount "$ROOT_PART" /mnt
77mkdir -p /mnt/boot
78mount "$BOOT_PART" /mnt/boot
79
80echo "==> Installation du système de base..."
81pacstrap -K /mnt \
82 base linux linux-firmware \
83 networkmanager iwd sudo vim bash
84
85echo "==> Génération fstab..."
86genfstab -U /mnt >> /mnt/etc/fstab
87
88echo "==> Configuration système (chroot)..."
89arch-chroot /mnt /usr/bin/bash <<EOF
90set -euo nounset
91
92ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime
93hwclock --systohc
94
95sed -i 's/^#\\($LOCALE\\)/\\1/' /etc/locale.gen
96locale-gen
97echo "LANG=$LOCALE" > /etc/locale.conf
98echo "KEYMAP=$KEYMAP" > /etc/vconsole.conf
99
100echo "$HOSTNAME" > /etc/hostname
101cat >/etc/hosts <<H
102127.0.0.1 localhost
103::1 localhost
104127.0.1.1 $HOSTNAME.localdomain $HOSTNAME
105H
106
107echo "root:$ROOT_PASSWORD" | chpasswd
108useradd -m -G wheel -s /usr/bin/zsh "$USERNAME" 2>/dev/null || true
109echo "$USERNAME:$USER_PASSWORD" | chpasswd
110#sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
111pacman -S t networkmanager --noconfirm
112systemctl enable NetworkManager
113systemctl enable iwd
114
115mkdir -p /etc/NetworkManager/system-connections
116cat >/etc/NetworkManager/system-connections/wifi.nmconnection <<NMC
117[connection]
118id=wifi
119type=wifi
120autoconnect=true
121
122[wifi]
123ssid=$WIFI_SSID
124mode=infrastructure
125
126[wifi-security]
127key-mgmt=wpa-psk
128psk=$WIFI_PSK
129
130[ipv4]
131method=auto
132
133[ipv6]
134method=auto
135NMC
136chmod 600 /etc/NetworkManager/system-connections/wifi.nmconnection
137
138bootctl --root=/mnt --esp-path=/boot install
139mkdir -p /mnt/boot/loader/entries
140
141
142ROOT_UUID=$(blkid -s UUID -o value "$ROOT_PART")
143
144cat >/mnt/boot/loader/loader.conf <<L
145default arch
146timeout 3
147editor no
148L
149
150cat >/mnt/boot/loader/entries/arch.conf <<E
151title Arch Linux
152linux /vmlinuz-linux
153initrd /initramfs-linux.img
154options root=UUID=$ROOT_UUID rw
155E
156#EOF
157
158echo "==> Nettoyage..."
159umount -R /mnt
160
161esp-path=/boot
162echo "==> Installation terminée. Reboot possible."
163
164