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