simplification drastique

This commit is contained in:
neox 2024-07-09 16:15:18 +02:00
parent 2d2f9d8e15
commit d603a02ea9
No known key found for this signature in database
GPG Key ID: 57BC26A3687116F6
3 changed files with 111 additions and 64 deletions

View File

@ -324,6 +324,10 @@ SUBSYSTEM==\"usb_device\", GROUP=\"spice\", MODE=\"0660\"
;; qui se trouvent ici s'obtiennent en exécutant « blkid » dans un terminal. ;; qui se trouvent ici s'obtiennent en exécutant « blkid » dans un terminal.
(file-systems (file-systems
(cons* (cons*
(file-system
(mount-point "/boot/efi")
(device "/dev/CHANGE_THIS_DISK")
(type "vfat"))
(file-system (file-system
(mount-point "/") (mount-point "/")
(device "/dev/mapper/ROOT") (device "/dev/mapper/ROOT")

96
install.sh Normal file
View File

@ -0,0 +1,96 @@
#!/bin/bash
#
# Guix Simplified Installer
#
# Copyright (C) 2024 Adrien Bourmault <neox@a-lec.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set +x
set -e
# Définition des couleurs
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo "${RED}Welcome to Guix Simplified Installer${NC}"
echo "${NC}Copyright (C) 2024 Adrien Bourmault <neox@a-lec.org>${NC}"
echo "${NC}This program is free software, released under the GNU AGPL version 3 or later.${NC}"
# Chemin vers le disque
DISK="$1"
# Vérification de l'existence du disque
if [ ! -b "$DISK" ]; then
echo "${RED}Creating disk layout...${NC}"
exit 1
fi
echo -n "${BLUE}Creating disk layout...${NC}"
parted -s "$DISK" mklabel gpt
parted -s "$DISK" mkpart primary fat32 1MiB 5%
parted -s "$DISK" mkpart primary ext4 5% 100%
parted -s "$DISK" print
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Setting up root partition encryption...${NC}"
cryptsetup luksFormat "${DISK}p2"
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Unlocking root partition...${NC}"
cryptsetup open "${DISK}p2" ROOT
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Formatting disks partitions...${NC}"
mkfs.vfat "${DISK}p1"
mkfs.ext4 -L ROOT /dev/mapper/ROOT
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Updating disk configuration...${NC}"
UUID=$(blkid -o value -s UUID "${DISK}p2")
sed -i "s/CHANGE_THIS_UUID/${UUID}/g" config.scm
UUID2=$(blkid -o value -s UUID "${DISK}p1")
sed -i "s/CHANGE_THIS_DISK/${UUID2}/g" config.scm
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Mounting disks...${NC}"
mount LABEL=ROOT /mnt
mkdir -p /mnt/boot/efi
mount "${DISK}p1" /mnt/boot/efi
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Moving configuration to its final location...${NC}"
mkdir /mnt/etc
mv config.scm /mnt/etc/config.scm
echo "${GREEN}OK${NC}"
echo -n "${BLUE}Installing GNU Guix${NC}"
herd start cow-store /mnt
guix system init /mnt/etc/config.scm /mnt
echo "${GREEN}OK${NC}"

View File

@ -50,10 +50,15 @@ dhclient
wget forge.chalec.org/neox/guix_jerome/raw/branch/master/config.scm wget forge.chalec.org/neox/guix_jerome/raw/branch/master/config.scm
``` ```
11. Récupérer l'installateur simplifié de Guix pré-préparé :
```
wget forge.chalec.org/neox/guix_jerome/raw/branch/master/install.sh
```
### Préparation du disque ### Préparation du disque
11. Rechercher la liste des disques : 12. Rechercher la liste des disques :
``` ```
lsblk lsblk
``` ```
@ -61,71 +66,13 @@ lsblk
Un résultat comme suit apparaît : Un résultat comme suit apparaît :
![](guix_07.png) ![](guix_07.png)
12. Si aucune partition n'existe, on utilisera l'utilitaire `cfdisk` (embarqué dans l'installateur). Pour cela, lancer simplement `cfdisk` et créer au moins une partition. Attention : bien penser à exécuter la commande d'écriture pour que les changements ne soient pas perdus. Redémarrer peut être nécessaire. Si vous avez un nvme (petit disque SSD très rapide ressemblant à une barette) : 13. On cherche alors le nom du disque local. Si vous ne voyez que `sda` c'est la clé USB. Votre disque peut s'appeler `nvme0n1`, et dans ce cas c'est un nvme. Lancez la commande d'installation en indiquant votre disque. Par exemple, avec un nvme :
``` ```
cfdisk /dev/nvme0n1 chmod +x install.sh
./install.sh /dev/nvme0n1
``` ```
La selection des commandes se fait avec les flèches. 14. Redémarrer l'appareil.
12. Utilisez la commande _New_, appuyez sur entrée
13. Utilisez la commande _Write_, appuyez sur entrée, puis tapez 'yes' et appuyez sur entrée
14. Utiliser la commande _Quit_, appuyez sur entrée.
15. Dans ce tutoriel on identifie `/dev/vda1` comme le disque cible de l'installation. Si vous avez un nvme, il faudra le remplacer par le bon chemin sur votre machine : par exemple `/dev/nvme0n1p1`
On commence par formater et chiffrer la partition :
```
cryptsetup luksFormat /dev/nvme0n1p1
```
Puis on ouvre le disque chiffré :
```
cryptsetup open /dev/nvme0n1p1 ROOT
```
Puis on formate la partition :
```
mkfs.ext4 -L ROOT /dev/mapper/ROOT
```
16. La partition racine a maintenant un identufuabt On corrige l'identificant de la partition racine dans la configuration :
```
UUID=$(blkid -o value -s UUID /dev/nvme0n1p1)
sed -i "s/CHANGE_THIS_UUID/${UUID}/g" config.scm
```
17. On monte ensuite la partition :
```
mount LABEL=ROOT /mnt
```
18. Déplacer le fichier de configuration à son emplacement final :
```
mkdir /mnt/etc
mv config.scm /mnt/etc/config.scm
```
### Lancement de l'installation
19. On active le service du Store :
```
herd start cow-store /mnt
```
20. On lance l'installation :
```
guix system init /mnt/etc/config.scm /mnt
```
21. Une fois cela terminé, on peut redémarrer le système.
### Configuration d'OpenVPN ### Configuration d'OpenVPN
@ -145,4 +92,4 @@ sudo wget https://www.fdn.fr/ca-vpn-fdn.crt /etc/openvpn/fdn.crt
### Enjoy ? ### Enjoy ?
Pour gérer le VPN, c'est avec la commande `sudo herd <action> openvpn` Pour gérer le VPN, c'est avec la commande `sudo herd <action> openvpn`