Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Sistema Operacional Raspbian

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 13

Raspberry e Raspbian

1 Apresentação
Trechos extraídos de wikipedia.

Raspberry Pi é um computador do tamanho de um cartão de crédito, que se conecta a um monitor, e


usa um teclado e um mouse padrão. Foi desenvolvido no Reino Unido pela Fundação Raspberry Pi.
É capaz de fazer tudo que se esperaria de um computador desktop, como navegar na internet,
reproduzir vídeo, manipular planilhas, processar texto, compilar programas e jogar jogos. Além do
mais, o Raspberry Pi tem a capacidade de interagir com o mundo exterior através da conexão GPIO
(General Purpose Input/Output), e tem sido usado numa ampla gama de projetos digitais como
sistema embarcado.

Raspberry Pi 3 Model B, lançado em fevereiro de 2016, vem com WiFi e Bluetooth na placa e
utiliza um “system on a chip” da Broadcom, que inclui um processador central compatível com
ARM e um processador gráfico (GPU, a VideoCore IV). CPU tem 4 núcleos, a sua velocidade é 1,2
GHz e possui memória RAM de 1 GBytes. A fundação fornece Raspberry Pi OS, uma distribuição
de Linux baseado em Debian e vários outros sistemas operacionais de terceiros.

Figura 1: Raspberry Pi 3 Model B (do Wikipedia).

Arquitetura ARM (Advanced RISC Machine) é uma arquitetura de processador usada


principalmente em sistemas embarcados, smartphones e tablets. Os processadores ARM são
conhecidos pela sua versatilidade, pois possuem poucas instruções para programação. O padrão
RISC do processador permite que estes processadores tenham menos transistores que processadores
CISC (como x86). Essa abordagem reduz custos, calor liberado e consumo de energia. Essas são
características desejáveis para dispositivos portáteis. A empresa britânica ARM Holdings
desenvolve a arquitetura e a licencia para outras empresas, que projetam seus próprios produtos que
implementam uma dessas arquiteturas - incluindo sistemas em chips (SoC) que incorporam
memória, interfaces, etc.

Nos meus testes “grosseiros”, Intel i7 foi umas 6 vezes mais rápido Raspberry Pi 3 em programas
sequenciais.

1
No mercado, há outras placas semelhantes à Raspberry Pi, entre elas: Banana Pi, Odroid e Orange
Pi. Alguns destes modelos possuem desempenho consideravelmente superior a Raspberry Pi.

2 Instalação do sistema Raspberry Pi OS


Raspberry Pi OS é um sistema operacional livre baseado em Debian e otimizado para Raspberry. A
documentação da Raspberry/Raspbian é bem didática e está em:
https://www.raspberrypi.org/documentation/

2.1 Instalação
[ Este ano (2020) Raspberry Pi OS, já está instalado nos cartões dos kits.
Usuário: pi. Senha: rasp2020.
]

Para instalar Raspberry Pi OS, você deve gravar SD-card num computador (usando um adaptador).
Depois, deve inseri-lo no Raspberry. No site do Raspberry tem informações de como instalar
Raspberry Pi OS:
https://www.raspberrypi.org/documentation/setup/
https://www.raspberrypi.org/documentation/installation/

Para funcionar, deve ligar Raspberry a um monitor (ou TV, via HDMI ou DVI usando cabo
apropriado), um teclado USB e um mouse USB. Depois, deve ligar à fonte de alimentação 5V, de
preferência pelo menos 2,5A. Ligando a uma fonte de celular que fornece 5V 2A, Raspberry
reclama que tensão está baixa quando começa a usar câmera ou outros periféricos. Powerbank
fornece nominalmente somente 5V 2A, mas Raspberry nunca reclamou que a tensão fornecida pelo
powerbank está baixa. Ligando a força, deve aparecer na tela do monitor o sistema operacional do
Raspberry.

Sempre desligue a energia de Raspberry “de forma ordenada”, clicando em “shutdown” no


ambiente gráfico ou “sudo poweroff” na linha de comando e esperando até que o monitor fique
preto indicando que Raspberry se desligou completamente. O cartão SD pode ficar corrompido se
desligar Raspberry durante uma operação de escrita. Quando trabalhar remotamente (sem ter um
monitor ligado diretamente a Raspberry), você não vai enxergar a tela do Raspberry após dar o
comando para desligar. Assim, espere o tempo suficiente para ter certeza de que Raspberry se
desligou completamente antes de desligar a alimentação. Ao ligar Raspberry, ligue de uma vez, sem
provocar liga-desliga intermitente. Para ligar novamente Raspberry que foi desligado, o único jeito
é desligar a alimentação e religar.

Se você já conhece bem o Linux, pode pular o resto desta seção, indo direto para a seção 3.

2.2 Principais comandos


Pratique várias características de Linux para se familiarizar. Para aprender os principais comandos
de Linux, leia (por exemplo):
https://www.raspberrypi.org/documentation/linux/

Procure aprender e praticar pelo menos:


ls, cd, pwd, mkdir, rmdir, rm, cp, mv, cat, chmod, ssh, scp, sudo,
df, du, zip, unzip, pipe, &, man, find, whereis, ps, kill.

2
2.3 Atualização
Para atualizar o sistema [https://www.raspberrypi.org/documentation/raspbian/updating.md ]:
sudo apt update
sudo apt full-upgrade
Sugiro que atualize o sistema após a instalação.

2.4 Instalação de um programa


Um aplicativo pode ser instalado usando o programa “início → preferences → add/remove
software”, “início → preferences → recommended software” ou pela linha de comando.

Instale um aplicativo usando “sudo apt install programa” (apt e apt-get são praticamente iguais), por
exemplo:
sudo apt install zip (compactador de arquivos)
sudo apt install firefox-esr (Browser Firefox)
sudo apt install smplayer (Visualizador de vídeo)

Remova um aplicativo usando “sudo apt remove programa”. Se quiser apagar também os arquivos
de configuração, use “sudo apt purge programa”.

2.5 Editor de texto


Existem vários editores de texto “GUI”. Você pode usar o que gostar mais para editar o seu
programa:
geany, leafpad, idle (do python), scite, gedit, xedit, etc.
Raspberry já vem com geany instalado. Também existem editores de linha de comando (úteis
quando, por algum problema, não dispuser de um ambiente gráfico):
nano, vi, vim, emacs, etc.
Editor nano é bem fácil de usar.

2.6 Variáveis de ambiente


Uma variável de ambiente é uma variável do sistema operacional que contém informações sobre
como um processo se comporta. Tanto Linux como Windows utilizam-nas.

Por exemplo, HOME (Linux) ou HOMEPATH (Windows) contém o diretório raiz do usuário.

PATH contém a lista de diretórios onde pode estar um arquivo executável (tanto Linux como
Windows). No Linux, os diretórios são separados por dois pontos ":". No Windows, os diretórios
são separados por ponto-e-vírgula ";".

Em Linux, LD_LIBRARY_PATH indica a lista de diretórios onde pode estar biblioteca


compartilhada (*.so). Em Windows, os diretórios das bibliotecas compartilhadas (*.dll) são
indicadas pela variável PATH.

O compilador GCC/G++ usa as variáveis de ambiente (tanto no Linux como no Windows):


• LIBRARY_PATH: Lista de diretórios onde procurar biblioteca durante a
linkagem.

3
• C_INCLUDE_PATH: Lista de diretórios onde procurar os arquivos include
(*.h) da linguagem C (Ex: #include <stdio.h>).
• CPLUS_INCLUDE_PATH: Lista de diretórios onde procurar os arquivos include
da linguagem C++ (Ex: #include <iostream>).

No Linux, você pode listar todas as variáveis com:


>printenv
>printenv | sort [para imprimir em ordem alfabética]
No Windows, use:
>set

Você pode ver o conteúdo de uma variável de ambiente usando:


echo $NOMEVAR (linux)
echo %NOMEVAR% (windows)

No diretório HOME dos sistemas derivados de Debian (Mint, Ubuntu e Raspberry Pi OS) fica o
arquivo .bashrc que é executado toda vez que bash (terminal de comando) é inicializado. Esse
arquivo não aparecer na lista de arquivos, pois arquivos que começam com ponto são considerados
arquivos escondidos. Você deve escrever “ls -a” para visualizá-los. Você pode mudar algumas
configurações nele para deixar Raspbian de acordo com as suas preferências. Por exemplo,
colocando a linha
alias del='rm'
nesse arquivo, você poderá escrever "del" no lugar de "rm". Se você acrescentar o comando:
export PATH=".:$PATH"
não haverá a necessidade de escrever "./programa" para executar programa que se encontra no
diretório default. Bastará escrever "programa".

2.7 Checar disco


Se você desconfiar que Raspberry está com cartão corrompido (por exemplo, desligou Raspberry de
forma não ordenada), o seguinte comando checará o cartão na próxima vez que der boot:
$sudo touch /forcefsck
$reboot

4
3 Instalar Linux no computador
Para fazer este projeto, o aluno deve ter um computador com sistema Linux (Mint ou Ubuntu). Seria
possível fazer o projeto em Windows, mas vai dar trabalho pois os comandos para acessar a rede
serão diferentes em Linux (Raspberry) e Windows (computador). Se o seu computador tem Linux
Mint ou Ubuntu, não precisa fazer nada (só vai ter que instalar Cekeikon para Linux
[http://www.lps.usp.br/hae/software/cekeikon56.html] na próxima aula). Se o sistema operacional do seu
computador for Windows, o site abaixo explica detalhadamente como instalar Linux Mint dentro do
VirtualBox em Windows. Entre no site abaixo usando usuário/senha recebidas via email.
http://www.lme.usp.br/~mauricio/linux_psi/
Configurando assim, Linux Mint vai rodar sobre o sistema Windows, dentro de uma janela (figura
2) ou ocupando a tela toda.

Figura 2: Linux Mint está rodando dentro de uma janela do Windows através do VirtualBox. A tela
do Raspberry está aparecendo como uma janela de Linux Mint através de VNC.

5
4 Controlar Raspberry remotamente
Para fazer esta seção, você precisa ter um computador com sistema Linux e um Raspberry. É
desejável que tanto o computador quanto Raspberry possuam monitor, teclado e mouse próprios.
Caso contrário, vai ter que ficar alternando esses periféricos entre os dois dispositivos.

Antes de mais nada, habilite comunicações e câmera no Raspberry. Vá para:


Início → preferences → Raspberry Pi Configuration
E habilite câmera, SSH e VNC. Se não fizer isso, a câmera e comunicação “misteriosamente” não
vão funcionar.

Figura 3: Configurações do Raspberry para acessar câmera, SSH e VNC.

6
Raspberry pode ser controlado remotamente por um computador com Linux. Neste caso, Raspberry
pode funcionar sem monitor, teclado e mouse próprios (headless). Siga os passos de:
https://www.raspberrypi.org/documentation/remote-access/
Para ver o número IP do seu computador ou Raspberry use um dos comandos abaixo:
>hostname -I
>ifconfig

1) [Pode pular este item se constatar que o seu roteador não muda número IP toda vez que
desliga/liga.] O número IP do seu computador e do Raspberry podem mudar toda vez que se
conecta ao roteador. Para facilitar o acesso remoto, é conveniente que os números IP permaneçam
constantes. Para isso, deve programar o roteador, acessando http://192.168.0.1/ com um navegador
de internet. A forma de configurar depende do modelo do roteador. Estou usando 192.168.0.110
para Raspberry e 192.168.0.109 para computador. Procure aprender o que são número MAC e
endereço IP (veja, por exemplo, [https://beej.us/guide/bgnet/ ]). No roteador D-link (figura 4), pode-se
fixar os números IP na opção “network settings” → “DHCP reservations list”.

Figura 4: Menu de reserva de número IP do D-link (network setting → DHCP reservation list).

2) Podemos classificar o acesso remoto a Raspberry em três tipos principais:


a) Acessar e copiar somente os arquivos de Raspberry. Neste tipo de acesso, não é possível
executar remotamente os programas no Raspberry. Ex: sshfs, scp, rsync, FreeFileSync,
Filezilla, etc.
b) Acessar o terminal do Raspberry. Neste acesso, um terminal (janela de comando ou bash) do
Raspberry é aberto no computador e é possível executar os programas do Raspberry
remotamente no computador. Ex: ssh.
c) Acessar o sistema gráfico do Raspberry no computador. Ex: VNC.

7
3) VNC (Virtual Network Computing). É possível acessar remotamente o desktop do raspberry a
partir do computador. Leia a documentação para saber como fazer isto.
https://www.raspberrypi.org/documentation/remote-access/vnc/README.md
A figura 5 mostra VNC funcionando. A tela do Raspberry aparece como uma janela na tela do
computador.

Nota: Use “VNC Viewer” de RealVNC no computador para acessar Raspberry (link abaixo). Parece
que TightVNC e outros programas não funcionam bem com Raspberry.
https://www.realvnc.com/en/connect/download/viewer/

Figura 5: Controlar Raspberry remotamente através de VNC. A tela do Raspberry aparece como
uma janela no computador.

Se a comunicação entre computador e Raspberry não for suficientemente rápida, VNC irá se tornar
pouco responsivo. Neste caso, é melhor usar ssh e sshfs.

[Lição de casa 1 da aula 1] Mostre VNC funcionando no vídeo. Isto é, mostre uma tela como a da
figura 5.

Exercício opcional: Como é possível fazer funcionar VNC quando o computador e o Raspberry não
estiverem conectados ao mesmo roteador?

8
4) Também é possível acessar a linha de comandos de Raspberry (bash) através de SSH (secure
shell):
https://www.raspberrypi.org/documentation/remote-access/ssh/README.md
É possível acessar tanto de Linux como de Windows. O comando seguinte permite acessar
remotamente o terminal de comandos do Raspberry (troque os números pelo número IP do seu
Raspberry):
ssh pi@192.168.0.110

É possível rodar remotamente os programas GUI (com janela) do Raspberry e transmitir a tela
através das opções:
ssh -X pi@192.168.0.110
ssh -X -C pi@192.168.0.110 (faz compactação antes de transmitir)

Depois de estabelecida a conexão "ssh -X", é possível enxergar no computador os programas


gráficos do Raspberry, chamando-os da linha de comando do Raspberry. Por exemplo:
pi@raspberrypi$ geany & => Vai rodar geany no Raspberry e transmitir janela para Computador
pi@raspberrypi$ xeyes & => Vai rodar xeyes no Raspberry e transmitir janela para Computador
Nota: "xeyes" pode ser instalada com "sudo apt install x11-apps"

Figura 6: Janela de execução do programa em Raspberry pode ser mostrada no computador através
de "ssh -X".

[Lição de casa 2 da aula 1] Mostre "ssh -X" funcionando no vídeo. Pode ser uma tela como figura 6.

Exercício opcional: Como é possível fazer funcionar ssh quando o computador e o Raspberry não
estiverem conectados ao mesmo roteador?

9
5) Use sshfs (SSH filesystem) para montar a estrutura de diretórios do Raspberry como um
subdiretório do computador:
https://www.raspberrypi.org/documentation/remote-access/ssh/sshfs.md

Exemplo: Crie um diretório pi no /home/usuario do computador remoto.


>cd ~
>mkdir pi

Depois, dê o seguinte comando no computador:


>sshfs pi@192.168.0.110: /home/psi3422/pi
[troque 192.168.0.110 pelo número IP do seu Raspberry]

Se sshfs não estiver instalado no seu computador, instale-o


>sudo apt install sshfs

Depois disso, se você acessar o diretório /home/usuario/pi do computador, estará acessando a


estrutura de diretório do Raspberry.

Para desmontar o volume:


>fusermount -u /home/psi3422/pi

Opcionalmente, se não quiser decorar e ficar digitando os comandos acima, pode criar "script bash".
Por exemplo, criando arquivo “montar-pi” com conteúdo:

sshfs pi@192.168.0.110: /home/psi3422/pi

e tornando-o executável e deixando-o em algum diretório listado no PATH:

>chmod +x montar-pi

você pode digitar “montar-pi” em vez de ter de escrever todo o comando. Pode fazer o mesmo para
desmontar-pi.

10
[Lição de casa 3 da aula 1] Mostre no vídeo sshfs funcionando. Pode mostrar o acesso ao diretório
do Raspberry via terminal e/ou via gerenciador de arquivos (como na figura 7).

Exercício opcional: Como é possível fazer funcionar sshfs quando o computador e o Raspberry não
estiverem conectados ao mesmo roteador?

Figura 7: Sshfs permite acessar o sistema de arquivos do Raspberry de como um subdiretório do


computador.

11
6) Para copiar arquivos entre computador e Raspberry, pode usar scp (secure copy protocol), rsync
(remote sync), FreeFileSync ou simplesmente sshfs junto com cp.
https://www.raspberrypi.org/documentation/remote-access/ssh/scp.md
https://www.raspberrypi.org/documentation/remote-access/ssh/rsync.md
http://www.freefilesync.org/

7) Para sincronizar as pastas do projeto do computador e do Raspberry:

Primeiro monte a estrutura de diretórios de Raspberry como ~/pi:


>sshfs pi@192.168.0.110: /home/psi3422/pi

Gosto de usar FreeFileSync para manter os dois diretórios sincronizados, pois é bem intuitivo para
usar. No Mint, esse aplicativo pode ser instalado através do “gerenciador de aplicativos”.
Infelizmente, não há uma versão pré-compilada deste programa para Raspberry. Porém, sempre é
possível fazer sincronização a partir do computador.

Figura: Janela do FreeFileSync.

Também é possível sincronizar os diretórios /home/psi3422/labsist (do Linux) e


/home/psi3422/pi/labsist (do Raspberry) executando rsync nas duas direções:
rsync -rtuv /home/psi3422/labsist/ /home/psi3422/pi/labsist
rsync -rtuv /home/psi3422/pi/labsist/ /home/psi3422/labsist

A barra / após o diretório de origem é necessária. Para mais detalhes, veja:


https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps
https://stackoverflow.com/questions/1602324/rsync-how-do-i-synchronize-in-both-directions
https://linux.die.net/man/1/rsync

12
8) Iremos desenvolver um sistema servidor-cliente (para ser executado no Raspberry e no
computador). É recomendável que você crie um ambiente onde se pode trabalhar com os dois
dispositivos ao mesmo tempo. Caso contrário, provavelmente irá perder muito tempo chaveando
entre um dispositivo e outro. Figura 8 mostra um ambiente de desenvolvimento, onde na coluna
esquerda há o editor de texto e terminal do computador e na coluna direita há o editor de texto e
terminal do Raspberry.

Figura 8: Um ambiente para trabalhar ao mesmo tempo em computador (coluna da esquerda) e


Raspberry (coluna da direita).

Existem duas formas de criar ambiente como o da figura 8:

1) Executando remotamente o editor (no Raspberry) e visualizando a janela do editor no


computador:
ssh -X pi@192.168.0.110
raspberry$ geany programa.cpp &

2) Executando o editor no localmente no computador e acessando o arquivo de Raspberry


remotamente via sshfs:
cd ~ && mkdir pi [Se diretório ~/pi ainda não existe]
sshfs pi@192.168.0.110: /home/usuario/pi
computador$ geany ~/pi/diretorio/programa.cpp &

As duas opções funcionam. Porém, o editor se torna mais responsivo na opção (2), pois o editor é
executado localmente. Nesta opção, somente vai acessar o disco de Raspberry para carregar ou
salvar arquivo. Usando opção (1), o editor fica lento se a conexão raspberry-computador for ruim,
pois toda atualização da janela deve ser transmitida do Raspberry para computador.

[Lição de casa 4 da aula 1] Mostre no vídeo um ambiente como o da figura 8 funcionando.

13

Você também pode gostar