Com a crescente popularidade de mini-PCs como Raspberry Pi e clones similares, houve muitos casos para seu uso na infraestrutura de TI da empresa, em casa / chalé / garagem inteligente e outros aplicativos.
Um dos casos convenientes e desejáveis é o uso do RPi como um thin client que se conecta via RDP a sistemas baseados no Windows.
Se você estiver interessado em como montar um local com base no Raspberry Pi e de maneira a "montar e esquecer" - seja bem-vindo ao gato. Existe uma imagem pronta para os preguiçosos (consulte a seção 6.B).
Especificamente, na minha experiência (especialista em automação contábil / gerencial), muitas vezes eu precisava organizar locais de trabalho cujo único objetivo era acessar um programa (principalmente amarelo), uma suíte de escritório, a Internet e o correio. Às vezes - trabalhe com pen drives. O servidor, ao mesmo tempo, já estava na empresa.
Ao mesmo tempo, a estação exigia baixo nível de ruído, compacidade e confiabilidade. Ou, sejamos honestos, barato. Especialmente se a pergunta fosse sobre varejo, onde tudo deveria ser "acertado".
Ao mesmo tempo, no passado, muitas soluções foram tentadas na forma de thin clients especializados em "ferro", mas por uma série de razões, eles se mostraram desconfortáveis. Em algum lugar, tarefas relacionadas específicas eram necessárias, como encaminhamento de impressoras para um servidor, com as quais eles não conseguiam lidar. Em algum lugar, as mesas apareceram lentamente, o que deixou os usuários loucos. Em algum lugar, os thin clients simplesmente trabalhavam em um único local, e era impossível entender o porquê. Em algum lugar a carga de rede caprichosa não funcionou ou os parâmetros não foram transferidos via DHCP.
Portanto, de alguma maneira natural, tudo chegou à conclusão de que é mais fácil comprar um lixo eletrônico e colocar nele um conjunto mínimo de software do que adivinhar um jogo com ferro obscuro, além de suas próprias custas, porque onde e o que não funciona não é conhecido antecipadamente , mas sabe-se com certeza que tudo deveria estar bem e não demoraria tanto tempo.
O artigo estava um pouco atrasado com a relevância. Se você retornar ao mesmo programa amarelo, nos últimos anos, a plataforma evoluiu, ela possui seu próprio thin client e a relevância de sua implantação no modo de área de trabalho remota diminuiu.
Mas existem várias outras tarefas em que uma estação de trabalho silenciosa e confiável conectada via RDP será apropriada. E, nos últimos anos, o custo dos mini-PCs aumentou muito e, nos computadores e nettops padrão, tornou-se mais lucrativo (custo de hardware, uma hora de trabalho especializado, além de licenças CAL / TCAL para Windows Server) para criar exatamente essas soluções.
Declaração do problema
Portanto, com base no Raspberry Pi,
precisamos implantar um cliente RDP fino, "prego" em um servidor específico, além de fornecer reconexão em caso de falha.
Qualquer interação do usuário com o próprio dispositivo deve ser excluída. Consequentemente, nenhum desktop local e comandos de console. A senha é inserida apenas para a sessão RDP.
Como um bônus, - organize unidades USB removíveis de montagem automática e probros.
Dado:- Raspberry Pi puro 3 Modelo B 1Gb ou 4 Modelo B 1 Gb
- Adaptador de energia 5v 2A,
- Cabo HDMI
- adaptador com HDMI ao monitor (se o monitor não tiver uma porta HDMI embutida),
- Cabo Ethernet (ou a presença de uma rede WiFi),
- Cartão de memória MicroSD com 8 GB ou mais (4 GB é objetivamente suficiente, mas parece-me que você pode comprar um cartão de 4 GB apenas no museu).
- monitor, teclado e mouse para framboesa.
No momento da instalação - um computador (laptop) com Windows ou Linux, um adaptador de cartão microSD.
Supõe-se que o leitor tenha a habilidade básica de administrar sistemas Linux, e a pergunta "crie e edite um arquivo, copie o texto deste artigo para ele" ou "conecte-se via SSH" não causará dificuldades. No entanto, às vezes me permito uma excursão mais profunda, para aqueles que podem não ter encontrado especificamente com Raspbian.
Lógica geral: configure o sistema básico, instale o cliente RDP, configure o login automático, teste, corrija problemas.
Também descreverá como clonar uma montagem finalizada para outro Raspberry.
O layout do software em si é simples, nasceu de uma forma ou de outra cerca de 9 anos atrás - como me lembro agora, fiz isso no Debian Etch. Desde então, mudou um pouco das versões de software e hardware para versões, e agora é hora de portá-lo para o Raspberry.
O consumo de tempo planejado é de aproximadamente 30 minutos.
1. Configurando o sistema básico
1.1 Baixar imagem do sistema
Vamos escolher Raspbian como o sistema.
No momento da redação
deste documento ,
isso pode ser feito aqui . A versão atual é Buster.
Selecione Imagem Mínima Baseada no Debian Buster.

Faça o download do arquivo ZIP a partir do qual o único arquivo .img será obtido.

1.2 Escreva em um cartão flash
a) No WindowsFaça o download do programa
Rufus no
site oficial . Uma versão portátil é suficiente.
Execute o programa, selecione o cartão SD e a imagem retirada do arquivo no parágrafo 1.1.

Pressione o botão "INICIAR", confirme a destruição dos dados no cartão SD, aguarde a conclusão do processo (cerca de 5 minutos).
Remova com segurança o cartão.
b) no LinuxExecute o comando:
# dd if=2019-09-26-raspbian-buster-lite.img of=/dev/< SD-> bs=4M
Aguarde a conclusão do processo, retire o cartão.
1.3 Implantar o sistema no RPI
Reorganizamos o cartão no dispositivo de destino. Conectamos o mini-PC a um monitor, teclado, mouse e aplicamos energia a ele.
Depois de algum tempo, sem fazer perguntas adicionais, o mini-PC será reiniciado no sistema recém-implantado e o convidará a inserir seu login e senha.
Por padrão, este é
pi: raspberry.
1.4 Faça login e altere sua senha
# passwd pi
ou
$ sudo passwd pi
(Executei intencionalmente o passwd para o usuário pi como root, para que o Raspbian não nos perturbe os requisitos de segurança da senha, mas a aceite e a aceite)
Você não pode efetuar login diretamente como root, a menos que defina explicitamente uma senha para ela. Em geral, isso não é ruim. Todos os comandos que devem ser executados sob o superusuário devem ser executados no usuário pi com o comando sudo prefix. Como no Ubuntu.
Por exemplo (uma
piada famosa, não corra! )
$ sudo rm -rf --no-preserve-root
No entanto, como sou patologicamente preguiçoso, então, entrando no Raspbian ou no mesmo Ubuntu, digito:
$ sudo bash
E recebo o convite #, já com direitos elevados. Então eu trabalho.
A rigor, isso não é bom, mas no estágio da configuração inicial do sistema economiza muito tempo.
A seguir, se os comandos acima forem precedidos por #, eles deverão ser executados sob superusuário. Se com $, então sob o usuário (geralmente é indicado acima sob o qual).
2. Instalando o software necessário "no mínimo", testando a conexão
2.1 Configurar rede
Para fazer isso, execute o utilitário administrativo executando o comando:
# raspi-config

(A navegação é realizada por setas, tabulação, Enter - escolha, ESC - retorno)
Vá para
Opções de rede .
Defina o nome do computador (ponto
N1 Hostname ), por exemplo,
TERM1 .
Se o computador estiver conectado à rede com um cabo Ethernet e receber um endereço DHCP, nada mais precisará ser feito.
Se você precisar configurar uma rede Wi-Fi, faça-o (aponte
N2 Wi-Fi ). Escolha o seu país.
O nome da rede precisará ser digitado manualmente; nenhuma visão geral é fornecida. Nós especificamos a
senha .
Então
Concluir -> Concluir .
Reinicie a pedido, ou com o comando:
# reboot
Após fazer o login novamente, verifique se você tem acesso à Internet.
# ping 8.8.8.8
2.2 Sistema de atualização
Atualize as informações sobre os pacotes disponíveis.
# apt-get update
Agora atualize o sistema (opcional, mas altamente desejável. Pode ser feito mais tarde.)
# apt-get upgrade
Esse estágio pode levar um longo tempo (eu tenho cerca de 15 minutos), porque o RPi do carregador de inicialização binário é atualizado, o que descompacta muitos arquivos pequenos no cartão SD.
Observe que quase imediatamente após a conclusão do download e a descompactação começar, algum pacote desagradável solicitará que você pressione "q", interrompendo o processo. Você precisará clicar antes de se distrair com outras coisas para esperar.
No final da atualização, você deve reiniciar
# reboot
2.3 Instalar o código de idioma e o layout russo
Novamente no utilitário administrativo:
# raspi-config
Siga as
Opções de localização , lá:
- Altere Locale , remova * do pt-BR.UTF-8 e instale o oposto do ru-RU.UTF-8 . Confirmamos e, na próxima janela, a selecionamos como a principal.
- Alterar fuso horário e selecione seu país e fuso horário da cidade.
- Alterar layout do teclado , PC genérico de 105 teclas (Intl) → Outro → Russo → Russo → Control + Shift (ou Alt + Shift, se desejado, para alternar layouts) → Sem alternador temporário → Alt direito (AltGr) → Nenhuma tecla de composição .
Confirme e saia -
Concluir →
Concluir .
Deixamos o utilitário de administração, execute o comando:
# dpkg-reconfigure console-setup
selecione
UTF-8 →
Adivinhe o conjunto de caracteres ideal →
Deixe o sistema selecionar ... (abaixo) →
8x16 .
As fontes devem ficar visualmente mais finas, mas o principal é que agora elas suportam o alfabeto cirílico.
Reinicializamos, efetuamos login, testamos o layout em inglês, a alternância e o layout em russo.
2.4 Determinado com software auxiliar e editor
Para trabalhar com arquivos, navegar na estrutura de pastas e editar arquivos, eu realmente gosto do
Midnight Commander , portanto:
# apt-get install mc
Eu o inicio com direitos de root e, na primeira vez em que uso o editor (tecla F4 em algum arquivo), seleciono
mcedit (ponto 2).
Obviamente, você pode editar arquivos usando as ferramentas de sua escolha. Por exemplo, usando nano ou mesmo VIM.
2.5 Instalar o servidor ssh
# apt-get install ssh
Editando / etc / ssh / sshd_config. Remova o comentário da linha:
ListenAddress 0.0.0.0
Desbloquear carregamento automático
# systemctl enable ssh.service
Reinicie o serviço
# systemctl restart ssh.service
Descobrimos o endereço IP com o comando
# ifconfig
E agora podemos conectar-se ao dispositivo remotamente a partir do computador de origem via SSH (no Windows, eu pessoalmente gosto do cliente
PuTTY SSH) para configurar a partir de uma estação de trabalho conveniente e poder copiar e colar os textos deste artigo nas configurações. Lembro que o login é
pi , não raiz.

Outras ações eu recomendaria fazer exatamente através do SSH, a menos que indicado de outra forma.
2.6 Mova partições voláteis para discos virtuais
Por exemplo,
/ tmp e
/ var / log , para:
- o sistema não apontou um cartão SD,
- havia menos chance de o sistema de arquivos raiz desmoronar durante uma queda de energia,
- para que, em um futuro distante, os logs não obstruam o espaço livre no mapa.
Para fazer isso, adicione linhas ao
/ 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ão se esqueça de colocar uma quebra de linha no final do arquivo.
Aqui, as seções
/ var / log e
/ tmp recebem 100 MB de memória cada (ela será usada apenas quando estiver cheia). Gigabyte Pi, usado apenas para RDP, essas despesas não atrapalham nada.
Reinicie o sistema e execute o comando:
# df
e verifique se as partições estão montadas no tmpfs (as colunas 3 e 4 podem ser diferentes):
tmpfs 102400 8 102392 1% /tmp tmpfs 102400 224 102176 1% /var/log
2.7 Obteremos o usuário sob o qual, posteriormente, iniciaremos automaticamente o shell gráfico
Execute o comando:
# adduser user
Defina uma senha arbitrária. Todos os tipos de nomes e telefones podem ser ignorados. Confirme.
2.8 Instalar o servidor X em uma versão mínima
Execute o comando:
# apt-get install xserver-xorg xinit xterm x11-xserver-utils
Isso pode levar cerca de 5 minutos.
Agora você precisa
se sentar no terminal físico (no sentido de um monitor, teclado e mouse conectado diretamente ao Pi), faça login como usuário e execute o comando:
$ startx
A imagem a seguir deve aparecer na tela, o que significa que o x-server foi instalado com sucesso e você pode seguir em frente.

Passamos o mouse sobre o cursor (é importante, pois não há janela formando um quadro e um título, e a janela simplesmente não recebe texto sem um foco explícito) e digita
$ exit
voltar.
2.9 Instalar software para trabalhar com a área de trabalho remota
Eu pessoalmente gosto do
rdesktop . Obviamente, não é sem nuances (consulte a seção "Extração de rake"). Existem alternativas como
xfreerdp ,
remmina , etc., embora elas também se queixem.
Vou dar um exemplo para o primeiro.
# apt-get install rdesktop
Crie um script que execute o rdesktop em tela cheia. No diretório
/ home / user, crie o arquivo
runrdp (de preferência como usuário):
Se você escolheu outro cliente RDP, escreva aqui a linha de comando ou use a massa de parâmetros adicionais que o rdesktop possui. Você pode até codificar a senha para fazer login automaticamente.
Você deve colocar os direitos para executar neste script e, se você o criou como root, o proprietário é o usuário.
# chmod 755 /home/user/runrdp # chown user:user /home/user/runrdp
Agora, vamos ao console físico em user, start startx, no terminal gráfico aberto (veja a figura acima), digite:
$ ./runrdp
A janela para conectar-se à área de trabalho remota deve aparecer na tela.

Se:
a) o console exibe algo sobre o erro CredSSP,
b) o modo de tela cheia no FullHD deixa bordas escuras (como na foto 4 da foto neste artigo, embora exista um modo de console, mas você pode ver as bordas)
depois veja a seção Extração de Rake.
E se estiver tudo bem, cancele o login do sistema (Esc ou o item de menu “Desativar”), saia para o terminal x, digite exit, retorne ao console.
3. Automação de sessões de elevação
Se todas as etapas anteriores funcionarem, é hora de juntar tudo.
Para fazer isso, faremos com que, quando o sistema for iniciado, o usuário efetue login automaticamente no terminal, inicie o servidor X e se conecte ao RDP sob ele. Assim, a senha será solicitada apenas para a sessão RDP, o que salvará as mentes imaturas do usuário de habilidades desnecessárias para domesticar o Linux.
3.1 RDP infinito
Vamos criar um script que, ao iniciar o x-server, tentaria infinitamente abrir uma sessão RDP.
Para fazer isso, no diretório
/ home / user, crie um arquivo de execução automática no início da sessão X
.xinitrc , o seguinte conteúdo:
setxkbmap -option terminate:ctrl_alt_bksp
3.2 Servidor X infinito
Corrigimos um script que define a inicialização automática de programas e configurações de perfil durante o login no console para que a sessão x seja iniciada automaticamente, mas somente quando o usuário fizer login no 1º terminal.
Obrigado ao gecube por me lembrar de desativar o protetor de tela. Por padrão, é uma tela preta que, para a maioria dos monitores modernos, é bastante prejudicial.
Vamos editar /home/user/.profile ,
adicionando as seguintes linhas:
… if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear echo " 5 " sleep 5 exit fi
3.3 Testando um monte de forma intermediária
Nós reiniciamos o Pi, sentamos no terminal, efetuamos login como usuário. Aparecemos a janela de início da sessão na tela, como na figura acima.
Tentamos nos recusar a inserir a senha (esc ou depende da versão do Windows) - obtemos a mesma janela para o início da sessão (ou seja, nosso script da 3.1 é constantemente reconectado).
Esperamos cerca de um minuto (dependendo do servidor) sem tocar no teclado e no mouse - a janela para iniciar a sessão deve se desligar em breve (a sessão RDP no estágio de entrada de senha sem atividade expira em um tempo limite). Obviamente, devido à cláusula 3.1, será reconectado.
Agora pressione
Ctrl + Alt + BkSp . A sessão X deve ser interrompida, uma inscrição sobre a espera de 5 segundos será exibida, após o que a sessão do console também será encerrada. A tela solicitará que você entre no terminal com um nome de usuário e senha.
Se tudo é tão - excelente.
Nós só precisamos de login automático no terminal.
3.4 Autologin de repetição infinitamente delicioso em laranja em tty1
Para fazer isso, a partir da raiz, crie o arquivo
/etc/systemd/system/getty@tty1.service.d/autologin.conf com o seguinte conteúdo:
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin user --noclear %I 38400 linux
Então:
#systemctl enable getty@tty1.service
Nós reinicializamos, certifique-se de que o console físico seja logado automaticamente como usuário, o servidor X inicie e a sessão RDP seja aberta e tudo esteja como no 3.3.
Pressione Ctrl + Alt + BkSp, aguarde a reconexão.
Entramos no sistema, teste de comutação, o trabalho de layouts. Se algo estiver errado, consulte a seção 4.
Isso completa a instalação.Os usuários devem ser instruídos que, se algo der errado (a tela fica em branco, algo congela etc.), eles primeiro pressionam Ctrl + Alt + BkSp e aguardam a reação.
Consulte também a seção 5 sobre montagem automática em USB.
4. Extração de rake
Como esse é um código aberto, a extração de rake é um processo desesperado e contínuo. Vou tentar descrever o principal rake possível, mas quem sabe o que nos espera. Pessoalmente, nunca tive sorte e nem uma única instrução funcionou para mim sem horas de pesquisa adicional.
4.1 Problemas com o uso incompleto da resolução da tela
Sintomas: Em alguns equipamentos (adaptadores HDMI-DSUB, alguns monitores), o raspbian não usa toda a resolução disponível do monitor Full-HD. Os campos escuros permanecem entre as informações relevantes e a borda física da tela.
É resolvido da seguinte forma:
Edite
/boot/config.txt , encontre a linha
# disable_overscan = 1
e descomente.
Reinicie.
Agora os campos escuros das bordas da tela devem ser removidos nos modos console e gráfico.
4.2 Problemas com o cursor do mouse ao conectar o rdesktop aos servidores RDP modernos
Isso se refere principalmente ao Windows 2012, 2016 e Windows 10, onde o tema do cursor está incluído.
Sintomas: o cursor desaparece, é mal desenhado, depois de mudar para fora do padrão (ampulheta, símbolo I, setas para janelas, etc.) esquece de mudar para uma seta comum.
Solução: como usuário do servidor ao qual você está se conectando, acesse as propriedades do mouse através do painel de controle, redefina o tema para "Não" e desative as sombras sob o ponteiro.

Os cursores devem chegar à obediência.
4.3 Problemas de codificação com o rdesktop
Sintomas: em alguns casos, pela conexão RDP, os caracteres especiais são digitados incorretamente no sistema remoto: til, barras, aspas, pontos, paus verticais. Especialmente comece a enfurecer os pontos, porque eles geralmente são digitados.
Solução:
Em
/ usr / share / rdesktop / keymaps, crie um arquivo
bruto e preencha-o com o seguinte conteúdo:
include common map 0x419 grave 0x29 asciicircum 0x07 shift backslash 0x2b bar 0x2b shift apostrophe 0x28 greater 0x34 shift less 0x33 shift
Adicione o argumento
-k raw ao prompt de comando rdesktop no script
/ home / user / runrdp . Por exemplo:
rdesktop 10.0.0.1 -u user -k raw
Reinicie a sessão no terminal com Ctrl + Alt + BkSp ou geralmente reinicie o Pi.
Digite RDP, teste todos os caracteres especiais, incluindo com Shift na linha numérica do teclado e as teclas laterais à esquerda e à direita da seção de letras, com Shift e sem (aspas, dois pontos, sinais de pontuação, paus, etc.). Tudo deve funcionar.
4.4 Quando você tenta iniciar o rdesktop, a sessão não abre, o erro CredSSP é exibido no console
CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server.
O sistema de destino requer um algoritmo de autenticação de cliente moderno, o que o rdesktop normalmente não pode fazer.
Opções da solução:
- Desative a autenticação do servidor reduzindo as configurações de segurança. Basicamente, em ambientes em que o Pi está tentando usar o RDP como um cliente, isso não deve ser um problema de segurança.
- Use outro cliente, por exemplo, freerdp, remmina, substituindo o conteúdo do script runrdp pela linha de inicialização desse cliente.
- Instale e configure o cliente kerberos, mas de alguma forma tudo é complicado lá. Se você quiser tentar, comece aqui .
4.5 Ligar e desligar o dispositivo
O Raspberry Pi não possui um botão de desligamento. Isso é ruim. Acontece que não há maneira eficaz de ligar e desligar. Muito foi escrito sobre isso, tentarei resumir brevemente:
- Por um lado, não podemos desligar o dispositivo, desligando apenas o monitor. A rigor, onde coloco o RPi, tudo está feito. Em geral, o dispositivo quase não esquenta, não consome eletricidade, não produz ruído. O monitor, antes de sair, o usuário será desligado.
- Você pode configurar a noite de folga com Cron, mas, para ligar o RPi pela manhã, o usuário precisará manipular o fio ou a fonte de alimentação.
- Você pode solucionar esse problema comprando um cabo de alimentação USB com um botão aberto (para ligar o RPi, basta abrir o circuito brevemente com um botão). 120 rublos é tudo um prazer. Mas aqui, os usuários terão o desligamento automático funcionando da mesma maneira que o dispositivo trava. Dado que transferimos as partições voláteis para tmpfs, provavelmente é improvável que ocorram problemas, mas ainda assim ninguém está seguro de que o usuário não fará logon pela manhã devido ao colapso do rootfs. Não deu certo, por assim dizer, a solução "pregada".
- Existem soluções com um botão adicional que está incluído na porta GPIO e liga / desliga o dispositivo suavemente (da maneira correta). Mas fazendas coletivas para o edifício - é gastar horas e aumentar os custos de produção.
- No entanto, para o RPi há até um caso com um botão embutido (os chineses têm tudo). Mas eu pessoalmente ainda não tentei.
- Penso em ligar o dispositivo através de um disjuntor no cabo USB e desligá-lo por uma tecla de atalho (como Ctrl + Alt + Shift + P), que é monitorada pelo serviço do sistema, mas não é possível trabalhar com esta solução.
4.6 Múltiplas reconexões com o servidor RDP
No esquema atual, o dispositivo cliente se conectará ao servidor usando o protocolo RDP, exibirá a janela de entrada de login e senha e, se o usuário não inserir nada, depois de algum tempo a sessão será redefinida e o cliente RDP será iniciado novamente, e assim por diante ad infinitum.
Nos comentários, o usuário do Mnemonik disse que, com várias reconexões permanentes, o Windows Server fica sem memória e deu um exemplo de como resolver o problema.
Eu vou trazer o meu. Modificaremos o script .xinitrc para que, após a conclusão do próximo processo do rdesktop, uma caixa de diálogo modal seja exibida na tela, o que impede a reinicialização até o clique no botão OK.
Para fazer isso, você pode usar o xmessage regular incluído no pacote xorg, mas as janelas criadas por ele são tão feias que meu monitor está quebrando. Além disso, este aplicativo não é amigável com o idioma russo e ativá-lo é outra tarefa.
Estou impressionado com o gxmessage, desprovido dessa desvantagem, mas ele extrai GTK e 25 megabytes de outras dependências, das quais eu também não gosto. Bem, vamos escolher um mal menor:
apt-get install gxmessage
Mude o script .xinitrc:
setxkbmap -option terminate:ctrl_alt_bksp
Agora, entre as tentativas do rdesktop de conectar-se ao servidor, uma mensagem correspondente será exibida em nossa tela e não haverá "bombardeio" constante do servidor.
Após concluir o script com facilidade, você pode verificar previamente a disponibilidade de rede do servidor e exibir uma mensagem sobre a reconexão devido à falta de comunicação.
4.7 Configurando o NTP
Agradeço ao gecube por me lembrar desse momento. Teoricamente, o tempo no dispositivo pode "flutuar" ao longo do tempo, o que pode causar dificuldades na autenticação e talvez outros problemas.
Para corrigir esse pequeno problema, você deve instalar o programa ntpdate e registrar no cron uma tarefa para atualizar o horário a cada hora (o dispositivo precisará de acesso à Internet):
# apt-get install ntpdate # echo "0 * * * * root ntpdate pool.ntp.org" > /etc/cron.d/ntp
Se você tiver um servidor NTP local na sua rede, substitua o nome do host pelo seu.
5 Opcional: conectar, desconectar e encaminhar dispositivos USB
Na verdade, esta seção inclui dois estágios cruciais. Primeiramente, gerenciar dispositivos USB para garantir sua montagem automática e, pelo menos, uma desmontagem controlada pelo usuário. Em segundo lugar, encaminhe os dispositivos conectados ao terminal para que eles possam ser acessados pela rede.
5.1 Configuração de montagem automática
Os dispositivos USB plug-in com sistemas de arquivos serão montados em subdiretórios do diretório / media. Em seguida, encaminharemos o mesmo diretório para o rdesktop.
Vamos precisar do pacote pmount.
# apt-get install pmount.
Também precisaremos criar uma regra para o udev que capture os dispositivos conectados e os monte.Em /etc/udev/rules.d, crie o arquivo 80-usbstick.rules com o seguinte conteúdo: ACTION=="add", KERNEL=="sd[az][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"
Agora crie um serviço para systemd.Em / lib / systemd / system, crie o arquivo usbstick-handler @ .service com o seguinte conteúdo: [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
Em / usr / local / bin, crie o arquivo unmount-devices com o seguinte conteúdo:
Atribua a ele os direitos de execução. #chmod 755 unmount-devices
Inclua o usuário usuário no grupo plugdev para que ele possa usar esse script (o pumount permite que os membros deste grupo montem e desmonte dispositivos) # adduser user plugdev
Reinicie. Se tudo for feito corretamente, ao inserir a unidade flash na porta USB do mini-PC, após alguns segundos, a pasta sda1 etc. aparecerá no diretório / media, onde a unidade flash será montada para leitura e gravação.Os dispositivos são montados com o sinalizador –sync; portanto, em teoria, se você retirar o dispositivo quando a operação de gravação for concluída, não haverá problemas com a segurança dos dados; no entanto, o sinalizador de extração não seguro permanecerá no dispositivo.Testaremos este ponto (insira a unidade flash USB, remova a unidade flash USB, insira o dispositivo no PC com Windows e corrija os possíveis erros).Agora insira o dispositivo no Pi novamente, verifique se a pasta / media / sda1 aparece novamente.Execute desmontar dispositivos sob o usuário usuário. O sda1 de / media deve desaparecer e o dispositivo deve ser desmontado com segurança e não cometer um erro quando inserido em um PC com Windows.5.2 Encaminhe o diretório / media pelo RDP e forneça dispositivos de montagem automática
Em / home / user / runrdp , adicionamos um argumento adicional à linha de comando do rdesktop: rdesktop …... -r disk:USB=/media/
Agora edite /home/user/.profile , adicionando uma chamada para desmontar dispositivos. ... if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear unmount-devices echo " 5 " sleep 5 exit fi
Reinicie.Agora, se estivermos trabalhando em uma sessão RDP e precisarmos conectar um disco USB ao Pi, basta inseri-lo e ir para Meu computador, onde vemos aproximadamente a figura a seguir.
Podemos usar livremente esses dispositivos, eles aparecerão como pastas (sda1-xx, sdb1-xx, etc.)Se precisarmos remover o dispositivo, basta pressionar Ctrl + Alt + BkSp. A sessão será desconectada (portanto, qualquer cópia para o dispositivo deve ser interrompida, mesmo que tenha sido realizada), o console exibirá a desmontagem dos dispositivos (neste momento todos eles foram removidos com segurança) e uma mensagem aguardando 5 segundos antes de se reconectar ao RDP.Depois de reconectar, você pode digitar uma senha e continuar trabalhando do mesmo ponto, mas os dispositivos conectados anteriormente serão desmontados. Nesse ponto, eles podem ser removidos fisicamente.Isso completa a etapa de configuração.6. Clone o sistema para outro Rpi
6.A Se configurado independentemente
Se todos os ancinhos forem removidos, o dispositivo funcionará aceitável, e você poderá estender a montagem para outros dispositivos. Se eles são do mesmo tipo, não há necessidade de repetir o processo do zero.Insira o cartão SD (me deparei com 16 gigabytes) no cartão adaptador e coloque-o na porta USB do Raspberry.Se você já configurou a montagem automática a partir da última seção, execute o script
para que ele desmonte o cartão SD recém-conectado, que, é claro, foi imediatamente montado em / media / sdxx.Agora execute o comando lsblk e veja a lista de dispositivos: 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 é obviamente a nossa nova placa e mmcblk0 é uma placa do sistema.Execute: dd if=/dev/mmcblk0 of=/dev/sda bs=4M
e aguarde o resultado esperado em cerca de meia hora (para um cartão de 8 GB).Depois disso, insira outro Raspberry, altere o nome do host, o nome de usuário no script runrdp e repita conforme necessário.6.B Faça o download da imagem final
Se, é claro, você confia em mim, pode usar a imagem preparada por mim reconfigurando-a levemente. Quaisquer favoritos, ferramentas de telemetria etc. - Não adicionei, não é o Windows 10, mas não sou a Microsoft e também não acredito na perspectiva econômica de mineração oculta de bitcoins no RPi.A imagem foi compilada de acordo com as instruções e compactada para uso em um cartão SD com um tamanho mínimo de 2 GB chineses (desonestos) (1977614336 bytes). Além disso, a parte preenchida da imagem geralmente ocupa os primeiros 1966080000 bytes, que devem caber mesmo no cartão SD mais chinês.Para fazer isso:1) Faça o download do arquivo morto no link (MD5: 0B5033A9CA12BA8299340BC482111998) e descompacte o arquivo de imagem.2) Copie-o para o cartão SD, utilizando, por analogia, as instruções do parágrafo 1.2.3) Inicialize o sistema, aguarde a tela gráfica aparecer e pressione Ctrl + Alt + F2 para acessar o console.Efetue login como usuário pi, senha 111. Execute: $ sudo bash
4) Siga as etapas 1.4, 2.1, verifique se a Internet funciona (comando ping, por exemplo).5) Execute raspi-config, vá para Advanced Options, selecione Expand Filesystem (para expandir a imagem do sistema para todo o espaço disponível no cartão SD)6) Edit / home / user / runrdp, substituindo o nome do host do servidor pelo nome ou IP- o endereço do seu servidor e o nome de usuário "usuário" para o nome do usuário sob o qual o operador deve se conectar ao servidor.7) Reinicie novamente e verifique a operação.Conclusão
Só isso, obrigado pela atenção. Espero que esta informação seja útil para alguém.Infelizmente, cobrir tudo em um artigo é extremamente difícil. Se houver um feedback positivo, escreverei como é conveniente encaminhar as impressoras a partir desta montagem.PS 12/11/2019. Obrigado aos colegas (gecube, Mnemonik, mkovalevskyi, SannX) pelas dicas e edições. Alterações feitas:- adicionado um comando de proteção de tela de desligamento;
- configuração NTP adicionada;
- sobre o consumo de memória no servidor com várias conexões incompletas de clientes RDP - adicionou uma caixa de mensagens ao script com uma pausa.
Além disso, acabei de testar um cartão retirado do RPi3, inserindo-o no RPi4 Modelo B 1Gb recém-descompactado. Tudo funciona muito bem sem correções. Por conseguinte, esta instrução também é adequada para RPi 4 e pode ser adequada para outras modificações.Para tanta alegria, adicionei uma imagem para download (consulte a seção 6.B), que você pode baixar e clonar sem seguir todas as instruções.