# Formation Evolix

### installation Linux

## Méthode d'installation

- CD/ROM ou clé USB (machine physique ou virtuelle)
- Réseau, via boot PXE+DHCP+TFTP
- Image préinstallée par un hébergeur
- Conteneur minimal (LXC/Docker)

## Compatibilité du matériel

- Enjeu principal : carte réseau et controleur disque/RAID
- Si possible, test avec Live-CD
- `lspci -n` sur http://kmuto.jp/debian/hcl/ plus à jour :(
- Recherche Google avec "site:lists.debian.org/debian-boot"

## Choix pour un serveur

- Carte réseau : 1G ou 10G ?
- CPU Intel Xeon : fréquence ? nombre de cores ? https://www.cpubenchmark.net/
- Quantité de mémoire
- Importance du stockage :

- Local ou distant (NFS, iSCSI)
- Type : SATA, SAS, SSD ?
- Performance lecture/écriture : Mo/s, IOPS
- Gestion du cache

## Focus sur le stockage

## RAID

- RAID0
- RAID1
- RAID5
- RAID6
- RAID10
- RAID hardware ou logiciel ?

## Partitionnement

- Partitionnement msdos limité à 2To
- Partitionnement GPT
- Outils : fdisk, cfdisk, sfdisk, parted
- /boot / /var /usr /tmp 2xswap /srv /home
- systèmes de fichiers : ext3/ext4, reiserfs, xfs, btrfs

## RAID logiciel

    # apt install mdadm
    $ /sbin/mdadm -V
    $ /sbin/modinfo md_mod
    # mdadm --detail --scan
    # cat /proc/mdstat

`

    # mdadm --create /dev/md42 --chunk=64 --metadata=default --level=raid1 --raid-devices=2 /dev/sdy1 /dev/sdz1
    # mdadm --detail /dev/md42

`

## RAID logiciel (suite)

    Manipulation en cas de disque HS

    # sfdisk -d /dev/sda > /tmp/part.out
    # sfdisk -f /dev/sdz < /tmp/part.out
    # partprobe /dev/sdz

    # apt install gdisk
    # sgdisk -R=/dev/sdz /dev/sda
    # sgdisk -G /dev/sdz

## RAID logiciel (suite)

    Manipulation en cas de disque HS (suite)

    # mdadm /dev/md1 --add /dev/sdz1
    mdadm: added /dev/sdz1
    # mdadm /dev/md2 --add /dev/sdz2
    mdadm: added /dev/sdz2

    # cat /proc/mdstat
    Personalities : [raid1]
    md2: active raid1 sda1[1] sdz1[0]
          1893933820 blocks super 1.2 [2/1] [U_]
          [>....................]  recovery =  4.0% (75859776/1893933820) finish=493.5min speed=61391K/sec

## LVM

    # apt install lvm2
    # pvcreate /dev/sdz8
    # pvdisplay / pvs
    # vgcreate group1 /devdz8
    # vgdisplay / vgs
    # lvcreate -L5G -nfirstlvmvol group1
    # ls /dev/mapper/

## Réseau

- Fichiers standards : /etc/resolv.conf, /etc/hosts
- Configuration statique ou dynamique (DHCP) ?
- Configuration réseau : pas de standard sous Linux...
- apt install net-tool
- Outils réseaux de base : ifconfig, ping, route, ip, netstat, traceroute

## Installation de logiciels

- Méthode classique de compilation des sources
- Utilisation du système de packages

Les packages sont des binaires précompilés qui sont prêts à être installés de façon simple et rapide.
Les dépendances sont gérées, ainsi que la mise à jour et la suppression des packages déjà installés (varie selon les distributions).

## TP

### Installation Debian GNU/Linux

## Versions actuelles

- Debian GNU/Linux « Sid » = unstable
- Debian GNU/Linux 10 (« Buster ») = testing
- Debian GNU/Linux 9 (« Stretch ») = stable
- Debian GNU/Linux 8 (« Jessie ») = oldstable
- Debian GNU/Linux 7 (« Wheezy ») = oldoldstable

## Versions (suite)

- Debian GNU/Linux 6 (« Squeeze »)
- Debian GNU/Linux 5 (« Lenny »)
- Debian GNU/Linux 4 (« Etch »)
- Debian GNU/Linux 3.1 (« Sarge »)
- Debian GNU/Linux 3.0 (« Woody »)
- Debian GNU/Linux 2.2 (« Potato »)
- Debian GNU/Linux 2.1 (« Slink »)
- Debian GNU/Linux 2.0 (« Hamm »)
- Debian GNU/Linux 1.1 (« Buzz »)

##

- Boot sur CD/DVD ou USB
- Choix de la langue : anglais (en_US.UTF8)
- Réglage du clavier
- Réseau
- Partitionnement
- Choix des miroirs
- Mot de passe
- Choix de packages
- Installation GRUB

## console de debug à l'installation

    # lspci | grep Eth
    # ip addr show
    # dmesg | grep sd
    # cat /proc/cpuinfo

## Focus sur Vim

    # apt install vim
    # select-editor
    # update-alternatives --config editor
    # vi /etc/vim/vimrc
    let g:skip_defaults_vim = 1
    # vi ~/.vimrc

## Incontournables

    syntax on
    set background=dark
    set nocompatible

## Pour les devs

    set expandtab
    set shiftwidth=4
    set softtabstop=4
    set tabstop=4

## Vim basics

    Mode "commandes" <-> Mode "insertion"
             [Échap] <-> i

## Vim basics

    Mode "commandes"
    ----------------

    :w     enregistrer
    :wq    enregistrer et quitter
    :q!    quitter sans enregistrer
    gg     aller tout en haut
    G      aller tout en bas
    $      aller en fin de ligne
    /foo   chercher "foo"
    dd     supprimer (ou couper) la ligne actuelle
    yy     copie la ligne actuelle
    x      supprimer (ou couper) le caractère courant
    p      coller après le curseur
    P      coller avant le curseur
    v      mode visuel pour couper ou copier facilement
    rX     remplace le caractère courant par X
    u      annule la dernière commande
    Ctrl+r restaure la dernière commande

## Vim basics

    Passer en mode insertion
    ------------------------

    i    passer en mode insert avant le curseur
    a    passer en mode insert après le curseur
    I    passer en mode insert au début de la ligne
    A    passer en mode insert à la fin de la ligne
    o    sauter une ligne et passer en mode insert

    # apt install locales
    $ LANG=fr_FR.UTF8 /usr/bin/vimtutor

## Gestion des paquets dans Debian

### dpkg et APT

### dpkg

#### gestion bas-niveau (manipulation directe des paquets)

    $ dpkg -l
    # dpkg --unpack
    # dpkg --configure
    # dpkg -i
    # dpkg -r
    # dpkg -P
    $ dpkg -L
    $ dpkg -S
    $ dpkg -s
    # dpkg-reconfigure

### APT

#### gestion avancée (dépendances, mises à jour, conflits…)

    Sources de paquets :  /etc/apt/sources.list

    # netselect / apt-cdrom

    Interface pour APT : apt, apt-cache, apt-get, aptitude

    # apt update
    # apt upgrade
    # apt install paquet
    # apt remove paquet
    # apt purge paquet
    $ apt-cache show / search / -n search / depends / rdepends / policy

    Autres commandes :

    # apt -s install
    $ apt-file
    $ apt-show-versions
    # apt-listchanges
    # apt clean/autoclean
    # apt upgrade/full-upgrade
    $ apt changelog
    $ rmadison
    # apt-get check
    $ apt source
    # apt build-dep
    $ debuild -us -uc

    # vim /etc/apt/sources.list

    deb http://mirror.evolix.org/debian/ stretch main
    deb http://security.debian.org/ stretch/updates main
    deb http://mirror.evolix.org/debian/ stretch-updates main
    deb http://mirror.evolix.org/debian/ stretch main

    # dpkg-reconfigure -plow debconf
    # apt remove aptitude
    # vim /etc/apt/apt.conf.d/99custom

    APT::Install-Recommends "false";
    APT::Install-Suggests "false";
    Dpkg::Pre-Invoke { "mount -oremount,exec /tmp && mount -oremount,rw /usr || true"; };"
    Dpkg::Post-Invoke { "mount -oremount /tmp && mount -oremount /usr || true"; };"

    # vim /etc/fstab

    /dev/sda2  /        ext4  defaults,errors=remount-ro   0 1
    /dev/sda1  /boot    ext4  defaults                     0 2
    /dev/sda3  /var     ext4  defaults                     0 2
    /dev/sda5  /usr     ext4  defaults,ro                  0 2
    /dev/sda6  /tmp     ext4  defaults,noexec,nosuid,nodev 0 2
    /dev/sda7  none     swap  sw                           0 0
    /dev/sda8  none     swap  sw                           0 0
    /dev/sda9  /home    ext4  defaults,noexec,nosuid,nodev 0 2
    tmpfs      /var/tmp tmpfs defaults,noexec,nosuid,nodev 0 2

    On installe Postfix :

    # apt install postfix

    On renvoie tous les alias vers root :

    # getent passwd | cut -d":" -f1 | sed "s/$/: root/" > /etc/aliases
    # vim /etc/aliases
    # newaliases

    Installons les outils de base :

    # apt install ssh less mailx sudo munin htop iotop iftop

    Mesure des performances disque :

    # time dd if=/dev/zero of=/home/32gb bs=1024k count=32768
    # time dd if=/home/32gb of=/dev/null bs=1024k count=32768
    # time rm /home/32gb

    # apt install postgresql-contrib
    # /usr/lib/postgresql/9.6/bin/pg_test_fsync

    Mesure des performances réseau :

    # apt install iperf mtr-tiny

    $ ping -4 google.fr
    $ mtr -4 google.fr
    $ iperf -c debit.k-net.fr

## Comment choisir sa version de Linux ?

- Versions logiciels fixes : Apache / PHP / MySQL / etc.
- Version nue ou panel (cpanel, plesk) ?
- apt-get ou yum ?

## Récapitulatif

- Choix matériel
- Choix version de Linux
- Premières optimisations
- Validation des performances