Forçar DXVK para DirectX 11
Arch Linux: Volume 11
Arch Linux: Volume 11
Gaming, Wine, Automação, Performance e Troubleshooting
Bem-vindo ao volume mais completo da série definitiva de Arch Linux em português brasileiro. Neste volume, mergulhamos fundo no universo do gaming no Linux — do Steam ao Proton-GE, do Lutris ao Heroic Launcher — e expandimos o horizonte para automação avançada com cron, systemd timers e scripts Bash reais. Exploraremos monitoramento profissional, tuning de performance, e técnicas de troubleshooting sistemático que salvam sistemas em situações críticas. Se você chegou até aqui, está pronto para dominar o Arch Linux em sua totalidade.
O Estado da Arte do Gaming no Linux em 2025
O gaming no Linux passou por uma revolução silenciosa e impressionante. Em 2025, o ecossistema atingiu um patamar que poucos imaginavam possível há cinco anos. A Valve, com o sucesso massivo do Steam Deck, investiu bilhões no desenvolvimento de camadas de compatibilidade e drivers, tornando o Linux uma plataforma gaming de primeira classe. Hoje, mais de 80% dos jogos listados no Steam rodam no Linux com desempenho equivalente ou superior ao Windows, graças a tecnologias como Proton, DXVK e VKD3D-Proton.
A mudança de paradigma começou com o Proton, um fork do Wine desenvolvido e mantido pela Valve, que automatiza todo o processo de tradução de chamadas DirectX para Vulkan. Antes do Proton, configurar um jogo no Linux exigia horas de pesquisa, configuração manual de prefixes Wine, instalação de DLLs específicas e muito trial-and-error. Hoje, a maioria dos jogos simplesmente funciona com um clique. Mas o que diferencia um usuário casual de um usuário expert é entender o que acontece por baixo dos panos — e esse conhecimento é o que este volume entrega.
O anti-cheat continua sendo um desafio pontual, mas títulos como Fortnite (via EasyAntiCheat com suporte nativo), Apex Legends, e centenas de outros já têm suporte oficial ou compatibilidade via Proton. Sites como ProtonDB (protondb.com) e Are We Anti-Cheat Yet? são referências para verificar o status de cada jogo antes de comprar. O ecossistema de emulação também floresceu: RetroArch, Dolphin, RPCS3 e Yuzu (ou seus forks legais) rodam com desempenho excelente no Arch Linux.
80%
Jogos compatíveis
Dos títulos Steam funcionam no Linux via Proton em 2025
40K+
Títulos no ProtonDB
Jogos catalogados com relatórios de compatibilidade da comunidade
2M+
Steam Deck vendidos
Impulsionando investimento da Valve no gaming Linux
Steam no Arch Linux: Instalação e Multilib
A instalação do Steam no Arch Linux requer alguns passos importantes, principalmente a ativação do repositório multilib, que contém pacotes de 32 bits necessários para o Steam e muitos jogos funcionarem corretamente. O Arch Linux por padrão só ativa repositórios de 64 bits, então esse passo é fundamental e frequentemente esquecido por iniciantes.
01
Ativar o repositório multilib
Edite o arquivo
/etc/pacman.conf e descomente as linhas do repositório multilib:02
Atualizar o banco de dados de pacotes
Execute
sudo pacman -Sy para sincronizar o novo repositório.03
Instalar Steam e dependências
Execute
sudo pacman -S steam lib32-nvidia-utils lib32-vulkan-icd-loader04
Configurar o Proton nas configurações
No Steam → Configurações → Steam Play → Ativar para todos os títulos.
O arquivo
/etc/pacman.conf precisa ter as seguintes linhas descomentadas (remova o # antes delas):[multilib]
Include = /etc/pacman.d/mirrorlistApós instalar o Steam, é fundamental também instalar os drivers Vulkan de 32 bits correspondentes à sua GPU. Para NVIDIA:
lib32-nvidia-utils. Para AMD: lib32-vulkan-radeon ou lib32-amdvlk. Para Intel: lib32-vulkan-intel. Sem esses pacotes, muitos jogos com Proton simplesmente não iniciam ou apresentam telas pretas.Sempre instale os pacotes lib32 correspondentes à sua GPU. Sem eles, o Proton não consegue inicializar o ambiente Vulkan de 32 bits e jogos falharão silenciosamente.
Proton e Proton-GE: A Mágica por Trás do Gaming
O Proton é uma camada de compatibilidade desenvolvida pela Valve, baseada no Wine, que permite executar jogos Windows no Linux. Ele inclui uma versão customizada do Wine, DXVK (tradução de DirectX 9/10/11 para Vulkan), VKD3D-Proton (tradução de DirectX 12 para Vulkan), Steam Linux Runtime (um container com bibliotecas específicas) e várias correções e patches exclusivos. Tudo isso é orquestrado automaticamente quando você clica em "Jogar" no Steam.
O Proton-GE (GE = GloriousEggroll) é uma versão não-oficial do Proton, mantida pela comunidade, que inclui patches mais recentes, codecs de mídia adicionais (para cutscenes em jogos), correções para jogos específicos que ainda não chegaram ao Proton oficial, e otimizações extras de desempenho. Para instalar o Proton-GE, a maneira mais elegante é via ProtonUp-Qt:
yay -S protonup-qtApós instalar e abrir o ProtonUp-Qt, selecione "Steam" como plataforma, clique em "Add version" e escolha a versão mais recente do Proton-GE. Após o download, reinicie o Steam e o Proton-GE aparecerá nas opções de compatibilidade de cada jogo. Para forçar o uso de uma versão específica: clique com o botão direito no jogo → Propriedades → Compatibilidade → Force the use of a specific Steam Play compatibility tool.
Proton Oficial (Valve)
- Integrado ao Steam automaticamente
- Atualizações regulares e estáveis
- Testado extensivamente pela Valve
- Melhor para a maioria dos jogos populares
- Runtime isolado (pressão de container)
Proton-GE (GloriousEggroll)
- Patches mais recentes e experimentais
- Suporte a codecs de vídeo adicionais
- Correções para jogos específicos
- Ideal para jogos problemáticos
- Instalação via ProtonUp-Qt ou manual
Dica prática: sempre tente o Proton oficial primeiro. Se o jogo tiver problemas, consulte o ProtonDB e tente Proton-GE. Na maioria dos casos, um dos dois funciona perfeitamente.
Variáveis de Ambiente do Proton
Uma das ferramentas mais poderosas para ajustar o comportamento do Proton são as variáveis de ambiente. Você pode defini-las nas opções de lançamento de cada jogo no Steam (clique direito → Propriedades → Opções de lançamento). Essas variáveis permitem ativar backends específicos, habilitar logs de diagnóstico, forçar versões de APIs e muito mais.
# Forçar DXVK para DirectX 11
PROTON_USE_DXVK=1 %command%
# Ativar logging completo (para debug)
PROTON_LOG=1 %command%
# Usar VKD3D-Proton para DX12
PROTON_USE_VKD3D=1 %command%
# Desativar esync (para jogos com problemas)
PROTON_NO_ESYNC=1 %command%
# Forçar resolução específica
PROTON_SET_GAME_DRIVE=1 %command%
# Combinar múltiplas variáveis
DXVK_ASYNC=1 PROTON_USE_DXVK=1 gamemoderun %command%O
%command% ao final é obrigatório — ele representa o comando real de lançamento do jogo. Tudo que vem antes são variáveis de ambiente que o Proton lê na inicialização. A variável DXVK_ASYNC=1 ativa compilação assíncrona de shaders, reduzindo os famosos stutters (travamentos momentâneos) que ocorrem quando o jogo carrega novos shaders pela primeira vez.PROTON_LOG=1
Gera log detalhado em
~/steam-proton-*.log. Essencial para diagnosticar por que um jogo não inicia.DXVK_ASYNC=1
Compila shaders em background sem travar o jogo. Reduz drasticamente os stutters na primeira execução.
PROTON_NO_ESYNC=1
Desativa o esync (eventfd-based synchronization). Use quando jogos travam na inicialização ou ficam sem resposta.
Lutris: O Gerenciador Universal de Jogos
O Lutris é um gerenciador de jogos open source que funciona como um hub central para todas as suas plataformas de jogos no Linux. Ele suporta Steam, Epic Games, GOG, Battle.net, Origin/EA App, jogos nativos, emuladores e qualquer instalador customizado. O grande poder do Lutris está nos seus scripts de instalação — scripts comunitários que automatizam toda a configuração de Wine, instalam dependências, configuram prefixes e deixam o jogo pronto para jogar com um clique.
Para instalar o Lutris no Arch Linux:
sudo pacman -S lutris python-gobject python-pillow python-yaml
# Dependências para Wine e runners
sudo pacman -S wine wine-mono wine-gecko
# Instalar runners adicionais (via interface do Lutris)O Lutris usa o conceito de runners — backends de execução que podem ser Wine (para jogos Windows), Steam, MAME, RetroArch, ScummVM, DOSBox, e outros. Cada runner pode ter múltiplas versões instaladas simultaneamente, e você pode escolher qual usar para cada jogo. Isso é extremamente útil quando um jogo específico funciona melhor com uma versão específica do Wine.
Wine Runner
Executa jogos Windows com prefixes Wine customizados por jogo. Suporte a Esync e Fsync.
Steam Runner
Integra jogos Steam diretamente no Lutris. Usa o Proton automaticamente para jogos Windows.
Emuladores
RetroArch, Dolphin, PCSX2, RPCS3 e mais, todos gerenciados por uma interface única e organizada.
Scripts Comunitários
Milhares de instaladores automáticos criados pela comunidade em lutris.net para jogos populares.
Heroic Launcher: Epic Games e GOG no Linux
O Heroic Games Launcher é um cliente open source para as lojas Epic Games Store e GOG no Linux. Ele oferece uma interface gráfica elegante, integração com Proton e Wine, suporte a nuvem de saves, e é ativamente mantido pela comunidade. Para muitos usuários do Linux, o Heroic é a alternativa definitiva ao cliente oficial da Epic (que não existe no Linux).
# Instalar via AUR
yay -S heroic-games-launcher-bin
# Ou via Flatpak (recomendado para mais compatibilidade)
flatpak install flathub com.heroicgameslauncher.hglApós instalar, configure o Heroic com sua conta Epic Games ou GOG. Nas configurações globais, você pode definir o Wine/Proton padrão — recomendamos apontar para uma versão do Proton-GE instalada via ProtonUp-Qt. Cada jogo também pode ter suas configurações individuais de runtime, variáveis de ambiente e prefixes Wine separados.
O Heroic suporta instalação automática de DXVK, VKD3D e outras dependências via interface gráfica. Não é necessário configurar manualmente — basta ativar nas configurações do jogo.
Uma funcionalidade valiosa do Heroic é o suporte a Wine prefixes por jogo. Cada jogo tem seu próprio diretório Wine isolado (geralmente em
~/.wine/heroic/prefixes/NomeDoJogo), evitando conflitos entre diferentes jogos que podem precisar de versões diferentes de DLLs ou configurações do registro Windows. Isso imita exatamente o comportamento do Proton no Steam.Bottles: Wine para Usuários Modernos
O Bottles é uma aplicação GTK4 que oferece uma abordagem moderna para gerenciar ambientes Wine. O conceito central são os "bottles" (garrafas) — cada bottle é um prefixe Wine completamente isolado, com sua própria versão de Wine, DLLs, configurações de registro e lista de programas instalados. É a solução ideal para quem precisa rodar aplicativos Windows no Linux de forma organizada e sem conflitos.
# Instalar via Flatpak (maneira recomendada)
flatpak install flathub com.usebottles.bottles
# Ou via AUR
yay -S bottlesAo criar um novo bottle, você escolhe um "ambiente": Gaming (otimizado para jogos, inclui DXVK automaticamente), Application (para software Windows comum) ou Custom (configuração manual). O Bottles então faz o download e configura tudo automaticamente. Você pode instalar runners adicionais (versões de Wine/Proton) diretamente pela interface, sem precisar do terminal.
🎮 Gaming
Pré-configurado com DXVK, VKD3D, Esync. Ideal para jogos Windows que não estão no Steam.
💼 Application
Ambiente limpo para software Windows. Microsoft Office, Adobe, ferramentas corporativas.
⚙️ Custom
Controle total. Escolha manualmente cada componente, runner, e configuração do prefixe.
Wine Avançado: Prefixes, Winetricks e DLLs
Mesmo com ferramentas gráficas como Lutris e Bottles, entender o Wine diretamente é fundamental para diagnosticar problemas e configurar casos complexos. O Wine funciona criando um prefixe — um diretório que simula uma instalação Windows completa, com estrutura de pastas
C:\, registro, e bibliotecas DLL. Por padrão, o prefixe fica em ~/.wine.# Criar um novo prefixe Wine de 64 bits
WINEPREFIX=~/.wine_meu_jogo winecfg
# Criar prefixe de 32 bits (necessário para alguns jogos antigos)
WINEPREFIX=~/.wine32_meu_jogo WINEARCH=win32 winecfg
# Instalar um executável em um prefixe específico
WINEPREFIX=~/.wine_meu_jogo wine /caminho/para/setup.exe
# Rodar winecfg no prefixe para configurar
WINEPREFIX=~/.wine_meu_jogo winecfgO Winetricks é uma ferramenta essencial que automatiza a instalação de componentes Windows dentro de um prefixe Wine, como runtimes do Visual C++, DirectX, .NET Framework, fontes Microsoft, e centenas de outras dependências que jogos e aplicativos Windows exigem. Sem Winetricks, você teria que instalar cada componente manualmente.
# Instalar Winetricks
sudo pacman -S winetricks
# Instalar componentes comuns necessários para jogos
WINEPREFIX=~/.wine_meu_jogo winetricks vcrun2019 vcrun2022 d3dx9 dxvk
# Abrir interface gráfica do Winetricks
WINEPREFIX=~/.wine_meu_jogo winetricks --gui
# Componentes mais comuns para jogos Windows:
# vcrun2019 - Visual C++ 2019 Runtime
# dotnet48 - .NET Framework 4.8
# d3dx9_43 - DirectX 9 (apenas para Wine sem DXVK)
# xact - Microsoft XACT (áudio em muitos jogos)
# corefonts - Fontes Microsoft básicasCom Proton/DXVK, você raramente precisa instalar d3dx9 manualmente — o DXVK já implementa o DirectX 9/10/11 via Vulkan nativamente. Use winetricks principalmente para runtimes de C++ e .NET.
Drivers GPU para Gaming: NVIDIA, AMD e Intel
A escolha e configuração correta dos drivers de GPU é um dos fatores mais críticos para o gaming no Linux. Cada fabricante tem suas especificidades, e uma instalação incorreta pode resultar em jogos que não iniciam, telas pretas, ou desempenho muito inferior ao esperado. Vamos cobrir as três principais GPUs.
NVIDIA Proprietário
Instale
nvidia nvidia-utils lib32-nvidia-utils. Use o driver proprietário para máximo desempenho. O driver open-source nouveau tem desempenho muito inferior para gaming.AMD (AMDGPU)
O driver
amdgpu é open-source e incluído no kernel. Instale vulkan-radeon lib32-vulkan-radeon mesa lib32-mesa para suporte completo a Vulkan e OpenGL.Intel Arc/Integrado
Instale
vulkan-intel lib32-vulkan-intel intel-media-driver. Para GPUs Arc dedicadas, use também intel-compute-runtime para suporte a OpenCL/compute.# Instalação completa para NVIDIA (substitua pelos seus pacotes)
sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils nvidia-settings
# Verificar que o Vulkan está funcionando
vulkaninfo --summary
# Verificar drivers carregados
lspci -k | grep -A 3 VGADXVK e VKD3D-Proton
O DXVK (DirectX to Vulkan) é uma das tecnologias mais importantes do gaming no Linux. Ele implementa as APIs DirectX 9, 10 e 11 usando Vulkan como backend, resultando em performance significativamente melhor que a implementação nativa do Wine (que usa OpenGL). O VKD3D-Proton faz o mesmo para DirectX 12.
# Instalar DXVK standalone (para uso com Wine puro)
sudo pacman -S dxvk-bin # Via AUR com yay
# OU instalar manualmente no prefixe:
WINEPREFIX=~/.wine_meu_jogo setup_dxvk.sh install
# Verificar se DXVK está ativo em um jogo
DXVK_HUD=1 wine jogo.exe # Mostra overlay com info do DXVK
# Configurar nível de log do DXVK
DXVK_LOG_LEVEL=info wine jogo.exe # none, error, warn, info, debug
# Cache de shaders DXVK (melhora performance em sessões subsequentes)
DXVK_STATE_CACHE=1 %command% # No SteamO cache de shaders DXVK merece atenção especial. Na primeira vez que você roda um jogo com DXVK, ele compila shaders e os armazena em cache. Nas próximas execuções, esse cache é reutilizado, eliminando os travamentos de compilação. O Steam pré-carrega shaders para jogos populares (por isso o download de "shader pre-compilation" que você vê no Steam). Nunca delete a pasta de cache do Steam sem necessidade.
Este fluxo de tradução é o que permite que jogos Windows rodem no Linux com performance comparável ou superior à nativa no Windows, graças à eficiência do Vulkan comparado ao overhead do OpenGL.
GameMode e MangoHud: Performance e Monitoramento
O GameMode é uma ferramenta desenvolvida pela Feral Interactive que otimiza automaticamente o sistema Linux quando um jogo está rodando. Ele ajusta o governor de CPU para "performance", aumenta a prioridade do processo do jogo, otimiza parâmetros de I/O, e pode executar scripts customizados no início e fim de cada sessão de gaming. É uma das ferramentas mais simples e eficazes para melhorar a experiência de gaming.
# Instalar GameMode
sudo pacman -S gamemode lib32-gamemode
# Ativar no Steam: adicione às opções de lançamento
gamemoderun %command%
# Verificar se está ativo
gamemoded -s
# Saída esperada: "gamemoded is active, current clients: 1"
# Configurar GameMode (arquivo de config)
sudo nano /etc/gamemode.iniO MangoHud é um overlay de monitoramento que exibe em tempo real — enquanto você joga — informações como FPS, frametime, uso de GPU/CPU, temperatura, frequência, uso de VRAM e RAM, e muito mais. É indispensável para diagnosticar problemas de desempenho e ver o impacto real de cada otimização aplicada.
# Instalar MangoHud
sudo pacman -S mangohud lib32-mangohud
# Ativar no Steam (combinando com gamemoderun)
MANGOHUD=1 gamemoderun %command%
# Configuração do MangoHud
mkdir -p ~/.config/MangoHud
nano ~/.config/MangoHud/MangoHud.conf
# Exemplo de config mínima:
fps
gpu_stats
cpu_stats
ram
vram
frametime
temperatureCombine GameMode + MangoHud + DXVK_ASYNC para uma experiência de gaming altamente otimizada. Sua linha de opções de lançamento no Steam ficaria:
MANGOHUD=1 DXVK_ASYNC=1 gamemoderun %command%Controladores e Joystick no Linux
O suporte a controladores no Linux é excelente e, na maioria dos casos, plug-and-play. Controles Xbox (wired e wireless via adaptador USB), PlayStation (DualShock 4, DualSense), e controladores genéricos USB/Bluetooth funcionam nativamente com o kernel Linux. Controladores gamepad são expostos via a API de input do kernel e acessíveis via SDL2, que é usada pela grande maioria dos jogos.
# Verificar controladores conectados
ls /dev/input/js* # Joystick clássico
ls /dev/input/event* # Dispositivos de input modernos
# Instalar ferramentas de diagnóstico
sudo pacman -S jstest-gtk gamepad
# Testar controle via terminal
jstest /dev/input/js0
# Para controles Xbox via Bluetooth (driver xpadneo)
yay -S xpadneo-dkms
# Para DualSense PS5 com recursos avançados (haptia/adaptive triggers)
yay -S dualsensectlXbox Wired/USB
Funciona nativo via módulo
xpad do kernel. Zero configuração necessária.Xbox Bluetooth
Use
xpadneo-dkms via AUR para suporte completo a vibração e Bluetooth.DualShock 4 / DualSense
Suporte nativo no kernel moderno. DualSense tem suporte a háptico via
dualsensectl.Switch Pro / Joy-Cons
Driver
hid-nintendo incluído no kernel 5.16+. Instale joycond para Joy-Cons.Para mapear botões de forma customizada, a ferramenta AntiMicroX é excelente — permite mapear botões do controle para teclas de teclado/mouse, útil para jogos que não suportam controles nativamente.
Anti-Cheat no Linux: Estado Atual 2025
O anti-cheat é historicamente o maior obstáculo para o gaming no Linux. Sistemas como BattlEye e EasyAntiCheat (EAC) originalmente bloqueavam jogadores Linux, mas a situação mudou significativamente. Com o sucesso do Steam Deck (que roda Linux), a Valve pressionou desenvolvedores a ativarem suporte Linux nos seus sistemas anti-cheat, e muitos o fizeram.
EasyAntiCheat (EAC)
Suporte Linux ativado pela Epic. Jogos precisam optar explicitamente. Fortnite, Rust, Apex (parcial) funcionam.
BattlEye
Suporte Linux disponível. Jogos como DayZ, PUBG, Rainbow Six funcionam. Depende de cada desenvolvedor ativar.
Vanguard (Riot)
Valorant ainda não suporta Linux oficialmente. O kernel-level driver do Vanguard é incompatível com sistemas Linux.
nProtect GameGuard
Maior incompatibilidade atual. Jogos coreanos com GameGuard (Aion, Ragnarok) geralmente não funcionam.
O site Are We Anti-Cheat Yet? (areweanticheatyet.com) mantém um banco de dados atualizado com o status de compatibilidade anti-cheat de centenas de jogos. É a primeira referência a consultar antes de comprar um jogo com intenção de jogar no Linux. Verifique sempre antes de comprar.
Streaming com OBS Studio
O OBS Studio (Open Broadcaster Software) é o software de streaming e gravação de tela mais popular do mundo, e tem suporte nativo excelente no Linux. No Arch Linux, você pode usar o OBS com captura de tela via PipeWire (o moderno servidor de áudio/vídeo do Linux), que oferece captura de janelas e telas individuais sem necessidade de ser root.
# Instalar OBS Studio e plugins essenciais
sudo pacman -S obs-studio
# Plugins importantes via AUR
yay -S obs-vkcapture # Captura de jogos Vulkan/OpenGL direta
yay -S obs-pipewire-audio-capture # Captura de áudio por aplicação
# Para captura de tela moderna (Wayland/X11)
sudo pacman -S xdg-desktop-portal-gtk # ou portal do seu DE
# Ativar captura de jogos Vulkan (sem impacto de performance)
# Nas opções de lançamento do jogo no Steam:
OBS_VKCAPTURE=1 %command%A grande vantagem do obs-vkcapture é que ele injeta uma layer Vulkan diretamente no jogo, capturando o frame buffer antes de ser enviado para a tela. Isso resulta em captura de altíssima qualidade sem o overhead da captura de tela do sistema. Diferente do Windows (onde o Game Capture funciona de forma semelhante), no Linux esta solução é ainda mais elegante por funcionar tanto em X11 quanto em Wayland.
01
Instalar OBS + obs-vkcapture
Instale via pacman e AUR. Configure a cena com uma "Game Capture" source.
02
Configurar áudio com PipeWire
No OBS, adicione "Application Audio Capture" para capturar áudio do jogo separadamente.
03
Adicionar OBS_VKCAPTURE=1 ao jogo
Nas opções de lançamento do Steam, ative a variável para captura direta de frames.
04
Configurar encoder de hardware
Use NVENC (NVIDIA), VA-API (AMD/Intel) para encoding acelerado por hardware sem impacto de CPU.
Game Streaming com Sunshine e Moonlight
O Sunshine é um servidor de game streaming open source compatível com o protocolo NVIDIA GameStream. Ele permite que você transmita jogos do seu PC Linux para qualquer dispositivo na rede (ou pela internet) com baixíssima latência. O Moonlight é o cliente correspondente, disponível para Android, iOS, Windows, Raspberry Pi, Smart TVs e outros dispositivos Linux. Juntos, formam uma solução de streaming de jogos completamente open source e gratuita.
# Instalar Sunshine (servidor no Arch Linux)
yay -S sunshine
# Iniciar o Sunshine (interface web em localhost:47990)
sunshine
# Adicionar ao systemd para iniciar automaticamente
systemctl --user enable --now sunshine
# Configurar firewall (se usar ufw)
sudo ufw allow 47984/tcp # HTTPS
sudo ufw allow 47989/tcp # HTTP
sudo ufw allow 48010/tcp # RTSP
sudo ufw allow 47998:48000/udp # Video/Audio/ControlA latência do Sunshine/Moonlight numa rede local gigabit é tipicamente de 5-15ms — completamente imperceptível para a maioria dos jogos. Para streaming pela internet, a latência aumenta, mas a qualidade de vídeo ainda é excelente graças ao encoding H.264/HEVC/AV1 com aceleração de hardware. Configure o encoder nas configurações do Sunshine para usar NVENC, VA-API ou VAAPI conforme sua GPU.
Sunshine substitui completamente o NVIDIA GameStream (descontinuado pela NVIDIA em 2023) e funciona com qualquer GPU, não apenas NVIDIA. É a solução recomendada para streaming de jogos no Linux.
Emulação: RetroArch
O RetroArch é um frontend para emuladores que usa uma arquitetura de plugins chamados cores. Cada core é um emulador específico (ou uma variante de emulador) que implementa um sistema de videogame. Com um único programa, você emula NES, SNES, Mega Drive, PlayStation 1, Nintendo 64, Game Boy, e dezenas de outros sistemas. O RetroArch também oferece shaders de pós-processamento, rewind, netplay e save states.
# Instalar RetroArch
sudo pacman -S retroarch retroarch-assets-xmb
# Instalar cores (emuladores) via RetroArch
# Abra RetroArch → Online Updater → Core Downloader
# Ou instale cores individualmente via AUR:
yay -S libretro-mesen # NES de alta precisão
yay -S libretro-bsnes # SNES de alta precisão
yay -S libretro-mupen64plus-next # Nintendo 64
yay -S libretro-pcsx-rearmed # PlayStation 1
yay -S libretro-snes9x # SNES rápido e compatívelA estrutura de arquivos do RetroArch segue um padrão organizado. Suas ROMs devem ser organizadas por sistema em pastas separadas, e você configura o diretório principal nas configurações. O RetroArch também suporta scanning de ROMs — ele verifica checksums das ROMs contra um banco de dados e cria uma biblioteca organizada automaticamente, similar ao Steam para jogos retrô.
ROMs devem ser de games que você possui legalmente. A emulação em si é legal; baixar ROMs de jogos que você não possui pode violar direitos autorais. Muitos jogos retrô estão disponíveis legalmente via sites como Internet Archive ou vendidos em plataformas como GOG.
Emulação: Dolphin, RPCS3 e Além
Para sistemas mais modernos, emuladores dedicados oferecem qualidade de emulação superior ao RetroArch para plataformas específicas. Os dois mais importantes são o Dolphin (GameCube/Wii) e o RPCS3 (PlayStation 3).
Dolphin (GameCube/Wii)
O melhor emulador de GameCube e Wii do mundo. Suporta upscaling até 4K, anti-aliasing, save states, netplay e controles customizados. No Arch:
sudo pacman -S dolphin-emu. Recomenda-se usar a versão "Development" para melhor compatibilidade.RPCS3 (PlayStation 3)
Emulador de PS3 de alta compatibilidade. Muitos jogos rodam em 60fps com upscaling. No Arch:
yay -S rpcs3-bin. Requer CPU forte (6+ cores recomendados) pois o Cell do PS3 é arquitetura complexa.PCSX2 (PlayStation 2)
Emulador de PS2 maduro e muito compatível. Versão Qt moderna no Arch:
sudo pacman -S pcsx2. Upscaling até 8K, filtros de textura, widescreen patches automáticos.Ryujinx (Nintendo Switch)
Emulador de Switch open source e legal. Boa compatibilidade com muitos títulos. No Arch:
yay -S ryujinx. Requer firmware e chaves do Switch (obtidas do seu console).Capítulo 2
Automação com Cron: Sintaxe Completa
O cron é o agendador de tarefas clássico do Unix/Linux, presente há décadas e ainda extremamente útil. Ele permite executar comandos ou scripts em horários específicos de forma completamente automática. No Arch Linux, o daemon cronie é a implementação recomendada do cron. A configuração é feita via crontab — arquivos de texto com uma sintaxe específica que define quando e o quê executar.
# Instalar cronie
sudo pacman -S cronie
# Habilitar e iniciar o serviço
sudo systemctl enable --now crond
# Editar seu crontab pessoal
crontab -e # Abre editor (usa $EDITOR)
# Listar crontab atual
crontab -l
# Crontab do sistema (para root)
sudo crontab -eA sintaxe de uma linha de crontab tem 6 campos:
# Formato:
# ┌───────────── minuto (0-59)
# │ ┌─────────── hora (0-23)
# │ │ ┌───────── dia do mês (1-31)
# │ │ │ ┌─────── mês (1-12 ou jan,feb,mar...)
# │ │ │ │ ┌───── dia da semana (0-7, onde 0 e 7=domingo)
# │ │ │ │ │
# * * * * * comando_a_executar
# Caracteres especiais:
# * = qualquer valor (todos)
# , = lista de valores (1,3,5)
# - = intervalo (1-5)
# / = passo (*/5 = a cada 5)
# @reboot = na inicialização do sistemaCron: Exemplos Práticos Reais
Nada melhor do que exemplos concretos para fixar a sintaxe do cron. Abaixo, uma coleção de tarefas úteis que você pode usar diretamente ou adaptar para suas necessidades.
# Backup diário às 2h da manhã
0 2 * * * /home/usuario/scripts/backup.sh
# Limpar cache do pacman todo domingo às 3h
0 3 * * 0 sudo paccache -r
# Sincronizar dotfiles com git todo dia às 23h55
55 23 * * * cd ~/.dotfiles && git add -A && git commit -m "auto: sync $(date)" && git push
# Atualizar banco de dados do updatedb a cada 6 horas
0 */6 * * * updatedb
# Reiniciar serviço a cada hora se estiver parado
0 * * * * systemctl is-active --quiet meu-servico || systemctl restart meu-servico
# Relatório semanal de uso de disco (toda segunda às 8h)
0 8 * * 1 df -h | mail -s "Disk Report $(hostname)" usuario@email.com
# Log de temperatura da CPU a cada 5 minutos
*/5 * * * * sensors | grep "Core 0" >> /var/log/cpu_temp.log
# Executar na inicialização do sistema
@reboot /home/usuario/scripts/startup.sh
# Executar uma vez por ano (1 de janeiro às 0h)
0 0 1 1 * /home/usuario/scripts/happy_new_year.shPor padrão, o cron não carrega variáveis de ambiente do usuário como
PATH. Sempre use caminhos absolutos nos seus scripts cron, ou defina PATH explicitamente no início do crontab: adicione PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin no topo do arquivo.Systemd Timers: O Cron Moderno
Os systemd timers são a alternativa moderna ao cron no ecossistema systemd. Eles oferecem vantagens importantes: integração com o journal do systemd (logs automáticos), capacidade de depender de outros serviços, precisão de microssegundos, e a possibilidade de executar tarefas que "perdeu" o horário quando o sistema estava desligado (catch-up). Para criar um timer systemd, você precisa de dois arquivos: um .service (o que fazer) e um .timer (quando fazer).
# Estrutura básica de um timer systemd para usuário
# Arquivo 1: ~/.config/systemd/user/backup.service
[Unit]
Description=Backup diário dos documentos
[Service]
Type=oneshot
ExecStart=/home/usuario/scripts/backup.sh
# Arquivo 2: ~/.config/systemd/user/backup.timer
[Unit]
Description=Timer para backup diário
Requires=backup.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target# Ativar e iniciar o timer
systemctl --user daemon-reload
systemctl --user enable --now backup.timer
# Verificar status do timer
systemctl --user list-timers --all
systemctl --user status backup.timerA diretiva
Persistent=true é muito útil: ela garante que se o timer "perdeu" o horário de execução (porque o PC estava desligado), ele executará imediatamente na próxima vez que o sistema iniciar. Isso é ideal para tarefas como backup, que não devem ser puladas silenciosamente.Sintaxe OnCalendar do Systemd
A diretiva
OnCalendar do systemd tem uma sintaxe muito flexível e poderosa. Ela suporta notações por nome do dia, expressões de intervalo, e muito mais. Entender essa sintaxe é essencial para criar timers precisos.# Formato completo: DiaDaSemana Ano-Mês-Dia Hora:Minuto:Segundo
# Exemplos fundamentais:
OnCalendar=daily # Todo dia à meia-noite
OnCalendar=weekly # Todo domingo à meia-noite
OnCalendar=monthly # Primeiro dia do mês à meia-noite
OnCalendar=hourly # A cada hora (no minuto 0)
OnCalendar=minutely # A cada minuto
OnCalendar=annually # Uma vez por ano (1 de janeiro)
# Exemplos com horário específico:
OnCalendar=*-*-* 02:30:00 # Todo dia às 2h30
OnCalendar=Mon *-*-* 09:00 # Toda segunda às 9h
OnCalendar=Mon..Fri 08:00 # Dias úteis às 8h
OnCalendar=Sat,Sun 10:00 # Fins de semana às 10h
# Intervalos:
OnCalendar=*:0/15 # A cada 15 minutos
OnCalendar=*-*-1/2 00:00 # A cada 2 dias, às meia-noite
OnCalendar=*-*/3-1 00:00 # Primeiro de cada trimestre
# Verificar quando o próximo disparo ocorrerá:
systemd-analyze calendar "Mon..Fri 08:00"O comando
systemd-analyze calendar "expressão" é extremamente útil para verificar se sua expressão OnCalendar está correta antes de ativar o timer. Ele mostra a próxima data/hora de execução e as próximas iterações.Scripts Bash de Automação: Backup Inteligente
Scripts Bash são a cola que une automação, monitoramento e manutenção do sistema. Um bom script de automação deve ser idempotente (pode ser rodado múltiplas vezes sem efeitos colaterais), ter tratamento de erros adequado, logging, e verificações de pré-condição. Vejamos um script de backup robusto e real:
#!/bin/bash
# backup.sh - Script de backup incremental com rotação
set -euo pipefail # Para em erros, variáveis não definidas, falhas em pipes
# Configuração
ORIGEM="$HOME/Documentos"
DESTINO="/mnt/backup/$(hostname)"
LOG="/var/log/backup.log"
RETENCAO=30 # dias para manter backups
DATA=$(date +%Y-%m-%d_%H-%M-%S)
# Função de log
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"
}
# Verificações de pré-condição
verificar_prereqs() {
command -v rsync >/dev/null 2>&1 || { log "ERRO: rsync não instalado"; exit 1; }
[[ -d "$ORIGEM" ]] || { log "ERRO: Origem $ORIGEM não existe"; exit 1; }
[[ -d "$DESTINO" ]] || mkdir -p "$DESTINO"
}
# Backup incremental com rsync
fazer_backup() {
log "Iniciando backup de $ORIGEM para $DESTINO/$DATA"
rsync -avz --delete \
--backup --backup-dir="$DESTINO/historico/$DATA" \
--exclude='.cache' \
--exclude='node_modules' \
--exclude='*.tmp' \
"$ORIGEM/" "$DESTINO/atual/"
log "Backup concluído com sucesso"
}
# Limpar backups antigos
limpar_antigos() {
log "Removendo backups com mais de $RETENCAO dias"
find "$DESTINO/historico" -maxdepth 1 -type d \
-mtime "+$RETENCAO" -exec rm -rf {} \;
log "Limpeza concluída"
}
# Execução principal
verificar_prereqs
fazer_backup
limpar_antigos
log "=== Backup finalizado ==="Scripts Bash: Manutenção do Sistema Arch
#!/bin/bash
# manutencao_arch.sh - Rotina completa de manutenção do Arch Linux
set -euo pipefail
CORES='\033[0;32m'
AMARELO='\033[1;33m'
VERMELHO='\033[0;31m'
SEM_COR='\033[0m'
info() { echo -e "${CORES}[INFO]${SEM_COR} $*"; }
aviso() { echo -e "${AMARELO}[AVISO]${SEM_COR} $*"; }
erro() { echo -e "${VERMELHO}[ERRO]${SEM_COR} $*" >&2; }
# 1. Atualizar sistema
info "Atualizando sistema..."
sudo pacman -Syu --noconfirm
# 2. Atualizar pacotes AUR
if command -v yay &>/dev/null; then
info "Atualizando pacotes AUR..."
yay -Sua --noconfirm
fi
# 3. Limpar cache do pacman (manter 2 versões)
info "Limpando cache do pacman..."
sudo paccache -rk2
sudo paccache -ruk0 # Remover versões de pacotes desinstalados
# 4. Remover pacotes órfãos
ORFAOS=$(pacman -Qdtq 2>/dev/null || true)
if [[ -n "$ORFAOS" ]]; then
aviso "Pacotes órfãos encontrados:"
echo "$ORFAOS"
sudo pacman -Rns $ORFAOS --noconfirm
else
info "Nenhum pacote órfão encontrado."
fi
# 5. Verificar arquivos .pacnew e .pacsave
NOVOS=$(find /etc -name "*.pacnew" 2>/dev/null | wc -l)
[[ $NOVOS -gt 0 ]] && aviso "$NOVOS arquivos .pacnew aguardam revisão!"
# 6. Relatório final
info "=== Manutenção concluída em $(date) ==="Salve este script em
~/scripts/manutencao_arch.sh, torne-o executável com chmod +x ~/scripts/manutencao_arch.sh e configure um timer systemd para rodá-lo semanalmente.Ansible Básico para Arch Linux
O Ansible é uma ferramenta de automação de infraestrutura que permite descrever o estado desejado do seu sistema em arquivos YAML chamados playbooks. Ao contrário de scripts Bash que executam comandos imperativos, o Ansible é declarativo — você descreve o que quer, não como fazer. Ele é idempotente por natureza: rodar um playbook múltiplas vezes sempre resulta no mesmo estado final.
# Instalar Ansible
sudo pacman -S ansible
# Verificar instalação
ansible --version
# Para gerenciar a própria máquina (localhost), crie um inventário:
echo "localhost ansible_connection=local" > ~/ansible/inventory
# Testar conexão
ansible localhost -i ~/ansible/inventory -m pingUm playbook básico para configurar um Arch Linux fresh install:
--- # ~/ansible/playbooks/arch_setup.yml
- name: Configurar Arch Linux
hosts: localhost
become: yes # Executar como sudo quando necessário
tasks:
- name: Atualizar sistema
community.general.pacman:
update_cache: yes
upgrade: yes
- name: Instalar pacotes essenciais
community.general.pacman:
name:
- git
- vim
- htop
- tmux
- zsh
- bat
- ripgrep
- fd
state: present
- name: Garantir que serviços essenciais estão ativos
systemd:
name: "{{ item }}"
state: started
enabled: yes
loop:
- NetworkManager
- bluetooth
# Executar o playbook:
ansible-playbook -i ~/ansible/inventory ~/ansible/playbooks/arch_setup.ymlGerenciamento de Dotfiles: Chezmoi
Dotfiles são os arquivos de configuração do seu ambiente Linux —
.bashrc, .vimrc, .config/nvim/, .ssh/config, e centenas de outros. Gerenciá-los corretamente permite recriar seu ambiente personalizado em qualquer máquina nova em minutos. O chezmoi é a ferramenta mais sofisticada e segura para isso, suportando templates, segredos criptografados, e diferenciação por máquina.# Instalar chezmoi
sudo pacman -S chezmoi
# Inicializar repositório (cria ~/.local/share/chezmoi)
chezmoi init
# Adicionar um dotfile ao gerenciamento
chezmoi add ~/.bashrc
chezmoi add ~/.vimrc
chezmoi add ~/.config/nvim/
# Ver quais arquivos estão gerenciados
chezmoi managed
# Ver diferenças entre o gerenciado e o atual
chezmoi diff
# Aplicar todas as configurações gerenciadas
chezmoi apply
# Editar um arquivo gerenciado (no source)
chezmoi edit ~/.bashrc
# Fazer commit das mudanças
chezmoi cd # Entra no diretório source
git add -A && git commit -m "Update bashrc"
git push
# Em uma nova máquina, restaurar tudo:
chezmoi init --apply https://github.com/usuario/dotfilesO grande diferencial do chezmoi são os templates. Você pode ter configurações diferentes para máquinas diferentes no mesmo dotfile, usando a sintaxe de template Go. Por exemplo, configurações de proxy só em máquinas de trabalho, ou temas de terminal diferentes em cada sistema.
Gerenciamento de Dotfiles: GNU Stow e YADM
GNU Stow
Abordagem de symlinks: cria um repositório com a mesma estrutura de diretórios do
$HOME e usa stow para criar symlinks automaticamente. Muito simples e sem dependências além do próprio stow.sudo pacman -S stow
# Estrutura do repositório:
~/.dotfiles/
bash/.bashrc
vim/.vimrc
nvim/.config/nvim/
# Aplicar com stow:
cd ~/.dotfiles
stow bash # Cria ~/.bashrc
stow vim # Cria ~/.vimrc
stow nvim # Cria ~/.config/nvimYADM (Yet Another Dotfiles Manager)
Usa o próprio Git diretamente no
$HOME, sem symlinks. Mais simples que chezmoi, suporta templates básicos e hooks. Ideal para quem quer algo entre "git puro" e chezmoi.yay -S yadm
# Inicializar
yadm init
yadm add ~/.bashrc ~/.vimrc
yadm commit -m "Initial dotfiles"
yadm remote add origin URL
yadm push -u origin main
# Clonar em nova máquina:
yadm clone https://github.com/user/dotfilesRecomendação: use chezmoi para ambientes complexos com múltiplas máquinas e necessidade de segredos; GNU Stow para simplicidade máxima; YADM para um meio-termo com interface similar ao Git.
Capítulo 3
Monitoramento do Sistema: htop, btop e nvtop
Monitorar o sistema em tempo real é fundamental para identificar gargalos, detectar processos problemáticos e entender o comportamento do seu Arch Linux. O Linux oferece uma rica variedade de ferramentas de monitoramento, desde as clássicas baseadas em texto até dashboards web completos. Vamos explorar as melhores ferramentas para cada necessidade.
htop
O clássico monitor de processos interativo. Mostra uso de CPU por core, memória, swap, processos com tree view. Navegue com setas, pressione
F6 para ordenar, F9 para matar processos. sudo pacman -S htopbtop
A evolução moderna do htop. Interface colorida com gráficos de uso histórico, monitoramento de rede e disco, temas customizáveis. Extremamente informativo e bonito.
sudo pacman -S btopnvtop
Monitor de GPU em tempo real, similar ao htop mas para placa de vídeo. Mostra uso de GPU, VRAM, temperatura, frequência e processos usando a GPU.
sudo pacman -S nvtopiotop
Monitor de I/O de disco por processo. Identifica qual processo está causando alta atividade de disco. Precisa de root:
sudo iotop. Pacote: sudo pacman -S iotopGlances e Netdata: Monitoramento Avançado
# Instalar Glances (monitor all-in-one)
sudo pacman -S glances
# Usar Glances em modo texto
glances
# Modo servidor web (acesse em http://localhost:61208)
glances -w
# Monitorar servidor remoto
glances --client IP_DO_SERVIDOR
# Instalar Netdata (dashboard web em tempo real)
yay -S netdata
# Iniciar serviço
sudo systemctl enable --now netdata
# Acessar dashboard
# http://localhost:19999O Glances é uma ferramenta all-in-one que combina informações de CPU, memória, disco, rede, processos, temperatura e muito mais em uma única tela de terminal. Sua interface é organizada e intuitiva, e ele também pode ser usado como servidor de monitoramento acessível por navegador ou por outros Glances clientes na rede.
O Netdata é um nível acima: é um sistema de monitoramento completo com um dashboard web lindamente projetado, coleta de métricas em tempo real (cada segundo), alertas configuráveis, e suporte a milhares de integrações. É a ferramenta ideal para quem quer um sistema de monitoramento profissional sem a complexidade de soluções empresariais como Prometheus/Grafana. O Netdata coleta automaticamente métricas de CPU, memória, disco, rede, containers Docker, bancos de dados, servidores web e muito mais — sem precisar configurar nada manualmente.
Para uma solução de monitoramento pessoal completa: use btop no terminal para monitoramento rápido, nvtop para GPU quando fizer gaming ou compute, e Netdata para um dashboard persistente e alertas automáticos.
Tuning de Performance: CPU Governor
O CPU governor é o mecanismo do kernel Linux que decide em qual frequência o processador deve rodar em cada momento. Escolher o governor correto pode ter um impacto significativo tanto no desempenho quanto no consumo de energia. No Arch Linux moderno com kernel 5.10+, o governor padrão é geralmente
schedutil ou powersave.# Ver governors disponíveis
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
# Ver governor atual de todos os cores
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Mudar governor temporariamente (para todos os cores)
sudo cpupower frequency-set -g performance
# Ou via echo (mais manual):
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo "performance" | sudo tee "$cpu"
done
# Ver frequência atual de cada core
cpupower frequency-info --hwlimitsperformance
CPU sempre na frequência máxima. Melhor desempenho, maior consumo. Ideal para gaming e workloads intensivos.
schedutil
Padrão moderno. Ajusta frequência baseado no scheduler do kernel. Bom equilíbrio entre desempenho e eficiência.
powersave
CPU sempre na frequência mínima. Menor consumo, desempenho reduzido. Ideal para laptops em bateria.
ondemand
Ajusta frequência dinamicamente conforme carga. Governor clássico, ainda funcional mas superado pelo schedutil.
Para gaming, usar o governor
performance garante que a CPU não throttle em momentos críticos. O GameMode faz isso automaticamente quando você inicia um jogo — outra razão para sempre usar gamemoderun %command%.Tuning: I/O Scheduler e Swappiness
O I/O scheduler controla como o kernel organiza as operações de leitura/escrita no disco. Para SSDs (especialmente NVMe), o scheduler ideal é diferente do para HDDs. O padrão moderno do kernel é
mq-deadline ou none para SSDs, que são excelentes escolhas.# Ver scheduler atual por dispositivo
cat /sys/block/sda/queue/scheduler # HDD
cat /sys/block/nvme0n1/queue/scheduler # NVMe SSD
# Mudar scheduler (temporário)
echo "mq-deadline" | sudo tee /sys/block/sda/queue/scheduler
echo "none" | sudo tee /sys/block/nvme0n1/queue/scheduler
# Tornar permanente via udev rule:
# /etc/udev/rules.d/60-ioschedulers.rules
ACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline"
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"A swappiness controla com que agressividade o kernel move dados da RAM para o swap. O valor padrão é 60 (numa escala de 0-100). Para sistemas com muita RAM, valores mais baixos (10-20) mantêm mais dados na RAM rápida. Para sistemas com ZRAM (swap em memória comprimida), valores mais altos (100) fazem sentido.
# Ver swappiness atual
cat /proc/sys/vm/swappiness
# Mudar temporariamente
sudo sysctl vm.swappiness=10
# Tornar permanente
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system # Aplicar sem reiniciarZRAM: Swap em Memória Comprimida
O ZRAM é uma tecnologia que cria um dispositivo de swap dentro da própria RAM, mas com compressão. Em vez de usar o disco (lento) como swap, o ZRAM comprime páginas de memória inativa e as mantém na RAM (rápida). Isso é especialmente útil em sistemas com 8-16GB de RAM — você efetivamente ganha mais memória utilizável sem precisar de disco. O kernel Arch inclui o módulo ZRAM por padrão.
# Instalar zram-generator (configuração automática)
sudo pacman -S zram-generator
# Criar configuração
sudo nano /etc/systemd/zram-generator.conf
# Conteúdo mínimo:
[zram0]
zram-size = ram / 2 # 50% da RAM como ZRAM
compression-algorithm = zstd # zstd = melhor relação velocidade/compressão
# Habilitar e iniciar
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service
# Verificar se está ativo
zramctl
swapon --show
# Ajustar swappiness para usar ZRAM agressivamente:
echo "vm.swappiness=180" | sudo tee /etc/sysctl.d/99-zram.conf
echo "vm.watermark_boost_factor=0" | sudo tee -a /etc/sysctl.d/99-zram.conf
sudo sysctl --systemZRAM é especialmente valioso em sistemas com 8GB de RAM ou menos. Com ZRAM configurado, operações que causariam swapping para disco (lento, audível em HDDs) agora fazem swap para memória comprimida, com latência de microssegundos em vez de milissegundos.
Journalctl: Dominando os Logs do Systemd
Capítulo 4: Troubleshooting
O
journalctl é a ferramenta para ler e filtrar os logs do systemd journal — o sistema centralizado de logging do Linux moderno. Dominar o journalctl é essencial para diagnosticar qualquer problema no sistema. O journal armazena logs de todos os serviços, do kernel, do boot, e de aplicações de forma estruturada e pesquisável.# Ver todos os logs (mais recentes primeiro: use -r)
journalctl -r
# Seguir logs em tempo real (como tail -f)
journalctl -f
# Logs desde o último boot
journalctl -b
# Logs de dois boots atrás
journalctl -b -1
# Logs de um serviço específico
journalctl -u NetworkManager
journalctl -u nginx -f # Seguir logs do nginx
# Filtrar por prioridade (erros e críticos)
journalctl -p err # err, warning, notice, info, debug
journalctl -p 0..3 # 0=emerg, 1=alert, 2=crit, 3=err
# Filtrar por tempo
journalctl --since "2025-01-01 00:00:00"
journalctl --since "1 hour ago"
journalctl --since yesterday --until today
# Ver logs de kernel (equivalente ao dmesg)
journalctl -k
# Exportar para análise
journalctl -b --no-pager > /tmp/boot_log.txt
# Quanto espaço o journal ocupa
journalctl --disk-usage
# Limpar logs antigos
journalctl --vacuum-time=30d # Manter últimos 30 dias
journalctl --vacuum-size=500M # Limitar a 500MBdmesg: Mensagens do Kernel
# Ver mensagens do kernel (completo)
dmesg
# Seguir em tempo real
dmesg -w
# Mostrar com timestamps legíveis
dmesg -T
# Filtrar por nível (apenas erros e críticos)
dmesg --level=err,crit,warn
# Filtrar por facilidade (hardware, drivers)
dmesg -f kern # Mensagens do kernel
dmesg -f user # Mensagens do espaço de usuário
# Ver apenas mensagens de um dispositivo/driver
dmesg | grep -i nvidia
dmesg | grep -i usb
dmesg | grep -i error
# Cores para facilitar leitura
dmesg -H # Human-readable com cores
# Limpar buffer do dmesg
sudo dmesg -CO
dmesg é especialmente útil para diagnosticar problemas de hardware: drivers que falham ao carregar, dispositivos USB não reconhecidos, erros de disco (procure por I/O error ou SCSI error), problemas de ACPI, e mensagens de inicialização do kernel. Quando um dispositivo para de funcionar subitamente, dmesg -w em um terminal enquanto você reproduz o problema quase sempre revela a causa.Dispositivo USB não reconhecido
dmesg -w enquanto conecta o dispositivo. Procure por "device not accepting address" ou "USB disconnect".Driver NVIDIA não carregando
dmesg | grep -i nvidia após o boot. Mensagens de erro aqui indicam conflito com nouveau ou parâmetro de kernel incorreto.Erros de disco
dmesg | grep -iE "error|I/O|scsi|ata". Erros consistentes indicam falha de hardware iminente — faça backup imediatamente.Análise de Coredumps
Quando um programa trava com um "Segmentation fault" ou similar, o sistema pode gerar um coredump — um snapshot do estado da memória do processo no momento do crash. Analisar coredumps é a forma mais precisa de entender por que um programa travou. O systemd integra gerenciamento de coredumps via
systemd-coredump.# Verificar coredumps recentes
coredumpctl list
# Ver informações de um coredump específico
coredumpctl info PID
# Analisar com GDB (debugger)
coredumpctl debug PID # Abre GDB automaticamente
# No GDB, comandos úteis:
# bt - backtrace (pilha de chamadas no momento do crash)
# frame N - ir para frame específico
# info reg - ver registros da CPU
# quit - sair
# Configurar onde coredumps são salvos
# /etc/systemd/coredump.conf
[Coredump]
Storage=external
Compress=yes
MaxUse=500M
KeepFree=1GPara desenvolvedores ou usuários que frequentemente testam software beta ou compilam do AUR, entender coredumps é valioso. O backtrace (
bt no GDB) mostra exatamente em qual função e linha de código o programa travou, permitindo reportar bugs precisamente para os desenvolvedores com informação acionável.Para coredumps de programas instalados via pacman, o Arch Linux tem pacotes
-debug separados que adicionam símbolos de debug. Por exemplo, para debug de crashes no Firefox: sudo pacman -S firefox-debugTroubleshooting Sistemático: Metodologia
Um bom troubleshooter não tenta coisas aleatórias — ele segue uma metodologia. O processo começa com a observação cuidadosa dos sintomas: quando começou, o que mudou recentemente, quais mensagens de erro aparecem. Com essas informações, formula hipóteses ordenadas por probabilidade. Então testa cada hipótese isoladamente, para identificar a causa raiz. Finalmente, aplica a solução e documenta o processo.
Perguntas de Observação
Quando começou? O que mudou antes? Acontece sempre ou intermitentemente? Afeta outros usuários/programas? Há mensagens de erro específicas?
Ferramentas de Coleta
journalctl -b -p err, dmesg -T, systemctl status servico, strace programa, lsof, ss -tulpnIsolar a Causa
Teste com usuário diferente, ambiente mínimo, desative extensões/plugins, verifique permissões, teste com versão anterior do pacote via downgrade.
Recuperação do Sistema: Chroot do Live USB
Quando o sistema não consegue mais inicializar — seja por um kernel corrompido, configuração do GRUB errada, ou arquivos de sistema danificados — a solução é inicializar por um Live USB do Arch Linux e usar o chroot para "entrar" no sistema instalado a partir do ambiente live. Com chroot, você tem acesso total ao sistema como se estivesse logado normalmente, podendo corrigir qualquer problema.
# Passo 1: Inicialize pelo Live USB do Arch Linux
# (Grave a ISO em um USB com: dd if=archlinux.iso of=/dev/sdX bs=4M)
# Passo 2: Identificar partições do sistema instalado
lsblk
fdisk -l
# Passo 3: Montar o sistema de arquivos
mount /dev/sdaX /mnt # Substituir por sua partição root
# Se usar partição EFI separada:
mount /dev/sdaY /mnt/boot/efi
# Passo 4: Montar sistemas de arquivos virtuais
mount --types proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
# Alternativa mais simples com arch-chroot:
arch-chroot /mnt # Este comando faz tudo automaticamente!
# Passo 5: Agora você está "dentro" do seu sistema
# Pode rodar qualquer comando como se estivesse logado normalmenteSempre use
arch-chroot em vez de chroot puro — ele monta todos os sistemas de arquivos virtuais necessários automaticamente e configura o ambiente corretamente, evitando erros comuns como "cannot open /dev/null".Reparo do GRUB
O GRUB é o bootloader mais comum no Arch Linux. Quando ele falha — seja por uma atualização de kernel mal sucedida, mudança de partição UUID, ou instalação de outro sistema operacional que sobrescreveu o MBR/EFI — o sistema não consegue inicializar. A recuperação é feita via chroot do Live USB.
# Após fazer chroot (como mostrado no card anterior):
# Para sistemas UEFI/GPT:
# Reinstalar o GRUB no ESP (EFI System Partition)
grub-install --target=x86_64-efi \
--efi-directory=/boot/efi \
--bootloader-id=ARCH \
--recheck
# Para sistemas BIOS/MBR:
grub-install --target=i386-pc \
--recheck \
/dev/sda # Disco, não partição!
# Regenerar arquivo de configuração do GRUB
grub-mkconfig -o /boot/grub/grub.cfg
# Verificar que os kernels foram detectados
ls /boot/vmlinuz* # Deve mostrar seus kernels instalados
# Se o grub.cfg não detectar o sistema:
# Instalar os-prober para detectar outros SOs:
sudo pacman -S os-prober
# Habilitar no /etc/default/grub:
# GRUB_DISABLE_OS_PROBER=false
grub-mkconfig -o /boot/grub/grub.cfgApós o reparo, saia do chroot com
exit, desmonte os sistemas de arquivos com umount -R /mnt e reinicie. Na grande maioria dos casos, o sistema volta a funcionar normalmente após esses passos.Recuperação de Dados com TestDisk e PhotoRec
O TestDisk e o PhotoRec são ferramentas gratuitas e poderosas para recuperação de dados. O TestDisk recupera partições deletadas, repara tabelas de partição corrompidas, e torna partições não-bootáveis bootáveis novamente. O PhotoRec recupera arquivos deletados de discos, cartões SD, e pendrives — mesmo quando o sistema de arquivos está corrompido ou formatado.
# Instalar
sudo pacman -S testdisk # Inclui o PhotoRec
# Recuperar partição perdida com TestDisk
sudo testdisk /dev/sda # Disco com problema
# No menu do TestDisk:
# 1. Selecionar disco
# 2. Tipo de tabela de partição (geralmente detectado auto)
# 3. Analyse → Quick Search
# 4. Selecionar partição encontrada → Write para restaurar
# Recuperar arquivos deletados com PhotoRec
sudo photorec /dev/sda # Ou arquivo de imagem
# No menu do PhotoRec:
# 1. Selecionar disco/partição
# 2. Escolher sistema de arquivos
# 3. Selecionar destino para arquivos recuperados
# (NUNCA na mesma partição que está recuperando!)
# 4. Aguardar a varreduraRegra de ouro da recuperação de dados: NUNCA escreva na partição/disco que está tentando recuperar. Todo arquivo recuperado deve ir para um dispositivo de armazenamento diferente. Escrever no mesmo disco pode sobrescrever exatamente os dados que você quer recuperar.
System Rescue: Toolkit Completo
🔑 Resetar Senha Root
Via chroot:
passwd root após entrar no sistema pelo Live USB. Simples e definitivo.🔄 Regenerar initramfs
Após atualizar kernel ou mudar configurações de mkinitcpio:
mkinitcpio -P dentro do chroot.💾 Backup de Emergência
Do Live USB, monte a partição e use rsync para salvar dados em disco externo antes de reparos agressivos.
🔍 Verificar Sistema de Arquivos
Com partição desmontada:
fsck -y /dev/sdaX. NUNCA rode fsck em partição montada.📋 Reinstalar Pacotes
Do chroot:
pacman -S pacote --overwrite='*' para reinstalar pacotes com arquivos corrompidos.🌐 Acesso à Internet do Live USB
Configure rede no Live USB com
iwctl (WiFi) ou dhcpcd eth0 (ethernet) para baixar ferramentas.# Comandos de emergência úteis dentro do chroot:
# Verificar integridade de todos os pacotes instalados
pacman -Qkk 2>&1 | grep -v "0 missing"
# Reinstalar todos os pacotes do sistema base
pacman -S $(pacman -Qq) --overwrite='*'
# Verificar arquivos de configuração alterados
pacman -Qii | grep "^MODIFIED"Comandos --help: Navegando a Documentação
Um dos hábitos mais valiosos que um usuário Linux pode desenvolver é o reflexo de usar
--help e man antes de recorrer à internet. Praticamente todos os comandos Unix/Linux têm documentação embutida acessível instantaneamente. Saber navegar essa documentação é uma habilidade fundamental que diferencia usuários intermediários de avançados.# --help: ajuda rápida e concisa
pacman --help
systemctl --help
journalctl --help
git --help
# Para subcomandos, --help funciona depois deles:
git commit --help
pacman -S --help # Não, mas:
pacman --help | grep "\-S"
# man: manual completo e estruturado
man pacman
man 5 crontab # Seção 5 = arquivos de configuração
man 8 fdisk # Seção 8 = comandos de sistema/admin
# Navegar no man:
# q = sair | /palavra = buscar | n = próxima ocorrência
# G = ir ao final | g = ir ao início | Espaço = próxima página
# info: formato alternativo mais detalhado (GNU)
info bash
info coreutils
# Páginas man online com exemplos práticos:
# tldr: "man simplificado com exemplos"
sudo pacman -S tealdeer
tldr ls
tldr rsync
tldr systemctlO tldr (tealdeer no Arch) é um complemento valioso ao man tradicional. Enquanto o man dá a referência completa, o tldr mostra os exemplos mais comuns de uso real. Use os dois: tldr para uso rápido, man para detalhes.
Strace e ltrace: Depuração de Baixo Nível
O
strace é uma ferramenta de diagnóstico que intercepta e exibe todas as chamadas de sistema que um processo faz ao kernel. É extremamente útil para entender por que um programa falha ao abrir arquivos, qual biblioteca está sendo carregada, quais conexões de rede um programa tenta fazer, e muitos outros diagnósticos de comportamento de processos.# Instalar strace
sudo pacman -S strace
# Rastrear chamadas de sistema de um comando
strace ls /tmp
# Filtrar por tipo de chamada (muito útil)
strace -e openat ls # Apenas chamadas de abertura de arquivo
strace -e network ls # Apenas chamadas de rede
strace -e trace=file ls # Todas relacionadas a arquivos
# Rastrear processo já em execução (por PID)
strace -p 1234
# Salvar saída para análise
strace -o /tmp/strace_output.txt programa
# Mostrar tempo de execução de cada chamada
strace -T programa # Mostra tempo em segundos por syscall
# Casos práticos de uso:
# 1. Por que um programa não acha um arquivo:
strace -e openat programa 2>&1 | grep "ENOENT"
# 2. Por que um programa não tem permissão:
strace -e openat programa 2>&1 | grep "EACCES\|EPERM"
# 3. Quais conexões um programa tenta fazer:
strace -e trace=network,connect programaDiagnóstico de Rede no Arch Linux
# Ver todas as interfaces de rede e seus IPs
ip addr show
ip link show # Status das interfaces
# Ver tabela de roteamento
ip route show
# Testar conectividade
ping -c 4 8.8.8.8 # Teste de conectividade básica
ping -c 4 archlinux.org # Teste de DNS
# Diagnosticar DNS
dig archlinux.org
nslookup archlinux.org
resolvectl status # Status do systemd-resolved
# Ver conexões ativas (substitui netstat)
ss -tulpn # t=tcp u=udp l=listening p=processo n=numérico
ss -s # Estatísticas gerais
# Verificar se uma porta está aberta
ss -tlnp | grep :80
nc -zv archlinux.org 443 # Test de porta remota
# Monitorar tráfego de rede em tempo real
sudo pacman -S nethogs # Por processo
sudo nethogs eth0
# Rastrear rota até destino
traceroute archlinux.org
mtr archlinux.org # Traceroute contínuo (mais útil)
# Capturar pacotes (para análise detalhada)
sudo tcpdump -i eth0 -n host 8.8.8.8O comando
mtr (My Traceroute) é superior ao traceroute clássico — ele combina ping e traceroute em uma tela contínua, mostrando perda de pacotes e latência em cada hop em tempo real. Ideal para diagnosticar problemas de roteamento intermitentes.Performance Profiling com perf
O
perf é a ferramenta de profiling de performance do Linux, integrada ao kernel. Ele permite medir ciclos de CPU, cache misses, branch mispredictions, e identificar exatamente quais funções consomem mais CPU em qualquer programa — sem precisar modificar o código. É a ferramenta definitiva para otimização de performance no Linux.# Instalar perf (kernel tools)
sudo pacman -S perf
# Profile básico de um programa (10 segundos)
perf stat programa_lento
# Identificar hotspots (funções mais executadas)
perf record -g programa_lento # Gera perf.data
perf report # Interface interativa
# Profile de um processo em execução
perf top # Similar ao top mas por função de código
# Ver eventos disponíveis para monitorar
perf list
# Contar eventos específicos
perf stat -e cache-misses,cache-references,instructions programa
# Exemplo de saída típica do perf stat:
# Performance counter stats for 'ls':
# 0.87 msec task-clock
# 0 context-switches
# 1,234 instructions / 0.89 insn per cycle
# 234 branch-misses / 3.21% of all branchesO
perf também é excelente para investigar gargalos de sistema: use perf top durante um período de alta carga para ver quais funções do kernel e do espaço de usuário estão consumindo mais ciclos de CPU. Isso é especialmente útil para diagnosticar causas de alta carga inexplicável no sistema.Gerenciamento de Memória e OOM Killer
Quando o sistema fica sem memória RAM disponível, o kernel Linux ativa o OOM Killer (Out of Memory Killer) — um mecanismo que escolhe e termina processos para liberar memória. Entender o OOM Killer é importante para diagnosticar crashes inesperados de processos. Quando um processo é terminado pelo OOM Killer, ele registra uma mensagem específica no journal.
# Verificar se OOM Killer agiu recentemente
journalctl -k | grep -i "oom\|killed process\|out of memory"
# Ver score OOM de cada processo (maior = mais provável de ser morto)
cat /proc/PID/oom_score
# Proteger um processo do OOM Killer (score -1000 = nunca matar)
echo -1000 | sudo tee /proc/PID/oom_score_adj
# Configurar via systemd service:
# [Service]
# OOMScoreAdjust=-500
# Ver uso de memória por processo
smem -p # Percentual de RAM por processo (instalar: sudo pacman -S smem)
# Analisar memória disponível
free -h
vmstat -s # Estatísticas de memória detalhadas
# Identificar vazamentos de memória
valgrind --leak-check=full ./programa_suspeitooom_score_adj: -1000
Nunca matar. Use para processos críticos de sistema como banco de dados ou servidores.
oom_score_adj: 0
Padrão. O kernel decide baseado no uso de memória e tempo de execução do processo.
oom_score_adj: 1000
Sempre matar primeiro. Use para processos descartáveis que podem ser reiniciados.
Auditoria de Segurança com lynis e chkrootkit
Manter o Arch Linux seguro requer verificações periódicas de configuração. O Lynis é uma ferramenta de auditoria de segurança que verifica centenas de aspectos do sistema — permissões de arquivos, configurações de serviços, usuários com senhas fracas, portas abertas desnecessárias, e muito mais — e gera um relatório com sugestões de hardening.
# Instalar Lynis
sudo pacman -S lynis
# Executar auditoria completa
sudo lynis audit system
# A saída inclui seções como:
# [+] Boot and services
# [+] Kernel
# [+] Memory and processes
# [+] Authentication
# [+] File systems
# [+] File permissions
# [+] Network
# [+] Firewalls
# Hardening Index: 65 (em 100)
# Instalar e usar chkrootkit (detecta rootkits comuns)
yay -S chkrootkit
sudo chkrootkit
# Verificar integridade de arquivos de sistema com AIDE
sudo pacman -S aide
sudo aide --init # Criar banco de dados inicial
sudo aide --check # Verificar mudanças (comparar com banco)Ferramentas de auditoria de segurança como Lynis apenas identificam problemas potenciais — elas não os corrigem automaticamente. Avalie cada sugestão no contexto do seu sistema antes de aplicar mudanças. Nem toda configuração "insegura" segundo o Lynis é realmente um risco no seu caso de uso.
Drivers NVIDIA Avançado: DKMS e Configuração
O driver NVIDIA proprietário no Arch Linux merece atenção especial. Diferente de distribuições como Ubuntu, que têm scripts de instalação automatizados, no Arch você precisa entender o processo para manter os drivers funcionando corretamente após atualizações de kernel. O módulo
nvidia-dkms recompila automaticamente o driver para cada novo kernel instalado.# Instalação recomendada para sistemas com atualização contínua
sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings
# Para kernels não-padrão (linux-zen, linux-lts, etc.)
sudo pacman -S nvidia-dkms # Funciona com qualquer kernel!
# Adicionar módulo ao initramfs (para DRM)
# Em /etc/mkinitcpio.conf, adicione à linha MODULES:
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
# Regenerar initramfs
sudo mkinitcpio -P
# Adicionar parâmetro ao kernel (para DRM kernel mode setting)
# Em /etc/default/grub, linha GRUB_CMDLINE_LINUX:
# nvidia-drm.modeset=1
sudo grub-mkconfig -o /boot/grub/grub.cfg
# Verificar instalação
nvidia-smi # Deve mostrar GPU e driver version
# Monitorar GPU em tempo real
nvidia-smi -l 1 # Atualiza a cada 1 segundoNunca misture drivers NVIDIA proprietários com o driver nouveau. Certifique-se de que nouveau está na blacklist: adicione
blacklist nouveau ao arquivo /etc/modprobe.d/blacklist.conf.Pipewire: Áudio Moderno para Gaming
O PipeWire substituiu PulseAudio e JACK como servidor de áudio padrão nas distribuições Linux modernas, incluindo Arch Linux. Para gaming, o PipeWire oferece latência ultra-baixa (comparável ao JACK), compatibilidade total com aplicações PulseAudio e JACK (via camadas de compatibilidade), e gerenciamento simplificado de dispositivos de áudio. A transição do PulseAudio para o PipeWire é recomendada para qualquer usuário que faz gaming.
# Instalar PipeWire completo com compatibilidade
sudo pacman -S pipewire pipewire-alsa pipewire-pulse \
pipewire-jack wireplumber
# Habilitar para o usuário
systemctl --user enable --now pipewire pipewire-pulse wireplumber
# Verificar status
systemctl --user status pipewire
pactl info | grep "Server Name" # Deve mostrar PipeWire
# Configurar latência baixa para gaming/áudio
# Crie ~/.config/pipewire/pipewire.conf.d/10-latency.conf:
context.properties = {
default.clock.rate = 48000
default.clock.quantum = 256 # Menor = menor latência
default.clock.min-quantum = 64
default.clock.max-quantum = 8192
}
# Instalar interface gráfica para gerenciar áudio
sudo pacman -S qpwgraph # Gráfico de conexões PipeWire
sudo pacman -S pavucontrol # Controle de volume (funciona com PipeWire)Otimização de Gaming: Configuração Completa
A otimização completa para gaming no Arch Linux é uma combinação sinérgica de todos os componentes: drivers corretos, camadas de compatibilidade bem configuradas, ferramentas de lançamento otimizadas, e um sistema operacional ajustado. Nenhum componente sozinho faz a diferença — é a soma de todos que transforma o Arch Linux em uma plataforma gaming de elite.
Configuração Final das Opções de Lançamento Steam
Chegou o momento de juntar tudo que aprendemos em uma configuração real, completa e otimizada para as opções de lançamento do Steam. Esta é a linha que maximiza performance, oferece diagnóstico em tempo real e minimiza problemas de compatibilidade para a grande maioria dos jogos.
# Opções de lançamento completas e comentadas para Steam:
# (Clique direito no jogo → Propriedades → Opções de Lançamento)
# Configuração MÁXIMA (para diagnóstico inicial):
MANGOHUD=1 DXVK_ASYNC=1 DXVK_STATE_CACHE=1 \
PROTON_USE_DXVK=1 gamemoderun %command%
# Configuração PADRÃO (para uso diário):
DXVK_ASYNC=1 gamemoderun %command%
# Se o jogo tiver problemas com esync:
PROTON_NO_ESYNC=1 DXVK_ASYNC=1 gamemoderun %command%
# Para jogos DX12 (adiciona VKD3D-Proton):
PROTON_USE_VKD3D=1 DXVK_ASYNC=1 gamemoderun %command%
# Configuração para streaming com OBS:
OBS_VKCAPTURE=1 MANGOHUD=1 gamemoderun %command%
# Para debugging de jogos que não iniciam:
PROTON_LOG=1 MANGOHUD=1 gamemoderun %command%
# Depois: cat ~/steam-proton-APPID.log | grep -i errorDica de ouro: comece sempre com a configuração padrão mínima. Só adicione variáveis quando necessário. Mais variáveis não significa necessariamente mais performance — algumas podem interferir com outras.
Pacotes AUR Essenciais para Gaming e Produtividade
1
Gaming
protonup-qt, mangohud, gamemode, heroic-games-launcher-bin, bottles, lutris, retroarch-assets-xmb
2
Ferramentas
chezmoi, yadm, tealdeer, bat, ripgrep, fd, dust, procs, zoxide, starship
3
Monitoramento
nvtop, glances, netdata, btop, iotop-c, bandwidth-monitor
4
Segurança
lynis, chkrootkit, aide, ufw, bitwarden-bin, keepassxc
# Instalação em lote de ferramentas modernas de terminal
yay -S bat ripgrep fd dust procs zoxide starship \
tealdeer bottom chezmoi
# Configurar aliases modernos (adicione ao ~/.bashrc ou ~/.zshrc)
alias ls='eza --icons'
alias cat='bat'
alias find='fd'
alias grep='rg'
alias top='btop'
alias du='dust'
alias ps='procs'
# Instalar eza (ls moderno com ícones)
sudo pacman -S ezaKernel Zen e Kernels Alternativos para Gaming
O Arch Linux oferece facilidade única para usar kernels alternativos além do kernel padrão. Para gaming, o linux-zen é frequentemente recomendado — ele inclui patches de otimização para desktops interativos, como o patchset MuQSS/EEVDF que melhora a responsividade em workloads de desktop, e o patch futex2 que melhora o desempenho do esync/fsync usado pelo Proton.
# Instalar kernel Zen (mantendo o padrão como fallback)
sudo pacman -S linux-zen linux-zen-headers
# Se usar NVIDIA com DKMS:
sudo pacman -S nvidia-dkms # Compila automaticamente para o zen
# Atualizar GRUB para incluir o novo kernel
sudo grub-mkconfig -o /boot/grub/grub.cfg
# Reiniciar e selecionar linux-zen no menu GRUB
# (ou configurar como padrão)
# Para fazer linux-zen o padrão no GRUB:
# Em /etc/default/grub, defina:
# GRUB_DEFAULT="Advanced options for Arch Linux>Arch Linux, with Linux linux-zen"
# Verificar qual kernel está em uso
uname -r # Deve mostrar X.X.X-zen1-1-zenlinux (padrão)
Kernel vanilla Arch. Estável, atualizado. Base para tudo. Recomendado manter como fallback.
linux-zen
Patches para desktop. Melhor responsividade, ótimo para gaming. Escolha principal recomendada.
linux-lts
Long Term Support. Máxima estabilidade. Ideal para servidores ou sistemas críticos.
linux-hardened
Foco em segurança. Patches de hardening. Performance levemente reduzida.
Flatpak e Sandboxing para Aplicações Gaming
O Flatpak é um sistema de distribuição de aplicações que funciona em qualquer distribuição Linux, incluindo Arch. Para gaming e aplicações de terceiros, o Flatpak oferece sandboxing (isolamento de segurança) e versões atualizadas de aplicações independentemente dos pacotes de sistema. O repositório Flathub é o maior repositório de aplicações Flatpak e contém a maioria das ferramentas gaming.
# Instalar Flatpak
sudo pacman -S flatpak
# Adicionar repositório Flathub
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
# Instalar aplicações gaming populares via Flatpak
flatpak install flathub com.heroicgameslauncher.hgl # Heroic
flatpak install flathub com.usebottles.bottles # Bottles
flatpak install flathub net.lutris.Lutris # Lutris
flatpak install flathub com.obsproject.Studio # OBS
# Gerenciar permissões de Flatpak
sudo pacman -S flatseal # GUI para gerenciar permissões
# Listar aplicações instaladas
flatpak list
# Atualizar todos os Flatpaks
flatpak updateFlatpaks de gaming frequentemente têm melhor compatibilidade com jogos específicos porque empacotam suas próprias versões de bibliotecas. O Bottles e o Heroic via Flatpak, por exemplo, têm acesso a versões mais recentes do Proton-GE que podem estar menos disponíveis nos pacotes nativos do Arch.
Configuração de Display para Gaming: Resolução e Taxa de Atualização
Configurar corretamente a resolução e taxa de atualização do monitor é fundamental para aproveitar ao máximo o hardware de gaming. No Arch Linux com Wayland ou X11, há diferentes ferramentas para cada caso.
# Para X11: configurar via xrandr
xrandr # Listar modos disponíveis
xrandr --output DP-1 --mode 2560x1440 --rate 144 # 1440p 144Hz
xrandr --output DP-1 --primary # Definir monitor primário
# Para criar modo customizado não listado:
cvt 2560 1440 144 # Gera modeline
# Usar output do cvt com xrandr --newmode e --addmode
# Para Wayland (KDE Plasma):
kscreen-doctor output.DP-1.mode.2560x1440@144
# Para Wayland (GNOME):
# Configurações → Exibições → Configurar na interface
# Verificar taxa atual
cat /sys/class/drm/*/modes | head -5
# Variable Refresh Rate (FreeSync/G-Sync)
# Ativar no arquivo de configuração do Xorg:
# /etc/X11/xorg.conf.d/20-amdgpu.conf (para AMD):
Section "Device"
Identifier "AMD"
Driver "amdgpu"
Option "TearFree" "true"
Option "VariableRefresh" "true"
EndSectionResolução de Problemas Comuns de Gaming
Tela Preta ao Iniciar
1. Verifique se lib32-vulkan-icd-loader e os pacotes lib32 da GPU estão instalados. 2. Tente
PROTON_USE_DXVK=1 %command%. 3. Ative PROTON_LOG=1 e leia o log.Stuttering / Travamentos
1. Ative
DXVK_ASYNC=1 para compilação assíncrona de shaders. 2. Use GameMode: gamemoderun %command%. 3. Verifique se há shader pre-compilation pendente no Steam.Sem Áudio no Jogo
1. Instale
pipewire-pulse se não tiver. 2. Tente winetricks xact no prefixe do jogo. 3. Verifique se o dispositivo de saída padrão está correto no pavucontrol.Controle Não Reconhecido
1. Instale
xpadneo-dkms para Xbox Bluetooth. 2. Tente SDL_GAMECONTROLLERCONFIG customizado. 3. Verifique permissões udev para o dispositivo.ProtonDB e Recursos da Comunidade
A comunidade Linux gaming é extraordinariamente ativa e colaborativa. Saber onde buscar informação e como contribuir de volta é parte fundamental da cultura. O ProtonDB (protondb.com) é o recurso mais valioso: é um banco de dados comunitário onde usuários reportam se cada jogo funciona no Linux com Proton, com qual versão, quais variáveis de ambiente foram necessárias, e qualquer workaround descoberto.
🌐 ProtonDB
Relatórios de compatibilidade de jogos Steam no Linux. Antes de comprar qualquer jogo, verifique aqui. protondb.com
🛡️ Are We Anti-Cheat Yet?
Status de compatibilidade de sistemas anti-cheat com Linux. areweanticheatyet.com
🐧 r/linux_gaming
Comunidade Reddit ativa com notícias, dicas, e suporte para gaming no Linux.
📖 ArchWiki
A wiki mais completa do Linux. Referência definitiva para qualquer configuração no Arch. wiki.archlinux.org
Além desses recursos, o GamingOnLinux (gamingonlinux.com) é um portal de notícias dedicado ao gaming no Linux, cobrindo lançamentos, patches e eventos relevantes. O Boiling Steam publica análises aprofundadas e estatísticas de compatibilidade do Steam.
Script de Setup Completo: Arch Linux Gaming
Reunindo tudo que aprendemos neste volume, criamos um script de setup completo que configura um ambiente de gaming otimizado no Arch Linux do zero. Este script é idempotente — pode ser executado múltiplas vezes com segurança — e cobre todos os componentes essenciais discutidos ao longo do volume.
#!/bin/bash
# gaming_setup.sh - Configuração completa de gaming no Arch Linux
set -euo pipefail
CORES='\033[0;32m'
AMARELO='\033[1;33m'
SEM_COR='\033[0m'
info() { echo -e "${CORES}[INFO]${SEM_COR} $*"; }
aviso() { echo -e "${AMARELO}[AVISO]${SEM_COR} $*"; }
# 1. Ativar multilib (necessário para lib32)
info "Ativando repositório multilib..."
if ! grep -q "^\[multilib\]" /etc/pacman.conf; then
sudo sed -i '/^#\[multilib\]/,/^#Include/{s/^#//}' /etc/pacman.conf
sudo pacman -Sy
fi
# 2. Detectar GPU e instalar drivers
info "Detectando GPU..."
if lspci | grep -qi nvidia; then
info "NVIDIA detectada - instalando drivers proprietários"
sudo pacman -S --needed nvidia-dkms nvidia-utils \
lib32-nvidia-utils nvidia-settings
elif lspci | grep -qi "amd\|radeon"; then
info "AMD detectada - instalando drivers mesa/vulkan"
sudo pacman -S --needed mesa lib32-mesa vulkan-radeon \
lib32-vulkan-radeon
fi
sudo pacman -S --needed vulkan-icd-loader lib32-vulkan-icd-loader
# 3. Instalar Steam e ferramentas gaming
info "Instalando Steam e ferramentas de gaming..."
sudo pacman -S --needed steam gamemode lib32-gamemode \
mangohud lib32-mangohud wine wine-mono wine-gecko \
lutris retroarch
# 4. Instalar PipeWire completo
info "Configurando PipeWire..."
sudo pacman -S --needed pipewire pipewire-alsa \
pipewire-pulse pipewire-jack wireplumber
systemctl --user enable --now pipewire pipewire-pulse wireplumber
# 5. Instalar ferramentas AUR essenciais
if command -v yay &>/dev/null; then
info "Instalando pacotes AUR..."
yay -S --needed protonup-qt heroic-games-launcher-bin \
bottles nvtop obs-vkcapture
fi
# 6. Configurar swappiness e ZRAM
info "Otimizando memória..."
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-gaming.conf
sudo sysctl --system
info "=== Setup de gaming concluído! Reinicie o sistema. ==="Encerramento
Resumo do Volume 11: O que Você Dominou
Ao completar este volume, você passou por uma jornada que vai muito além do básico. Você aprendeu a montar um ambiente de gaming completo e otimizado, entendeu as camadas de compatibilidade que fazem o magic do Linux gaming funcionar, configurou automação real com ferramentas profissionais, e adquiriu as habilidades de troubleshooting que separam usuários avançados de iniciantes. O Arch Linux, nas suas mãos, é agora uma ferramenta poderosa e totalmente sob seu controle.
Referência Rápida: Comandos Mais Importantes do Volume 11
Gaming
gamemoderun %command%
MANGOHUD=1 %command%
DXVK_ASYNC=1 %command%
PROTON_LOG=1 %command%
protonup-qt
yay -S heroic-games-launcher-bin
vulkaninfo --summaryAutomação
crontab -e
crontab -l
systemctl --user list-timers
systemd-analyze calendar "expr"
chezmoi apply
chezmoi add ~/.bashrc
ansible-playbook -i inv play.ymlMonitoramento
btop
nvtop
sudo iotop
glances
journalctl -b -p err
journalctl -u servico -f
dmesg -T | grep errorTroubleshooting e Recuperação
arch-chroot /mnt
grub-install --target=x86_64-efi ...
grub-mkconfig -o /boot/grub/grub.cfg
mkinitcpio -P
coredumpctl list
sudo testdisk /dev/sda
sudo photorec /dev/sda
fsck -y /dev/sdaXSalve esta referência rápida! Esses são os comandos que você usará com mais frequência no seu dia a dia com Arch Linux após dominar os conceitos deste volume. Com a prática, eles se tornarão reflexos automáticos.
O Caminho Continua
Você não apenas usa o Arch Linux. Você o domina.
Este Volume 11 marca um ponto de virada na sua jornada com o Arch Linux. Você agora possui conhecimentos que a grande maioria dos usuários Linux — mesmo os experientes — nunca se aprofundou. Gaming com performance de elite, automação inteligente que poupa horas de trabalho manual, monitoramento profissional que detecta problemas antes que se tornem crises, e habilidades de recuperação que salvam sistemas quando tudo parece perdido.
A série definitiva de Arch Linux em português brasileiro continua. Cada volume constrói sobre o anterior, aprofundando o conhecimento e expandindo as fronteiras do que você consegue fazer com seu sistema. O Arch Linux é uma filosofia tanto quanto uma distribuição — a filosofia de entender seu sistema, de ter controle total, de nunca aceitar "funciona mas não sei por quê" como resposta suficiente.
Continue Aprendendo
A ArchWiki é inesgotável. Cada página leva a três outras. Explore, experimente, quebre e conserte — é assim que o verdadeiro aprendizado acontece no Linux.
Contribua com a Comunidade
Reporte bugs, escreva relatórios no ProtonDB, ajude no fórum do Arch, contribua com o AUR. A comunidade que te ensinou precisa da sua experiência acumulada.
Próximo Volume
Containers com Podman e Docker, Kubernetes pessoal, servidores em casa, VPN com WireGuard, e muito mais. A jornada no Arch Linux não tem fim — e isso é exatamente o que a torna fascinante.
"The more you know, the more you realize you don't know. And in the Arch Linux world, that's not a source of anxiety — it's an infinite source of excitement."
Gamma
a187838077.cdn.optimizely.com is blocked
This page has been blocked by an extension
- Try disabling your extensions.
ERR_BLOCKED_BY_CLIENT
This page has been blocked by an extension
Start presenting