Arch Linux: Do Básico Até Entender a Máquina (com todos os porquês)
Nesse post vou mostrar passo a passo da instalação do Arch Linux, levando em consideração que vou seguir o tutorial do ArchWIKI e explicarei algumas armadilhas que um iniciante iria facilmente cair.
Para deixar bem claro irei fazer a instalação em uma Máquina Virtual no meu caso usarei o Virtual Box, então irei pular alguns passos da instalação básicas, já que não preciso me preocupar com alguns drivers como as de rede, porque o Virtual Box transfere a rede via Ethernet do meu host no caso o meu Windows 11 para o ambiente isolado.
Pré-Instalação - Instalando a ISO, Executando os Primeiros Comandos

Instalar a ISO é o primeiro passo para começar no Arch, mas o que é ISO? um arquivo .iso é uma cópia perfeita do conteúdo presente nas mídias de instalações como CD e DVD. Ou seja, é um arquivo de imagem de instalação do OS(Sistema Operacional) no caso o Arch Linux.
Na página de Download recomendo você instalar por qBitTorrent pelo link do Magnet. Uma vez instalado é só você colocar na sua máquina virtual ou queimar um Pendrive para fazer o processo diretamente na sua máquina local. Porém recomendo que se o Linux for uma novidade, fique por enquanto na máquina virtual, seja você qualquer um dos dois grupos que citei antes, a chance de fazer algo errado e estragar o seu sistema é bem alta, até mesmo sendo programador já experiente.
Todo iniciante em Linux vai quebrar o sistema. Então recomendo começar em um ambiente separado para teste e aprendizado.
GPT vs MBR
Para quem vai queimar Pendrive, é importante saber a diferença entre esses dois e quando escolhe-los'
Para saber mais sobre Tabela de Partição, pode ler o guia, porém saibam que existe apenas essas três formas, o MBR, GPT e o disco sem particionar.
MBR é bem antigo e quase nunca usado por distros novas, e você apenas vai utiliza-la em placa-mãe que usam BIOS, fora isso use GPT.
Use GPT se você estiver usando UEFI, não use MBR.
Para saber melhor qual usar, consulte isso
UEFI que para quem não sabe é o novo firmware moderno substituto da clássica BIOS(Sistema de Entrada e Saída Básico) que carrega o kernel e os drivers. A escolha dessas tabelas é essencial e pode influenciar na sua instalação.
Para saber se seu disco está em GPT ou MBR
Assim que configurar a Máquina virtual e começar o processo de inicialização da ISO, vai aparecer a seguinte tela

Selecionaremos a primeira opção pois estamos usando uma imagem ISO e não uma imagem NETBOOT.
Na primeira opção temos a palavra: x86_64 pois essa é a arquitetura do meu processador, que pode variar dependendo do seu hardware, se o seu processador for de 32 Bits que seria o i386, você deverá instalar uma ISO própria para ela na página de download(informação marcada como histórica, Arch Linux não suporta mais 32 bits (i386/i686) desde o final de 2017).

Agora que selecionamos a primeira opção essa é a nossa próxima tela, e leia atentamente, estamos logados no usuário root chamado de archiso e seguindo temos os comandos para conexão de Wi-Fi no terminal iwctl e também para Modem, e no final a mensagem pede para se conectar a internet para o guia online de instalação.
Muito bem, é aqui que muito iniciante simplesmente PARA.
Porque é simplesmente um sistema Arch Linux em um usuário root que está com um ambiente relativamente “pronto”. E para muitos é isso, mas é aqui que começa a instalação real do OS.
Agora podemos verificar o modo de inicialização com o comando:
cat /sys/firmware/efi/fw_platform_sizeEsse comando vai especificar se iniciamos com a arquitetura de UEFI de 64 ou 32 Bits, se retornar Arquivo/Ficheiro ou diretório inexistente quer dizer que o sistema foi iniciado no modo BIOS.
Antes de prosseguirmos para o próximo tópico, recomendo os seguintes comando para fazer nesse inicio de instalação:
Esse comando vai poupar seus olhos, ele vai acessar /usr/share/kbd/consolefonts/ e vai trocar e aumentar a fonte do console:
setfont ter-132bEsse comando vai mudar o layout do teclado para o padrão Brasileiro:
loadkeys br-abnt2Esse comando é um pouco mais avançado, mas vai definir o idioma e o padrão de codificação UTF-8, vai precisar que você descomente pt_BR.UTF-8 UTF-8 em /etc/locale.gen.
# Abra o arquivo .gen com VIM ou nano e remova o "#" no começo da linha "pt_BR.UTF-8 UTF-8"
vim /etc/locale.gen
# ou
nano /etc/locale.genE gere-os com:
locale-gen
export LANG=pt_BR.UTF-8Esse conjunto de comandos estão no Guia de instalação. e serve para configurar o ambiente live, não sabe o que é esse ambiente? vamos falar dele agora.
Comandos Básicos de um Linux
Como uma forma de guiar quem realmente nunca tocou em um terminal, aqui estão os 30 comandos mais usados e descritos um por um.
ls -la
# Lista arquivos e diretórios no formato longo incluindo ocultos, exibindo permissões, dono, tamanho e data.
cd /caminho
# Altera o diretório de trabalho atual para o caminho especificado (relativo ou absoluto).
pwd
# Exibe o caminho absoluto do diretório de trabalho corrente.
cp -r origem destino
# Copia arquivos ou diretórios recursivamente de origem para destino.
mv origem destino
# Move ou renomeia arquivos e diretórios.
rm -rf alvo
# Remove arquivos ou diretórios recursivamente sem confirmação (uso crítico, pode apagar todo o sistema se não usado com atenção)
mkdir -p diretorio
# Cria diretórios, incluindo diretórios pais caso não existam.
touch arquivo.txt
# Cria um arquivo vazio ou atualiza seus timestamps.
cat arquivo.txt
# Exibe o conteúdo de um arquivo no stdout.
less arquivo.txt
# Visualiza arquivos grandes de forma paginada com navegação interativa.
head -n 20 arquivo.txt
# Mostra as primeiras N linhas de um arquivo.
tail -n 50 arquivo.log
# Mostra as últimas N linhas de um arquivo (use -f para acompanhar em tempo real).
grep -R "padrao" .
# Busca recursivamente por um padrão dentro de arquivos.
find /caminho -type f -name "*.py"
# Localiza arquivos conforme critérios como nome, tipo ou extensão.
chmod 755 arquivo.sh
# Modifica permissões de acesso usando notação octal.
chown usuario:grupo arquivo
# Altera proprietário e grupo de um arquivo ou diretório.
ps aux
# Lista todos os processos em execução com detalhes.
top
# Monitor interativo de processos em tempo real.
sudo comando
# Executa um comando com privilégios administrativos.
tar -czvf arquivo.tar.gz pasta/
# Compacta e empacota arquivos/diretórios em formato .tar.gz.
echo "texto"
# Imprime texto no stdout ou redireciona saída para arquivos.
> arquivo.txt
# Redireciona saída padrão para um arquivo (sobrescreve).
>> arquivo.txt
# Redireciona saída padrão para um arquivo (append).
|
# Pipe: envia a saída de um comando como entrada para outro.
man comando
# Exibe o manual detalhado de um comando.
history
# Mostra o histórico de comandos executados no shell.
clear
# Limpa o terminal.
df -h
# Exibe uso de espaço em disco em formato legível.
du -sh pasta/
# Mostra o tamanho total de um diretório.
wget URL
# Faz download de arquivos via HTTP, HTTPS ou FTP.Mas é importante dizer que toda distribuição Linux segue o padrão POSIX ou seja, todo comando é o mesmo independente de qual Linux estamos usando.
E também devemos saber que existem a Interface Shell que é o intermediário entre o Kernel e o usuário, ou seja é o local onde vamos executar cada comando, como fizemos acima. Acessamos cada shelll pelo Emulador de Terminal e pelo Run Level de CLI para executarmos os comandos.
Existem muitos shell’s diferentes porque cada um deles é uma linguagem de comando e de script(Para automatização), tendo cada um mais modernidade e funcionalidades diferentes.
Saibam também que existe o shell Gráfico que seria o Ambiente Gráfico ou GUI. Um exemplo de shell GUI seria sua área de trabalho ou gerenciador de arquivos no Windows, o Windows shell. Mais tarde falaremos sobre interface gráfica e servidor de display.
O shell mais comum é o BASH, porém existem outros como ZSH, SH, Korn Shell, C Shell e Bourne Shell.
Para saber qual Linguagem de comando seu terminal usa, execute:
echo $SHELLArch Linux: Agora é onde a mãe chora e o filho não vê

Esse slide eu mesmo criei no Excalidraw e é uma forma de representar visualmente o processo de instalação do Arch no Ambiente Live/Live CD, pode parecer complicado, mas se dividirmos em partes dá para entender, por isso vou explicar com calma cada ponto, e depois falarei do fluxo e como vamos juntar cada um deles para fazer a instalação.
Ambientes Live ou LiveCD
É um sistema que vem pré-pronto juntamente com a imagem ISO ou com o CD de instalação, lá temos todo o suporte para fazer partições, transferir pacotes e acessar o usuário root archiso para configuração avançada do sistema. Em um Sistema Operacional como o Windows isso é feito de forma automática, não precisamos criar, formatar e montar a partição c:\. Em outras distros Linux esse processo é automatizado pelo calamares que é um software de instalação de Linux.
Partição Principal
É o espaço que dedicamos para o nosso sistema operacional, é recomendável que um OS Linux tenha 60G para cima de espaço disponível durante sua instalação. Falaremos mais sobre disco, partição e montagem com detalhe mais para frente.
GRUB e Sistema UEFI/EFI
Essa é a camada um pouco superior ou seja, mais para fora do Sistema Linux, coloquei desse jeito para facilitar a explicação, mas na real cada camada é apenas mais libs e novos componentes para encorpar mais o sistema. E se observamos no slide, essa parte está mais “acima” dos outros e o GDM, Wayland e Gnome que estão ainda mais acima, seria a camada “mais alta” deles, que representa o ambiente gráfico, como a área e trabalho que é uma interface GUI que forra a visão do usuário para as outras camadas mais “abaixo” do sistema, faremos a instalação deles no final do post, por isso, vamos ignora-los por enquanto.
Ambos esses processos ocorrem na primeira etapa do sistema, na inicialização. O UEFI é o substituto da BIOS ou seja, nela estamos inicializando os Drivers do Computador, o Secure Boot e o suporte a disco tanto o mais recente GPT quanto o mais antigo MBR, que irei detalhar eles mais tarde.
Um GRUB é um Gerenciado de Boot que carrega a imagem da kernel o vmlinux e inicializa o Systemd, que é um sistema de inicialização que carrega todos os daemons presentes. É a partir dele que os processos iniciais do Boot serão carregados.
Existe um suporte a um gerenciador de boot no UEFI que seria o rEFInd, porém o GRUB é a escolha popular padrão está presente em toda distro Linux. Alguns processos do boot será gravado no arquivo .efi no /boot/EFI.
CHROOT
É um comando Unix-like que significa Change Root. Esse comando vai mudar o root do processo atual e seus filhos. “Perai, filhos? como assim?”, isso mesmo, o “/” Root é o diretório Pai ou Raiz do nosso sistema, e os seus filhos são os Sub diretórios do pai, fica mais fácil compreender observando como uma árvore mesmo, Raiz e folhas.


Com essas imagens fica mais fácil saber o porquê e onde modificar ou criar um arquivo de configuração para os diretórios padrões do Arch. A nível de curiosidade, esse padrão de árvores é uma estrutura de dados chamados de Trees e está presente em variados lugares, como em Linguagens de programação Orientadas a Objetos, em todo o tipo de sistema de arquivos, como nos de Windows e nos elementos DOM de HTML.
Geralmente quem veio do Windows enxerga o Sistema Operacional como algo Fixo, que é imutável, porém essa visão é equivocada, o root do sistema ou seja o diretório raiz de um OS é apenas uma pasta com muitos arquivos espalhados de forma recursiva.
O CHROOT vai mudar o “ponto de observação” do sistema para que o diretório filho alvo do comando passe a ser o novo root. Esse comando é fundamental para a instalação porque é nela que vamos transitar entre o ambiente live e a partição real do Sistema Operacional que está em /dev/sda/. Entraremos com mais detalhes mais tarde no passo a passo dos comandos mnt, e para criar as novas partições do disco.
Começando a instalação
Agora começamos oficialmente a instalação de verdade do Arch, depois de muito teoria finalmente vamos colocar tudo em prática.
Primeiro vamos particionar nosso disco dentro do ambiente live.
Partição de Disco
Não vou entrar muito em detalhes sobre Dispositivos de Blocos, pois é um assunto complexo, com uma dificuldade insalubre, que dá um post 10x maior que esse. Porém pense que para um computador, dados são manipulados em Blocos de Bytes e Bits e são persistentes e de tamanho fixo (512B ou 4K). Por exemplo um HD Sata é um dispositivo de bloco.

Isso é o básico para se saber o que é uma Unidade de Disco Rígido. No começo do I/O(Input e Output) esses blocos são mantidos temporariamente na RAM para a otimização das operações do sistema operacional, esse estado temporário é chamado de Buffer.
Quando ocorre o Shutdown durante uma atualização por exemplo, esses dados em RAM se perdem antes do flush(gravação) para o disco, deixando o sistema de arquivos inconsistente. Isso é chamado de corrupção de dados.
Não vou me alongar muito sobre nomes de dispositivos de armazenamento, porém aqui no meu sistema é /dev/sda que é o dispositivo a, e o primeiro dispositivo descoberto.
/dev/sda1 seria a partição 1 no dispositivo a.
Como estou em uma máquina virtual, meu dispositivo de armazenamento vai ser um HD SATA, mas na prática a maioria dos computadores modernos, provavelmente vão estar equipados com um SSD, pois oferece ganho de desempenho e durabilidade mecânica pois um HD externo, por exemplo precisa de um imã e um disco para ler dados, fazendo ele ser muito sensível.

Então apenas o nome muda, sendo NVMe, Como não vou fazer uma instalação usando o SSD, vou apenas deixar claro que provavelmente apenas o nome vai mudar junto com a ordem de reconhecimento.
Para listar o seus dispositivo:
fdisk -lSe o disco SATA ou NVMe não aparecer consulte: Este Guia
Com isso vamos particionar o disco e criar um volume nessa partição. O que é volume? volume é quando a partição sai do meio físico de ser apenas um espaço do HD e passa a ter um único sistema de arquivo, contendo a interface lógica do sistema operacional, por isso volume pode ser chamado também de unidade lógica.
Então vamos particionar o nosso disco, e formatar para ser um volume. Para isso vamos usar o comando fdisk.
fdisk /dev/SEUDISCODeixando claro que apenas farei a partição do sistema EFI, uma de SWAP e outra do diretório raiz /, que é apenas o necessário.
Para saber mais sobre o fdisk ou
pacman -S man
man fdiskfdisk é um comando interativo, ou seja, o comando pelo terminal vai te dando opções e o usuário seleciona. Para facilitar a partição e formatação, vou colocar aqui o guia das opções para formatar essas três partições com esses layouts, mas deixando claro que qualquer erro é sua responsabilidade, leia atentamente:
EFI = 512M
SWAP = (Opcional mas no mínimo 3G)
"/" Root = o espaço que sobrou (Recomendado 60G)ATENÇÃO: NÃO CRIE UMA PARTIÇÃO EFI SE ESTIVER FAZENDO DUAL BOOT
fdisk /dev/sda
Welcome to fdisk (util-linux 2.x).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
# Dentro do fdisk:
g # Nova tabela GPT
n # Nova partição (EFI)
Enter # Número 1
Enter # First sector default
+512M # Tamanho EFI
t # Mudar tipo
1 # Ou uefi/EF
n # Nova partição SWAP
Enter # Número 2
Enter # First sector default
+3G # Tamanho do SWAP
t # Mudar tipo
2 # Numero da Partição
19 # Ou swap
n # Nova partição (root)
Enter # Número 3
Enter # First sector default
Enter # Last sector default → pega o resto (~60 GB)
p # Verifica
w # Salva e saiAgora concluindo temos:
/dev/sda # O dispositivo
/dev/sda1 # Partição de UEFI/EFI
/dev/sda2 # Partição do SWAP
/dev/sda3 # "/" partição ROOTFormatando as Partições do Novo Sistema
Vamos agora formatá-las para criar volumes, como já expliquei antes.
Formatar partição Raiz que será formatada para o sistema de arquivo simples ext4.:
mkfs.ext4 /dev/sda3 Monte a partição de SWAP com:
mkswap /dev/sda2Por último vamos formatar a partição de sistema EFI com o formato padrão FAT32
ATENÇÃO: APENAS FORMATE O SEU EFI SE O CRIOU ANTES, NÃO FORMATE A PARTIÇÃO EFI SE ESTIVER FAZENDO DUAL BOOT
mkfs.fat -F 32 /dev/sda1Montando as Partições no Novo Sistema
/mnt será o "/" root do nosso novo sistema, vamos montá-lo:
mount /dev/sda3 /mntAgora vamos criar o resto do nosso sistema usando /mnt como nosso novo sistema operacional. --mkdir para especificar.
mount --mkdir /dev/sda1 /mnt/bootHabilite o SWAP:
swapon /dev/sda2Com isso vamos ter criado o diretório /mnt dentro do ambiente live, onde vamos ter montado cada partição nele, como disse antes, quando montamos estamos criando volumes para por diretórios e arquivos, então dentro de /mnt vai ter /mnt/boot/.
Temos nesse momento um sistema Linux dentro do outro. Quando instalamos de fora os pacotes e o kernel para dentro desse “novo sistema” que está dentro de /mnt, ele já será um sistema operacional usável.
Os diretórios padrões como /tmp, /dev, /bin, /home, /etc serão incluídos de forma automática com o initramfs porque vamos instalar o kernel com o pacstrap. Assim quando removermos a mídia de instalação(o pendrive bootável), sairemos do ambiente live/liveCD e o sistema estará pronto, tendo /mnt como uma nova raiz /.
Pré-CHROOT: Instalando o Kernel e mais pacotes “de Fora para Dentro”
Agora vamos instalar os pacotes essenciais para podermos fazer CHROOT para nosso novo sistema. Colocaremos o pacote base, kernel e firmware para termos todos os recursos do ambiente live. Adicionarei também o pacote sudo e vim manualmente e o pacote amd-ucode para correção de segurança, se estiver com o processador INTEL ao invés do AMD, instale intel-ucode.
Já que sairemos do ambiente live, também teremos que instalar o pacote daemon NetworkManager para quando chegarmos dentro do nosso sistema novo estivermos conexão com WI-Fi.
Para usuários como eu que instalaram pelo VirtualBox, recomendo o pacote virtualbox-guest-utils para evitar bugs com drivers, como os de display, teclado e mouse.
pacstrap -K /mnt base linux linux-firmware vim sudo amd-ucode networkmanager virtualbox-guest-utilsSe sentir lentidão no download, vide Mirrors para localizar sua região geográfica e alterar caso precise, mirrors são copias exatas dos repositórios de software hospedadas para downloads e para evitar sobrecarga em um único servidor central, onde fica o original, ele é distribuido geograficamente.
Configurando o Sistema
Agora estamos preparados para definir com o chroot o diretório filho /mnt como raiz. Antes vamos gerar um arquivo fstab para salvar o ponto de montagem e incluir no Systemd durante a inicialização para automatizar os comando de montagem.
genfstab -U /mnt >> /mnt/etc/fstabPara confirmar abra o arquivo /mnt/etc/fstab e edite-o caso haja erros.
Agora mude a raiz para o novo sistema:
arch-chroot /mntAgora estamos Oficialmente e finalmente dentro do nosso Arch Linux.
Defina Horário
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtimeExecute hwclock para definir horário UTC
hwclock --systohcPara mais informações em Horário no guia do ArchWiki.
Localização
Faça o mesmo passo a passo para localização no tópico de Pré-instalação desse post.
E crie o arquivo /etc/vconsole.conf para manter a persistência do layout do teclado, adicione nesse arquivo:
KEYMAP=br-abnt2Configure a Rede
Crie o arquivo de hostname em /etc/hostname, adicione:
seuhostnameAgora ative o NetworkManager para termos WI-Fi disponível no novo sistema, com o comando systemctl ativando o daemon.
systemctl enable NetworkManagerDefina a Senha do Usuário Root
Adicione uma senha forte mas não o suficiente para você esquecer com facilidade, pois precisamos dela para entrar no sistema recém-instalado.
passwdInstalando o GRUB
Agora vamos instalar o famoso GRUB. Dentro do chroot instale os pacotes grub e efibootmgr.
pacman -S grub efibootmgrAgora para instalar o aplicativo EFi do GRUB em /mnt/boot/EFI/GRUB e seus módulos para /boot/grub/x86_64-efi/ execute o comando:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUBSe por algum motivo for necessário executar esse comando no ambiente live, fora do sistema instalado, execute isso:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --boot-directory=/bootA opção --boot-directory= deve conter o caminho para o /boot
Após a instalação do GRUB o seu diretório principal estará em /boot/grub/.
O último passo é gerar o arquivo de configuração principal:
grub-mkconfig -o /boot/grub/grub.cfgCaso esteja fazendo dual boot: leia isso
Instalação do GRUB no sistema BIOS: leia isso
Reiniciando: saindo do Ambiente Live
Saia do ambiente chroot digitando exit. Desmonte todas as partições com o comando:
umount -R /mntE finalmente reinicie a máquina digitando:
rebootRemova a mídia de instalação.
E autentique-se com o seu usuário root e a senha que você definiu.
Não é recomendado por questões de Segurança permanecer no usuário root, por isso vamos criar um usuário sudo que vai usar os privilégios do root, porém com verificação por senha.
# 1. Crie o usuário (troque "seunome" pelo nome que quiser)
useradd -m -G wheel seunome
# 2. Defina uma senha forte para o usuário
passwd seunomeAgora usaremos o comando visudo para liberar o sudo para o grupo wheel.
visudoQuando abrir o editor pelo vim, procure essa linha, se não tiver crie:
#%wheel ALL=(ALL:ALL) ALLRemova o “#” (se tiver) para descomentar, salve e saia do vim com :wq!.
É recomendado também adicionar o usuário novo em alguns grupos úteis, com esse comando:
usermod -aG video,audio,storage,network,lp seunomeCom isso, todo comando que for preciso executar com privilégios root é só colocar sudo no começo do comando. Vamos testar?
Vamos agora atualizar os pacotes já instalados com:
sudo pacman -SyuDê uma olhada na seção Pós-instalação da wiki para mais detalhes sobre segurança e instalações de pacotes e programas para complementar o sistema.
Ambiente Gráfico: Gnome + Wayland
Finalmente, esse post foi bem longo, mas ainda não chegamos no final ainda, vamos instalar agora um ambiente gráfico para fechar com chave de ouro.
Ambiente gráfico é outro assunto que renderia um post inteiro mas não aguento mais digitar… Então falarei apenas do básico.
Como interface gráfica usaremos o Gnome Shell, que vai ser o conjunto área de trabalho, painel de controle e barra de notificação. Existem outros como KDE Plasma e XFCE.
E como servidor de display, que será o Wayland, uma alternativa seria o i3 como WM ou Xorg. Ele carregará os drivers de exibição que estarão no meu pacote virtualbox-guest-utils e configurará variáveis de ambientes como o $DISPLAY que serve para indexar a quantidade de monitor e configurar desktops remotos via endereço IP. Além disso ele vai compor o Gnome Shell para nós.
Vamos primeiro instalar o pacote gnome que contém o ambiente e um subconjunto de aplicativos integrados.
sudo pacman -S gnome gdmO GDM é o gerenciador de exibição do Gnome e um programa que gerencia servidores gráficos, além de lidar com login que vai iniciar de forma automática o Gnome Shell.
Depois da instalação vamos ativar o GDM com systemctl usando:
sudo systemctl enable gdmPara confirmar se foi ativado:
sudo systemctl status gdmAgora finalizando apenas execute sudo reboot. O GDM é identificado, carregando a interface de login.
Com isso entramos no ambiente do Gnome.

Finalizando
Fizemos a instalação completa do Arch Linux, do kernel e as partições até o ambiente gráfico.
Agora que você chegou aqui, existem muitas coisas para fazer dentro do sistema já pronto, que não abordei nesse post, como a personalização para deixar as coisas ainda mais bonitas, colocar themes e icons no Gnome e o pacote de configuração do Power Level 10k com ZSH no emulador de terminal.