Archlinux installation

De Banane Atomic
Aller à la navigationAller à la recherche

Clavier fr

Bash.svg
loadkeys fr_CH
# _ → ?
# loadkeys fr-pc

Partitionnement

/ 30 Go
/var 25 Go. Contient le cache pacman, comme celui-ci grossit il est intéressant de mettre /var dans une partition à part afin de ne pas bloquer le système si la partition n'a plus d'espace libre.
Éviter de le mettre sur un disque SSD car elle contient les logs ce qui génère beaucoup d'écriture.
/boot 512 Mo
/home 40 Go
Swap 2/5 of the RAM size for hibernation
Swap file dans un fichier plutôt que dans une partition. Permet d'en modifier facilement la taille.
Bash.svg
# listez les disques: list block devices
lsblk
# -f: Output info about filesystems like UUID

GPT: GUID Partition Table

Bash.svg
# création des partitions
gdisk /dev/sda

Commandes:

  • n → new partition
  • p → print the partition list
  • w → write and exit
  • q → quit

Codes de partitions:

  • ef00 → EFI System Partition
  • ef02 → BIOS boot partition (GRUB avec BIOS/GPT)
  • 8200 Swap
  • 8300 Linux (/, /var)
  • 8302 Linux home (/home)
  • 0700 NTFS
Pour un système UEFI, la première partition doit être l'EFI System Partition d'une taille comprise entre 100MiB et 512MiB et formatée en FAT32
Pour un système BIOS/GPT, une partition dans les premiers 2TiB doit être la BIOS boot partition d'une taille de 1MiB et formatée en FAT32

MBR: Master Boot Record

Bash.svg
# création des partitions
fdisk /dev/sda
# fdisk codes: 82 → Swap, 83 → Linux

Formatage

Bash.svg
# ext4
mkfs.ext4 /dev/sdx0
# add a label
e2label /dev/sdx0 myLabel

# EFI
mkfs.fat -F 32 /dev/sdx0

# swap
mkswap /dev/sdx0

# fat 32
mkfs.vfat -F 32 -n LABEL /dev/sdx0

Montage des partitions

Bash.svg
# root
mount /dev/sdaX /mnt

# var
mkdir /mnt/var
mount /dev/sdaX /mnt/var

# home
mkdir /mnt/home
mount /dev/sdaX /mnt/home

# boot pour UEFI
mkdir /mnt/boot
mount /dev/sdaX /mnt/boot

Connexion au réseau

Nécessaire pour l'installation du système

Wifi

Installation du système de base

Bash.svg
pacstrap /mnt base base-devel linux linux-firmware

# activez la swap pour qu'elle soit détectée par genfstab
swapon /dev/sdx0

# Générer le fichier /etc/fstab
genfstab -U /mnt >> /mnt/etc/fstab
# -U  Use UUIDs for source identifiers
# -L  Use labels for source identifiers
# -p  Avoid printing pseudofs mounts (default behavior)

# Chrooter dans le nouveau système
arch-chroot /mnt

Configuration

/etc/hostname

/etc/hostname
MON_PC
Bash.svg
# équivalent: ajoute MON_PC au fichier /etc/hostname
hostnamectl set-hostname MON_PC

/etc/localtime

Bash.svg
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

/etc/locale.gen

/etc/locale.gen
# Décommentez la ligne suivante pour le français
fr_FR.UTF-8 UTF-8
Bash.svg
# Puis générez les locales
locale-gen

/etc/locale.conf

/etc/locale.conf
LANG=en_US.UTF-8
# LANG=fr_FR.UTF-8
# LANG=fr_CH.UTF-8

# LC_COLLATE: ordre de trie des fichiers
# . E  e  f  é
LC_COLLATE=C
# é  e  E  f
LC_COLLATE=fr_FR.UTF-8

# dates
LC_TIME=fr_FR.UTF-8
Format: langage[_pays][.encodage][@modification]
Bash.svg
# liste les locales disponibles
locale -a

/etc/vconsole.conf

/etc/vconsole.conf
KEYMAP=fr_CH-latin1
# KEYMAP=fr-latin9

# pour latin1
FONT=lat1-16
FONT_MAP=8859-1

# pour latin9
FONT=lat9w-16
FONT_MAP=8859-15
  • KEYMAP configure le mapping du clavier
  • FONT gère l'affichage des caractères spéciaux.
    • lat1 (Latin-1) pour l’Europe de l'ouest (8859 specification)
    • 16 pour la taille de la police
Bash.svg
# liste des keymap disponibles
ls /usr/share/kbd/keymaps/
localectl list-keymaps

# liste des fonts disponibles
ls /usr/share/kbd/consolefonts/

# chamgement temporaire
loadkeys fr-pc
  • lat0 → Latin-0, Latin-9, ISO 8859-15
  • lat9 → Latin-9 sans mapping unicode
  • lat9u → Latin-9 encodé dans une séquence non ISO
  • lat9v → Latin-9 avec mapping unicode intégral
  • lat9w → Latin-9 avec mapping unicode partiel, compatible Latin-1, Latin-9 et Unicode, €
/usr/share/kbd/consolefonts/README.lat9

/etc/mkinitcpio.conf

Bash.svg
# Créer le RAM disk
mkinitcpio -P

/etc/hosts

Fichier de traduction nom de domaine → adresse IP

Inutile d'ajouter le nom d'hôte au fichier /etc/hosts car systemd gère la résolution de noms d'hôte
/etc/hosts
# Ajouter le HOSTNAME du fichier /etc/hostname
127.0.0.1	localhost.localdomain	localhost MON_PC
::1		localhost.localdomain	localhost MON_PC

Autres

/etc/modprobe.conf Configuration des modules
/etc/pacman.conf Configuration des dépôts
/etc/pacman.d/mirrorlist Définition du site de téléchargement pour pacman

NumLock au boot

Bash.svg
sudo mkdir /etc/systemd/system/getty@.service.d
/etc/systemd/system/getty@.service.d/activate-numlock.conf
[Service]
ExecStartPost=/bin/sh -c 'setleds +num < /dev/%I'

Installer un boot loader

Mot de passe root

Bash.svg
passwd

Unmount and reboot

Bash.svg
# exit the chroot environment
exit

# unmount all the partitions
umount -R /mnt

# restart
reboot

Environnement de bureau

DHCP

Bash.svg
# listez les noms des périphériques réseau
ls /sys/class/net

# activez le service DHCP pour le périphériques réseau enp3s0
dhcpcd enp3s0

# activez au démarrage le service DHCP pour le périphériques réseau enp3s0
systemctl enable dhcpcd@enp3s0

Ajouter un utilisateur

Bash.svg
useradd -m -s /bin/bash utilisateur
# -m, --create-home
passwd utilisateur
usermod -G users,wheel,audio,optical,lp,scanner,log,power,floppy,storage,video utilisateur

Sudo

Bash.svg
# Installation
pacman -S sudo

# run command as another user
sudo -u <user> <command>

Configuration sudo

Bash.svg
# éditez le fichier /etc/sudoers avec la commande visudo
sudo EDITOR=nano visudo

# afficher la configuration de l'utilisateur courant
sudo -ll
# afficher la configuration d'un utilisateur
sudo -lU <user>
/etc/sudoers
# Reset environment by default
Defaults env_reset
# afficher des étoiles lors de la saisie du mdp
Defaults pwfeedback
# Set default EDITOR to nano, and do not allow visudo to use EDITOR/VISUAL.
Defaults editor=/usr/bin/nano, !env_editor

# changer les autorisations des utilisateurs
<user> <host>=(<user>:<group>) <commands>

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Autorise l'utilisateur 'nicolas' à utiliser 'sudo' depuis la machine locale
# HostName est le HOSTNAME définit dans /etc/hostname
nicolas HostName=(ALL) ALL
# L'option 'NOPASSWD: ALL' permet d'utiliser 'sudo' sans mot de passe
nicolas HostName=(ALL) NOPASSWD: ALL

# Autorise tous les utilisateurs du group 'wheel' à utiliser 'sudo'
%wheel ALL=(ALL) ALL NOPASSWD: ALL
# Le groupe wheel correspond aux utilisateurs ayant le droit de lancer la commande 'su'

# plus de saisie de mot de passe pour <USER_NAME>
Defaults:<USER_NAME> !authenticate
Quand un utilisateur correspond à plusieurs lignes, c'est la dernière qui sera utilisée.
Ajouter les nouvelles entrées à la fin du fichier.

Complétion avec bash

~/.bashrc
complete -cf sudo

Obtenir le chemin vers le dossier de l'utilisateur courant dans un script lancé avec sudo

Bash.svg
echo $(getent passwd $SUDO_USER | cut -d: -f6)

Date/Heure

Bash.svg
# Définir la date et l'heure réelle, décalage compris
sudo timedatectl set-time "2013-05-18 20:06:00"
Cela suppose que le fichier /etc/localtime ait déjà été configuré

https://wiki.archlinux.org/index.php/Time

Bash.svg
# changez le hardware clock en mode "localtime"
# même date/heure que le system clock
hwclock --localtime

# changez le hardware clock en mode "utc"
# utc: date/heure à GMT +0 sans notion de changement d'heure (DST = Daylight Saving Time)
# le system clock est donc calculé en prenant en compte la time zone et le changement d'heure
hwclock --utc

# changez durablement le mode de hardware clock
# editez le fichier /etc/rc.conf
HARDWARECLOCK="localtime"
HARDWARECLOCK="UTC"
Bash.svg
# affichez la hardware clock
hwclock --show

# définir la hardware clock
hwclock --set --date "MM/DD/YYYY hh:mm:ss"

# définir la hardware clock à partir de la system clock
hwclock --systohc

# affichez la system clock
date

# définir la system clock
date MMDDhhmmYYYY

# définir la system clock à partir de la hardware clock
hwclock --hctosys

Synchroniser la date au travers du réseau

Bash.svg
# activer au démarrage et démarrer
timedatectl set-ntp true

# status
timedatectl status
/etc/systemd/timesyncd.conf
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org

UTC in Windows

Mettre à 1 le DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Disque SSD: periodic TRIM

Bash.svg
# verify TRIM support
lsblk --discard
# TRIM support if DISC-GRAN (discard granularity) and DISC-MAX (discard max bytes) != 0

# periodic TRIM
sc-start fstrim.timer
sc-enable fstrim.timer

# list running timers
systemctl list-timers