« Archlinux installation » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications
 
(23 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Liens =
[[Category:ArchLinux]]
* [http://wiki.archlinux.fr/Installation#D.C3.A9marrage Aide française]<br>
= [https://wiki.archlinux.org/index.php/Installation_guide#Set_the_keyboard_layout Clavier fr] =
* [http://wiki.archlinux.org/index.php/Installation_Guide Installation Guide]
 
= Clavier fr =
<kode lang=bash>
<kode lang=bash>
loadkeys fr_CH
loadkeys fr_CH
Ligne 12 : Ligne 9 :
= [http://wiki.archlinux.org/index.php/Partitioning Partitionnement] =
= [http://wiki.archlinux.org/index.php/Partitioning Partitionnement] =
{| class="wikitable wtp wtmono1"  
{| class="wikitable wtp wtmono1"  
| / || 20-25 Go
| / || 30 Go
|-
| /var || 25 Go. Contient le cache pacman, comme celui-ci grossit il est intéressant de mettre {{boxx|/var}} dans une partition à part afin de ne pas bloquer le système si la partition n'a plus d'espace libre.<br>Éviter de le mettre sur un disque SSD car elle contient les logs ce qui génère beaucoup d'écriture.
|-
|-
| /var || 10-15 Go. Contient le cache pacman, comme celui-ci grossit il est intéressant de mettre {{boxx|/var}} dans une partition à part afin de ne pas bloquer le système si la partition n'a plus d'espace libre.<br>É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 || 15-20 Go
| /home || 40 Go
|-
|-
| [https://wiki.archlinux.org/index.php/Swap Swap] || taille égale à la RAM pour l'hibernation.
| [https://wiki.archlinux.org/index.php/Swap Swap] || 2/5 of the RAM size for [https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#About_swap_partition/file_size hibernation]
|-
|-
| [https://wiki.archlinux.org/index.php/Swap#Swap_file Swap file] || dans un fichier plutôt que dans une partition. Permet d'en modifier facilement la taille.
| [https://wiki.archlinux.org/index.php/Swap#Swap_file Swap file] || dans un fichier plutôt que dans une partition. Permet d'en modifier facilement la taille.
Ligne 58 : Ligne 57 :
= [[Formater_une_partition|Formatage]] =
= [[Formater_une_partition|Formatage]] =
<kode lang=bash>
<kode lang=bash>
# ext4
mkfs.ext4 /dev/sdx0
# add a label
e2label /dev/sdx0 myLabel
# EFI
# EFI
mkfs.fat -F 32 /dev/sda1
mkfs.fat -F 32 /dev/sdx0


# swap
# swap
mkswap /dev/sda2
mkswap /dev/sdx0
 
# ext4
mkfs.ext4 /dev/sda3


# fat 32
# fat 32
mkfs.vfat -F 32 -n LABEL /dev/sda4
mkfs.vfat -F 32 -n LABEL /dev/sdx0
</kode>
</kode>


Ligne 95 : Ligne 96 :
= Installation du système de base =
= Installation du système de base =
<kode lang=bash>
<kode lang=bash>
pacstrap /mnt base base-devel
pacstrap /mnt base base-devel linux linux-firmware
</kode>


= Configuration =
== /etc/fstab ==
<kode lang=bash>
# activez la swap pour qu'elle soit détectée par genfstab
# activez la swap pour qu'elle soit détectée par genfstab
swapon /dev/sda2
swapon /dev/sdx0
 
# Générer le fichier /etc/fstab
# Générer le fichier /etc/fstab
genfstab -p /mnt >> /mnt/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
# Chrooter dans le nouveau système
Ligne 110 : Ligne 111 :
</kode>
</kode>


= Configuration =
== /etc/hostname ==
== /etc/hostname ==
<filebox fn=/etc/hostname lang=bash>
<filebox fn=/etc/hostname lang=bash>
Ligne 120 : Ligne 122 :


== /etc/localtime ==
== /etc/localtime ==
Symlink vers <tt>/usr/share/zoneinfo/Europe/Paris</tt>
<kode lang=bash>
<kode lang=bash>
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
</kode>
</kode>


Ligne 159 : Ligne 160 :
== [https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Console /etc/vconsole.conf] ==
== [https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Console /etc/vconsole.conf] ==
<filebox fn=/etc/vconsole.conf lang=bash>
<filebox fn=/etc/vconsole.conf lang=bash>
KEYMAP=fr_CH-latin1
# KEYMAP=fr-latin9
# KEYMAP=fr-latin9
KEYMAP=fr_CH-latin1


# pour latin1
# pour latin1
Ligne 197 : Ligne 198 :
<kode lang=bash>
<kode lang=bash>
# Créer le RAM disk
# Créer le RAM disk
mkinitcpio -p linux
mkinitcpio -P
</kode>
</kode>


Ligne 234 : Ligne 235 :
<kode lang=bash>
<kode lang=bash>
passwd
passwd
</kode>
= Unmount and reboot =
<kode lang='bash'>
# exit the chroot environment
exit
# unmount all the partitions
umount -R /mnt
# restart
reboot
</kode>
</kode>


Ligne 265 : Ligne 278 :
# Installation
# Installation
pacman -S sudo
pacman -S sudo
# run command as another user
sudo -u <user> <command>
</kode>
</kode>


Ligne 288 : Ligne 304 :
# changer les autorisations des utilisateurs
# changer les autorisations des utilisateurs
<user> <host>=(<user>:<group>) <commands>
<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
# Autorise l'utilisateur 'nicolas' à utiliser 'sudo' depuis la machine locale
Ligne 378 : Ligne 397 :
{{boxx|HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal}}
{{boxx|HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal}}


= [https://wiki.archlinux.org/index.php/Solid_state_drive#Periodic_TRIM Disque SSD: periodic TRIM] =
<kode lang='bash'>
# verify TRIM support
lsblk --discard
# TRIM support if DISC-GRAN (discard granularity) and DISC-MAX (discard max bytes) != 0


[[Category:ArchLinux]]
# periodic TRIM
sc-start fstrim.timer
sc-enable fstrim.timer
 
# list running timers
systemctl list-timers
</kode>

Dernière version du 8 août 2023 à 16:49

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