/ArchLinuxInstallation

How to install Arch Linux?

Apache License 2.0Apache-2.0

How To Install My ArchLinux?

Introduction

Dans cette procédure, je vous détaille step by step comment installer une Arch Linux.

Certaines étapes diffèrent. Pour la connexion Wifi par exemple, sur une VM nous sommes NATés automatiquement au réseau du poste. Si nous installons ArchLinux sur un laptop il faudra utiliser le paquet "wifi-menu" ou encore "NetworkManager" avec la commande "nmtui" après l'installation.

Si vous souhaitez installer Arch Linux sur une VM avec VMWARE, veuillez éditer le fichier .vmx afin d'ajouter la ligne suivante à la fin de celui-ci :

firmware = "efi"

Sommaire :

Préparation de la clef bootable

Afin d'installer le système ArchLinux, il faut télécharger l'ISO de celui-ci depuis le site officiel d'ArchLinux.

#Exemple pour préparer votre clef bootable avec la commande dd
dd if=image.iso of=/dev/sdX bs=4M

Une fois votre clef prête, il suffit de booter sur celle-ci et choisir, installer ArchLinux 64bits.

Installation

Préparation

Il faut passer le système sur une version française avec un clavier azerty une fois que vous avez un shell qui apparaît.

loadkeys fr

Maintenant que nous avons notre clavier azerty, nous allons vérifier que nous sommes bien connecté à internet.

ping google.fr

Si la requête ICMP passe nous pouvons passer à l'étape suivante, sinon vérifier votre connexion réseau. Pour le paramétrage wifi utiliser le paquet wifi-menu.

Partitionnement

Dans le cas d'un système pas (entièrement) chiffré

Nous allons partitionner notre système de façon à avoir les partion suivantes :

/boot    1Go
swap    16Go
/       30Go
/home  150Go # le reste

Pour le partitionnement vérifier le nom de votre disque avec la commande suivante :

fdisk -l

Ici mon disque c'est /dev/nvme0n1

Création des partions :

gdisk /dev/nvme0n1
    d    	#delete all partitions
    n    	# Add a new partition
    1    	# partition number (/boot)
    [enter]
    +1G 	# Et je finis 1Go plus loin

    t
    ef00    # EFI system


    # On créée les suivantes

    n       # Nouvelle partition
    2       # Partition numéro 2 (swap)
    [enter] # par défaut on accepte le secteur proposé
    +16G    # Je crée une partition de 16Go pour le swap
    t       # Nous allons changer le type de patition.
    2       # On choisit la patition 2
    8200      # On définit la partition comme swap


    n       # Nouvelle partition
    3       # partition numéro 3 (/)
    [enter]
    +49G    # 


    n       # Nouvelle partition
    4       # partition numéro 4 (/home)
    [enter]        
    [enter]

    w       # On sauve les changements
Formatage des partitions
mkfs.fat -F32 /dev/nvme0n1p1
mkswap /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
mkfs.ext4 /dev/nvme0n1p4
Montage des partitions
mount /dev/nvme0n1p3 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/nvme0n1p2

Dans le cas d'un système entièrement chiffré

Partitions physiques

Nous allons partitionner notre système de façon à avoir les partion suivantes :

/boot    1Go
swap    16Go
/       80Go
/home  150Go # le reste

Pour le partitionnement vérifier le nom de votre disque avec la commande suivante :

fdisk -l

Ici mon disque c'est /dev/nvme0n1

Création des partions :

gdisk /dev/nvme0n1
    o       # Create new GUID (gpt) table
    d    	# delete all partitions
    n    	# Add a new partition
    1    	# partition number (/boot)
    [enter] # Par défaut
    +1G 	# Et je finis 1Go plus loin

    t
    ef00    # EFI system


    # On créée la suivante pour le LUKS/LVM

    n       # Nouvelle partition
    2       # Partition numéro 2
    [enter] # par défaut on accepte le secteur proposé
    [enter] # pareil pour le secteur de fin
    t       # Type
    8309    # LUKS
    w       # Écrire et quitter
Conteneur LUKS
Création du conteneur :
cryptsetup -v luksFormat /dev/nvme0n1p2
YES
Ouverture du conteneur :
cryptsetup open /dev/nvme0n1p2 luks
Partitionnement LVM
┌─────────┬────────┬────────┐
│   PV    │        │   LV   │ PV = Disque/partition physique (Physical Volume)
├─────────┤        ├────────┤
│   PV    │   VG   │   LV   │ VG = Disque détecté par le système (Volume Group)
├─────────┤        ├────────┤
│   PV    │        │   LV   │ LV = Partitions virtuelles (Logical Volume)
└─────────┴────────┴────────┘
Création du PV :
pvcreate /dev/mapper/luks
Création du VG
vgcreate VGname /dev/mapper/luks

Dans le cas d'un seul VG et plusieurs disques physiques, on peut étendre ce VG sur plusieurs disques physiques. Le système les considèrera comme un seul disque

pvcreate /dev/nouveaudisque
vgextend VGname /dev/nouveaudisque
Création des LV, ou partitions root, home et swap

Attention a bien partitionner votre root, ne pas hésiter à mettre 80Go/100Go pour ne pas être à court de stockage.

lvcreate -L 80G -n root VGname
lvcreate -L 16G -n swap VGname
lvcreate -l 100%FREE -n home VGname #utiliser l'espace restant
Formatage des partitions LVM
mkfs.ext4 /dev/mapper/VGname-root
mkfs.ext4 /dev/mapper/VGname-home
mkswap /dev/mapper/VGname-swap
mkfs.fat -F32 /dev/nvme0n1p1
Montage des partitions
mount /dev/mapper/VGname-root /mnt
mkdir /mnt/{boot,home}
mount -t vfat /dev/nvme0n1p1 /mnt/boot
mount /dev/mapper/VGname-home /mnt/home
swapon /dev/mapper/VGname-swap

Installation du système de base

Sélection du miroir :

cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
#mettre les depot France au début du fichier
vim /etc/pacman.d/mirrorlist

Installation des paquets de base :

pacstrap /mnt base base-devel lvm2 linux linux-firmware dhclient git zsh firefox curl intel-ucode dialog wpa_supplicant networkmanager vim

Configuration hostname et langue

Générer le fstab du nouveau système via celui monté dans notre iso :

genfstab -U /mnt >> /mnt/etc/fstab

La commande ci-dessous permet de passer sur notre ArchLinux :

arch-chroot /mnt

Configuration du hostname de la machine :

echo 'G0H4N-VM-ARCHLINUX' > /etc/hostname

Configuration de la langue et des fuseaux horaires :

#Décommenter les deux lignes ci-dessous :

vim /etc/locale.gen
    fr_FR.UTF-8 UTF-8
    fr_FR ISO-8859-1

locale-gen

echo LANG=fr_FR.UTF-8 > /etc/locale.conf

export LANG=fr_FR.UTF-8

echo KEYMAP=fr > /etc/vconsole.conf

ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

Configuration du système

Dans le cas d'un root chiffré

Éditer /etc/mkinitcpio.conf et ajouter encrypt lvm2 filesystems et keyboard à l'emplacement suivant :

HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 filesystems keyboard fsck)

Dans tous les cas

Lancer :

mkinitcpio -P

Configuration du boot

Afin que notre système puisse démarrer correctement nous allons préparer notre /boot :

bootctl --path=/boot install
vim /boot/loader/loader.conf

    default arch
    timeout 0
    editor 0
    default ID

Le Default ID sera normalement déjà présent et renseigné

Dans le cas d'un root non chiffré

Récupérer le PARTUUID de la partion racine / avec la commande suivante :

blkid /dev/nvme0n1p3

Ajouter ce PARTUUID dans le fichier suivant :

vim /boot/loader/entries/arch.conf

    title Arch Linux
    linux /vmlinuz-linux
    initrd /intel-ucode.img
    initrd /initramfs-linux.img
    options root=PARTUUID="66cda2d8-4aca-49ad-b1ff-ac17dd70cb01" rw quiet

Dans le cas d'un root chiffré

blkid | grep nvme0n1p2 | cut -d '"' -f2 >> /boot/loader/entries/arch.conf

Éditer le fichier arch.conf et replacer la ligne ajoutée dans le champs uuid

vim /boot/loader/entries/arch.conf

    title   Arch Linux
    linux   /vmlinuz-linux
    initrd  /intel-ucode.img
    initrd  /initramfs-linux.img
    options cryptdevice=UUID=4ad93963-fb52-4313-8846-636099383954:lvm:allow-discards root=/dev/mapper/VGname-root rw quiet

Dans tous les cas

Enfin mettre à jour notre /boot :

bootctl --path=/boot update

Set un password à root :

passwd

Quitter l'environement chroot:

$ exit

Redémarrer votre poste ou votre VM :

$ reboot

Configuration après redémarrage

Vérifier la connexion internet.

$ systemctl enable NetworkManager
$ systemctl start NetworkManager

Gestionnaire semi-graphique des connexions :

$ nmtui

Mettre à jour son sytème.

pacman -Syu

Chiffrement de la partition home si le système n'est pas entièrement chiffré

Nous allons chiffrer la partion /home/ avec le paquet cryptsetup. Mais avant cela nous devons la umount pour la libèrer.

umount /home
cryptsetup -y -v luksFormat /dev/nvme0n1p4

    Are you sure? : YES

Ouvrez maintenant votre nouvelle partition chiffrée et créez un système de fichiers pour l’utiliser. Ici j'ia choisi ext4, mais vous pouvez choisir ce que vous voulez.

En ouvrant la partition, la passphrase saisie précédemment vous sera demandée.

L’étape dd n’est pas nécessaire, mais elle permet une protection supplémentaire pour protéger vos données. dd écrit des 0 sur la partition, cela peut prendre du temps suivant la taille de la partition.

#Ouverture de la partition chiffré.
cryptsetup luksOpen /dev/nvme0n1p4 home

#la commande dd est longue et non obligatoire.
dd if=/dev/zero of=/dev/mapper/home

#Formatage de la partition chiffré.
mkfs.ext4 /dev/mapper/home

Votre partition est désormais prête à l’emploi. Si vous voulez chiffrer votre clef USB/disque externe avec LUKS, vous pouvez utiliser la même procédure.

Pour utiliser la nouvelle partition chiffrée avec /home, vous devrez faire quelques chanegements à la fois sur fstab et sur crypttab pour la monter correctement. Éditez le fichier /mnt/etc/crypttab en ajoutant la ligne suivante.

Si vous ne voulez pas de temps d’attente, supprimez cette option.

home /dev/nvme0n1p4 none luks,timeout=120

Veuillez noter que tous les changements faits sur la partition (par exemple avec le gestionnaire de partitions) nécessitent que la partition soit débloquée sinon, son chiffrement sera effacé.

cryptsetup open /dev/nvme0n1p4 home
e2label /dev/mapper/home <name>

Nous pouvons maintenant terminer de monter la partion :

mkdir /mnt/home && mount /dev/mapper/home /mnt/home

Recherchez dans le fichier /mnt/etc/fstab la ligne de montage /home, et remplacez UUID par /dev/mapper/home.

Création de son compte utilisateur

Création d'un compte utilisateur :

$ useradd -ms /bin/zsh g0h4n
$ pacman -S sudo
$ export EDITOR=vim
$ visudo

    g0h4n ALL=(ALL) ALL

$ passwd g0h4n
$ reboot

Installation de l'environement graphique (i3)

Installer i3 et Xorg:

$ pacman -S i3 dmenu xorg xorg-xinit xorg-server xorg-apps xfce4-terminal

Il est possible de remplacer xfc4-terminal par le terminal de votre choix, une liste des terminaux gérer par i3 est disponible ici

Installer un gestionnaire d'affichage :

On utilise ici Lightdm, il est tout à fait possible d'utiliser d'autres gestionnaires comme GDM, LXDM, XDM ou d'autres

$ pacman -S lightdm lightdm-gtk-greeter lightdm-webkit-theme-aether 

lightdm-webkit-theme-aether est optionnel c'est un thème pour lightdm

Ajouter des fonts supplémentaires (Optionnel) :

$ pacman -S noto-fonts ttf-ubuntu-font-family ttf-dejavu ttf-freefont ttf-liberation ttf-droid ttf-inconsolata ttf-roboto terminus-font ttf-font-awesome

Installer la gestion du son :

$ pacman -S alsa-utils alsa-plugins alsa-lib pulseaudio-alsa pavucontrol

Ajout d'utilitaires supplémentaires (Optionnel) :

$ pacman -S xfce4-power-manager ranger conky flameshot evince network-manager-applet bluez bluez-utils bluez-libs pulseaudio-bluetooth

LightDM utilise PAM même si autologin est activé, il faut donc que l'utilisateur fasse aussi partie du groupe autologin

Vérification de l'existance du groupe autologin :

$ cat /etc/group | grep autologin

Si le groupe n'existe pas il faut le créer :

$ groupadd -r autologin

Ajout de l'utilisateur dans le groupe autologin:

$ gpasswd -a <nom_d'utilisateur> autologin

Ajouter la ligne suivante afin de démarrer i3 au démarrage session.

$ vim ~/.xinitrc

	#! /bin/bash
	exec i3

Démarage automatique de l'environement i3 à l'ouverture de la session :

$ vim /etc/profile

	# autostart systemd default session on tty1
	if [[ "$(tty)" == '/dev/tty1' ]]; then
	    exec startx
	fi

Redemarrez

Après le login, i3 ne va détecter aucune configuration et vous proposera d'en créer une ("Appuyez sur Entrer") et de choisir une touche de "command" (choix possible entre la touche Windows et Alt)

Personalisation de l'interface

Editer le fichier de config d'i3 :

$ vim ~/.config/i3/config

Je vais ajouter ma conf i3 dans le dossier 'config/i3/' de ce git.

Personnaliser votre polybar :

$ vim ~/.config/polybar/config

Pareil de pour i3, je vais ajouter ma config polybar dans le dossier 'config/polybar' de ce git.

Installation d'un terminal avec i3 :

$ pacman -S deepin-terminal

Installation du gestionnaire de paquet (yay)

Maintenant, je vais installer un autre gestionnaire de paquet 'yay' :

$ sudo pacman -S git firefox
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si
$ yay

Editer yay pacman et ajouter les deux lignes suivantes :

$ vim /etc/pacman.conf
    Color 
    ILoveCandy

Voila, maintenant pour installer un paquet il faut utiliser la commande 'yay ' et pour mettre à jour ceux déjà installer juste un 'yay' suffit. Pour supprimer un paquet déjà installer 'yay -R '. Pour supprimer avec les dépendances 'yay -Rdd '. POur vider le cache de yay 'yay -Sc'.

Installation des dépots blackarch (like kali linux)

Récupèrer le script d'installation sur blackarch.org :

$ curl -O https://blackarch.org/strap.sh

Le sha1sum du script récupéré doit matcher avec celui-ci : 9f770789df3b7803105e5fbc19212889674cd503 strap.sh

$ sha1sum strap.sh

Nous rendons le script éxécutable et nous pouvons le lancer :

$ chmod +x strap.sh
$ sudo ./strap.sh
$ yay

Installation et personnalisation de (zsh)

Si ce n'est pas déjà fait, installer /bin/zsh :

$ pacman -S zsh neofetch

Le définir comme shell par défaut pour l'utilisateur actuel :

$ export SHELL=/bin/zsh
$ chsh -s /bin/zsh

Pimp son shell zsh avec le paquet 'ohmyzsh'. (Cela s'applique à l'utilisateur qui execute la commande)

$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Il faut ensuite changer le style en éditant ~/.zshrc et remplacer le style ligne 11 par agnoster :

ZSH_THEME="agnoster"

Editer le fichier ~/.zshrc et ajouter à la fin de celui-ci :

clear
neofetch

#Alias
alias ll="ls -lisa --color=auto"
alias shutdown="shutdown -F now"

Désactiver l'historique dans le zsh_history avec un lien symbolique (question de sécurité), ce lien symbolique fonctionne sur tout type de fichier : Pareil en root :

$ ln -sf /dev/null ~/.zsh_history

Personnalisation de l'éditeur de texte (vim)

Editer le ~/.vimrc et coller ceci :

set nu
set noshowmode
set ai
set expandtab
set tabstop=4
set shiftwidth=4
set nocompatible
set background=dark
syntax on
set wildmenu
set wildmode=list:longest,list:full
set listchars=eol:¬,tab:>—,trail:♦,nbsp:⍽,extends:>,precedes:<
set list
set foldmethod=syntax
set hidden
set termguicolors
command W :execute ':silent w !sudo tee % > /dev/null | :edit!'
let g:gruvbox_italic=1
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled=1
let g:airline#extensions#vimtex#enabled=1
let g:airline#extensions#syntastic#enabled=1
let g:airline#extensions#tagbar#enabled=1
let g:airline#extensions#tmuxline#enabled=1
let g:airline#extensions#languageclient#enabled=1

Ajouter un Dark thème

Installer les paquets suivants :

yay lxappearance
yay gtk-theme-arc-gruvbox-git
yay paper-icon-theme-git

Maintenant on peut modifier le thème avec la commande suivante :

# En utilisateur standard et en root
lxappearance
sudo lxappearance

Notre Arch Linux est prêt pour l'utilisation.

informations Je tiens à remercier Dakyne et Sneagle pour leur participation à la rédaction !