[TUTO] Instalação do arch UEFI com BTRFS e snapshots 15-09-2021

TUTO - PRIMEIRA REVISÃO
INSTALAÇÃO COM SNAPPER

Opção Secure Boot da bios

Secure boot
A imagem já vem pronta para funcionar o secutrity boot.
É necessário modificar a bios
LINK: http://www.rodsbooks.com/efi-bootloader … eboot.html 23

Para archiso veja no link abaixo para mais informação.
LINK: https://wiki.archlinux.org/index.php/Se … ot_archiso 15

Apoś iniciar a boot do cd.
1- Configure o layout do teclado ( padrão US )

loadkeys br-abnt2

Ou você pode usar o novo padrão:

localectl set-x11-keymap br abnt2

Opcional: Caso tenha problema com a fonte.

setfont lat0-16

Opcional: Por padrão, a lingua setada como padrão é o Inglês. Se quiser modificar:
Edite o arquivo locale.gen e descomente o que for pt_BR.
nano /etc/locale.gen

pt_BR.UTF-8 UTF-8

Depois execute os comandos

locale-gen
export LANG=pt_BR.UTF-8 ou LANG=pt_BR.UTF-8

1.1- Atualize o relógio do sistema
Use timedatectl para garantir que o relógio do sistema esteja certo:

timedatectl set-ntp true

2- Configure a rede

Teste a conexão de rede

ping -c 3 google.com

DHCP
Conexão de rede com fio e acesso a um servidor DHCP (ex. roteador) (Está opção é iniciada automaticamente)
dhcpcd

WI-FI

Entre no iwctl

# iwctl

Vamos listar os dispositivos disponíveis:

[iwd]# device list

Para escanear as redes:

[iwd]# station device scan

Para listar todas as redes disponíveis:

[iwd]# station device get-networks

Finalmente, conecte-se a rede ao seu SSID:

[iwd]# station device connect SSID

Sair do iwd

[iwd]# exit

WIRED
Atenção: Antes de iniciar a configuração é necessário desativar o dhcp

systemctl stop dhcpcd.service

ou

ip addr

ex.

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff
wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff

  • Ative a interface de rede, por exemplo, para enp2s0f0:
ip link set enp2s0f0 up

Adicionando endereços
ip addr add <endereço ip>/ dev

ip addr add 192.168.1.2/24 dev enp2s0f0

Adicionando o gateway
ip route add default via

ip route add default via 192.168.1.1

Edite seu DNS (dns google):
nano /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

3- Prepare o disco rígido
Se já estiver particionado. Você pode utilizar o lsblk.

lsblk -f /dev/sda (este é equivalente a -o NAME,FSTYPE,LABEL,MOUNTPOINT)

Ferramentas para particionar os discos
parted: GPT and MBR
fdisk, cfdisk, sfdisk: GPT and MBR
gdisk, cgdisk, sgdisk: GPT
Recomendo utilizar uma dessas ferramentas: gdisk e cgdisk
Pode utilizar também o fdisk e cfdisk

CFDISK e CGDISK talvez sejam mais fáceis de configurar.

No modo UEFI, temos que criar uma partição boot ESP (EFI System Partition), com a formatação FAT32 (FAT32 – Wikipédia, a enciclopédia livre 1).

Utilizando o cgdisk

Para listar as partições

cgdisk /dev/sdx

4- Configure dispositos de blocos, sistema de arquivo e ponto de montagem

  • Para criar o sistema de arquivo use mkfs.
  • Como mkfs é só um sistema unificado de interface de diferentes scripts.
    Scripts:
    e2fsprogs contém: mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev
    dosfstools contém suporte FAT16 e FAT32: mkfs.vfat, mkfs.msdos
    ntfsprogs contém: mkfs.ntfs
    jfsutils contém: mkfs.jfs
    xfsprogs contém: mkfs.xfs
    reiserfsprogs contém: mkfs.reiserfs
    btrfs-progs contém: mkfs.btrfs
    Adicione o -L para criar a label da partição

Uma vez que as partições foram criadas, cada um deve ser formatado com um sistema de arquivo adequado, exceto para partições swap.

mkfs.btrfs /dev/sda2
mkfs.fat -F32 -n BOOT /dev/sda1

Formate e ative a partição swap: (Importante para já está habilitada quando for gerar o fstab com o script genfstab)
Adicione o -L para criar a label da partição.
Ex.

mkswap -L swap /dev/sda3 && swapon /dev/sda3

Para verificar se a partição swap está funcionando, utilize o comando free ou swapon

swapon -s
free -h

5- Monte as partições
Montar a partição root na pasta /mnt.

mount /dev/sda2 /mnt

Crie os subvolumes. Há distros que criam volumes de particões temporárias como, tmp e srv. Como o Arch por padão usa o tmpfs, não vou adicionar no exemplo, mas fica ao seu critério usar ou não. Aqui estou utilizando tudo numa partição só. Por isso vou adicionar home e var. Mas caso seja criado com outro sistema de arquivo, não adicione. E desmontamos no fim.

btrfs su cr /mnt/@
btrfs su cr /mnt/@home
btrfs su cr /mnt/@var
btrfs su cr /mnt/@opt
umount /mnt

@ - Este é o subvolume raiz principal no topo do qual todos os subvolumes serão montados.
@home - Este é o diretório inicial. Isso consiste na maioria dos seus dados, incluindo área de trabalho e downloads.
@var - Contém logs, temp. arquivos, caches, jogos, etc.
@opt - Contém produtos de terceiros
@temp - Contém certos arquivos temperórios e caches
@ .snapshots - Diretório para armazenar instantâneos para o pacote snapper (pode excluir isso se você planeja usar Timeshift) - Adicionado depois da instalação

Agora vamos montar as particoẽs. Se está instalando no ssd, use a opção ssd.

Criamos as pastas prtimeiro

mount -o rw,relatime,ssd,[email protected]  /dev/sda2 /mnt
mkdir -p /mnt/{boot/efi,home,var,opt}
mount -o rw,relatime,ssd,[email protected]  /dev/sda2 /mnt/home
mount -o rw,relatime,ssd,[email protected]  /dev/sda2 /mnt/var
mount -o rw,relatime,ssd,[email protected]  /dev/sda2 /mnt/opt

Atenção:
Se você pretende usar o grub. E quer utilizar a instalação automática no disco (grub-install /dev/sda)

mount /dev/sda1 /mnt/boot/efi

6- Selecione o espelho (mirror) para a instalação

Primeiro ative a função downloads paralelos do pacman. Para isso descomento no arquivo /etc/pacman.conf o ParallelDownloads.

nano  /etc/pacman.conf

pacman

A imagem do Arch já vem com o pacote reflector, que serve para buscar os melhores espelhos (mirros) para você baixar os pacotes.Utilizaremos o comando com as seguintes opções

-c para falar o pais
-f busca um número de espelhos mais rápidos
–save aonde salvar o arquivo mirrorlist

reflector -c brazil -f 5 --save /etc/pacman.d/mirrorlist

7- Instale o sistema base
Nota: Um sistema mínimo exige o pacote do grupo base, também a instalação do grupo de pacote base-devel neste momento é altamente recomendado.

pacstrap /mnt base base-devel linux linux-firmaware linux-headers vim nano man-db pacman-contrib btrfs-progs sudo

8-Gerar o fstab
Gere o fstab com o script genfstab(se preferir adicione a opção -U (UUIDs) ou -L (labels), respectivamente).

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

Verifique com cat

cat /mnt/etc/fstab

Adicione a linha swap no fstab - (Só será necessário, caso não tenha montado e ativado a partição swap anteriormente )

/dev/sda3 none swap defaults 0 0

Opcional: Apenas a partição root(/) precisa de 1 no último campo. Todo o resto deve ser 2 ou 0. Além disso, data=ordered devem ser removidos. Esta opção será usada automaticamente. Você também pode adicionar a opção noatime.
nano /mnt/etc/fstab
Ex.Retirado do https://wiki.archlinux.org/index.php/Fs … efinitions 1

9- Chroot no sistema
Faremos um chroot dentro de nosso sistema recém-instalado.

arch-chroot /mnt

Nota: Se você esqueceu de instalar pacotes com o script pacstrap, pode instalá-los após o chroot com:

pacman -S 

10- Configure o sistema

Atualize a mirror. Normalmalmente um servidor bom é o https://mirror.osbeck.com/archlinux/$repo/os/$arch , ele é a opçào é -s se

-c para falar o pais
-f busca um número de espelhos mais rápidos
–save aonde salvar o arquivo mirrorlist

reflector -c br -c se -f 5 --save /etc/pacman.d/mirrorlist

E habilite o down;load paralelo no arquivo /etc/pacman.conf

pacman

Editar os arquivos usando nano
Info: Alguns atalhos para NANO
Ctrl+W - procurar por string. Ex. .br/
PageUp e PageDown - chave para subir e descer ( pode utilizar as setas ) .
Ctrl+K - para recortar. Você pode recortar todas as linhas de servidores do Brazil
Ctrl+U - para colar. Colar todas as linhas de servidores do Brazil no ínicio do arquivo.
Ctrl+X - para sair, se foi modificado, irá peguntar se quer salvar, responda y ou n.

[ LINGUA ]
nano /etc/locale.gen
Descomente

 pt_BR.UTF-8 UTF-8
 pt_BR ISO-8859-1

nano /etc/locale.conf
LANG=pt_BR.UTF-8

Execute o comando
locale-gen

export LANG=pt_BR.UTF-8 ou LANG=pt_BR.UTF-8

[ *TECLADO* ]

nano /etc/vconsole.conf

 KEYMAP=br-abnt2
 FONT=lat0-16
 FONT_MAP=

**[ *** **HORA * ]

Definindo uso horário e defindo hora

$ timedatectl list-timezones
$ timedatectl set-timezone America/Sao_Paulo
$ timedatectl set-timezone UTC

[ NOME DA MÁQUINA E HOSTS ]
nano /etc/hostname

myhostname

nano /etc/hosts
Adicione o hostname no arquivo hosts
Alguns programas utilizam o 127.0.1.1, por isso é recomendado adicionar

127.0.0.1 localhost
127.0.1.1 myhostname.localdomain myhostname`
 ::1 localhost

Verifique novamente o dns (dns google)
*nano /etc/

 nameserver 8.8.8.8
 nameserver 8.8.4.4
 search example.com

11- Kernel Módulos

  • Crie arquivos dentro da pasta com nomes dos programas ou tarefas dos módulos com extensão “.conf”.
  • Cada módulo é separado por linha

[ HARDWARE ]
Ex.

 /etc/modules-load.d/virtio-net.conf

#Load virtio-net.ko at boot

 virtio-net

#Não rodar o módulo pcspkr no boot

blacklist pcspkr

12- Crie um ambiente ramdisk inicial

mkinitcpio -p linux

13- Instale e configure o bootloader ( Gerenciador de Inicialização )

1- systemd-boot

A partição tem que estar GPT, e ter uma partição de sistema EFI (tipo gdisk EF00, formatado com FAT32) montada em / boot.

Instale o systemd-boot para a patição EFI:

 # bootctl install

E tambem é muito importante lembrar que se você optar pelo SystemD Boot é necessário criar os arquivos:

  • /boot/loader/loader.conf
  • /boot/loader/entries/arch.conf
  • Respectivamente com os seguintes conteúdos:
timeout 2
 default arch
 title Arch Linux
 linux /vmlinuz-linux
 initrd /initramfs-linux.img
 options root=/dev/sda2 rw

Onde:

/vmlinuz-linux e /initramfs-linux.img são relativos a partição /boot e na verdade estão em /boot/vmlinuz-linux e /boot/initramfs-linux.img

/dev/sda2 é a partição /

Mais informação sobre o system-boot
https://wiki.archlinux.org/index.php/Systemd-boot 3

2- Grub

Instale o grub

pacman -S grub

Instale o efibootmgr

pacman -S efibootmgr

Instale no disco rígido contendo a sua partição de boot. Instalação automática.

grub-install /dev/sda

Para verificar se o arquivo efi foi instalado na pasta grub ou arch

ls /boot/EFI/arch/

Deverá aparecer o arquivo o arquivo grubx64.efi

Atenção: Se você está instalando via virtualbox, terá que mudar o nome de pasta e arquivo porque o
virtualbox não salva a NVRAM.
Por exemplo:
Se o caminho do arquivo efi estiver assim:
/boot/EFI/arch/grubx64.efi

Atera o nome da pasta arch para BOOT e o nome do arquivo para bootx64.efi
Ficará assim:
/boot/EFI/BOOT/bootx64.efi

Crie o arquivo grub.cfg.

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

14- Definir a senha root

passwd

15- Opcional: Instalação da base da interface gráfica

Instale o xorg (Opcional xorg-server-utils e xorg-xinit [para o startx])

pacman -S xorg-server xorg-xinit

Você pode definir o layout do teclado no tty
/etc/X11/xorg.conf.d/10-keyboard.conf

Section “InputClass”
 Identifier “keyboard default”
 MatchIsKeyboard “yes”
 Option “XkbLayout” “br”
 Option “XkbVariant” “abnt2”
 EndSection

ou

/etc/X11/xorg.conf.d/10-evdev.conf
Adicione

 Option “XkbLayout” “br”
 Option “XkbVariant” “abnt2”

em

 Identifier “evdev keyboard catchall”
 Section “InputClass”
 Identifier “evdev keyboard catchall”
 MatchIsKeyboard “on”
 MatchDevicePath “/dev/input/event*”
 Driver “evdev”
 Option “XkbLayout” “br”
 Option “XkbVariant” “abnt2”
 EndSection

Instale o video padrão…ou use o video da intel ou nvidia, por exemplo

xf86-video-intel
nvidia

pacman -S xf86-video-vesa

Caso esteja instalando no virtualbox, use o driver xf86-video-fbdev

pacman -S xf86-video-fbdev

Configure o sudo , usa o editor vim

visudo

Caso queira usar o editor nano

EDITOR=nano visudo

Descomente a opção

## Uncomment to allow members of group wheel to execute any command`
 # %wheel ALL=(ALL) ALL
 %wheel ALL=(ALL) ALL

Crie o usuário
Opções do useradd
-d diretório_home : caminho completo do diretório home do usuário.
-m : Cria o diretório home fornecido pela opção “-d” com os arquivos e estrutura definidas na configuração de /etc/skell
-G grupos : lista de grupos separados por uma virgula
-g grupo padrão

useradd -m -g users -G wheel swatquest

Crie a senha - passwd usuário

passwd swatquest

16- Instalando ambiente gráfico

Instalando gnome

pacman -S gnome gnome-extra networkmanager
pacman -S unzip unace p7zip unrar

Configurando gerenciador de login

nano /etc/lightdm/lightdm.conf

E por fim, coloque para iniciar junto com sistema o serviço de rede e gerenciador de login

 systemctl enable NetworkManager gdm

Para finalizar, crie o arquivo .xinitrc no pasta do usuário na home e adicione

nano /home/usuário/.xinitrc
exec gnome-session

17- Sair do chroot

Saia do chroot, digite “exit”, ou +

e reboot

16- Configurando o snapper

Depois de inciar o sistema no terminal configure o snapper.

sudo pacman -S grub-btrfs snapper

Criar uma configuração snapper para root: Cria o .snapshots

snapper -c root create-config /

Verificar os subvolumes btrfs: veja os ids

btrfs sub list /

Pegue o id do snapshots, Exemplo: 269

lista-btrfs

E adicone no /etc/fstab

Configurando o snapshots (instantâneos).

Por padrào o snnaper permite:

  1. Máximo de 50% do espaço do sistema de arquivos raiz para instantâneos. (20 GB de sistema de arquivos raiz de 40 GB)
  2. Mínimo 2 e máximo 10 instantâneos normais.
  3. Mínimo 4 e máximo 10 instantâneos importantes.

Você pode reduzir com o seguinte cpomando:

snapper set-config SPACE_LIMIT=0.2 NUMBER_LIMIT=2-6 NUMBER_LIMIT_IMPORTANT=4
  1. Máximo de 20% do espaço do sistema de arquivos raiz para instantâneos. (8 GB de sistema de arquivos raiz de 40 GB)
  2. Mínimo 2 e máximo 6 instantâneos normais.
  3. 4 instantâneos importantes.

Habilite e inicie os timers
Atenção o snapper-boot irá criar um snapshot a cada boot. Habilite se quiser, ou em vez de habilitar, inicia apenas uma vez.

sudo systemctl enable snapper-boot.timer  snapper-cleanup.timer  snapper-timeline.timer 
sudo systemctl start snapper-boot.timer  snapper-cleanup.timer  snapper-timeline.timer 

Para habilitar no grub

systemctl enable grub-btrfs.path

Depois edite op grub

nano /etc/default/grub

Definia esta opção:

GRUB_DISABLE_RECOVERY=false

Ao concluir, gere novamente a list do grub.

grub-mkconfig -o /boot/grub/grub.cfg
8 curtidas

Bom tutorial. Nao entendi algumas coisas, como instalar o xfce4 instalando o gnome, ou a parte de desativar o dhcp. Mas eh bem completo para um BTRFS + btrfs.

Uma vantagem de tutoriais como esse eh que nao sao apenas para o arch. Instalei o Gentoo BTRFS com Luks e muitos passos sao control-c control-v da minha outra instalacao Arch BTRFS Luks.

E parabens pelo tutorial, sempre bom ter conteudo para quem esta explorando outras distros linux.

3 curtidas

Valeu.

Corrigido xfce para gnome. A base foi de um tutorial antigo meu que era instalando o xfce.

O dhcp é o default ou padrão da instalação. Tem gente que prefere adicionar IP fixo. Mas talvez tire esta parte

Depois vou acrescentar o snap-pac

2 curtidas

@Deleterium

Você sabe como é a configuração do snap-pac?

E o que seria este pre/post snapshots?

Eu cheguei a ler o manual, mas não entendi muito bem.

É necessário fazer uma configuração no comando pacman para instalações de pacotes?

Com relação específica ao pacman eu não tenho informações pois não uso ele.

Os snaps pre/post são na verdade apenas dois snapshots feitos próximos um do outro, onde o objetivo é pegar as alterações feitas nesse meio tempo. O uso mais comum é durante as atualizações, pois assim vc garante que tem um snapshot logo antes das alterações, e outro logo após. Caso somente faça um instantâneo depois da atualização ou apenas um diário, pode ser que alguma outra alteração seja perdida quando quiser reverter para o último instantâneo feito no dia anterior. Outra funcionalidade é para poder inspecionar as mudanças realizadas durante algum procedimento, tipo a auto-atualização de algum software, ou mesmo de uma limpeza que o próprio usuário esteja fazendo. Nesses casos os snapshots pre e post são feitos manualmente.

As distribuições comumente tem um pacote específico para fazer isso automativamente durante a instalação/atualização do sistema. Provavelmente o snap-pac deve ser isso, adicionando algumas regras que, durante a atualização, realizam os snapshots logo antes do comando e outro logo após o comando.

No Gentoo, não tem um pacote específico para isso. Porém eu acho uma idéia bem interessante e criei meu próprio script de atualização do sistema que, além de outras coisas, cria um instantâneo antes da atualização e um instantâneo após a finalização da atualização.

1 curtida