Instalar o i3wm com Arch Linux

Miguel Sampaio da Veiga
Canivete-Suiço
Published in
9 min readAug 7, 2019

Recentemente escrevi sobre a utilização do i3 no Debian Buster. Continuo a ser um defensor e utilizador do Debian. Recentemente recebi um portátil novo com Windows 10 pré-instalado. A minha ideia inicial era manter este SO nesta máquina, mas este ideia não durou mais do que um par de horas a fazer actualizações. A verdade é que não consigo encaixar o conceito da Microsoft que o Windows é um serviço porque o WINDOWS É UM SISTEMA OPERATIVO!

Portanto, depois de colocar de parte a manutenção do Windows, passei à parte em que decido qual a distribuição que vou experimentar. Decidi não considerar nenhuma distribuição Debian e derivado pois quero aproveitar a oportunidade de testar algo diferente. Depois de considerar um pouco, a minha atenção caiu sobre a distribuição Clear Linux, a distribuição da Intel optimizada para os seus processadores. Os reviews que li deixaram-me com uma ideia favorável sobre esta distribuição e da forma como a Intel está a levar esta por diante. Cheguei mesmo a instalar a versão desktop e server numa máquina virtual para testar o funcionamento. No entanto, passado algum (pouco) tempo acabei por ficar farto por não apresentar nenhum nível de dificuldade. Consideradas das hipóteses, acabei por me decidir por usar o Arch Linux, uma distribuição mantida por uma comunidade activa e dinâmica.

Arranque Arch ISO

Arrancar com a ISO levar-nos-à a um dos seguintes ecrãs:

Menu UEFI/BIOS do Arch Linux

Teclado

O teclado PT pode ser configurado da seguinte forma:

# ls /usr/share/kbd/keymaps/**/*.map.gz

# loadkeys pt-latin9

UEFI (esquerda) ou BIOS (direita)

Conectividade internet:

# ip link

# ip addr

# ping other_machine_in_network

Se vai ser usada uma rede wireless, é necessário fazer a configuração no portátil.

Configurar a placa wireless

Primeiro determinar o driver:

# lspci -k

06:00.0 Network controller: Intel Corporation WiFi Link 5100
Subsystem: Intel Corporation WiFi Link 5100 AGN
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi

A mensagem devolvida deverá ser parecida a esta. Neste caso o módulo está disponível e em uso. Determina o nome da interface:

# ip link

Obteremos uma lista de interfaces (vou assumir o nome wlan0). Vamos ativar:

# ip link set wlan0 up

Se devolver o erro “SIOCSIFFLAGS: No such file or directory”, procura o firmware.

Sem encryptação

# iw dev wlan0 connect “your_essid”

WEP

# iw dev wlan0 connect “your_essid” key 0:your_key

WPA

Primeiro gera um ficheiro de configuração:

# wpa_passphrase my_essid my_passphrase > /etc/wpa_supplicant/my_essid.conf

Testa-o. Um dos outputs deve dizer “connected”

# wpa_supplicant -c /etc/wpa_supplicant/my_essid.conf -i wlan0

Agora executa em backgriound:

# wpa_supplicant -B -c /etc/wpa_supplicant/my_essid.conf -i wlan0

Activa o DHCP:

# dhclient wlan0

Atualiza o relógio

# timedatectl set-ntp true

Vamos preparar as partições.

Particionar disco

O sistema vai ter 3 partições, a partição dew boot (/boot), de swap e a partição root encriptada (/). Vamos determinar o dispositivo HDD

# lsblk

Na lista podemos ver que o HDD é o ‘/dev/sda’:

Vamos destruir toda a informação existente:

# shred — verbose — random-source=/dev/urandom — iterations=3 /dev/sda

Este passo vai demorar (bastante) tempo.

Vamos criar as partições:

# cfdisk /dev/sda

UEFI

Antes de iniciar, acede ao menu e desabilita o secure boot.

Vamos começar pela partição /boot:

  • [New] -> Partition size: 512M -> [Type] -> EFI System

Agora a SWAP partition:

  • [New] -> Partition size: 2G ->[Type] -> Linux swap

E finalmente a partição /:

  • [New] -> Partition size: 13.5G

Write e quit.

Vamos preparar as partições UEFI e SWAP:

# mkfs.fat -F32 /dev/sda1

# mkswap /dev/sda2

# swapon /dev/sda2

Falta encriptar a partição root.

BIOS

Vamos criar a /boot partition:

  • [New] -> Partition size: 512M -> primary -> Bootable

Agora a SWAP partition:

  • [New] -> Partition size: 2G -> primary -> [Type] -> Linux swap / Solaris

E finalmente a / partition:

  • [New] -> Partition size: 13.5G -> primary

Write e quit.

Finalmente, vamos preparar as partições de boot e swap:

# mkfs.ext4 /dev/sda1

# mkswap /dev/sda2

# swapon /dev/sda2

Vamos agora encriptar a root.

Encriptar root partition

A /boot partition fica como está, mas vamos encriptar a partição /dev/sda3:

# cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

Agora temos de abrir a partição:

# cryptsetup open — type luks /dev/sda3 cryptroot

Criar o filesystem:

# mkfs.ext4 /dev/mapper/cryptroot

E montar o FS:

# mount /dev/mapper/cryptroot /mnt

# mkdir /mnt/boot

# mount /dev/sda1 /mnt/boot

Instalar sistema base e configuração

# pacstrap /mnt base linux linux-firmware

Criar fstab

# genfstab -U /mnt >> /mnt/etc/fstab

Root no novo sistema

# arch-croot /mnt

Definir timezone, locale e teclado

# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

# hwclock — systohc

# nano /etc/locale.gen

Descomenatar os locales (pt_PT) e executar:

# locale-gen

Teclado

Vamos tornar as mudanças de teclado permanente:

# nano /etc/vconsole.conf

KEYMAP=pt-latin9

Rede

# nano /etc/hostname

your_host_name

# nano /etc/hosts

127.0.0.1 localhost

::1 localhost

127.0.1.1 myhostname.localdomain myhostname

Wireless

Instala o pacote network manager e o firmware da placa wireless (tal como anteriormente)

# pacman -S networkmanager

Root password

# passwd

Boot loader

Vamos usar o GRUB que suporta UEFI e BIOS. Basta seguir o parágrafo correspondente:

# pacman -S grub

UEFI

Instala as seguintes dependencias:

# pacman -S efibootmgr

# grub-install — target=x86_64-efi — efi-directory=/boot — bootloader-id=GRUB

# grub-mkconfig -o /boot/grub/grub.cfg

BIOS

# grub-install — target=i386-pc /dev/sda

# grub-mkconfig -o /boot/grub/grub.cfg

Configurar a partição encriptada

Edita o seguinte ficheiro:

# nano /etc/default/grub

E adiciona os parâmetros:

GRUB_CMDLINE_LINUX=”cryptdevice=/dev/sda3:cryptroot”

E também:

# nano /etc/mkinitcpio.conf

Adiciona o hook ‘encrypt’:

HOOKS=(base udev autodetect modconf block encrypt filesystems keyboard fsck)

Regenera o ficheiro mkinitcio:

# mkinitcpio -p linux

# grub-install — recheck /dev/sda

# grub-mkconfig -o /boot/grub/grub.cfg

Exit e Reboot

# exit

# reboot

Configurar o novo sistema

Configurar rede

Activa dhcp:

# systemclt enable dhcpcd.service

# systemclt start dhcpcd.service

Para configurar WiFi:

# nmtui

E usa o teclado para navegar as opções.

Utilizadores

A conta de ‘root’ não deve ser usada diariamente. Vamos criar uma conta nova e atribuir permissões de sudo:

# pacman -S sudo

# useradd -m username

# passwd username

Adiciona o utilizador à lista dos sudoers:

# visudo

O editor é o ‘vi’. Usa a tecla ‘i’ para isnerir texto e ‘Esc’ para terminar a escrita. ‘:wq’ para gravar e sair ou ‘:q!’ para sair sem gravar e tentar novamente.

Logout e login com o novo utilizador.

Processor microcode

Intel:

# pacman -S intel-ucode

AMD:

# pacman -S amd-ucode

Regenerar GRUB config:

# grub-mkconfig -o /boot/grub/grub.cfg

Instalar i3

Há dois pacotes i3, ‘i3-wm’ e ‘i3-gapps’:

$ sudo pacman -S i3 xorg xorg-xdm dmenu i3status i3lock ttf-dejavu

$ echo “exec i3” > ~/.xsession

$ chmod +x ~/.xsession

Vamos usar o mate-terminal e acrescentar o tab completion de comandos:

$ sudo pacman -S mate-terminal bash-completion

Activa o serviço XDM:

$ sudo systemctl enable xdm.service

Instala polkit para gerir privilégios system wide:

$ sudo pacman -S polkit

Reboot:

$ reboot

Login no XDM e selecciona as opções do i3. Usa a tecla windows como mod para não conflituar com as opções das aplicações. Abre o ficheiro de config do i3 e muda a font:

nano ~/.config/i3/config

Faz ‘mod+shift+r’.

Teclado

A configuração anterior não serve para o Xorg (mais informação aqui). Vamos configurar o teclado para o nosso utilizaod no ‘.xsession’:

$ nano ~/.xsession

Adiciona a linha antes do ‘exec i3’:

setxkbmap your_keyboard_layout

Browser

Escolhe:

$ sudo pacman -S firefox chromium

Som e as teclas multimedia

Instala pulseaudio e o pavucontrol

$ sudo pacman -S pulseaudio pavucontrol

Executa o ‘pavucontrol’ (reboot?) e configura as saídas (remove mute).

Instala o pacote xbindkeys:

$ sudo pacman -S xbindkeys

As teclas multimedia deverão enviar os comandos ‘XF86Audio’ e basta configurar o i3 para reagir a este input. Edita o ficheiro e adiciona as linhas:

$ nano ~/.config/i3/config

# Increase volume
bindsym XF86AudioRaiseVolume exec “pactl set-sink-volume @DEFAULT_SINK@ +5%”

# Decrease volume
bindsym XF86AudioLowerVolume exec “pactl set-sink-volume @DEFAULT_SINK@ -5%”

# Mute volume
binsym XF86AudioMut exec “pactl set-sink-mute @DEFAULT_SINK@ toggle”

Faz ‘mod+shift+r’ e testa as teclas.

Monitor e brilho

Primeiro e muito importante, obtém o firmware para a placa gráfica (procura) e instala o xrandr e o arandr:

$ sudo pacman -S xorg-xrandr arandr

Escreve ‘xbacklight’ no terminal e deve devolver o brilho actual. Se der mensagem de erro, confirma o firmware. Edita o ficheiro do i3 e adiciona as linhas:

$ nano ~/.config/i3/config

# Increase brightness
bindsym XF86MonBrightnessUp exec “xbacklight -inc 5”

# Decrease brightness
bindsym XF86MonBrighnessDown exec “xbacklight -dec 5”

File manager e automount

Há vários gestores de ficheiros. Sugiro o cmanfm

$ sudo pacman -S pcmanfm

Para que o automount funcione temos de o configurar:

$ sudo pacman -S udiskie udisks2 ntfs-3g

Adiciona a linha ao ficheiro ‘~/.xsession’:

udiskie &

Power management

Para obter uma gestão eficiente da bateria, instala o pacote tlp e as sua dependências:

$ sudo pacman -S tlp tlp-rdw

Active e inicia os serviços:

$ sudo systemctl enable tlp.service

$ sudo systemctl start tlp.service

$ sudo systemctl enable tlp-sleep.service

$ sudo systemctl start tlp-sleep.service

Executa ‘sudo tlp-stat’e lê o output. Deve sugerir a instalação de mais dependências para controlo de dispositivos.

Segurança

A encriptação da partição root foi o primeiro passo. Vamos adicionar uma firewall e uma application and system protection system:

$ sudo pacman -S ufw apparmor

Activa UFW:

$ sudo systemctl enable ufw.service

$ sudo systemctl start ufw.service

$ sudo ufw enable

Activa apparmor:

$ sudo systemctl enable apparmor.service

Adiciona ao boot /etc/default/grub:

# grub-install --recheck /dev/sda

# grub-mkconfig -o /boot/grub/grub.cfg

Actualizar sistema

A atualização do sistema faz-se com o comando:

$ sudo pacman -Syu

Instalar pacotes do AUR

Além dos repositórios oficiais Arch há também o repositório AUR que expande o número de pacotes. Para habilitar é necessário instalar os pacotes:

$ sudo pacman -S -- needed base-devel git

Depois basta navegar o repositório. Ao encontrar o pacote pretendido, copiar o URL git e no terminal escrever:

$ git clone package_git_url

Entrar na directoria criada e escrever (sem acesso root):

$ makepkg -si

Conclusão

O Arch Linux é uma distribuição com uma filosofia diferente das distribuições tradicionais. O utilizador típico é alguém que quer controlo sobre o que quer instalado e em execução no computador, sem lixo ou tralhas acrescentadas por imposição do sistema. Esta é a razão pela qual o Arch apresenta como vantagem a leveza (lightweight) e a rapidez. A isto acresce o facto de ser uma ‘rolling release’ o que quer dizer que uma vez instalado não é necessário reinstalar e os pacotes são mantidos nas suas últimas versões.

--

--