Arch Linux (em dual boot)

September 7, 2020   

Como meu trabalho de consultoria depende muito de ferramentas da Microsoft como o Office e o Power BI, tenho usado primariamente o Windows como sistema operacional.

Ainda programo bastante e, para minha surpresa, desenvolver no Windows tem sido muito bom. Quando preciso executar algo dependente do Linux como o Airflow e o Redmine, posso usar WSL e Docker.

Um dos problemas em virtualizar o Linux é a perda de performance. Por esse motivo separei uns 50GB para instalar o Arch em dual boot no meu notebook.

Escrevi no Twitter que estava instalando o Arch e me sugeriram atualizar meu guia antigo, pois muita coisa mudou em 8 anos. Então resolvi quebrar o hiato de mais de 3 anos deste blog para documentar meu novo processo de instalação.

Quando fiz meu post de 2012, a wiki oficial não estava atualizada. Hoje em dia ela está muito completa e eu recomendo segui-la para possíveis atualizações e mais detalhes.

Como nos posts anteriores, deixo claro que essas são as configurações que escolhi para meu computador (um Dell Latitude 3480). Quase tudo foi configurado por linha de comando, portanto vou apenas listar os comandos. Detalhes sobre os comandos podem ser encontrados pesquisando na internet e na wiki oficial. Se tiver alguma dúvida ou sugestão, fique à vontade para deixar um comentário ou me mandar uma DM no Twitter.

Particionamento do disco

Eu instalei o Windows primeiro e, durante a instalação, particionei o SSD de 240GB da seguinte forma:

  • 529 MB: Windows Recovery
  • 100 MB: EFI
  • 120 GB: Windows
  • 50 GB: Arch Linux
  • Restante: Partição NTFS criptografada com Veracrypt para acessar tanto do Linux quanto do Windows

Eu não criei uma partição para Swap. Se algum dia eu precisar de swap, poderei criar um swap file. Também deixei o /, o /home e o /var na mesma partição. O /boot será a partição EFI de 100 MB.

USB de instalação

Baixei a imagem ISO por BitTorrent e criei o USB bootável usando as opções default do Rufus Portable. Reinicei o computador e fiquei apertando F12 até aparecer a lista com a opção de boot pelo pendrive. Ao selecionar a opção de instalar o Arch, apareceu uma mensagem de esperando um disco com LABEL=ARCH202008. Eu simplesmente reconectei o pendrive à porta USB e o sistema carregou corretamente.

Layout do teclado

Ao cair no terminal, o primeiro passo é configurar o teclado. Como uso um teclado brasileiro, executei o seguinte comando:

# loadkeys br-abnt2

Outras opções podem ser encontradas em ls /usr/share/kbd/keymaps/**/*.map.gz.

Atualização do relógio do sistema

# timedatectl set-ntp true

O padrão do Linux é deixar o hardware clock em UTC, mas o padrão do Windows é usar o horário local. Prefiro deixar em UTC e configurar o Windows pelo Regedit.

Criptografia do disco

# lsblk                 # Para descobrir a partição. /dev/sda5 no meu caso
# cryptsetup -v luksFormat /dev/sda5

Eu achei as configurações padrão OK. Mais opções podem ser encontradas na wiki.

Formatação da partição raíz

# cryptsetup luksOpen /dev/sda5 arch
# mkfs.ext4 -L arch /dev/mapper/arch

Montagem das partições

# mount /dev/mapper/arch /mnt
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot

Rede Wifi

# iwctl --passphrase MINHA_SENHA station wlan0 connect MEU_SSID

Redes cabeadas devem funcionar assim que ligar o cabo. Se ela não estiver pegando um IP automaticamente, basta rodar um systemctl start dhcpcd@enp2s0. O nome da interface pode ser obitido com o comando ip link.

Mirrorlist

O Pacman lê o arquivo /etc/pacman.d/mirrorlist para definir de quais mirrors baixar os pacotes. É bom deixar os mais atualizados e mais rápidos no topo para os downloads não demorarem muito.

O novo instalador do Arch deve fazer isso automaticamente usando o Reflector assim que a conexão com a internet for detectada. Apenas verifique se está tudo OK. Como estou em São Paulo, os mirrors da UFSCar e UFPR ficaram no topo.

Instalação dos principais pacotes

Neste passo eu instalo o sistema base e todos os pacotes que precisarei, como ferramentas de rede, editor de texto, páginas de manual, Xorg e PulseAudio.

# pacstrap /mnt \
    base{,-devel} \
    linux{,-firmware} \

    intel-ucode \

    iwd \
    dhcpcd \
    iputils \

    zsh \
    go \
    git \
    nvim \
    python{,-pip,-pynvim} \

    man-db \
    man-pages \
    texinfo \

    xorg-server \
    xorg-xinit \
    xf86-video-intel \
    xf86-input-synaptics \

    alsa-utils \
    pulseaudio{,-alsa,-bluetooth} \
    pavucontrol

Fstab

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

Chroot

# arch-chroot /mnt

Timezone

# ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
# hwclock --systohc

Localização

Eu uso o sistema em inglês, mas também habilito o pt_BR.

# sed -i -e 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
# sed -i -e 's/#pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /etc/locale.gen
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf

Virtual Console

Configura o layout do teclado e a fonte.

# echo -e "KEYMAP=br-abnt2\nFONT=latarcyrheb-sun16" > /etc/vconsole.conf

Configuração de rede

Adiciona o nome do computador no /etc/hosts e também bloqueia alguns sites maliciosos e de propagandas.

# echo "nome_do_computador" > /etc/hostname 
# curl --output /etc/hosts --url "https://someonewhocares.org/hosts/zero/hosts"
# echo -e "127.0.1.1\tnome_do_computador.localdomain\tnome_do_computador" >> /etc/hosts

Initramfs

Adicionei encrypt, pois a partição do sistema é criptografada.

# nvim /etc/mkinitcpio.conf
  HOOKS=(base udev autodetect modconf block encrypt filesystems keyboard keymap consolefont fsck)

# mkinitcpio -p linux

Pacman

Adiciona o repositório multilib, colore o pacman e adiciona a animação do Pac-Man.

# sed -i -e '/^#\[multilib\]$/,+1s/#//' /etc/pacman.conf
# sed -i -e '/# Misc options/a ILoveCandy' /etc/pacman.conf
# sed -i -e 's/^# Color/Color/' /etc/pacman.conf

Senha do root

# passwd

DNS e rede wifi

Eu uso o systemd-resolved.

# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Estou usando o iwd para conectar ao wifi. É preciso configurá-lo para funcionar com o systemd-resolved.

$ nvim /etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true
[Network]
NameResolvingService=systemd

A rede pode ser iniciada ao ligar o computador:

# systemctl enable systemd-resolved iwd

Usuários

# useradd -m -g users -G wheel,storage,power,video,audio,rfkill -s /bin/zsh julio
# passwd julio
# EDITOR=nvim visudo
Descomente a linha `%wheel ALL=(ALL) ALL`

Bootloader

Estou usando o systemd-boot. Como meu processador é Intel, também carrego seu microcode.

# bootctl install

# nvim /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options cryptdevice=UUID=0a1b2c3d-...-4e5f6g:arch root=/dev/mapper/arch rootfstype=ext4 add_efi_memmap

O UUID da partição criptografada (/dev/sda5) pode ser visto executando o comando lsblk -o +UUID.

Com o bootloader configurado, já podemos reiniciar o computador. Se tudo der certo, aparecerá um menu para escolher o sistema operacional. O Arch iniciará na tela de login (no terminal, pois não uso display managers). Entre com o usuário criado na etapa anterior.

Dotfiles

Meus dotfiles estão disponíveis no Github. Eu clono o repositório e crio os symlinks apropriados. Quando eu tiver tempo, vou usar o rcm, chezmoi ou o GNU Stow para automatizar isso.

Para o AwesomeWM, eu gosto das configurações do Gerome Matilla. Elas são um pouco bloated, mas os layouts são bem bonitos e possuem recursos interessantes.

~$ git clone https://github.com/jbsilva/dotfiles.git
~$ git clone https://github.com/manilarome/the-glorious-dotfiles.git
~$ ln -s dotfiles/.config ~/.config
~$ ln -s dotfiles/.zsh ~/.zsh
~$ ln -s dotfiles/.zshrc ~/.zshrc
~$ ln -s dotfiles/.gitconfig ~/.gitconfig
~$ ln -s dotfiles/.p10k_console.zsh ~/.p10k_console.zsh
~$ ln -s dotfiles/.p10k.zsh ~/.p10k.zsh
~$ ln -s dotfiles/.xinitrc ~/.xinitrc

Shell

Existem muitas opções de shell de linha de comando, como Bash, Zsh, KornShell, e Fish. Para listar os shells instalados execute o comando chsh -l.

Eu uso o Zsh há anos. Ele é POSIX compliant e fica extremamente amigável com alguns plugins (PowerLevel10k, etc.), que meu dotfile instala e configura automaticamente com o zplug.

Eu criei meu usuário com o parâmetro -s /bin/zsh, mas é possível trocar o shell padrão com o comando chsh -s full-path-to-shell.

Yay

O Yay é um AUR helper/Pacman wrapper escrito em Go que ajuda bastante na instalação de pacotes.

$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -sri

Alguns pacotes extras que eu instalo, incluindo o AwesomeWM, o terminal Kitty, o editor de imagens Gimp, o VS Code e diversos utilitários:

$ yay -S \
    awesome-git \
    aws-cli \
    blueman \
    bluez \
    bluez-utils \
    code \
    copyq \
    ctags \
    feh \
    ffmpeg \
    gimp \
    gnome-keyring \
    htop \
    imagemagick \
    kitty \
    light-git \
    macchanger \
    maim \
    neofetch \
    npm \
    ntfs-3g \
    p7zip \
    picom-git \
    polkit \
    redshift \
    renameutils \
    rofi-git \
    simplescreenrecorder \
    telegram-desktop \
    thunderbird \
    unrar \
    unzip \
    veracrypt \
    vlc \
    xclip

XDG user directories

Instale o xdg-user-dirs para criar as pastas.

$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update --force

Gerenciamento de energia

Existem muitas ferramentas para gerenciamento de energia. Eu uso as seguintes:

$ sudo pacman -S tlp acpid acpi_call upower xfce4-power-manager
$ sudo systemctl enable tlp.service
$ sudo systemctl enable acpid.service

Firewall

$ sudo pacman -S ufw
$ sudo systemctl enable ufw.service

Fontes

Instale as fontes.

$ yay -S \
    inter-font \
    nerd-fonts-fantasque-sans-mono \
    noto-fonts \
    noto-fonts-cjk \
    noto-fonts-emoji \
    otf-san-francisco \
    otf-sfmono-patched \
    ttf-dejavu \
    ttf-liberation \
    ttf-meslo-nerd-font-powerlevel10k

Se quiser definir fontes específicas a serem usadas, edite o arquivo $XDG_CONFIG_HOME/fontconfig/fonts.conf.



comments powered by Disqus