Cible : Raspberry pi zero, installation 2018-04-09 NOOBS_V2_7 complète
Desktop : OpenSUSE Leap 42.3, environnement graphique KDE3 (si si !)

L'installation initiale est supposé faite et le RPi0 fonctionne bien. Il est connecté à une alimentation extérieure (adaptateur 5v dont les fils sont soudés sur la carte). Au premier lancement, configurer le RPI0 pour communication via SSH (Menu "framboise" -> "Préférences" -> "Configuration du Raspberry Pi").
Néophytes : cette distribution se fait sur une carte micro-SD formatée VFAT sur laquelle vous copiez les fichiers une fois NOOBS_v2_7_0.zip décompressé. À la première mise sous tension, le système réorganise la carte SD en créant 4 partitions :
- label : boot, montée par le desktop en /micro-SD-RPi0/boot, type vfat
- label : RECOVERY, montée par le desktop en /micro-SD-RPi0/RECOVERY, type vfat
- label : root, montée par le desktop en /micro-SD-RPi0/root, type ext4
- label : SETTINGS, montée par le desktop en /micro-SD-RPi0/SETTINGs, type ext4


Sur le desktop, monter les partitions "root" et "boot" de la carte SD.

-------- 1 - /micro-SD-RPi0/boot/config.txt : ajouter la ligne suivante à la fin du fichier
Code:
        dtoverlay=dwc2
-------- 2 - /micro-SD-RPi0/boot/cmdline.txt : ajouter "modules-load=dwc2,g_ether " derrière "rootwait ", ce qui donne pour moi (j'ai inhibé la liaison série) :
Code:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether splash plymouth.ignore-serial-consoles
-------- 3 - /micro-SD-RPi0/root/etc/network/interfaces : ajouter en fin de fichier :
Code:
hotplug usb0
iface usb0 inet static
    address 192.168.7.2
    netmask 255.255.255.0
    network 192.168.7.0
    broadcast 192.168.7.255
    gateway 192.168.7.1
    dns-nameservers 190.113.220.18 190.113.220.51 190.113.220.54
-------- 4 - Modification du fichier /micro-SD-RPi0/ssh/sshd_config :
Code:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
UseDNS no
-------- 5 - Modification du fichier /micro-SD-RPi0/ssh/ssh_config :
NOTE : à priori, cette configuration est inutile, puisqu’on ne lance pas ssh depuis le RPi0.
Code:
Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
"Démonter" la carte SD et la replacer dans le RPi0, alimenter.

-------- 6 - Sur le desktop : "yast -> Système : Paramètres réseau"
Configurer la connexion usb0 en 192.168.7.3 - /24 - lin-dktop-usb
Résultat chez moi:
Code:
nom                                                 Adresse IP   Périphérique Remarque
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Linux-USB Ethernet/RNDIS Gadget                     192.168.7.3
Pont réseau                                         192.168.1.3  br1
RTL8111/8168/8411 PCIe Gigabit Ethernet Controller  NONE         eth0         asservi dans br1
VT6105/VT6106D [Rhine-III]                          192.168.0.3  eth1
-------- 7 - Sur le desktop : "yast -> Services réseau : Noms d’hôtes"
Ajouter "192.168.7.2 rpi0"
Néophytes : il s’agit de dire au desktop à quelle adresse IP se trouve le RPi0,
arbtrairement nommé "rpi0".


-------- pré-8 - Créer une clef ssh (si nécessaire) :
Code:
desktop:~$ rm /home/nomuser/.ssh/* ; # virer toutes les clés existantes
desktop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nomuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/nomuser/.ssh/id_rsa.
Your public key has been saved in /home/nomuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Blqo0xVmK4XkRZlEwrXZZ07jSix8KixKKinBXQEHSHE nomuser@desktop
The key's randomart image is:
+---[RSA 2048]----+
|.ooE=B@o         |
...
|=                |
+----[SHA256]-----+
-------- 8 - Envoyer notre clef pour connexion rapide et sécurisée en "root" :
Code:
desktop:~$ ssh-copy-id root@rpi0
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/pserru/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@rpi0’s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ’root@rpi0’"
and check to make sure that only the key(s) you wanted were added.
-------- post-8 - Modifier MAINTENANT SEULEMENT le fichier /micro-SD-RPi0/ssh/sshd_config :
changer "PermitRootLogin" à "without-password". Vous pouvez (sinon devez) faire ça une fois connecté via SSH depuis votre desktop.
Néophites : Il s’agit de ne permettre la connexion SSH en "root" uniquement grâce à une clef (à priori, celle que nous avons envoyée au point 8).
Vous pouvez le faire via SSH + VI ou 1

-------- 9 - Vérification :
Code:
lin-pat:~$ ssh pi@rpi0
-------- 10 - Vérification :
Code:
lin-pat:~$ ssh root@rpi0
-------- 11 - Pour notre confort avec bash :
# 40 # alternate mappings for "page up" and "page down" to search the history
Code:
vi /etc/inputrc ; # Décommenter les lignes 41 et 42
# Le script commenté ci-dessus se trouve facilement sur internet
Code:
vi /etc/bash.bashrc ; # Tout effacer et coller le texte suivant
[ -z "$PS1" ] && return
HISTCONTROL=ignoredups:ignorespace
shopt -s histappend
HISTSIZE=1000
HISTFILESIZE=2000
shopt -s checkwinsize
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi
    rouge="\[\033[31m\]"
    vert="\[\033[32m\]"
    jaune="\[\033[33m\]"
    bleu="\[\033[34m\]"
    magenta="\[\033[35m\]"
    cyan="\[\033[1;36m\]"
    gris="\[\033[1;37m\]"
    blanc="\[\033[00m\]"
    h_rouge="\[\033[1;31m\]"
    h_vert="\[\033[1;32m\]"
    h_jaune="\[\033[1;33m\]"
    h_bleu="\[\033[1;34m\]"
    h_magenta="\[\033[1;35m\]"
    h_cyan="\[\033[1;36m\]"
    h_gris="\[\033[1;37m\]"
    h_blanc="\[\033[1;00m\]"
if [ "$HOME" = "/root" ]; then
    PS1="$h_rouge\u$blanc@$h_magenta\h$blanc:$blanc\w$blanc# "
else
    PS1="$h_jaune\u$blanc@$h_cyan\h$blanc:$blanc\w$blanc$ "
fi
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac
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
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
1Néophytes : pour ceux qui utilise KDE, vous pouvez éditer ces fichiers en utilisant kate : menu "fichier : ouvrir" puis saisissez
"sftp://root@rpi0/etc/bash.bashrc" ou "sftp://root@rpi0/etc/inputrc" dans le champ "Emplacement : "


Une relecture attentive par un modérateur. Si un utilisateur de cette page a des difficultés, qu'il n'hésite pas à me contacter par MP (Mail Personnel sur ce site).

Le desktop n'est pas encore configuré pour faire passerelle internet : le RPi0 n'y a donc pas accès. Dans sa page, Christophe Baess propose d'exécuter un script qui exécute des commandes "iptables", N'existe-t-il pas un moyen plus "utilisateur" de faire ça (via yast, donc). Je vais essayer son script, mais je crains pour la stabilité de mon système : ai-je tort ?

NB: l'essenciel de cette page est également visible ici.