io:fwrite("installing Arch @ RaspberryPI\n").
ENG
New place to live is good pretext to refresh IT assets inventory and it's usage. Except of production stuff there always is … something that can be used to create budget IT Lab at home. If you have old router/switch you can go with OpenWRT to learn network topics. RaspberryPI can give you some fun with the servers knowledge :-).
Of course the post is for dinosaurs who remember that there is always something that host your cloud environment. Due to my personal preference it would describe installing Arch GNU/Linux distribution. It's perfect for learning: with great documentation and not so many auto-magic. In my case it's Raspberry Pi 3 Model B V1.2 form 2015. To simplify cables management I would like to use it without additional keyboard, monitor, RJ-45 so it must boot from the start, connect to Wi-Fi and enable to SSH login :-).
First step is to go to https://archlinuxarm.org site -> Platforms -> ARMv8 -> Broadcom -> Rasberry Pi 3 and read installation steps. They looks promising as description of the first steps. Below you can find version extended by add additional steps for preparing Wi-Fi working from first boot.
Insert your microSD card to your card reader:
To identify SD card you can use fdisk command (with & without the card). Your results can be different. My device is /dev/sda.
>sudo fdisk -l
Dysk /dev/mmcblk0: 116,48 GiB, bajtów: 125069950976, sektorów: 244277248
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: gpt
Identyfikator dysku: F81FEB2D-071D-4333-9DE9-451500A94545
Urządzenie Początek Koniec Sektory Rozmiar Typ
/dev/mmcblk0p1 2048 1050623 1048576 512M System EFI
/dev/mmcblk0p2 1050624 244277214 243226591 116G Linux LVM
Dysk /dev/sda: 14,84 GiB, bajtów: 15931539456, sektorów: 31116288
Model dysku: SD/MMC
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos.
Identyfikator dysku: 0x6f59705e
Urządzenie Rozruch Początek Koniec Sektory Rozmiar Id Typ
/dev/sda1 2048 206847 204800 100M c W95 FAT32 (LBA)
/dev/sda2 206848 31116287 30909440 14,7G 83 Linux
Dysk /dev/mapper/luks: 115,96 GiB, bajtów: 124515237376, sektorów: 243193823
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Dysk /dev/mapper/rootvg-root: 115,96 GiB, bajtów: 124512108544, sektorów: 243187712
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Start fdisk to partition the SD card:
>sudo fdisk /dev/sda
At the fdisk prompt, delete old partitions and create a new one:
Type o. This will clear out any partitions on the drive;
Type p to list partitions. There should be no partitions left;
Type n, then p for primary, 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +200M for the last sector;
Type t, then c to set the first partition to type W95 FAT32 (LBA);
Type n, then p for primary, 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector;
Write the partition table and exit by typing w.
Create and mount the FAT filesystem:
> sudo mkfs.vfat /dev/sda1
> mkdir boot
> sudo mount /dev/sda1 boot
Create and mount the ext4 filesystem:
> mkfs.ext4 /dev/sda2
> mkdir root
> mount /dev/sda2 root
Download and extract the root filesystem:
Go for https://www.raspberrypi.com and check processor on your RaspberryPi (in my case: Broadcom BCM2837). Then check ARM version of the processor (ARMv8) and download the latest image from https://archlinuxarm.org/about/downloads. In my case: ARMv8 Raspberry Pi 3/4 http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz. On https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3 there is note about AArch64: "This provides an installation using the mainline kernel and U-Boot. Use this installation only if you have no dependencies on the closed source vendor libraries shipped in the ARMv7 release. This installation has near full support for the device, including the VC4 graphics."
$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz
$ sudo bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root
$ sync
Enable Wireless Networking:
Create a new file root/etc/systemd/network/wlan0.network:
[Match]
Name=wlan0
[Network]
Description=On-board wireless NIC
DHCP=yes
Setup the SSID and password (in place of ${SSID} and ${PASS} write your network name and password):
su -c "wpa_passphrase ${SSID} ${PASS} > root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf"
If you have hidden network you must edit root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf to add scan_ssid=1. At the end you should have something like that:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
network={
ssid="YOURnetwork"
scan_ssid=1
psk="YOURpassword"
}
sudo ln -s /usr/lib/systemd/system/wpasupplicant@.service root/etc/systemd/system/multi-user.target.wants/wpasupplicant@wlan0.service
Move boot files to the first partition and unmount both partitions and remove the local directories:
> sudo mv root/boot/* boot/
> sudo umount boot root
> sudo rm -R boot root
At this stage everything should be ready to work. Insert the SD card into the Raspberry Pi and connect USB as power source. The default password for alarm is alarm, for root is root.
There is high possibility that clients in your network are isolated. To check if everything is working login to your router (192.168.1.1). On OpenWRT you can check RaspberryPI IP by
> cat /tmp/dhcp.leases | grep alarm
Update system:
router> ssh [email protected]
alarm@alarmpi> su -
root@alarmpi> pacman-key –init
root@alarmpi> pacman-key –populate archlinuxarm
root@alarmpi> pacman -Syu
Happy Arching :-].
PT
Um novo lugar para morar é um bom pretexto para atualizar o inventário de ativos de TI e seu uso. Exceto dispositivos de produção, sempre há… algo que pode ser usado para criar um laboratório de TI em casa. Se você possui um roteador/switch antigo, pode usar o OpenWRT para aprender tópicos de rede. RaspberryPI pode lhe dar um pouco de diversão com o conhecimento dos servidores :-).
Claro que o post é para os dinossauros que lembram que sempre tem algo que hospeda seu ambiente de nuvem. Devido à minha preferência pessoal, descreveria a instalação da distribuição Arch GNU/Linux. É perfeito para aprender: com ótima documentação e não tantas mágicas automáticas. No meu caso é Raspberry Pi 3 Model B V1.2 form 2015. Para simplificar o gerenciamento de cabos, eu gosto de usá-lo sem teclado, monitor, RJ-45, portanto, deve inicializar desde o início, conectar-se ao Wi-Fi e habilitar para Login SSH :-).
O primeiro passo é acessar o site https://archlinuxarm.org -> Plataformas -> ARMv8 -> Broadcom -> Rasberry Pi 3 e ler as etapas de instalação. Eles parecem promissores como descrição dos primeiros passos. Abaixo, você pode encontrar versao estendida adicionando etapas adicionais para preparar o funcionamento do Wi-Fi desde a primeira inicialização.
Insira o cartao miscroSD no leitor de cartao:
Para identificar o cartao, voce pode usar o comando fdisk (com e sem o cartao). Sues resultatos podem ser differentes. Meu disposivo e /dev/sda.
>sudo fdisk -l
Dysk /dev/mmcblk0: 116,48 GiB, bajtów: 125069950976, sektorów: 244277248
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: gpt
Identyfikator dysku: F81FEB2D-071D-4333-9DE9-451500A94545
Urządzenie Początek Koniec Sektory Rozmiar Typ
/dev/mmcblk0p1 2048 1050623 1048576 512M System EFI
/dev/mmcblk0p2 1050624 244277214 243226591 116G Linux LVM
Dysk /dev/sda: 14,84 GiB, bajtów: 15931539456, sektorów: 31116288
Model dysku: SD/MMC
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos.
Identyfikator dysku: 0x6f59705e
Urządzenie Rozruch Początek Koniec Sektory Rozmiar Id Typ
/dev/sda1 2048 206847 204800 100M c W95 FAT32 (LBA)
/dev/sda2 206848 31116287 30909440 14,7G 83 Linux
Dysk /dev/mapper/luks: 115,96 GiB, bajtów: 124515237376, sektorów: 243193823
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Dysk /dev/mapper/rootvg-root: 115,96 GiB, bajtów: 124512108544, sektorów: 243187712
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Inicie o fdisk para particionar o cartao SD:
>sudo fdisk /dev/sda
No prompt do fdisk, excula as partições antigas e crie uma nova:
Tipo o para limpar todas as partições na unidade;
Tipo p para listar as partições. Não deve haver mais partições;
Tipo n para primário, 1 para a primeira partição na unidade, pressione ENTER para aceitar o primeiro setor padrão e digite +200M para o último setor;
Tipo t para definir a primeira partição para o tipo W95 FAT32 (LBA);
Tipo n para primário, 2 para a segunda partição na unidade e pressione ENTER duas vezes para aceitar o primeiro e o último setor padrão;
Escreva a tabela de partições e saia Tipo w.
Crie e monte o sistema de arquivos FAT:
> sudo mkfs.vfat /dev/sda1
> mkdir boot
> sudo mount /dev/sda1 boot
Crie e monte o sistema de arquivos EXT4:
> mkfs.ext4 /dev/sda2
> mkdir root
> mount /dev/sda2 root
Baixe e extraia o sistema de arquivos raiz:
Vá para https://www.raspberrypi.com e verifique o processador no seu RaspberryPi (no meu caso: Broadcom BCM2837). Em seguida, verifique a versão ARM do processador (ARMv8) e baixe a imagem mais recente de https://archlinuxarm.org/about/downloads. No meu caso: ARMv8 Raspberry Pi 3/4 http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz. Em https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3 há uma nota sobre o AArch64: "Isso fornece uma instalação usando o kernel principal e o U-Boot. Use esta instalação somente se você não tiver dependências de as bibliotecas do fornecedor de código fechado enviadas na versão ARMv7. Esta instalação tem suporte quase total para o dispositivo, incluindo os gráficos VC4."
$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz
$ sudo bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root
$ sync
Ativar rede sem fio:
Criar a novo arquivo root/etc/systemd/network/wlan0.network:
[Match]
Name=wlan0
[Network]
Description=On-board wireless NIC
DHCP=yes
Configure o SSID e a senha (no lugar de ${SSID} e ${PASS} escreva seu nome de rede e senha):
su -c "wpa_passphrase ${SSID} ${PASS} > root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf"
Se você tiver uma rede oculta, deve editar root/etc/wpasupplicant/wpasupplicant-wlan0.conf para adicionar scanssid=1. No final você deve ter algo assim:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
network={
ssid="YOURnetwork"
scan_ssid=1
psk="YOURpassword"
}
sudo ln -s /usr/lib/systemd/system/wpasupplicant@.service root/etc/systemd/system/multi-user.target.wants/wpasupplicant@wlan0.service
Mova os arquivos de inicialização para a primeira partição e desmonte ambas as partições e remova os diretórios locais:
> sudo mv root/boot/* boot/
> sudo umount boot root
> sudo rm -R boot root
Nesta fase, tudo deve estar pronto para funcionar. Insira o cartão SD no Raspberry Pi e conecte o USB como fonte de alimentação. A senha padrão para alarme é alarme, para root é root.
Existe uma grande possibilidade de que os clientes em sua rede estejam isolados. Para verificar se está tudo funcionando faça login no seu roteador (192.168.1.1). No OpenWRT você pode verificar o IP do RaspberryPI
> cat /tmp/dhcp.leases | grep alarm
Actualizar sistema:
router> ssh [email protected]
alarm@alarmpi> su -
root@alarmpi> pacman-key –init
root@alarmpi> pacman-key –populate archlinuxarm
root@alarmpi> pacman -Syu
Feliz Arching :-].