xzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
dimanche 03 octobre 2021
:: Gestion des disques sous Linux ::
Lister les disques
$ lsblk | grep disk
sda 8:0 0 119,2G 0 disk
sdb 8:16 0 931,5G 0 disk
sdc 8:32 0 149,1G 0 disk
Vérification de la santé d'un disque
smartmontools
Afficher les informations du disque
Entre autres informations, cette commande permet de vérifier si le disque supporte S.M.A.R.T.
$ sudo smartctl -i /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
[...]
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
Ici, on voit que le disque supporte S.M.A.R.T. mais qu'il est désactivé. Pour l'activer :
$ sudo smartctl -s on /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
Lancer un test court
$ sudo smartctl -t short /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sun Oct 3 11:18:14 2021 CEST
Use smartctl -X to abort test.
Consulter les résultats du test
Pour vérifier si le test s'est bien déroulé :
$ sudo smartctl -H /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Afficher un rapport complet du disque
Ici, les paramètres à regarder sont Reallocated_Sector_Ct et Current_Pending_Sector au niveau de la colonne RAW_VALUE.
Si la colonne RAW_VALUE contient une valeur différente de zéro, il est temps de penser à sauvegarder votre disque.
Pour information, le paramètre Reallocated_Sector_Ct correspond au nombre de secteurs défectueux ayant été réalloués et le paramètre Current_Pending_Sector au nombre de secteurs défectueux en attente de réallocation.
Toutes les opérations décrites ci-dessous ont été faites à partir d'un portable sous Archlinux et du reader/writer eMMC se branchant sur le port SD (via un adaptateur micro-SD).
La commande lsblk permet de récupérer le nom du périphérique, ici /dev/sdb :
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
[...]
sdb 8:16 1 116,5G 0 disk
Préparation du module eMMC
Remise à zéro
$ sudo dd if=/dev/zero of=/dev/sdb bs=1M count=8
Partitionnement
$ sudo fdisk /dev/sdb
Créer une nouvelle partition primaire vide, en tapant les commandes suivantes :
o : crée une nouvelle table de partition DOS
n : crée une nouvelle partition avec les paramètres suivants :
p : type de partition primaire
ENTER : numéro de partition (1 par défaut)
4096 : premier secteur
ENTER : dernier secteur (par défaut)
w : écrit la table de partition et quitte
Création du système de fichiers ext4
$ sudo mkfs.ext4 /dev/sdb1
Montage du système de fichiers
$ mkdir root
$ sudo mount /dev/sdb1 root
Téléchargement et extraction du système de fichier root
Attention : Aucun assistant AUR n'est officiellement supporté par les développeurs d'Arch Linux pour la simple raison qu'AUR est un dépôt de paquets non officiellement supportés.
Trizen
trizen est un client pour AUR, léger et écrit en Perl.
Installation de trizen
$ git clone https://aur.archlinux.org/trizen.git
$ cd trizen
$ makepkg -si
# vi /etc/hostname
cloudshell
# vi /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 cloudshell.domaine.lan cloudshell
Adresse IP
Comme il s'agit d'un serveur installé dans mon réseau local, j'utilise DHCP pour lui assigner une adresse IP (bail statique sur le routeur) et pour diffuser différentes options. Par sécurité, un profil statique est créé dans le cas où le routeur ne serait pas disponible.
# vi /etc/dhcpcd.conf
Ajouter/modifier les lignes suivantes :
# Allow users of this group to interact with dhcpcd via the control socket.
controlgroup wheel
# Inform the DHCP server of our hostname for DDNS.
hostname
# Persist interface configuration when dhcpcd exits.
persistent
# vendorclassid is set to blank to avoid sending the default of
# dhcpcd-<version>:<os>:<machine>:<platform>
vendorclassid
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu
# Most distributions have NTP support.
option ntp_servers
# Rapid commit support.
option rapid_commit
# A ServerID is required by RFC2131.
require dhcp_server_identifier
# Generate Stable Private IPv6 Addresses based from the DUID
slaac private
noipv4ll
# Static profile
profile static_eth0
static ip_address=192.168.0.2/24
static routers=192.168.0.254
static domain_name_servers=192.168.0.254 1.1.1.1
# Fallback to static profile
interface eth0
fallback static_eth0
Installation du gestionnaire de RAID du controleur JMS56X
# wget https://wiki.odroid.com/_media/accessory/add-on_boards/xu4_cloudshell2/raidmgr_static_cloudshell2.zip
# unzip raidmgr_static_cloudshell2.zip
# chmod a+x raidmgr_static
# ./raidmgr_static
JMS56X HW RAID Manager V8.0.0.1
(C) 2008~2011 JMicron Tech, Corp. Command Line Interface RAID Manager For JMS56X.
JMS56X>
Valid commands set are:
=======================
GC ------------------------------------- Get avail JMS56X
DC C[n] -------------------------------- Display controller info
SR C[n] -------------------------------- Show avail RAID info
SS C[n] -------------------------------- Show avail SATA info
SM C[n] D[n] --------------------------- Show disk S.M.A.R.T. info
CR C[n] D[0,..,2] R0|R1|JBOD ----------- Create RAID
DR C[n] R[n] --------------------------- Delete RAID
SF C[n] -------------------------------- Show firmware version
SA C[n] -------------------------------- Set alarm mute
GR C[n] R[n] --------------------------- Get rebuilding percentage
ID C[n] D[n] --------------------------- Identify disk
ST C[n] R[n] timer --------------------- Set standby timer
AS C[n] D[n] R[n] ---------------------- Add spare disk
DS C[n] D[n] R[n] ---------------------- Delete spare disk
EX ------------------------------------- Exit
JMS56X>
#!/bin/bash
REFRESH="1"
DISK_TEMP_THRESHOLD="45"
CPU_TEMP_THRESHOLD="60"
FAN_CHANGED="*"
get_disk_dev_info() {
# Pull disk info from /dev/sd*
fdisk -l > disks.txt 2>/dev/null
SATA=($(awk '/^\/dev\/sd/ {printf "%s ", $1}' disks.txt))
rm disks.txt
}
get_disk_temperature() {
for i in "${!SATA[@]}"
do
# declare and assign variable seperately to avoid masking return value
DISK_TEMP[$i]=" (IDLE)"
local t
t=$(smartctl -a "${SATA[$i]}" -d sat | grep "Temp")
if (( $? == 0 ))
then
local temp=$(echo $t | awk '{print $10}')
DISK_TEMP[$i]="$temp"
else
DISK_TEMP[$i]=""
fi
done
}
get_cpu_temperature() {
for i in {0..4}
do
_t=$(($(</sys/class/thermal/thermal_zone${i}/temp) / 1000))
CPU_TEMP[$i]="$_t"
done
}
fan_on() {
i2cset -y 1 0x60 0x05 0x00
}
fan_off() {
i2cset -y 1 0x60 0x05 0x05
}
handle_fan() {
for i in "${!DISK_TEMP[@]}"
do
if (( "${DISK_TEMP[$i]}" > "${DISK_TEMP_THRESHOLD}" ))
then
if [ "${FAN_CHANGED}" != "1" ]
then
echo "Turning fan on because disk $i has hit the threshold"
fi
FAN_CHANGED="1"
fan_on
return
fi
done
for i in "${!CPU_TEMP[@]}"
do
if (( "${CPU_TEMP[$i]}" > "${CPU_TEMP_THRESHOLD}" ))
then
if [ "${FAN_CHANGED}" != "1" ]
then
echo "Turning fan on because CPU $i has hit the threshold"
fi
FAN_CHANGED="1"
fan_on
return
fi
done
# No fuss, fan is off
if [ "${FAN_CHANGED}" != "0" ]
then
echo "All temps nominal, turning fan off"
FAN_CHANGED="0"
fi
fan_off
}
while true; do
get_disk_dev_info
get_disk_temperature
get_cpu_temperature
handle_fan
sleep ${REFRESH}
done
On rend le script exécutable :
$ sudo chmod a+x /bin/cloudshell-fan
Service systemd
$ sudo vim /etc/systemd/system/cloudshell-fan.service
Le CloudShell2 permet de connecter deux disques SATA au format 3.5" par défaut (et 2.5" avec adaptateur), et supporte les technologies RAID0, RAID1, SPAN ainsi que l'accès direct (mode PM).
Dans ma configuration, j'ai branché deux disques SATA 2To en 2.5" et configuré le 'DIP switch' en accès direct (mode PM).
Ces deux disques seront configurés via LVM pour former un volume logique unique de 4To.
Note : Sur un serveur on devrait dans l'idéal créer un volume RAID1 avec deux disques, mais ici on est limité au niveau matériel, en effet le CLoudshell2 connecte les deux disques SATA en USB via UART et à l'heure actuelle la synchronisation des deux disques provoque de nombreuses erreurs fatales, jusqu'à rendre USB indisponible. Les solutions de contournement consistent à limiter la taille et la bande passante allouée à la synchronisation, ce qui induit des pertes de performances non négligeables. Je préfère donc pour le moment sauvegarder les données de manière régulière sur un autre mini-serveur de mon réseau dédié à la sauvegarde (un raspberry Pi avec un disque externe de 4To).
Préparation des disques
$ sudo gdisk /dev/sda
Supprimer toutes les données GPT et MBR du disque, en tapant les commandes suivantes :
x : accéder aux fonctionnalités avancées
z : détruire les données GPT et MBR
Partitionnement
$ sudo gdisk /dev/sda
Créer une nouvelle partition de type 'Linux LVM' (8e00) sur le disque, en tapant les commandes suivantes :
n : créer une nouvelle partition avec les paramètres suivants :
Partition number (1-128, default 1):
First sector (34-3907029134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-3907029134, default = 3907029134) or {+-}size{KMGTP}:
Hex code or GUID (L to show codes, Enter = 8300): 8e00
w : appliquer les changements et quitter
Répéter l'opération sur le 2ème disque (/dev/sdb).
Vérification
$ sudo fdisk -l
[...]
Disk /dev/sda: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Device Start End Sectors Size Type
/dev/sda1 2048 3907029134 3907027087 1.8T Linux LVM
Disk /dev/sdb: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Device Start End Sectors Size Type
/dev/sdb1 2048 3907029134 3907027087 1.8T Linux LVM
for color in {0..255}; do
tput setab $color
echo -n "$color "
done
tput sgr0
echo
~/.bashrc
Equivalence de couleurs
Couleur
Code
Black
0;30
Blue
0;34
Green
0;32
Cyan
0;36
Red
0;31
Purple
0;35
Brown
0;33
Light Gray
0;37
Dark Gray
1;30
Light Blue
1;34
Light Green
1;32
Light Cyan
1;36
Light Red
1;31
Light Purple
1;35
Yellow
1;33
White
1;37
Eléments basiques
Code
Elément affiché
\a
Echappement
\d
Date (Sun Jun 20)
\e
Caractère 'Bell'
\h
Nom d'hôte (hostname)
\H
Nom d'hôte complet (hostname.domain.tld)
\j
Nombre de process lancés par le shell
\l
Nom du terminal
\n
Retour à la ligne
\r
Retour chariot
\u
Nom d'utilisateur
\v
Version de Bash
\w
Répertoire courant
\W
Chemin complet du répertoire courant
!
Numéro d'historique de la commande en cours
Exemples
Couleur du prompt en rouge
PS1='\[\033[31m\][\u@\h \W]\$\[\033[0m\] '
Couleur du prompt en bleu
PS1='\[\033[34m\][\u@\h \W]\$\[\033[0m\] '
Bashrc
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
####################
# SHELL OPTS
###############
#PS1='[\u@\h \W]\$ '
PS1='\[\033[34m\][\u@\h \w]\$\[\033[0m\] '
####################
# ENV
###############
# Editor
export EDITOR=vim
####################
# ALIAS
###############
# Colorization of outputs
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ip='ip --color=auto'
alias dmesg='dmesg --color=always'
# Commands alias
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias vi='vim'
# Tricks & Useful aliases
alias cd..='cd ..'
alias env='env | sort'
# -> if the second argument is an alias, it will get expanded prior to passing to sudo
alias sudo='sudo '
alias keygen='keygen -C "$(whoami)@$(uname -n)-$(date -I)"'
Dans cet exemple, on va créer une simple application web avec Dancer2.
Pour le déploiement, on se basera sur Starman pour la gestion de l'application avec Nginx en frontal.
Installation de Dancer
Préparation de l'environnement
Afin de sécuriser l'application, on fait tourner Starman (notre serveur d'application) sous une identité propre que nous appelerons starman.
La seule manière d'y accéder sera via l'utilisateur root.
$ sudo useradd starman
Brewing Perl
Afin de séparer la distribution Perl installée sur le système de celle que l'on souhaite utiliser pour lancer notre application, nous utiliserons PerlBrew, un outil de gestion des versions de Perl.
Liste des versions Perl disponibles à l'installation
# su - starman
$ perlbrew available
perl-5.33.2
perl-5.32.0
perl-5.30.3
[...]
Installation
$ perlbrew install perl-5.32.0
Vérification de la version installée (deux méthodes)
Lister les versions installées :
$ perlbrew list
perl-5.32.0
Lister les versions disponibles (remarquez le "i" devant la version installée) :
$ perlbrew available
perl-5.33.2
i perl-5.32.0
perl-5.30.3
[...]
Utilisation
Pour cette session uniquement
$ perlbrew use perl-5.32.0
Comme version par défaut à l'ouverture de session
$ perlbrew switch perl-5.32.0
Installation des modules CPAN
Avant tout, on installe un client cpan. Pour cela, on utilise la commande PerlBrew permettant d'installer cpanminus.
$ perlbrew install-cpanm
Puis on installe les modules :
$ cpanm Dancer2 Starman Daemon::Control
Création de l'application
La méthode la plus rapide pour créer son application est d'utiliser la commande dancer2 qui met en place l'arborescence des répertoires et fichiers à partir d'un squelette standard :
$ dancer2 gen -a MonApp
Cette commande crée le répertoire MonApp ainsi qu'un ensemble de sous-répertoires et fichiers.
Pour lancer l'application, exécuter la commande suivante :
$ cd MonApp/
$ plackup -R lib bin/app.psgi
Watching lib bin/lib bin/app.psgi for file updates.
HTTP::Server::PSGI: Accepting connections at http://0:5000/
L'application (vide) est dorénavant disponible à l'adresse http://AdresseServeur:5000. (Ctrl+C pour stopper)
Mise en place du service systemd Starman
Pour lancer automatiquement notre application, on crée le fichier /etc/systemd/system/starman.service avec le contenu ci-dessous :
$ sudo vi /etc/systemd/system/starman.service
[Unit]
Description=Starman
After=syslog.target
[Service]
Type=forking
ExecStart=/home/starman/perl5/perlbrew/perls/perl-5.32.0/bin/starman --listen 127.0.0.1:5001 --env development --daemonize /home/starman/apps/MonApp/bin/app.psgi
Restart=always
[Install]
WantedBy=multi-user.target
où /dev/sdx correspond au périphérique USB (Attention à ne pas se tromper !!)
Démarrage de l'installation
Démarrer sur la clé et sélectionner "Arch Linux install medium (x86_64, UEFI)" dans le menu de démarrage. On arrive sur la ligne de commande avec un prompt root.
Agencement du clavier
# loadkeys fr
Pour lister les agencements disponibles :
# find /usr/share/kbd/keymaps/ -type f
Vérifier que l'on est en mode EFI. Si c'est bien le cas, la commande ci-dessous doit afficher les variables EFI :
# efivar -l
Connexion réseau wifi
Utiliser la commande iwctl fournie par iwd (iNet wireless daemon) :
# iwctl device list ---> Récupérer le nom de l'interface (ici, wlan0)
# iwctl station wlan0 scan ---> Scan wifi
# iwctl station wlan0 get-networks ---> Lister les réseaux wifi détectés
# iwctl --passphrase passphrase station wlan0 connect myssid ---> Connexion au point d'accès
# ping www.google.com ---> Test de la connexion
Partitionner l'espace disque.
Schéma de partitionnement cible :
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238,5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 512M 0 part /boot
└─sda3 8:3 0 237,5G 0 part
└─cryptroot 254:0 0 G 0 crypt
├─vg0-swap 254:1 0 G 0 lvm [SWAP]
├─vg0-root 254:2 0 G 0 lvm /
└─vg0-home 254:3 0 G 0 lvm /home
# mount /dev/mapper/arch-root /mnt
# mkdir /mnt/boot && mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi && mount /dev/sda1 /mnt/boot/efi
# mkdir /mnt/home && mount /dev/mapper/arch-home /mnt/home
Sélection des miroirs
Automatique
Sur le système Live, lorsqu'on active la connexion internet, reflector met à jour la liste des miroirs en choisissant les 70 derniers miroirs synchronisés et en les classant par leur bande passante (le plus rapide en haut).
Manuelle
Décommenter et déplacer le miroir préféré en haut du fichier /etc/pacman.d/mirrorlist.
Préférer un miroir géographiquement proche (vérifier sur http://archlinux.org/mirrorlist/).
Installation du système et des outils nécessaires au premier démarrage.
Système de base
# pacstrap /mnt base base-devel linux linux-firmware
Ajouter les options suivantes avant 'filesystems' :
keymap : chargement du clavier
encrypt : gestion du chiffrement
lvm2 : gestion des volumes logiques
resume : gestion du mode hibernation
Note : quelque soit l'ordre choisi, pensez toujours à placer keymap devant encrypt, sous peine de vous retrouver avec un clavier qwerty pour taper la passphrase permettant de déchiffrer le volume principal
Editer le fichier /etc/default/grub et modifier la variable GRUB_CMDLINE_LINUX afin de préciser le périphérique chiffré (cryptroot) et le périphérique d'hibernation (partition de swap) :
Au démarrage la passphrase est demandée afin de déchiffrer le volume puis on accède à la console.
On a maintenant un système minimal installé et fonctionnel.
Gestion d'écran HiDPI (High Dots Per Inch)
L'écran de l'UX303LN est un écran 13.3" avec une résolution QuadHD+ de 3200x1800 pixels.
Les éléments affichés apparaissent donc trés petits (boutons, polices, etc.), à la limite du lisible.
Vous trouverez ci-dessous une liste (non exhaustive) de modifications permettant de profiter pleinement d'une haute résolution sans avoir besoin d'une loupe :-)
Paramètres X
En l'absence d'un environnement de bureau manipulant les paramètres X (Gnome, KDE, Xfce, etc.), il faut définir ces paramètres manuellement dans le fichier ~/.Xresources :
Note : Adaptez le paramètre Xft.dpi à votre définition d'écran (ici 192dpi).
XTerm
Ici aussi on modifie le fichier ~/.Xresources pour préciser la police désirée, sa taille et sa résolution :
# Police XTerm
xterm*faceName:DejaVu Sans Mono:size=11:antialias=false
xterm*font: 7x13
Note : Modifiez ces paramètres selon vos desideratas.
Firefox et Thunderbird
Dans Firefox, aller dans les préférences avancées (about:config) et modifier le paramètre layout.css.devPixelsPerPx à 2 (défaut : -1).
Dans le cas d'une utilisation multi-écran, il est possible d'utiliser le module Firefox AutoHiDPI (Non testé).
Dans Thunderbird, les paramètres avancés sont disponibles sous Edition / Préférences / Avancé / Editeur de configuration.
Installation de yaourt (Yet AnOther User Repository Tool)
Important : Il est vivement conseillé de se documenter sur AUR afin d'en comprendre les mécanismes et d'utiliser yaourt, ainsi que ABS et makepkg.
Méthode 1 - Installation depuis AUR
curl -O https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg -si
cd ..
curl -O https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -si
cd ..
Méthode 2 - Installation depuis le dépôt archlinux.fr
Editer le fichier /etc/pacman.conf et ajouter les lignes suivantes :
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
Puis, installer le paquet yaourt :
pacman -Sy yaourt
vendredi 12 février 2021
:: Installation d'Archlinux et Openbox sur Asus Zenbook ::
Wireless AC, Bluetooth, Lan (avec adapteur USB-Ethernet)
Ports
3 x USB3.0, lecteur de carte SD, HDMI, mini-DisplayPort
Batterie
50 Wh
Dimensions
Epaisseur 21mm avec les pieds (18mm sans)
Poids
1.5 kg (3.3 pounds)
Extras
Clavier retro-éclairé, haut-parleurs Bang and Olufsen
Préparation de l'installation
Télécharger la dernière iso sur le site de téléchargement Arch Linux et vérifier son intégrité à l'aide des sommes de contrôle MD5 ou SHA1 :
$ md5sum archlinux-2015.01.01-dual.iso
ou
$ sha1sum archlinux-2015.01.01-dual.iso
puis comparer la somme de contrôle obtenue à celle présente sur la page de téléchargement.
Créer la clé USB
$ sudo dd if=archlinux.iso of=/dev/sdx bs=512k
où /dev/sdx correspond au périphérique USB (Attention à ne pas se tromper !!)
Démarrer sur la clé et sélectionner "Arch Linux archiso x86_64 UEFI" dans le menu de démarrage. On arrive sur la ligne de commande avec un prompt root.
Avant toute chose, modifier l'agencement du clavier (par défaut US-qwerty) :
# loadkeys fr
Pour lister les agencements disponibles :
# find /usr/share/kbd/keymaps/ -type f
Vérifier que l'on est en mode EFI. Si c'est bien le cas, la commande ci-dessous doit afficher les variables EFI :
# efivar -l
Etablir une connexion internet. N'ayant pas de port ethernet, ni de câble USB-Ethernet, j'ai configuré le wifi :
# iw dev ---> Récupérer le nom de l'interface (ici, wlp2s0)
# ip link set wlp2s0 up ---> Activation de l'interface
# wifi-menu wlp2s0 ---> Connexion au point d'accès
# ping www.google.com ---> Test de la connexion
Partitionner l'espace disque. N'ayant pas l'utilité d'un Windows 8.1, j'ai supprimé l'intégralité du disque.
Pour cela, utiliser j'utilise gdisk, un équivalent de fdisk pour GPT (GUID Partition Table), nécessaire pour le mode EFI.
L'écran de l'UX303LN est un écran 13.3" avec une résolution QuadHD+ de 3200x1800 pixels.
Les éléments affichés apparaissent donc trés petits (boutons, polices, etc.), à la limite du lisible.
Vous trouverez ci-dessous une liste (non exhaustive) de modifications permettant de profiter pleinement d'une haute résolution sans avoir besoin d'une loupe :-)
Paramètres X
En l'absence d'un environnement de bureau manipulant les paramètres X (Gnome, KDE, Xfce, etc.), il faut définir ces paramètres manuellement dans le fichier ~/.Xresources :
Note : Adaptez le paramètre Xft.dpi à votre définition d'écran (ici 192dpi).
XTerm
Ici aussi on modifie le fichier ~/.Xresources pour préciser la police désirée, sa taille et sa résolution :
# Police XTerm
xterm*faceName:DejaVu Sans Mono:size=11:antialias=false
xterm*font: 7x13
Note : Modifiez ces paramètres selon vos desideratas.
Firefox et Thunderbird
Dans Firefox, aller dans les préférences avancées (about:config) et modifier le paramètre layout.css.devPixelsPerPx à 2 (défaut : -1).
Dans le cas d'une utilisation multi-écran, il est possible d'utiliser le module Firefox AutoHiDPI (Non testé).
Dans Thunderbird, les paramètres avancés sont disponibles sous Edition / Préférences / Avancé / Editeur de configuration.
Installation de yaourt (Yet AnOther User Repository Tool)
Important : Il est vivement conseillé de se documenter sur AUR afin d'en comprendre les mécanismes et d'utiliser yaourt, ainsi que ABS et makepkg.
Méthode 1 - Installation depuis AUR
curl -O https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg -si
cd ..
curl -O https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -si
cd ..
Méthode 2 - Installation depuis le dépôt archlinux.fr
Editer le fichier /etc/pacman.conf et ajouter les lignes suivantes :
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
$ perlbrew list
* perl-5.22.0
perl-5.21.6
perl-5.20.1
perl-5.18.4
perl-5.16.3
Installation d'une version particulière
$ perlbrew install 5.32.1
Installing /home/starman/perl5/perlbrew/build/perl-5.32.1/perl-5.32.1 into ~/perl5/perlbrew/perls/perl-5.32.1
This could take a while. You can run the following command on another shell to track the status:
tail -f ~/perl5/perlbrew/build.perl-5.32.1.log
Mise à jour vers la dernière version mineure (ici 5.22.0 vers 5.22.4)
Script upgrade-perl
$ perlbrew upgrade-perl
Upgrading perl-5.22.0 to 5.22.4
Fetching perl 5.22.4 as /home/starman/perl5/perlbrew/dists/perl-5.22.4.tar.bz2
Download http://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 to /home/starman/perl5/perlbrew/dists/perl-5.22.4.tar.bz2
Installing /home/starman/perl5/perlbrew/build/perl-5.22.4 into ~/perl5/perlbrew/perls/perl-5.22.0
This could take a while. You can run the following command on another shell to track the status:
tail -f ~/perl5/perlbrew/build.perl-5.22.4.log
Pour utiliser perlbrew dans un script, il faut definir PERLBREW_ROOT et PERLBREW_HOME avant de charger l'environnement bashrc.
#!/bin/bash
## Variables d'environnement requises
export PERLBREW_ROOT=/opt/perlbrew
export PERLBREW_HOME=/tmp/.perlbrew
source ${PERLBREW_ROOT}/etc/bashrc
## Utilisation de la version 5.14.1
perlbrew use 5.14.1
perl /app/mon-application
## Utilisation de la version 5.12.3
perlbrew use 5.12.3
perl /app/mon-application
Gestion des modules CPAN
Installation d'un client CPAN
Pour installer des modules CPAN additionnels, on utilisera cpanm, une alternative à cpan offrant une meilleure compatibilité avec perlbrew.
La méthode habituelle d'installation (cpan -i App::cpanminus) installe bien cpanm, mais uniquement dans l'environnement perlbrew utilisé. Dans ce cas, si on en change, plus de cpanm ('cpanm is not found'...).
Afin d'éviter ce désagrément, Perlbrew fournit un script pour installer cpanm sous ~/perl5/perlbrew/bin, il sera ainsi disponible quelque soit la version de Perl utilisée.
$ perlbrew install-cpanm
Installation de modules
$ cpanm List::Util
Lister les modules installés
$ perlbrew list-modules
Mettre à jour les modules installés
$ perlbrew list-modules | perlbrew exec cpanm
Migrer les modules installés dans la version de perl courante vers une autre (ici 5.16.3).
# cl-info -u service
# cl-info -u unix
All users in LDAP for service Unix
+------+---------+-----------------------------+---------------+----------------+
| ID | Login | Name | Primary group | Home directory |
+------+---------+-----------------------------+---------------+----------------+
| 900 | client | Client unix workstation | 900 | /dev/null |
| 901 | admin | Administrator samba service | 544 | /dev/null |
| 1001 | d_admin | Domain Admin | 512 | /home/d_admin |
+------+---------+-----------------------------+---------------+----------------+
(3 rows)
# cl-info -u samba
All users in LDAP for service Samba
+---------+-----------------------------+------+----------+
| Login | Name | Lock | Password |
+---------+-----------------------------+------+----------+
| client | Client unix workstation | Yes | No |
| admin | Administrator samba service | No | Yes |
| d_admin | Domain Admin | No | Yes |
+---------+-----------------------------+------+----------+
(3 rows)
Détails d'un utilisateur
# cl-info -U utilisateur service
# cl-info -U admin unix
Information about user admin for service Unix
+----------------------+-----------------------------+
| Field | Value |
+----------------------+-----------------------------+
| ID | 901 |
| Login | admin |
| Name | Administrator samba service |
| Lock | No |
| Visible | No |
| Primary group | 544 |
| Supplementary groups | 544 |
| Home directory | /dev/null |
| Shell | /bin/false |
| Password | No |
| Last change password | 16.01.2020 |
| Jabber ID | admin@willy.greenbee.lan |
| Mail | No |
+----------------------+-----------------------------+
(13 rows)
# cl-info -U admin samba
Information about user admin for service Samba
+----------------------+----------------------------------------+
| Field | Value |
+----------------------+----------------------------------------+
| Login | admin |
| Name | Administrator samba service |
| Lock | No |
| Password | Yes |
| Last change password | 16.01.2020 |
| Primary group | Administrators |
| Supplementary groups | Administrators |
| Share directory | /var/calculate/server-data/samba/share |
+----------------------+----------------------------------------+
(8 rows)
--hostname spécifier le nom d'hôte
--iface configurer l'interface réseau
--route configurer la route par défaut
--dns spécifier le serveur dns
cl-setup-update
cl-setup-update permet de configurer la mise à jour automatique.
# cl-setup-update -a ON -I 12h --clean-pkg ON -o ON
Paramètres de mises à jour :
-a ON vérifier les mises à jour automatiquement (enabled by default)
-I 12h spécifier l'intervalle de vérification de mises à jour ('list' pour afficher les valeurs possibles)
--clean-pkg ON supprimer les archives logicielles obsolètes
-o ON actualiser les autres overlays
:: Boîte à outils Calculate Directory Server ::
Conflit lors de la mise à jour de Perl
Une mise à jour système peut parfois provoquer des conflits lors de la mise à jour de Perl. Dans ce cas, mettre à jour selon la méthode conseillée :