Logo carnetderootxzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
mercredi 12 février 2020

:: CloudSHell2 - Installation d'Archlinux ::

Introduction

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

Préparation du module eMMC

Remise à zéro

$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8

Partitionnement

$ sudo fdisk /dev/mmcblk0

Créer une nouvelle partition primaire vide, en tapant les commandes suivantes :

  1. o : crée une nouvelle table de partition DOS
  2. n : crée une nouvelle partition avec les paramètres suivants :
    • p : type de partition primaire
    • 1 : première partition
    • 4096 : premier secteur de la partition
    • ENTER : dernier secteur de la partition (defaut)
  3. w : écrit la table de partition et quitte

Création du système de fichiers ext4

$ sudo mkfs.ext4 /dev/mmcblk0p1

Montage du système de fichiers

$ mkdir root  
$ sudo mount /dev/mmcblk0p1 root

Téléchargement et extraction du système de fichier root

$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-odroid-xu3-latest.tar.gz  
$ sudo bsdtar -xpf ArchLinuxARM-odroid-xu3-latest.tar.gz -C root

Flash du bootloader

$ cd root/boot/
$ sudo ./sd_fusing.sh /dev/mmcblk0

Démontage du système de fichiers

$ cd ../..
$ sudo umount root

Premier démarrage du système

  1. Insérer le module eMMC dans son emplacement sur la carte XU4
  2. Connecter le câble ethernet et brancher l'alimentation
  3. Attendre 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.lan
  4. Ouvrir une session root avec le mot de passe root

    $ su - root

Initialisation

Création du trouseau de clés et enrichissement des certificats des dépôts Arch Linux ARM

# pacman-key --init
# pacman-key --populate archlinuxarm

Gestion de paquets

Mise à jour du système

# pacman -Syu

Paquets supplémentaires

# pacman -S vim

Localisation

Timezone

# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

Horloge

hwclock --systohc

Cette commande permet de générer le fichier /etc/adjtime.

Locales

Décommenter la ligne fr_FR.UTF-8 UTF-8 dans le fichier /etc/locale.gen.

  • /etc/locale.gen

    fr_FR.UTF-8 UTF-8

Générer les locales :

 # locale-gen
 Generating locales...
 fr_FR.UTF-8... done
 Generation complete.

Configuration réseau

Nom d'hôte

  • /etc/hostname

    cloudshell
  • /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, 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.8

Configuration des disques

Le 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.

Partitionnement

# fdisk /dev/sda

Créer une nouvelle partition primaire sur le volume, en tapant les commandes suivantes :

  1. n : crée une nouvelle partition avec les paramètres suivants :
    • p : partition de type primaire
    • 1 : numéro de partition
    • ENTER (2048) : premier secteur par defaut
    • ENTER (dernier secteur) : dernier secteur par defaut
  2. w : applique les changements et quitte

Formatage de la partition

# mkfs.ext4 /dev/sda1

Synchronisation du contenu de /home

# 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/*

Montage de la partition et génération du fstab

# mount /dev/sda1 /home
# genfstab -p -U / > /etc/fstab

Ecran LCD

# 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

Ventilateur

Récepteur infrarouge

Références


:: ALSA ::

Liste des périphériques audio

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf2520000 irq 30

Liste des périphériques de capture

$ 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

Test du microphone

Enregistrement

$ arecord -d 10 /tmp/test-mic.wav

Lecture

$ aplay /tmp/test-mic.wav

Utilitaires Alsa

Mixeur Alsa

$ alsamixer

Enregistrmeent des paramètres

$ sudo alsactl store

:: Création et montage d'une partition chiffrée LUKS sur sdx1 ::

Note : remplacer sdx1 par le périphérique concerné

Installation de cryptsetup

$ sudo apt-get install cryptsetup

Créez une partition non-formatée (fdisk, gdisk, etc.)

Création de la partition chiffrée

$ sudo cryptsetup luksFormat /dev/sdx1

En précisant un format (exemple de chiffrement fort) :

$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdx1

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Création du répertoire de montage

$ sudo mkdir /mnt/sdx1_crypt

Formatage

$ sudo mkfs.ext4 /dev/mapper/sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Modifications des permissions pour que le répertoire appartienne à l'utilisateur courant et au groupe 'users'

$ sudo chown $USER:users /mnt/sdx1_crypt/ -R

Démontage du volume

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

Utilisation du volume

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Instructions pour démonter et fermer

Démontage

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

One-liner

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt && sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

ou, si on est root :

# echo 'passphrase' | cryptsetup luksOpen /dev/sdx1 sdx1_crypt && mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Fermeture

$ cd / && sudo umount /mnt/sdx1_crypt && sudo cryptsetup luksClose sdx1_crypt

ou, si on est root :

# cd / && umount /mnt/sdx1_crypt && cryptsetup luksClose sdx1_crypt