Documentation d'installation de Trisquel
This commit is contained in:
parent
e098d2faf7
commit
8e2e887529
|
@ -2,51 +2,437 @@
|
||||||
|
|
||||||
Le but est d'intégrer une nouvelle machine physique dans le SI.
|
Le but est d'intégrer une nouvelle machine physique dans le SI.
|
||||||
|
|
||||||
## Configuration initiale la machine
|
## Installer un microprogramme libre
|
||||||
- installer Libreboot ;
|
|
||||||
- installer une Debian stable, branche main ;
|
|
||||||
- créer le sudoer, sans mot de passe, authentification ssh clé publique : admin666 ;
|
|
||||||
- créer un utilisateur cominfra, sans mot de passe, authentification ssh clé publique ;
|
|
||||||
- remplacer le noyau par Linux-libre-lts à l'aide du [tutoriel de la FSFLA](https://www.fsfla.org/ikiwiki/selibre/linux-libre/freesh.en.html).
|
|
||||||
|
|
||||||
|
## Installation du système d'exploitation FSDG (Trisquel)
|
||||||
|
|
||||||
## Installer les paquets de base
|
### Préparation du média d'installation
|
||||||
|
|
||||||
|
Récupérer l'image [Trisquel NetInstall](https://trisquel.info/fr/wiki/%EF%BB%BFinstallation-de-trisquel-netinstall-en-mode-texte), qui est la plus adaptée à [l'installation de serveurs](https://trisquel.info/en/wiki/install-trisquel-server).
|
||||||
|
|
||||||
|
A la date d'écriture de cette procédure, on utilise Trisquel version 11 (Aramo) via la console série, sans écran.
|
||||||
|
|
||||||
|
### Installation du système
|
||||||
|
|
||||||
|
#### Démarrer le média d'installation sur la console série
|
||||||
|
|
||||||
|
Utiliser `TAB` pour éditer la ligne de commande du menu de démarrage du média et remplacer
|
||||||
|
dans la ligne de commande du noyau `vga=788` par `console=ttyS0,115200n8`.
|
||||||
|
|
||||||
|
Supprimer également la directive `quiet`.
|
||||||
|
|
||||||
|
Appuyer sur entrée pour continuer le démarrage.
|
||||||
|
|
||||||
|
#### Configuration de la langue et position
|
||||||
|
|
||||||
|
Installer avec la langue anglaise et la locale `en_US.UTF8`.
|
||||||
|
|
||||||
|
Indiquer le lieu en France, utiliser le miroir allemand.
|
||||||
|
|
||||||
|
#### Création de l'utilisateur d'administration
|
||||||
|
|
||||||
|
Créer l'utilisateur `admin666` avec un mot de passe fort.
|
||||||
|
|
||||||
|
Enregistrer ce mot de passe dans le coffre (section infra générale).
|
||||||
|
|
||||||
|
#### Partitionnement des disques
|
||||||
|
|
||||||
|
Partitionner selon le schéma voulu pour la machine spécifique. Par exemple avec du RAID logiciel sur deux disques, une partition de démarrage (en `ext2`), une partition racine et une partition de stockage de machine virtuelle.
|
||||||
|
|
||||||
|
#### Sélection des paquets de base de l'installateur
|
||||||
|
|
||||||
|
Choisir d'installer `postfix`, `openssh` et `Trisquel console environment`.
|
||||||
|
|
||||||
|
##### Configurer `postfix`
|
||||||
|
|
||||||
|
Indiquer de configurer `postfix` en mode local.
|
||||||
|
|
||||||
|
##### Configurer `GRUB`
|
||||||
|
|
||||||
|
Installer GRUB sur le premier disque contenant une partition de démarrage.
|
||||||
|
|
||||||
|
### Configuration critique du système
|
||||||
|
|
||||||
|
#### Programme de démarrage (`grub`)
|
||||||
|
|
||||||
|
Au premier démarrage du système, afin de pouvoir accéder à la console série, modifier la ligne de commande du noyau dans l'interface de GRUB avec la touche `e`. Ajouter la directive `console=ttyS0,115200n8` à la ligne `linux`.
|
||||||
|
|
||||||
|
Une fois le système démarré, modifier le fichier `/etc/default/grub` :
|
||||||
```
|
```
|
||||||
sudo apt install etckeeper molly-guard tig lm-sensors fancontrol screen emacs-nox vrms needrestart iotop htop curl ncdu iptraf tig unzip
|
GRUB_DEFAULT=0
|
||||||
|
GRUB_TIMEOUT=5
|
||||||
|
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
|
||||||
|
GRUB_CMDLINE_LINUX_DEFAULT="libata.force=noncq nohz=on console=ttyS0,115200n8"
|
||||||
|
GRUB_CMDLINE_LINUX=""
|
||||||
|
|
||||||
|
GRUB_TERMINAL=serial
|
||||||
|
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
|
||||||
```
|
```
|
||||||
|
|
||||||
_NB: penser à configurer fancontrol ensuite._
|
Effectuer ensuite :
|
||||||
|
|
||||||
## Paramétrage réseau
|
|
||||||
|
|
||||||
Il faut corriger l'IPV6 statique à l'image de l'IPV4 choisie en éditant
|
|
||||||
̀`/etc/network/interfaces`.
|
|
||||||
|
|
||||||
On doit aussi nommer la machine :
|
|
||||||
```
|
```
|
||||||
sudo hostnamectl set-hostname NOM@DOMAINE
|
update-grub
|
||||||
|
update-initramfs -u
|
||||||
```
|
```
|
||||||
|
|
||||||
On configure ensuite le routage :
|
#### Programme de redémarrage (`kexec`)
|
||||||
|
|
||||||
|
Les démarrages gérés par le BIOS sont parfois longs et risqués, on préfère utiliser kexec.
|
||||||
|
|
||||||
|
Installer avec :
|
||||||
|
```
|
||||||
|
apt install kexec-tools.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Reconfiguration de la langue
|
||||||
|
|
||||||
|
Utiliser la commande `dpkg-reconfigure locales` et sélectionner uniquement `fr_FR.UTF8`.
|
||||||
|
|
||||||
|
Redémarrer à l'issue de cette commande.
|
||||||
|
|
||||||
|
|
||||||
|
### Installation des paquets de base
|
||||||
|
```
|
||||||
|
apt install etckeeper molly-guard tig lm-sensors fancontrol screen emacs-nox needrestart iotop htop atop usbtop curl ncdu iptraf tig unzip ufw ifupdown net-tools bridge-utils
|
||||||
|
```
|
||||||
|
|
||||||
|
### Paramétrage réseau
|
||||||
|
|
||||||
|
Il faut passer de netplan.io à networking :
|
||||||
|
```
|
||||||
|
apt purge netplan.io
|
||||||
|
```
|
||||||
|
|
||||||
|
Éditer le service de résolution DNS dans `/etc/systemd/resolved.conf`, et modifier la ligne `#DNS=` en `DNS=192.168.0.1` (correspondant à l'adresse du routeur).
|
||||||
|
|
||||||
|
Relancer le service :
|
||||||
|
```
|
||||||
|
systemctl restart systemd-resolved
|
||||||
|
```
|
||||||
|
|
||||||
|
Supprimer le fichier `/etc/resolv.conf` et le regénérer :
|
||||||
|
```
|
||||||
|
rm /etc/resolv.conf
|
||||||
|
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Configurer dans `/etc/network/interfaces` :
|
||||||
|
```
|
||||||
|
auto lo br0
|
||||||
|
iface lo inet loopback
|
||||||
|
allow-hotplug ens10
|
||||||
|
allow-hotplug ens9
|
||||||
|
|
||||||
|
# bridge for vm
|
||||||
|
iface br0 inet static
|
||||||
|
bridge_ports ens10
|
||||||
|
address 192.168.1.2
|
||||||
|
gateway 192.168.0.1
|
||||||
|
broadcast 192.168.255.255
|
||||||
|
netmask 255.255.0.0
|
||||||
|
|
||||||
|
iface br0 inet6 static
|
||||||
|
bridge_ports ens10
|
||||||
|
address 2001:910:1028:0::2/128
|
||||||
|
gateway 2001:910:1028::1
|
||||||
|
```
|
||||||
|
|
||||||
|
Configurer ensuite le routage sur le routeur :
|
||||||
|
|
||||||
- aller sur https://routeur.libre-en-communs.org/cgi-bin/luci/admin/network/dhcp ;
|
- aller sur https://routeur.libre-en-communs.org/cgi-bin/luci/admin/network/dhcp ;
|
||||||
- onglet Static Leases, bouton Add :
|
- onglet Static Leases, bouton Add :
|
||||||
- Hostname : nom de PM en domaine ;
|
- Hostname : nom de PM en domaine,
|
||||||
- MAC : dispo sur la machine ;
|
- MAC : dispo sur la machine,
|
||||||
- IPv4 : choisir une 192.168.0.x (réservé infra générale, pour les machines physiques).
|
- IPv4 : choisir une 192.168.0.x (réservé infra générale, pour les machines physiques).
|
||||||
- valider les changements.
|
- valider les changements.
|
||||||
|
|
||||||
## Configurer le courriel
|
Redémarrer la machine à la fin de ces étapes.
|
||||||
|
|
||||||
|
### Configuration SSH (`OpenSSH`)
|
||||||
|
|
||||||
|
Créer l'utilisateur `cominfra` pour servir de proxy de connexion, sans mot de passe :
|
||||||
```
|
```
|
||||||
sudo apt install postfix
|
adduser cominfra
|
||||||
```
|
```
|
||||||
|
|
||||||
Il faut installer postfix en mode satellite et le faire envoyer les courriels vers mail.a-lec.org.
|
Placer toutes les clés publiques nécessaires dans `/home/cominfra/.ssh/authorized_keys` et
|
||||||
|
dans `/home/admin666/.ssh/authorized_keys`.
|
||||||
## Installer et configurer la virtualisation
|
|
||||||
|
|
||||||
|
Configurer le serveur OpenSSH avec le fichier `/etc/ssh/sshd_config` :
|
||||||
```
|
```
|
||||||
sudo apt install libvirt
|
Port 222
|
||||||
|
AddressFamily any
|
||||||
|
ListenAddress 0.0.0.0
|
||||||
|
ListenAddress ::
|
||||||
|
PubkeyAuthentication yes
|
||||||
|
PasswordAuthentication no
|
||||||
|
PermitEmptyPasswords no
|
||||||
|
ChallengeResponseAuthentication no
|
||||||
|
UsePAM yes
|
||||||
|
AllowAgentForwarding yes
|
||||||
|
AllowTcpForwarding yes
|
||||||
|
GatewayPorts yes
|
||||||
|
X11Forwarding no
|
||||||
|
PrintMotd no
|
||||||
|
TCPKeepAlive yes
|
||||||
|
PermitTunnel yes
|
||||||
|
AcceptEnv LANG LC\_* GIT\_*
|
||||||
|
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||||
|
Match User admin666 Address *,!192.168.0.0/16,!::1,!127.0.0.1
|
||||||
|
DenyUsers admin666
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Configuration de `sudo`
|
||||||
|
|
||||||
|
Utiliser la commande :
|
||||||
|
```
|
||||||
|
sudo visudo
|
||||||
|
```
|
||||||
|
|
||||||
|
Modifier la ligne `%sudo ALL=(ALL:ALL) ALL` en `%sudo ALL=(ALL:ALL) NOPASSWD:ALL`.
|
||||||
|
|
||||||
|
### Configuration du pare-feu (`UFW`)
|
||||||
|
|
||||||
|
Autoriser les ports 222, 25, 5665, 68, 7789, 16514, 49152, 49153, 3493 :
|
||||||
|
```
|
||||||
|
ufw allow 25
|
||||||
|
ufw allow 68
|
||||||
|
ufw allow 222
|
||||||
|
ufw allow 3493
|
||||||
|
ufw allow 5665
|
||||||
|
ufw allow 7789
|
||||||
|
ufw allow 16514
|
||||||
|
ufw allow 49152
|
||||||
|
ufw allow 49153
|
||||||
|
```
|
||||||
|
|
||||||
|
Activer le pare-feu
|
||||||
|
```
|
||||||
|
ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration du MTA (`Postfix`)
|
||||||
|
|
||||||
|
Il faut configurer le MTA pour qu'il relaie les courriels vers mail.a-lec.org.
|
||||||
|
|
||||||
|
Éditer `/etc/postfix/transport` :
|
||||||
|
```
|
||||||
|
a-lec.org :
|
||||||
|
* discard:
|
||||||
|
```
|
||||||
|
|
||||||
|
Éditer `/etc/postfix/virtual` :
|
||||||
|
```
|
||||||
|
@localhost admin@a-lec.org
|
||||||
|
@anthea.libre-en-communs.org admin@a-lec.org
|
||||||
|
```
|
||||||
|
|
||||||
|
Valider les changements :
|
||||||
|
```
|
||||||
|
postmap /etc/postfix/transport
|
||||||
|
postmap /etc/postfix/virtual
|
||||||
|
postfix reload
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration du moteur de virtualisation (`KVM + libvirt`)
|
||||||
|
|
||||||
|
Installer les paquets :
|
||||||
|
```
|
||||||
|
apt install qemu-kvm libvirt-daemon-system libvirt-clients
|
||||||
|
```
|
||||||
|
|
||||||
|
Créer un nouvel utilisateur dédié : virt-user
|
||||||
|
```
|
||||||
|
adduser virt-user
|
||||||
|
adduser virt-user libvirt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration de `htop`
|
||||||
|
|
||||||
|
Éditer le fichier `~/.config/htop/htoprc` pour les comptes `admin666` et `root` :
|
||||||
|
```
|
||||||
|
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||||
|
sort_key=0
|
||||||
|
sort_direction=1
|
||||||
|
tree_sort_key=0
|
||||||
|
tree_sort_direction=1
|
||||||
|
hide_kernel_threads=1
|
||||||
|
hide_userland_threads=0
|
||||||
|
shadow_other_users=0
|
||||||
|
show_thread_names=0
|
||||||
|
show_program_path=1
|
||||||
|
highlight_base_name=0
|
||||||
|
highlight_megabytes=1
|
||||||
|
highlight_threads=1
|
||||||
|
highlight_changes=0
|
||||||
|
highlight_changes_delay_secs=5
|
||||||
|
find_comm_in_cmdline=1
|
||||||
|
strip_exe_from_cmdline=1
|
||||||
|
show_merged_command=0
|
||||||
|
tree_view=0
|
||||||
|
tree_view_always_by_pid=0
|
||||||
|
header_margin=1
|
||||||
|
detailed_cpu_time=0
|
||||||
|
cpu_count_from_one=0
|
||||||
|
show_cpu_usage=1
|
||||||
|
show_cpu_frequency=0
|
||||||
|
show_cpu_temperature=0
|
||||||
|
degree_fahrenheit=0
|
||||||
|
update_process_names=0
|
||||||
|
account_guest_in_cpu_meter=0
|
||||||
|
color_scheme=0
|
||||||
|
enable_mouse=1
|
||||||
|
delay=15
|
||||||
|
left_meters=LeftCPUs2 Blank Memory DiskIO NetworkIO Systemd
|
||||||
|
left_meter_modes=1 2 1 2 2 2
|
||||||
|
right_meters=RightCPUs2 Blank CPU LoadAverage Tasks Uptime
|
||||||
|
right_meter_modes=1 2 1 2 2 2
|
||||||
|
hide_function_bar=0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration de `bash`
|
||||||
|
|
||||||
|
Éditer `/etc/skel/.bashrc` et `/home/admin666/.bashrc` :
|
||||||
|
|
||||||
|
<details>
|
||||||
|
```
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||||
|
# for examples
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# don't put duplicate lines or lines starting with space in the history.
|
||||||
|
# See bash(1) for more options
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
|
||||||
|
# append to the history file, don't overwrite it
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
|
||||||
|
# check the window size after each command and, if necessary,
|
||||||
|
# update the values of LINES and COLUMNS.
|
||||||
|
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
|
||||||
|
# make less more friendly for non-text input files, see lesspipe(1)
|
||||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# set variable identifying the chroot you work in (used in the prompt below)
|
||||||
|
if [ -z "\[\033[01;32m\]=(^-^)=${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||||
|
debian_chroot=$(cat /etc/debian_chroot)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color|*-256color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='\[\033[01;32m\]=(^-^)=${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='=(^-^)=${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;=(^-^)=${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# colored GCC warnings and errors
|
||||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
# Add an "alert" alias for long running commands. Use like so:
|
||||||
|
# sleep 10; alert
|
||||||
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
|
# Alias definitions.
|
||||||
|
# You may want to put all your additions into a separate file like
|
||||||
|
# ~/.bash_aliases, instead of adding them here directly.
|
||||||
|
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||||
|
if [ -f ~/.bash_aliases ]; then
|
||||||
|
. ~/.bash_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
if ! shopt -oq posix; then
|
||||||
|
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||||
|
. /usr/share/bash-completion/bash_completion
|
||||||
|
elif [ -f /etc/bash_completion ]; then
|
||||||
|
. /etc/bash_completion
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
Éditer le fichier `/root/.bashrc` :
|
||||||
|
```
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
|
||||||
|
# Note: PS1 and umask are already set in /etc/profile. You should not
|
||||||
|
# need this unless you want different defaults for root.
|
||||||
|
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
|
||||||
|
PS1='\[\033[01;32m\]=(^-^)=${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
|
||||||
|
# You may uncomment the following lines if you want `ls' to be colorized:
|
||||||
|
# export LS_OPTIONS='--color=auto'
|
||||||
|
# eval "`dircolors`"
|
||||||
|
alias ll='ls $LS_OPTIONS -l'
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
if ! shopt -oq posix; then
|
||||||
|
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||||
|
. /usr/share/bash-completion/bash_completion
|
||||||
|
elif [ -f /etc/bash_completion ]; then
|
||||||
|
. /etc/bash_completion
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# more aliases
|
||||||
|
if [ -f ~/.bash_aliases ]; then
|
||||||
|
. ~/.bash_aliases
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue