
introduction
Cet appareil sert à l'accès à distance au serveur Linux via le port série et vous permet d'abandonner le moniteur et le clavier locaux. Pourquoi est-il nécessaire s'il y a SSH et VNC? Vous devez garder à l'esprit un certain nombre de problèmes liés à la gestion au stade du démarrage du système et à la gestion de l'alimentation:- , recovery mode, memtest. S , fsck .
- . initramfs dropbear . SSH. , , , .
- . , Wake-on-LAN (WOL), , , «» , .
- UPS, .
- Malheureusement, l'équipement de mon serveur domestique n'est pas industriel et n'a pas un haut degré de fiabilité. Il en va de même pour les logiciels, souvent les modules du noyau "bruts" fonctionnent. À la suite de quoi, plus d'une fois, le serveur s'est «bloqué» sans répondre ni sur le réseau ni en appuyant sur les touches du clavier. J'ai dû utiliser une réinitialisation matérielle en maintenant le bouton d'alimentation enfoncé pendant plus de 3 secondes.
Il n'y a pas de tels problèmes sur les équipements industriels, par exemple, la solution HP iLO vous permet d'installer à distance au moins un système, sans parler de la gestion de l'alimentation et des diagnostics du système. Soit dit en passant, ils ont des produits pour la maison / petite entreprise avec cette solution. Mais il se trouve que le système a été construit sur la base d'une carte mère conventionnelle miniITX sans de telles capacités.Il y avait un besoin pour un appareil qui permettrait:- Être disponible sur le réseau
- Interagissez avec le chargeur de démarrage et le système d'exploitation du serveur, au moins en mode texte
- "Ironiquement" interagit avec le bouton d'alimentation et peut fermer les contacts de ce bouton pendant plus de 3 secondes pour forcer l'arrêt
- Modifier les paramètres du BIOS (EFI) (pas encore décidé, disponible uniquement pour certaines cartes mères)
C'est un fait bien connu que des terminaux de texte précédemment utilisés étaient connectés au port série de la machine. Historiquement, il y a eu la prise en charge des terminaux Linux et le chargeur d'amorçage grub. Sur les cartes mères modernes, ce port n'a pas la forme habituelle du connecteur DB-9 externe, mais il est presque toujours acheminé vers le connecteur 10 broches interne.Avec l'avènement du penny ESP8266, essentiellement un pont entre le Wi-Fi et l'UART, l'idée de mettre en œuvre un terminal réseau basé sur celui-ci, avec une fonctionnalité de gestion de l'alimentation, est apparue.En plus de l'ESP8266, il existe différentes optionsOpenWRT . UART'a MAX232 ( USB — RS232 ), GPIO, , . , , .
, ./., . .
.
Schéma
L'élément principal - ESP8266 (ESP-03), dispose du Wi-Fi pour la communication avec le monde extérieur, de l'UART pour la communication avec le serveur et de deux GPIO, sur lesquels l'indicateur d'état et les LED de relais sont suspendus pour fermer le bouton d'alimentation. Il existe quelques GPIO gratuits qui peuvent être utilisés pour connecter I2C, 1-Wire et d'autres capteurs et appareils.La puce populaire MAX232 est utilisée pour convertir l'UART de ESP8266 en RS-232. Le MAX232 est alimenté par 5 V, tandis que l'ESP8266 via le convertisseur LM1117 5-3,3 V, juste au cas où, un diviseur de tension menant 5 V de la sortie du MAX232 à 3,3 V est utilisé sur la ligne RSP de l'ESP8266. La sortie du MAX232 est divisée en deux prises, une pour la connexion à DB-9 et la seconde IDC-10 pour une connexion directe directement aux contacts de la carte mère. Le relais est utilisé pour fermer les contacts du bouton d'alimentation du PC et est connecté en parallèle avec le bouton sur le boîtier. À propos, pour connecter le bouton d'alimentation du boîtier de l'unité centrale, vous pouvez fournir un connecteur sur la carte, je l'ai implémenté via un double pour 2,54 broches sur le connecteur de la carte mère. En général, la décision d'utiliser des relais est controversée. Assez d'un transistor. Dans la mise en page, j'ai mis l'optocoupleur 817, ça n'a pas marché,des mesures radicales ont été prises et le relais activé ... ça a marché. Qu'il en soit ainsi, il peut alors être utile de fermer / ouvrir les circuits 220V, en plus, des clics sont entendus - utiles pour les diagnostics. P6 - connecteur pour une programmation facile via des adaptateurs chinois pour Arduino FTDI. En mode programmation, le cavalier est activé par JP1. L'appareil est alimenté via le connecteur P4 directement à partir de la tension de veille de l'alimentation ou du port USB. Le connecteur P1 est utilisé pour connecter une antenne externe.L'appareil est alimenté via le connecteur P4 directement à partir de la tension de veille de l'alimentation ou du port USB. Le connecteur P1 est utilisé pour connecter une antenne externe.L'appareil est alimenté via le connecteur P4 directement à partir de la tension de veille de l'alimentation ou du port USB. Le connecteur P1 est utilisé pour connecter une antenne externe.Voies de développement possibles Circuit imprimé
Couche unique, mais 5 cavaliers entiers sont sortis.
Maladroit fait à la maison
P6.
Firmware
Le plus simple consiste en un serveur TELNET - en fait pour l'échange. Tout ce qui apparaît dans UART est jeté à tous les clients TELNET, tout ce qui vient des clients est jeté à UART. Les commandes AT sont également vissées pour contrôler le bouton d'alimentation et configurer les paramètres du port et du Wi-Fi. Bien que pour être honnête, cela soit loin d'un serveur RFC 854, les commandes ne sont pas prises en charge, j'appelle TELNET car le port 23, l'échange de texte direct et les clients TELNET sont parfaits pour l'interaction (testé sur le client Android de ConnectBot et Linux, l'utilitaire telnet fonctionnait correctement pour moi avec la variable d'environnement export TERM = VT100, le paramètre -8 et la transition suivante en mode caractère ^] mode caractère).Une caractéristique remarquable, l'ESP8266 peut fonctionner à la fois comme point d'accès et comme client de réseau sans fil en même temps. Ceci est très important pour la tolérance aux pannes - il vous permet de vous connecter au terminal en cas de panne de l'équipement réseau.Le firmware a été initialement écrit en Sming . Le principal avantage de Sming est que vous n'avez pas besoin de comprendre le SDK chinois ESP8266, pour tous les besoins, il existe déjà un emballage digestible, qu'il s'agisse d'un serveur WEB, de la mise à jour du micrologiciel par liaison radio ou de l'utilisation de GPIO. Mais lors de l'utilisation de l'encapsuleur du serveur TCP pour implémenter TELNET lors du transfert de gros volumes, la connexion a été rompue et ESP8266 s'est bloqué. Il y a eu des tentatives pour opérer directement avec l'API lwip ...Mais à ce stade, je suis tombé sur le projet ESP8266-transparent-bridge. Il a été décidé simplement de le bifurquer pour l'implémentation des commandes de contrôle du bouton d'alimentation, tout le reste a déjà été fait par son auteur. Bala a ajouté la commande AT+++AT PWBTN <duration: SHORT | LONG | HARDRESET>
Il y a une faille dans le firmware. Si une grande quantité d'informations est envoyée au terminal à la fois, certaines données peuvent être perdues. Cependant, l'ESP8266 n'est pas un Moxa NPort et ses capacités sont limitées. Par exemple, si nous faisons du dmesg, nous ne verrons qu'une partie des données, nous devons donc utiliser grep de plus en moins souvent et éviter les longs affichages à l'écran. D'une manière générale, il vaut la peine d'essayer d'augmenter le tampon de transfert dans le micrologiciel, maintenant il ne fait que 1024 octets, jusqu'à ce que vos mains atteignent 32768 et il peut devenir confortable de travailler avec des utilitaires comme htop.Configuration de la machine Linux
Dans / etc / default / grub devrait être quelque chose comme:GRUB_CMDLINE_LINUX="console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Pour afficher le menu du chargeur de démarrage et les messages de démarrage sur le port série. Dans ce cas, le premier avec un débit binaire de 115200. Après la modification, exécutez la commande update-grub. En principe, cela peut être limité, mais juste au cas où, vous pouvez toujours ouvrir le terminal sur le port série, pour ce créer /etc/init/ttyS0.conf avec le contenu suivant:
start on stopped rc or RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 115200 ttyS0 vt102
Connexion au serveurComme déjà mentionné, l'alimentation provient directement de la tension de veille de l'alimentation ou du port USB, les sorties de relais sont connectées en parallèle avec le bouton d'alimentation, le pad RS-232 est connecté par un câble direct au connecteur IDC-10. Il y a une nuance à placer l'appareil à l'intérieur du boîtier du serveur; vous devez retirer l'antenne connectée au connecteur u.fl de l'appareil à l'extérieur du boîtier Wi-Fi. Bien sûr, cela ne peut pas être fait si le boîtier est relativement radio-transparent, par exemple en bois.
Calcul des coûts
3 $ pour ESP8266, 1 $ pour 10 pièces de MAX232, le reste est généralement à la ferme.Démonstration vidéo
Sources de fer et de logiciels ici .