Instalar ubuntu 20.04 Server no Raspberry
Os termos rpi, pi e raspberry são sinónimos.Vai ser usado por defeito o ip 192.168.1.88 e o gateway 192.168.1.254.
Fazer o download da imagem com o rpi-imager para o microSD card que vai funcionar na placa raspberry
https://www.raspberrypi.org/software/
Atenção à formatação da microSD, se o processo parar e não concluir, uma das causas é a deficiente formatação. Pode formatar usando um utilitário para windows (SD CARD FORMATTER).
O processo pode demorar muito tempo (em alguns casos mais de uma hora), por isso, tenha paciência até estar concluído.
Primeira instalação
Após a conclusão do NOOBS, inserir o SD Card na placa rpi.
Se usarmos a saída HDMI, na primeira vez que iniciar, o login é ubuntu, a password ubuntu é solicitado de imediato que crie uma nova pass.
Podemos sem a saída hdmi ligada aceder diretamente através de ssh. Primeiro vamos verificar nossa rede qual o ip e dispositivo.
Linux ou OSX
arp -na | grep -i b8:27:eb
Windows
arp -a | findstr b8-27-eb
(192.168.1.88) at b8:27:eb:4b:75:e6 [ether] on enp3s0
C:\Users>arp -a | findstr b8-27-eb 192.168.1.88 b8-27-eb-4b-75-e6 dynamic
nota: no windows se o computador já funcionou com outras placas sem terminar a sessão os IPs anteriores vão aparecer se forem diferentes do atual.
ligação por ssh
Para ligar através de terminal pode-se usar o putty ou usar o terminal diretamente no caso do linux ou OSX
ssh This email address is being protected from spambots. You need JavaScript enabled to view it.
sudo apt update sudo apt upgrade
Vai demorar algum tempo até terminar (em alguns casos mais de 10 minutos)
Alterar a porta de acesso pelo ssh
Um dos hobbies preferidos de alguns aprendizes de "Ácaro" é tentar aceder aos sistemas através de ssh, fazem a ligação e experimentam milhões de password até entrarem. Este tipo de ataque pode ser feito facilmente ao rpi se não tivermos medidas de proteção. Assim, a primeira medida para evitar estes ataques é mudar a porta do ssh, normalmente uso uma porta acima de 49000, neste caso vamos mudar para 49814 como exemplo. Existem outras medidas de proteção (firewall etc etc)
sudo nano /etc/ssh/sshd_config
Port 49814 MaxSessions 5
ssh This email address is being protected from spambots. You need JavaScript enabled to view it. -p 49814
Welcome to Ubuntu 20.10 (GNU/Linux 5.8.0-1013-raspi aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sun Jan 31 19:01:42 UTC 2021 System load: 2.05 Usage of /: 4.5% of 57.37GB Memory usage: 27% Swap usage: 0% Temperature: 44.0 C Processes: 143 Users logged in: 0 IPv4 address for eth0: 192.168.1.88 IPv6 address for eth0: 2001:8a0:569c:e01:ba27:ebff:fe4b:75e6 0 updates can be installed immediately. 0 of these updates are security updates.
Nota: No caso de ligação com o putty, deve ser alterada a porta de 22 para 49814.
Acesso root
Para executar um comando com acesso administrativo, podemos usar o comando "sudo" antes do que pretendemos executar, por exemplo,
cp xpto.txt /pastx/xpto.txt
sudo cp xpto.txt /pastx/xpto.txt
IP fixo na rede, por cabo e por wi-fi
Este procedimento aplica-se apenas às versões 20.04 e 20.10 a versão 22.04 tem algumas alterações. Não pode se executado em versões anteriores à 20.04.
Precisamos de aceder facilmente ao rpi, se o ip mudar sempre que exista uma nova ligação, não conseguimos automatizar o sistema para aceder facilmente, é por isso fundamental fixar tanto o ip por cabo "eth0" como da rede wifi "wlan0".
Como ip dinâmico podemos usar o ARP para saber qual o ip, mas, se usarmos um webserver torna-se incomodo e inútil o ip estar sempre a mudar.Desde o ubuntu 18.04, o ip pode ser gerido dentro da pasta /etc/netplan, com o netplan.
ATENÇÃO: Os ficheiros de configuração do NETPLAN tem estrutura organizacional, usem "espaços" e não "tabs".
Na pasta /etc/netplan digitamos ll ou ls -l e encontramos um ficheiro de configuração de rede yaml.
root@ubuntu:/etc/netplan# ll -rw-r--r-- 1 root root 512 Sep 24 19:27 50-cloud-init.yaml
Editamos o ficheiro
A edição de ficheiros no linux pode ser feita com um dos dois editores que vêm por defeito "NANO" e "VI" mas, quem não está muito familiarizado pode usar uma ligação com o WINSCP(https://winscp.net) e editar com um programa com interface gráfico. Nos próximos passos, onde está "nano" pode ser usado "vi" ou, no caso da gestão com o winscp, deve ser feito um acesso com permissão root.
sudo nano 50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
dhcp4: true
match:
driver: bcmgenet smsc95xx lan78xx
optional: true
set-name: eth0
version: 2
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
Como este ficheiros yaml definem o nosso acesso à internet e facilmente ficam sem funcionar porque usamos a tab em vez do espaço ou qualquer um das mil e uma possibilidade de estragar a configuração, vamos fazer uma cópia de segurança.
sudo cp 50-cloud-init.yaml 50-cloud-init.yaml.bak
sudo nano 50-cloud-init.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
match:
driver: bcmgenet smsc95xx lan78xx
set-name: eth0
addresses: [192.168.1.88/24]
gateway4: 192.168.1.254
nameservers:
addresses: [8.8.8.8, 8.8.4.4,192.168.1.254]
sudo netplan try
(atenção este ficheiro é muito sensivel e, em caso de erro, fica-se de imediato sem rede)
No caso de não existir erro podemos aplicar de imediato a configuração
sudo netplan apply
ip addr
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether b8:27:eb:4b:75:e6 brd ff:ff:ff:ff:ff:ff inet 192.168.1.88/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2001:8a0:568c:e01:ba27:ebff:fe4b:75e6/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 48659sec preferred_lft 48659sec inet6 fe80::ba27:ebff:fe4b:75e6/64 scope link valid_lft forever preferred_lft forever 3: wlan0: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether b8:27:eb:1e:20:b3 brd ff:ff:ff:ff:ff:ff
Podemos ver que temos mais um interface, o wlan0 que é o Wi-Fi
podemos assim criar um novo ficheiro de configuraçãosudo nano 99-cloud-init.yaml
# configuração manual do IP FIXO no wi-fi network: version: 2 renderer: networkd wifis: wlan0: dhcp4: no addresses: [192.168.2.40/24] gateway4: 192.168.2.254 nameservers: addresses: [8.8.8.8, 8.8.4.4] access-points: "SSID_REDE": password: "..."
Neste caso usamos o ip 192.168.2.40 para o wi-fi no grupo 192.168.2.x
Verificar no router qual o ip disponível para a rede wi-fi.
Podemos agora verificar se estão ambas as placas a funcionar usando o comando o device wlan0 já terá um ip atribuido
ip addr
Já temos a nossa placa rpi instalada e configurada em termos de hardware e network, agora vamos instalar o software básico de funcionamento.
Instalar software no Raspberry
O computador já se encontra funcional mas, que programas vamos precisar para os nossos projetos. Necessitamos como base de um servidor de web, uma base de dados, linguagens de programação para interagir com o rpi. Começamos por instalar o LAMP (Linux, Apache, MySQL, PHP).
- APACHE: Servidor de Web;
- PHP: Linguagem de script open source de uso geral, para o desenvolvimento web que pode ser embutida dentro do HTML;
- MYSQL: Base de dados relacional;
- PHPMYADMIN: Gestor de base de dados mysql;
- PYTHON: Linguagem de programação;
- PIP: Package Installer for Python.
sudo apt install apache2 -y
sudo apt install php -y
sudo apt install mariadb-server php-mysql -y
sudo apt install phpmyadmin
sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update
sudo apt update sudo apt upgrade sudo apt install python3-pip
Como instalar modules python
Por exemplo o module tinha a designação de gpiozero
sudo pip install gpiozero
para desinstalar
sudo pip uninstall gpiozero
Permissões dos ficheiros
Por defeito os ficheiros(FILES) de trabalho têm permissões 0644 e as directorias(DIR) 0755
Também cada ficheiro tem permissões de escrita ou leitura (atributos), que nos é dado pelo chmod
Para alterar as permissões
sudo chmod /dir/dir/* -R
Cada ficheiro tem um user e grupo atribuido
Se o ficheiro for criado pelo user rpi, o owner será rpi.
Criar file test
sudo touch test
Atribuir user/grupo
sudo chown rpi:rpi test