 
     
     
     
     
    Le fichier Xresources, habituellement ~/.Xresources, peut être utilisé pour configurer les applications X.
Xterm.termName: xterm
Xterm.vt100.locale: true
XTerm.vt100.metaSendsEscape: true
XTerm.vt100.backarrowKey: false
XTerm.ttyModes: erase ^?
XTerm.vt100.saveLines: 4096
XTerm.vt100.scrollBar: true
XTerm.vt100.scrollbar.width: 8
!-------------------------------------------------------------------------------
! Fonts
XTerm.vt100.faceName: DejaVu Sans Mono:size=9:antialias=true
XTerm.vt100.font: 7x13
!-------------------------------------------------------------------------------
! Colors
*background: #181818
*foreground: #c0c0c0
*cursorColor: #93a1a1
!! black dark/light
*color0: #121212
*color8: #2e3436
!! red dark/light
*color1: #a35b66
*color9: #ab6b74
!! green dark/light
*color2: #99ab6f
*color10: #acb972
!! yellow dark/light
*color3: #ca9733
*color11: #ccaa69
!! blue dark/light
*color4: #495d6e
*color12: #687987
!! magenta dark/light
*color5: #825969
*color13: #977381
!! cyan dark/light
*color6: #839191
*color14: #98a4a4
!! white dark/light
*color7: #e0e0e0
*color15: #e5e5e5 
    Préparer la clé usb
# dd if=archlinux.img of=/dev/sdX bs=16M && syncDémarrer sur la clé usb et attendre le prompt root
Pour lister les types de clavier français disponibles :
# find /usr/share/kbd/keymaps -iname '*fr*' -printf '%f\n'Chargement du clavier :
# loadkeys fr# wifi-menu# timedatectl set-ntp trueSur mon Thinkpad, la taille du disque SSD est de 128Go. 
1G sera réservé pour les partitions de boot (boot et EFI) et le reste intégralement chiffré.  
A noter que les tailles des partitions efi et boot ne sont pas optimisées, 100M serait suffisant pour efi et 250M pour boot...
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 119,2G  0 disk
├─sda1                  8:1    0   512M  0 part  /boot/efi
├─sda2                  8:2    0   512M  0 part  /boot
└─sda3                  8:3    0 118,2G  0 part
  └─cryptroot         254:0    0 118,2G  0 crypt
    ├─vg0-swap        254:1    0     4G  0 lvm   [SWAP]
    ├─vg0-root        254:2    0    20G  0 lvm   /
    └─vg0-home        254:3    0  94,2G  0 lvm   /homeUne partition de swap n'est pas nécessaire, mais peut s'avérer pratique si on souhaite utiliser les fonctions d'hibernation d'un portable. 
Dans ce cas, la taille de la partition doit être au moins égale à la quantité de RAM, sur mon Thinkpad -> 3915312 octets.
# cgdisk /dev/sdaCréer les partitions suivantes :
| Partition | Périphérique | Taille | Système | Hex code | 
|---|---|---|---|---|
| EFI | /dev/sda1 | 512M | vfat | ef00 | 
| boot | /dev/sda2 | 512M | ext2 | 8300 | 
| cryptroot | /dev/sda3 | Espace disque restant | luks | 8300 | 
# mkfs.vfat -F32 /dev/sda1
# mkfs.ext2 /dev/sda2# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y --use-random /dev/sda3
# cryptsetup luksOpen /dev/sda3 cryptrootCréer un groupe de volume (vg0) et les volumes logiques suivants :
| Volume logique | Taille | 
|---|---|
| swap | 4G | 
| root | 20G | 
| home | le reste | 
# pvcreate /dev/mapper/cryptroot
# vgcreate vg0 /dev/mapper/cryptroot
# lvcreate --size 4G vg0 --name swap
# lvcreate --size 20G vg0 --name root
# lvcreate --extents +100%FREE vg0 --name home# mkfs.ext4 /dev/mapper/vg0-root
# mkfs.ext4 /dev/mapper/vg0-home
# mkswap /dev/mapper/vg0-swap
# swapon /dev/mapper/vg0-swap# mount /dev/mapper/vg0-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/vg0-home /mnt/home/etc/pacman.d/mirrorlistDécommenter et déplacer en haut du fichier le miroir préféré.
Sauvegarder le mirrorlist existant et préparer une copie de travail
# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.testModifier le fichier mirrorlist.test et décommenter les miroirs à tester
Pour garder les miroirs français, générer le fichier à partir de la commande suivante :
# grep -E '^## France$' -A 1 /etc/pacman.d/mirrorlist | grep -vE '^-' > /etc/pacman.d/mirrorlist.testPour décommenter tous les serveurs :
# sed -i 's/^#\s*Server/Server/' /etc/pacman.d/mirrorlist.testTester les miroirs et générer le nouveau mirrorlist (ici avec les 5 miroirs les plus rapides uniquement) :
# rankmirrors -n 5 /etc/pacman.d/mirrorlist.test > /etc/pacman.d/mirrorlistInstallation du système de base et des outils nécessaires au premier démarrage.
# pacstrap /mnt base base-devel linux linux-firmware pacman-contrib# pacstrap /mnt grub-efi-x86_64 efibootmgr mkinitcpio lvm2 wpa_supplicant wireless_tools vim zip unzip alsa-utils lsb-release ntfs-3g dosfstools exfat-utils bash-completion man-db# genfstab -pU /mnt >> /mnt/etc/fstab# /tmp
tmpfs   /tmp    tmpfs   defaults,noatime,mode=1777  0   0Remplacer les options relatime par noatime sur les partitions sauf celle de boot (limite les accès et augmente donc la durée de vie d'un disque SSD)
# arch-chroot /mnt /bin/bash# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
# hwclock --systohc --utc/etc/locale.genDécommenter fr_FR.UTF-8 UTF-8 dans le fichier puis regénérer les locales :
# locale-gen/etc/locale.conf
LANG=fr_FR.UTF-8/etc/vconsole.conf
KEYMAP=fr/etc/hostname
myhostname/etc/hosts
127.0.0.1    localhost
::1          localhost
127.0.1.1    myhostname.domain.local myhostname# passwd# useradd -m -g users -G wheel username
# passwd username/etc/mkinitcpio.confAjouter les options suivantes avant 'filesystems' :
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
Au final, cela donne :
HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 resume filesystems keyboard fsck)# mkinitcpio -p linux# grub-installEditer 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) :
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:cryptroot resume=/dev/mapper/vg0-swap"# grub-mkconfig -o /boot/grub/grub.cfg# exit
# umount -R /mnt
# swapoff -a
# rebootAu 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.
Avec l'arrivée de la version 197 de systemd le nom des interfaces réseau est maintenant préfixé de en (ethernet), wl (wlan) ou ww (wwan), suivi par un identifiant généré automatiquement et prévisible. 
Le but étant de fixer le nom des interfaces entre chaque démarrage.
Pour lister les interfaces réseaux :
# ip link show
1: lo [...]
3: enp0s25 [...]
4: wlp3s0 [...]
6: wwp0s29u1u4i6 [...]Dans le cas où tous les outils ne sont pas encore installés ou si il n'y a pas de serveur dhcp sur le réseau, il peut s'avérer pratique de configurer une connexion manuellement.
Activer l'interface ethernet, ici enp0s25
# ip link set dev enp0s25 upAffecter une adresse ipv4 à l'interface, ici 192.168.0.60 dans le réseau 192.168.0.0/24 :
# ip address add 192.168.0.60/24 broadcast + dev enp0s25Ajouter la route par défaut pour accéder à internet, ici 192.168.0.254 :
# ip route add default via 192.168.0.254 dev enp0s25systemd offre maintenant la possibilité de gérer le réseau par lui-même sans outils supplémentaires. 
systemd-networkd permet de détecter, configurer et gérer les connexions réseaux; il peut aussi créer des connexions virtuelles.
Créer le fichier /etc/systemd/network/enp0s25.network
[Match]
Name=enp0s25
[Network]
DHCP=yes
[DHCP]
RouteMetric=10Activer et démarrer le service
# systemctl enable systemd-networkd.service
# systemctl start systemd-networkd.serviceCréer le fichier /etc/systemd/network/wlp3s0.network
[Match]
Name=wlp3s0
[Network]
DHCP=yes
[DHCP]
RouteMetric=20Créer le fichier /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
ap_scan=1
fast_reauth=1
country=FRAjouter un réseau
# wpa_passphrase ESSID passphrase >> /etc/wpa_supplicant/wpa_supplicant-wlp3s0.confSi votre clé wifi est complexe, il est parfois plus simple de la coller dans un fichier texte et d'importer la clé directement :
# wpa_passphrase ESSID `cat /mnt/usb/essid.pwd` >> /etc/wpa_supplicant/wpa_supplicant-wlp3s0.confNettoyer le fichier
La commande précédente ajoute à la fin du fichier une section network qui contient votre clé wifi en clair. 
Il est conseillé de supprimer cette ligne :
network={
    ssid="ESSID"
    #psk="passphrase"  <------- Supprimer cette ligne
    psk=d5b7ea2dda330fb59753d126e0b98bc968644423abb76bb52374a027718219c6
}Activer et démarrer les services
# systemctl enable systemd-networkd.service
# systemctl enable wpa_supplicant@wlp3s0.service
# systemctl start systemd-networkd.service
# systemctl start wpa_supplicant@wlp3s0.servicesystemd-resolved est un service systemd fournissant la résolution de noms aux applications locales.
Dans notre cas, le plus simple (et recommandé) est d'utiliser le fichier de stub DNS :
# ln -s /run/systemd/resolved/stub-resolv.conf /etc/resolv.confActiver et démarrer le service systemd-resolved.service
# systemctl enable systemd-resolved.service
# systemctl start systemd-resolved.servicePour configurer un environnement graphique basé sur openbox, cf. Configuration environnement graphique avec Openbox
 
    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, pour ma part /dev/mmcblk0
$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8$ sudo fdisk /dev/mmcblk0Créer une nouvelle partition primaire vide, en tapant les commandes suivantes :
$ sudo mkfs.ext4 /dev/mmcblk0p1$ mkdir root  
$ sudo mount /dev/mmcblk0p1 root$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-odroid-xu3-latest.tar.gz  
$ sudo bsdtar -xpf ArchLinuxARM-odroid-xu3-latest.tar.gz -C root$ cd root/boot/
$ sudo ./sd_fusing.sh /dev/mmcblk0$ cd ../..
$ sudo umount rootAttendre la fin du démarrage du système puis se connecter en ssh avec le user alarm et le mot de passe alarm
$ ssh alarm@cloudshell.domaine.lanOuvrir une session root avec le mot de passe root
$ su - rootCréation du trouseau de clés et enrichissement des certificats des dépôts Arch Linux ARM
# pacman-key --init
# pacman-key --populate archlinuxarm# pacman -Syu# pacman -S vim# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtimeCette commande permet de générer le fichier /etc/adjtime.
Décommenter la ligne fr_FR.UTF-8 UTF-8 dans le fichier /etc/locale.gen.
/etc/locale.gen
fr_FR.UTF-8 UTF-8Générer les locales :
 # locale-gen
 Generating locales...
 fr_FR.UTF-8... done
 Generation complete./etc/hostname
cloudshell/etc/hosts
127.0.0.1       localhost
::1             localhost
127.0.1.1       cloudshell.domaine.lan cloudshellComme il s'agit d'un serveur installé dans mon réseau local, je préfère lui assigner une adresse ip fixe tout en gardant la possibilité de demander une adresse ip dynamique (si je le déplace par exemple).
J'ai donc créé un profil statique en ajoutant les lignes suivantes à la fin du fichier /etc/dhcpcd.conf : 
/etc/dhcpcd.conf
# Static profile
interface eth0
static ip_address=192.168.0.2/24 
static routers=192.168.0.254
static domain_name_servers=192.168.0.254 8.8.8.8Le CloudShell2 permet de connecter deux disques SATA au format 3.5" et supporte les technologies RAID0, RAID1, SPAN ainsi que l'accès direct (mode PM).
Dans ma configuration, j'ai branché deux disques SATA de 3To et configuré le 'DIP switch' en RAID1.
Le volume RAID est accessible via /dev/sda et sera monté sur /home.
# fdisk /dev/sdaCréer une nouvelle partition primaire sur le volume, en tapant les commandes suivantes :
# mkfs.ext4 /dev/sda1# mkdir /mnt/data
# mount /dev/sda1 /mnt/data
# rsync -avz /home/ /mnt/data/Une fois les données synchronisées (et vérifiées !), on peut nettoyer le répertoire /home :
# rm -rf /home/*# mount /dev/sda1 /home
# genfstab -p -U / > /etc/fstab# echo "options fbtft_device name=hktft9340 busnum=1 rotate=270" > /etc/modprobe.d/cloudshell.conf
# echo "spi_s3c64xx" >> /etc/modules-load.d/fbtft_device.conf
# echo "spidev" >> /etc/modules-load.d/fbtft_device.conf
# echo "fbtft_device" >> /etc/modules-load.d/fbtft_device.conf 
    $ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf2520000 irq 30$ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 0: PCH [HDA Intel PCH], périphérique 0: CX20590 Analog [CX20590 Analog]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0$ arecord -d 10 /tmp/test-mic.wav$ aplay /tmp/test-mic.wav$ alsamixer$ sudo alsactl store 
    Note : remplacer sdx1 par le périphérique concerné
$ sudo apt-get install cryptsetupCréez une partition non-formatée (fdisk, gdisk, etc.)
$ sudo cryptsetup luksFormat /dev/sdx1En précisant un format (exemple de chiffrement fort) :
$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdx1$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt$ sudo mkdir /mnt/sdx1_crypt$ sudo mkfs.ext4 /dev/mapper/sdx1_crypt$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt$ sudo chown $USER:users /mnt/sdx1_crypt/ -R$ cd / && sudo umount /mnt/sdx1_crypt    $ sudo cryptsetup luksClose sdx1_crypt$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt$ cd / && sudo umount /mnt/sdx1_crypt    $ sudo cryptsetup luksClose sdx1_crypt$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt && sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_cryptou, si on est root :
# echo 'passphrase' | cryptsetup luksOpen /dev/sdx1 sdx1_crypt && mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt$ cd / && sudo umount /mnt/sdx1_crypt && sudo cryptsetup luksClose sdx1_cryptou, si on est root :
# cd / && umount /mnt/sdx1_crypt && cryptsetup luksClose sdx1_crypt