Créer un client léger RDP basé sur Raspberry Pi

Avec la popularité croissante des mini-PC tels que Raspberry Pi et des clones similaires, il y avait beaucoup de cas pour leur utilisation dans l'infrastructure informatique de l'entreprise, la maison / chalet / garage intelligent et d'autres applications.

L'un des cas pratiques et souhaitables est l'utilisation de RPi en tant que client léger qui se connecte via RDP aux systèmes Windows.

Si vous êtes intéressé par la façon de mettre en place un tel endroit sur la base du Raspberry Pi, et de manière à "configurer et oublier" - bienvenue au chat. Il y a une image toute faite pour les complètement paresseux (voir section 6.B).

Une image pour attirer l'attention


Plus précisément, dans mon expérience (spécialiste de l'automatisation de la comptabilité / gestion), j'ai souvent dû organiser des lieux de travail dont le seul but était d'accéder à un programme (principalement jaune), à ​​une suite bureautique, à Internet et au courrier. Parfois - travaillez avec des lecteurs flash. Le serveur, en même temps, était déjà dans l'entreprise.

En même temps, la station était exigée à faible bruit, compacité et fiabilité. Ou, soyons honnêtes, bon marché. Surtout si la question portait sur la vente au détail, où tout devrait être «cloué».

Dans le même temps, dans le passé, de nombreuses solutions ont été essayées sous la forme de clients légers «en fer» spécialisés, mais pour un certain nombre de raisons, elles se sont révélées inconfortables. Quelque part, des tâches connexes spécifiques étaient nécessaires, telles que le transfert d'imprimantes vers un serveur, auxquelles elles ne pouvaient pas faire face. Quelque part, des tableaux sont apparus lentement, ce qui a rendu les utilisateurs fous. Quelque part, les clients légers travaillaient simplement à un seul endroit et il était impossible de comprendre pourquoi. Quelque part, la charge capricieuse du réseau n'a pas fonctionné ou les paramètres n'ont pas été transférés via DHCP.

Par conséquent, d'une manière naturelle, tout est arrivé à la conclusion qu'il est plus facile d'acheter un nettop indésirable et d'y mettre un ensemble minimal de logiciels que de deviner un jeu avec du fer obscur, plus à vos frais, car où et ce qui ne fonctionne pas n'est pas connu à l'avance , mais il est certain que tout aurait dû aller bien et ne pas prendre autant de temps.

L'article était un peu en retard avec la pertinence. Si vous revenez au même programme jaune, ces dernières années, la plate-forme a évolué, elle a son propre client léger et la pertinence de son déploiement en mode Bureau à distance a diminué.

Mais il existe un certain nombre d'autres tâches où un poste de travail silencieux et fiable connecté via RDP sera approprié. Et ces dernières années, le coût des mini-PC a grimpé jusqu'à présent, et celui des ordinateurs et nettops standard, il est devenu plus rentable (coût du matériel, une heure de travail spécialisé, plus les licences CAL / TCAL pour Windows Server) pour construire exactement de telles solutions.

Énoncé du problème


Nous devons donc déployer un client RDP léger basé sur Raspberry Pi, «clouer» sur un serveur spécifique, et fournir une reconnexion en cas d'échec.

Toute interaction de l'utilisateur avec l'appareil lui-même doit être exclue. En conséquence, pas de commandes de bureau et de console locales. Le mot de passe est entré uniquement pour la session RDP.

En prime, - organisez le montage automatique et les lecteurs USB amovibles probros.

Étant donné:

  • pur Raspberry Pi 3 modèle B 1 Gb, ou 4 modèle B 1 Gb
  • Adaptateur secteur 5v 2A,
  • Câble HDMI
  • adaptateur avec HDMI au moniteur (si le moniteur n'a pas de port HDMI intĂ©grĂ©),
  • Câble Ethernet (ou prĂ©sence d'un rĂ©seau WiFi),
  • Carte mĂ©moire MicroSD de 8 Go ou plus (4 Go est objectivement suffisant, mais il me semble que vous ne pouvez acheter une carte de 4 Go qu'au musĂ©e).
  • moniteur, clavier, souris pour framboise.

Au moment de l'installation - un ordinateur (ordinateur portable) avec Windows ou Linux, un adaptateur de carte microSD.

On suppose que le lecteur a les compétences de base pour administrer les systèmes Linux, et la question «créer et éditer un fichier, copier le texte de cet article dedans» ou «se connecter via SSH» ne causera pas de difficultés. Cependant, parfois je m'autorise une excursion plus profonde, pour ceux qui n'auraient pas rencontré spécifiquement Raspbian.

Logique générale: configurer le système de base, installer le client RDP, configurer la connexion automatique, tester, résoudre les problèmes.

Il décrira également comment cloner un assemblage fini sur un autre Raspberry.

La disposition du logiciel lui-même est simple, il est né sous une forme ou une autre il y a environ 9 ans - comme je me souviens maintenant, je l'ai fait sous Debian Etch. Depuis lors, il a légèrement changé de versions logicielles et matérielles à des versions, et maintenant il est temps de le porter sur Raspberry.

La consommation de temps prévue est d'environ 30 minutes.

1. Configuration du système de base


1.1 Télécharger l'image du système


Nous choisirons Raspbian comme système.

Au moment de la rédaction, cela peut être fait ici . La version actuelle est Buster.

Sélectionnez une image minimale basée sur Debian Buster.



Téléchargez l'archive ZIP à partir de laquelle obtenir le seul fichier .img.



1.2 Écrivez-le sur une carte flash


a) Sous Windows

Téléchargez le programme Rufus sur le site officiel . Une version portable suffit.

Exécutez le programme, sélectionnez la carte SD et l'image extraite de l'archive au paragraphe 1.1.



Appuyez sur le bouton «START», confirmez la destruction des données sur la carte SD, attendez la fin du processus (environ 5 minutes).

Retirez la carte en toute sécurité.

b) sous Linux

Exécutez la commande:

# dd if=2019-09-26-raspbian-buster-lite.img of=/dev/< SD-> bs=4M 

Attendez la fin du processus, retirez la carte.

1.3 Déployer le système sur RPI


Nous réorganisons la carte sur l'appareil cible. Nous connectons le mini-PC avec un moniteur, un clavier, une souris et lui appliquons l'alimentation.

Après un certain temps, sans poser de questions supplémentaires, le mini-PC redémarrera dans le système fraîchement déployé et vous invitera à saisir votre identifiant et votre mot de passe.
Par défaut, c'est pi: framboise.



1.4 Connectez-vous et changez votre mot de passe


 # passwd pi 

ou

 $ sudo passwd pi 

(J'exécute intentionnellement passwd pour l'utilisateur pi en tant que root afin que Raspbian ne nous gêne pas avec les exigences de sécurité pour le mot de passe, mais l'accepte et l'accepte)

Vous ne pouvez pas vous connecter directement en tant que root à moins que vous ne lui ayez explicitement défini un mot de passe. En général, ce n'est pas mauvais. Ensuite, toutes les commandes qui doivent être exécutées sous le superutilisateur doivent être exécutées à partir de l'utilisateur pi avec la commande sudo prefix. Comme dans Ubuntu.

Par exemple (une blague célèbre, ne courez pas! )

 $ sudo rm -rf --no-preserve-root 

Cependant, comme je suis pathologiquement paresseux, alors, en me connectant Ă  Raspbian, ou sur le mĂŞme Ubuntu, je tape:

 $ sudo bash 

Et je reçois l'invitation #, déjà avec des droits élevés. Alors je travaille.
À proprement parler, ce n'est pas bien, mais au stade de la configuration initiale du système, cela fait gagner beaucoup de temps.

Ci-après, si les commandes ci-dessus sont précédées de #, elles doivent être exécutées sous superutilisateur. Si avec $, alors sous l'utilisateur (généralement il est indiqué ci-dessus sous lequel).

2. Installation du logiciel nécessaire "au minimum", test de la connexion


2.1 Configurer le réseau


Pour ce faire, exécutez l'utilitaire d'administration en exécutant la commande:

 # raspi-config 



(La navigation s'effectue par flèches, tabulation, Entrée - choix, ESC - retour)
Allez dans Options réseau .

DĂ©finissez le nom de l'ordinateur (point N1 Hostname ), par exemple TERM1 .

Si l'ordinateur est connecté au réseau avec un câble Ethernet et reçoit une adresse DHCP, rien d'autre ne doit être fait.

Si vous devez configurer un réseau WiFi, faites-le (point N2 Wi-Fi ). Choisissez votre pays. Le nom du réseau devra être saisi manuellement, aucun aperçu n'est fourni. Nous spécifions le mot de passe .

Terminez ensuite -> Terminer .

Redémarrez sur demande, ou avec la commande:

 # reboot 

Après vous être reconnecté, assurez-vous d'avoir accès à Internet.

 # ping 8.8.8.8 

2.2 Système de mise à jour


Mettez Ă  jour les informations sur les packages disponibles.

 # apt-get update 

Maintenant, mettez à jour le système (Facultatif, mais hautement souhaitable. Peut être fait plus tard.)

 # apt-get upgrade 

Cette étape peut prendre beaucoup de temps (j'ai environ 15 minutes), car le chargeur de démarrage binaire RPi est mis à jour, ce qui décompresse de nombreux petits fichiers sur la carte SD.
Veuillez noter que presque immédiatement après la fin du téléchargement et le début du déballage, un paquet désagréable vous demandera d'appuyer sur "q", arrêtant le processus. Vous devrez cliquer avant de vous laisser distraire par d'autres choses à attendre.
À la fin de la mise à jour, vous devez redémarrer

 # reboot 

2.3 Installer les paramètres régionaux et la disposition russes


Encore une fois dans l'utilitaire d'administration:

 # raspi-config 

Suivez les options de localisation , lĂ :

  1. Modifiez les paramètres régionaux , supprimez * de en-GB.UTF-8 et installez en face de ru-RU.UTF-8 . Nous confirmons, et dans la fenêtre suivante, nous la sélectionnons comme principale.
  2. Modifiez le fuseau horaire et sélectionnez le fuseau horaire de votre pays et de votre ville.
  3. Changer la disposition du clavier , il générique PC à 105 touches (Intl) → Autre → Russe → Russe → Contrôle + Maj (ou Alt + Maj, si vous le souhaitez, pour changer de disposition) → Pas de commutateur temporaire → Alt droite (AltGr) → Aucune touche de composition .

Confirmez et quittez - Terminer → Terminer .

Nous avons quitté l'utilitaire d'administration, exécutez la commande:

 # dpkg-reconfigure console-setup 

sélectionnez UTF-8 → Devinez le jeu de caractères optimal → Laissez le système sélectionner ... (en bas) → 8x16 .

Les polices devraient alors devenir visuellement plus fines, mais l'essentiel est qu'elles prennent désormais en charge l'alphabet cyrillique.

Nous redémarrons, nous connectons, testons la disposition anglaise, la commutation et la disposition russe.

2.4 Déterminé avec un logiciel auxiliaire et un éditeur


Pour travailler avec des fichiers, naviguer dans la structure des dossiers et Ă©diter des fichiers, j'aime vraiment Midnight Commander , donc:

 # apt-get install mc 

Je le lance sous root-rights, et la première fois que j'utilise l'éditeur (touche F4 sur certains fichiers) je sélectionne mcedit (point 2).

Bien sûr, vous pouvez éditer des fichiers en utilisant les outils de votre choix. Par exemple, en utilisant nano, ou même VIM.

2.5 Installer le serveur ssh


 # apt-get install ssh 

Modification de / etc / ssh / sshd_config. DĂ©commentez la ligne:

 ListenAddress 0.0.0.0 

DĂ©verrouiller le chargement automatique

 # systemctl enable ssh.service 

Redémarrez le service

 # systemctl restart ssh.service 

On découvre l'adresse IP avec la commande

 # ifconfig 

Et maintenant, nous pouvons nous connecter Ă  distance Ă  l'appareil depuis l'ordinateur source via SSH (sous Windows, j'aime personnellement le client PuTTY SSH) pour configurer Ă  partir d'un poste de travail pratique et pouvoir copier et coller les textes de cet article dans des configurations. Je vous rappelle que le login est pi , pas root.



Autres actions, je recommanderais de faire exactement via SSH, sauf indication contraire.

2.6 DĂ©placer des partitions volatiles vers des disques virtuels


Par exemple, / tmp et / var / log , afin de:

  1. le système n'a pas affûté une carte SD,
  2. il y avait moins de chance que le système de fichiers racine s'effondre lors d'une panne de courant,
  3. de sorte que dans un avenir lointain, les journaux n'obstruent pas l'espace libre sur la carte.

Pour ce faire, ajoutez des lignes Ă  / etc / fstab :

 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0 tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0 

N'oubliez pas de mettre un saut de ligne Ă  la fin du fichier.

Ici, les sections / var / log et / tmp se voient allouer 100 Mo de mémoire chacune (elle sera utilisée uniquement car elle est pleine). Gigabyte Pi, qui n'est utilisé que pour RDP, ces dépenses ne gêneront rien.

Redémarrez le système, puis exécutez la commande:

 # df 

et assurez-vous que les partitions sont montées sur tmpfs (3 et 4 colonnes peuvent différer):

 tmpfs 102400 8 102392 1% /tmp tmpfs 102400 224 102176 1% /var/log 

2.7 Nous obtiendrons l'utilisateur sous lequel nous lancerons ensuite automatiquement le shell graphique


Exécutez la commande:

 # adduser user 

Définissez un mot de passe arbitraire. Toutes sortes de noms et de téléphones peuvent être ignorés. Confirmez.

2.8 Installer X-server dans une version minimale


Exécutez la commande:

 # apt-get install xserver-xorg xinit xterm x11-xserver-utils 

Cela peut prendre environ 5 minutes.

Maintenant, vous devez vous asseoir sur le terminal physique (dans le sens d'un moniteur, d'un clavier et d'une souris connectés directement au Pi), vous connecter en tant qu'utilisateur utilisateur et exécuter la commande:

 $ startx 

L'image suivante devrait apparaître à l'écran, ce qui signifie que x-server a été installé avec succès et vous pouvez continuer.



Nous survolons le curseur (c'est important, car il n'y a pas de fenĂŞtre formant un cadre et un titre de fenĂŞtre, et la fenĂŞtre ne recevra tout simplement pas de texte sans un focus explicite) et tapez

 $ exit 

revenir.

2.9 Installer un logiciel pour travailler avec un bureau distant


Personnellement, j'aime rdesktop . Bien sûr, cela n'est pas sans nuances (voir la section "Extraction du râteau"). Il existe des alternatives comme xfreerdp , remmina , etc., bien qu'ils s'en plaignent également.

Je vais donner un exemple pour le premier.

 # apt-get install rdesktop 

Créez un script qui exécute rdesktop en plein écran. Dans le répertoire / home / user, créez le fichier runrdp (de préférence en tant qu'utilisateur):

 #!/bin/bash rdesktop <  IP  > -u <   > -f -z 

Si vous avez choisi un autre client RDP, écrivez ici la ligne de commande ou utilisez la masse de paramètres supplémentaires dont dispose rdesktop. Vous pouvez même coder en dur le mot de passe pour vous connecter automatiquement.

Vous devez mettre les droits à exécuter sur ce script, et si vous l'avez créé en tant que root, le propriétaire est l'utilisateur.

 # chmod 755 /home/user/runrdp # chown user:user /home/user/runrdp 

Maintenant, allons à la console physique sous utilisateur, démarrez startx, dans le terminal graphique ouvert (voir la figure ci-dessus), tapez:

 $ ./runrdp 

La fenêtre de connexion au bureau distant devrait apparaître à l'écran.



Si:

a) la console affiche quelque chose sur l'erreur CredSSP,
b) le mode plein écran en FullHD laisse des bords sombres (comme dans l'image-photo n ° 4 de cet article, bien qu'il existe un mode console, mais vous pouvez voir les bords)
voir ensuite la section Rake Extraction.

Et si tout va bien, annulez la connexion au système (Esc ou l'élément de menu «Disable»), abandonnez-vous dans le x-terminal, tapez exit, revenez à la console.

3. Automatisation des séances de levage


Si toutes les étapes précédentes fonctionnent, il est temps de tout assembler.

Pour ce faire, nous allons faire en sorte qu'au démarrage du système, l'utilisateur se connecte automatiquement au terminal, lance le serveur X et se connecte au RDP sous celui-ci. Ainsi, le mot de passe ne sera demandé que pour la session RDP, ce qui évitera aux utilisateurs immatures de maîtriser inutilement Linux.

3.1 RDP infini


Créons un script qui, lors du démarrage du x-server, tenterait sans fin d'ouvrir une session RDP.
Pour ce faire, dans le répertoire / home / user créez un fichier autorun au début du X-session .xinitrc , le contenu suivant:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp done 

3.2 Serveur Infinite X


Nous allons corriger un script qui définit le démarrage automatique des programmes et des paramètres de profil lors de la connexion à la console afin que la x-session démarre automatiquement, mais uniquement lorsque l'utilisateur se connecte au 1er terminal.

Merci à gecube de m'avoir rappelé de désactiver l'économiseur d'écran. Par défaut, c'est un écran noir qui, pour la plupart des moniteurs modernes, est plutôt dangereux.


Modifions /home/user/.profile , en y ajoutant les lignes suivantes:

 … if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear echo " 5    " sleep 5 exit fi 

3.3 Test intermédiaire d'un groupe


Nous redémarrons Pi, nous nous asseyons au terminal, nous nous connectons en tant qu'utilisateur utilisateur. La fenêtre de démarrage de la session s'affiche à l'écran, comme dans la figure ci-dessus.

Nous essayons de refuser d'entrer le mot de passe (esc, ou dépend de la version de Windows) - nous obtenons la même fenêtre pour le début de la session (c'est-à-dire que notre script 3.1 est constamment reconnecté).

Nous attendons environ une minute (selon le serveur) sans toucher au clavier et à la souris - la fenêtre de démarrage de la session devrait bientôt être déconnectée (la session RDP à l'étape de saisie du mot de passe sans activité expire dans le délai). Bien sûr, en raison de la clause 3.1, il se reconnectera.

Appuyez maintenant sur Ctrl + Alt + BkSp . La session X doit être interrompue, une inscription sur l'attente de 5 secondes sera affichée, après quoi la session de la console se terminera également. L'écran vous invite à entrer dans le terminal avec un nom d'utilisateur et un mot de passe.

Si tout est si - excellent.

Nous avons seulement besoin d'une connexion automatique au terminal.

3.4 Orange infiniment délicieux répétant l'autologin à tty1


Pour ce faire, à partir de la racine, créez le fichier /etc/systemd/system/getty@tty1.service.d/autologin.conf avec le contenu suivant:

 [Service] ExecStart= ExecStart=-/sbin/agetty --autologin user --noclear %I 38400 linux 

Ensuite:

 #systemctl enable getty@tty1.service 

Nous redémarrons, assurez-vous que la console physique est automatiquement connectée en tant qu'utilisateur, le serveur X démarre et la session RDP s'ouvre, puis tout est comme en 3.3.
Appuyez sur Ctrl + Alt + BkSp, attendez la reconnexion.

Nous entrons dans le système, testons la commutation, le travail des mises en page. Si quelque chose ne va pas, voir la section 4.

Ceci termine la configuration.

Les utilisateurs doivent être informés que si quelque chose ne va pas (l'écran devient vide, quelque chose se fige, etc.), ils doivent d'abord appuyer sur Ctrl + Alt + BkSp et attendre la réaction.

Voir Ă©galement la section 5 sur le montage automatique USB.

4. Extraction du râteau


Puisqu'il s'agit d'un OpenSource, l'extraction de râteau est un processus désespéré et continu. Je vais essayer de décrire le principal râteau possible, mais qui sait ce qui nous attend. Personnellement, je n'ai jamais eu de chance, et pas une seule instruction n'a fonctionné pour moi sans des heures de recherches supplémentaires.

4.1 Problèmes avec une utilisation incomplète de la résolution d'écran


Symptômes: dans certains cas (adaptateurs HDMI-DSUB, certains moniteurs), raspbian n'utilise pas toutes les résolutions disponibles du moniteur Full-HD. Des champs sombres restent entre les informations pertinentes et le bord physique de l'écran.

Il est résolu comme suit:

Editez /boot/config.txt , trouvez la ligne

 # disable_overscan = 1 

et décommentez-le.

Redémarrez.

Maintenant, les champs sombres des bords de l'écran doivent être supprimés dans les modes console et graphique.

4.2 Problèmes avec le curseur de la souris lors de la connexion de rdesktop aux serveurs RDP modernes


Cela concerne principalement Windows 2012, 2016, Windows 10, où le thème du curseur est inclus.

Symptômes: le curseur disparaît, est mal dessiné, après être passé à un non standard (sablier, symbole I, flèches d'élargissement de fenêtre, etc.) oublie de passer à une flèche régulière.

Solution: en tant qu'utilisateur du serveur auquel vous vous connectez, accédez aux propriétés de la souris via le panneau de configuration, réinitialisez le thème sur "Non" et désactivez les ombres sous le pointeur.



Les curseurs doivent arriver à l'obéissance.

4.3. Problèmes d'encodage avec rdesktop


Symptômes: dans certains cas, via la connexion RDP, des caractères spéciaux sont mal tapés sur le système distant: tildes, barres obliques, guillemets, points, bâtons verticaux. Surtout commencer à exaspérer les points, car ils sont souvent dactylographiés.

Solution:

Dans / usr / share / rdesktop / keymaps, créez un fichier brut et remplissez-le avec le contenu suivant:

 include common map 0x419 grave 0x29 asciicircum 0x07 shift backslash 0x2b bar 0x2b shift apostrophe 0x28 greater 0x34 shift less 0x33 shift 

Ajoutez l'argument brut -k Ă  l'invite de commande rdesktop dans le script / home / user / runrdp . Par exemple:

 rdesktop 10.0.0.1 -u user -k raw 

Redémarrez la session sur le terminal par Ctrl + Alt + BkSp ou redémarrez généralement le Pi.

Entrez RDP, testez tous les caractères spéciaux, y compris avec Maj sur la ligne numérique du clavier et touches latérales à gauche et à droite de la section des lettres, avec Maj et sans (guillemets, deux-points, signes de ponctuation, bâtons, etc.). Tout devrait fonctionner.

4.4. Lorsque vous essayez de démarrer rdesktop, la session ne s'ouvre pas, l'erreur CredSSP s'affiche dans la console


 CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server. 

Le système cible nécessite un algorithme d'authentification client moderne, ce que rdesktop ne peut normalement pas faire.

Options de solution:

  1. Désactivez l'authentification du serveur en diminuant les paramètres de sécurité. Fondamentalement, dans les environnements où Pi essaie d'utiliser RDP en tant que client, cela ne devrait pas être trop un problème de sécurité.
  2. Utilisez un autre client, par exemple freerdp, remmina, en remplaçant le contenu du script runrdp par la ligne de lancement de ce client.
  3. Installez et configurez le client Kerberos, mais en quelque sorte, tout y est compliqué. Si vous voulez essayer, commencez ici .

4.5. Allumer et Ă©teindre l'appareil


Le Raspberry Pi n'a pas de bouton d'arrêt. C'est mauvais. Il s'avère qu'il n'y a aucun moyen efficace de l'activer et de le désactiver. Beaucoup a été écrit à ce sujet, je vais essayer de le résumer brièvement:

  1. D'une part, nous ne pouvons pas éteindre l'appareil du tout, en éteignant uniquement le moniteur. À proprement parler, là où je mets le RPi, tout est fait. En général, l'appareil ne chauffe presque pas, ne consomme pas d'électricité, ne fait pas de bruit. Le moniteur, avant de quitter, l'utilisateur s'éteint.
  2. Vous pouvez configurer la nuit désactivée par Cron, mais ensuite pour allumer le RPi le matin, l'utilisateur devra jongler avec le fil ou l'alimentation.
  3. Vous pouvez résoudre ce problème en achetant un câble d'alimentation USB avec un bouton ouvert (pour allumer le RPi, il vous suffit d'ouvrir brièvement le circuit avec un bouton). 120 roubles est tout un plaisir. Mais ici, les utilisateurs auront le travail d'arrêt automatique de la même manière que l'appareil va planter. Étant donné que nous avons déplacé les partitions volatiles vers tmpfs, il est probablement peu probable qu'il y ait des problèmes, mais personne n'est sûr que l'utilisateur ne sera pas connecté le matin en raison de l'effondrement de rootfs. Cela n'a pas fonctionné, pour ainsi dire, la solution «clouée».
  4. Il existe des solutions avec un bouton supplémentaire qui est inclus dans le port GPIO et allume / éteint doucement l'appareil (de la bonne manière). Mais les fermes collectives au bâtiment - c'est pour passer des heures et augmenter les coûts de production.
  5. Cependant, pour le RPi, il y a même un boîtier avec un bouton intégré (les Chinois ont tout). Mais personnellement, je ne l'ai pas encore essayé.
  6. Je pense à allumer l'appareil via un disjoncteur dans le câble USB et à l'éteindre par une touche de raccourci (telle que Ctrl + Alt + Maj + P), qui est surveillée par le service système, mais il n'est pas possible de travailler avec cette solution.

4.6 Reconnexions multiples au serveur RDP


Dans le schéma actuel, le périphérique client se connectera au serveur à l'aide du protocole RDP, affichera la fenêtre de saisie de connexion et de mot de passe, et si l'utilisateur n'entre rien, la session sera réinitialisée après un certain temps et le client RDP redémarrera, et ainsi de suite à l'infini.

Dans les commentaires, l'utilisateur Mnemonik a déclaré qu'avec plusieurs reconnexions permanentes, Windows Server manque de mémoire et a donné un exemple de la façon de résoudre le problème.

Je vais apporter le mien. Nous allons modifier le script .xinitrc pour qu'après la fin du prochain processus rdesktop, une boîte de dialogue modale s'affiche qui empêche le redémarrage jusqu'à ce que le bouton OK soit cliqué.

Pour ce faire, vous pouvez utiliser le xmessage standard inclus dans le package xorg, mais les fenêtres créées par celui-ci sont si laides que mon moniteur se fissure. De plus, cette application n'est pas compatible avec la langue russe, et l'activer est une autre tâche.

Je suis impressionné par gxmessage, dépourvu de cet inconvénient, mais il tire GTK et 25 mégaoctets d'autres dépendances, ce que je n'aime pas non plus. Eh bien, choisissons un moindre mal:
 apt-get install gxmessage 

Modifiez le script .xinitrc:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp gxmessage --center " OK      RDP" done 

Maintenant, entre les tentatives de rdesktop de se connecter au serveur, un message correspondant sera affiché sur notre écran, et il n'y aura pas de «bombardement» constant du serveur.

Une fois le script terminé facilement, vous pouvez pré-vérifier la disponibilité réseau du serveur et afficher un message de reconnexion en raison d'un manque de communication.

4.7 Configuration de NTP


Merci à gecube de m'avoir rappelé ce moment. Théoriquement, le temps sur l'appareil peut «flotter» au fil du temps, ce qui peut entraîner des difficultés d'authentification et peut-être d'autres problèmes.
Pour résoudre ce petit problème, vous devez installer le programme ntpdate et enregistrer dans cron une tâche pour mettre à jour l'heure toutes les heures (l'appareil aura besoin d'un accès Internet):

 # apt-get install ntpdate # echo "0 * * * * root ntpdate pool.ntp.org" > /etc/cron.d/ntp 

Si vous disposez d'un serveur NTP local sur votre réseau, remplacez le nom d'hôte par le vôtre.

5 Facultatif: connexion, déconnexion et transfert de périphériques USB


En fait, cette section comprend deux étapes cruciales. Tout d'abord, pour gérer les périphériques USB afin d'assurer leur montage automatique et au moins un certain démontage contrôlé par l'utilisateur. Et deuxièmement, transférez les appareils connectés vers le terminal afin qu'ils soient accessibles sur le réseau.

5.1. Configuration du montage automatique


Les périphériques USB enfichables dotés de systèmes de fichiers seront montés dans les sous-répertoires du répertoire / media. Nous transmettrons ensuite le même répertoire à rdesktop.

Nous aurons besoin du package pmount.

 # apt-get install pmount. 

udev, .

/etc/udev/rules.d 80-usbstick.rules :

 ACTION=="add", KERNEL=="sd[az][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k" 

systemd.

/lib/systemd/system usbstick-handler@.service :

 [Unit] Description=Mount USB sticks BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/pmount --umask 000 --noatime -w --sync /dev/%i /media/%i ExecStop=/usr/bin/pumount /dev/%i 

/usr/local/bin unmount-devices :

 #!/bin/bash for folder in /media/*; do pumount $folder echo "Unmounted $folder" done 

.

 #chmod 755 unmount-devices 

user plugdev, (pumount )

 # adduser user plugdev 

. , USB -, , /media sda1 ., -.

—sync, , , , , .

( , , Windows ).

Pi , , /media/sda1 .
unmount-devices user. sda1 /media , , Windows.

5.2 /media RDP


/home/user/runrdp rdesktop :

 rdesktop …... -r disk:USB=/media/ 

/home/user/.profile , unmount-devices.

 ... if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear unmount-devices echo " 5    " sleep 5 exit fi 

.

, RDP-, Pi USB-, , , .



, (sda1-xx, sdb1-xx ..)

, Ctrl+Alt+BkSp. ( - , ), ( ) 5 RDP.
, , , . .

.

6. Rpi


6.


, , . , .
SD- ( 16- ) -, USB- Raspberry.

,

 # unmount-devices 

SD-, , , /media/sdxx.

lsblk :

 sda 8:0 1 14.6G 0 disk └─sda1 8:1 1 14.6G 0 part mmcblk0 179:0 0 7.4G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 7.2G 0 part / 

sda , mmcblk0 – .
:

 dd if=/dev/mmcblk0 of=/dev/sda bs=4M 

, ( 8 ).

Raspberry, , runrdp, .

6.


, , , , , . - , , .. — , Windows 10, Microsoft, RPi .
, SD- 2 () (1977614336 ). , 1966080000 , SD-.

:
1) (MD5: 0B5033A9CA12BA8299340BC482111998) .
2) SD-, , , 1.2.
3) , Ctrl+Alt+F2 .
pi, 111. :

 $ sudo bash 

4) 1.4, 2.1, , ( ping, ).
5) raspi-config, Advanced Options, Expand Filesystem ( SD- )
6) /home/user/runrdp, «» IP- , «user» , .
7) .

Conclusion


, . , - .
, . , , .

PS 11.12.2019. (gecube, Mnemonik, mkovalevskyi, SannX) . :
  • ;
  • NTP;
  • RDP- — messagebox .

, , RPi3, RPi4 Model B 1Gb. - . , RPi 4, .

, (. 6.), , .

Source: https://habr.com/ru/post/fr479504/


All Articles