Skip to content

Instantly share code, notes, and snippets.

@leodutra
Last active July 21, 2022 03:48
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save leodutra/150884245938ddd97bcd58c42f3cd381 to your computer and use it in GitHub Desktop.
Save leodutra/150884245938ddd97bcd58c42f3cd381 to your computer and use it in GitHub Desktop.
Arch Install GPT + GRUB
# O live ISO do Arch é um CLI
# a instalação é iniciada como sudo automaticamente
# siga os passos...
# DEFINIR TECLADO ABNT2 PARA LIVE BOOT
loadkeys br-abnt2
# AUMENTAR FONTE DO TERMINAL DO LIVE BOOT
setfont lat4-19
# ALTERA LINGUA DE INSTALACAO
nano /etc/locale.gen
# descomentar en_US UTF-8 e ISO
# descomentar pt_BR UTF-8 e ISO
# ctrl+o, enter para salvar... ctrl+x para sair do nano
locale-gen
export LANG=pt_BR.UTF-8
# TESTA CONEXAO WIRED COM INTERNET
ping -c 3 8.8.8.8
# MOSTRAR DISCOS E PARTICOES
fdisk -l
# INSTRUCOES PARA FORMATAR DISCO EM GPT. Ver Arch Wiki para instruções sobre MBR.
# GPT requer particao de boot...
# gerenciar particoes é bem fácil com cfdisk (outras opcoes na wiki do Arch)
cfdisk /dev/sdx
# BIOS LEGACY ----------------
# criar partição de boot com no mínimo 2M, tipo BIOS LINUX / BOOT
# criar partição para swap (tipo "Linux swap") ideal do mesmo tamanho da RAM (ex: 8GB - recommended max 8GB)
# criar outras partições conforme desejo de uso (Linux filesystem, ext4)
# executar write
#
# exemplo de particionamento BIOS LEGACY:
# /dev/sdx
# L /dev/sdx1 2M bios boot
# L /dev/sdx2 8G linux swap
# L /dev/sdx3 64G linux filesystem (a formatar como ext4 para o "/")
# L /dev/sdx4 390G linux filesystem (a formatar como ext4 para a "/home")
# UEFI -----------------------
# criar partição de boot com no mínimo 512M (I use 2G), tipo EFI SYSTEM
# criar partição para swap (tipo "Linux swap") ideal do mesmo tamanho da RAM (ex: 8GB - recommended max 8GB)
# criar outras partições conforme desejo de uso (Linux filesystem, ext4)
# executar write
#
# exemplo de particionamento:
# /dev/sdx
# L /dev/sdx1 2G efi system
# L /dev/sdx2 8G linux swap
# L /dev/sdx3 64G linux filesystem (a formatar como ext4 para o "/")
# L /dev/sdx4 390G linux filesystem (a formatar como ext4 para a "/home")
# formatar particoes "Linux filesystem" (numeros ficticios, execute fdisk para rever os seus)
# nao formate a particao de boot para ext4 ou outra, o GRUB cuida disso
mkfs.ext4 /dev/sdx3
mkfs.ext4 /dev/sdx4
# Apenas UEFI: formatar efi system como FAT32
mkfs.fat -F32 /dev/sdx1
# SWAP (opcional, recomendado)
# formatar particao de swap e ligar
mkswap /dev/sdx2
swapon /dev/sdx2
# ver o layout do particionamento
lsblk /dev/sdx
# montar particoes para pacstrap e gerar fstab
mount /dev/sdx3 /mnt
# criar pasta home e montar particao
mkdir /mnt/home
mount /dev/sdx4 /mnt/home
# ----------------- opcional
# OTIMIZAR MIRRORS E DNS (melhora muito tempo de instalacao de pacotes)
# nao e obrigatorio mas recomendado
nano /etc/resolv.conf
# para utilizar o DNS do Google adicione "nameserver 8.8.8.8" antes de outros nameservers, sem aspas
# salve com ctrl+o, enter
nano /etc/pacman.d/mirrorlist
# ctrl+k para apagar mirrors que nao sejam brasileiros (sao mais ou menos 5 brasileiros)
# ctrl+o, enter para salvar
# saia do nano e caminhe para a pasta de mirrors
cd /etc/pacman.d/
# rankeie os mirrors brasileiros
# (exclua mirrors de paises longinquos. Quanto mais mirrors, mais demora o ranking)
rankmirrors mirrorlist
# walk de volta para a home (alias "~")
cd ~
# ------------------ fim-opcional
# INSTALAR SISTEMA BASE E BASE PARA FUNCOES ADICIONAIS
pacstrap /mnt base base-devel
# GERAR O FSTAB (descritor de particoes)
genfstab -U -p /mnt >> /mnt/etc/fstab
# verificar se fstab foi gerado conforme dados do "lsblk"
# a particao de boot fica com path "none" mesmo
cat /mnt/etc/fstab
# LOGAR NA INSTALACAO PARA DEFINIR INICIALIZACAO
arch-chroot /mnt
# agora, dentro da instalacao...
# ALTERAR LINGUA DA INSTALACAO... observando um comando a mais
nano /etc/locale.gen
# descomentar en_US UTF-8 e ISO
# descomentar pt_BR UTF-8 e ISO
# ctrl+o, enter para salvar... ctrl+x para sair do nano
locale-gen
# criar arquivo de configuracao de lingua
echo LANG=pt_BR.UTF-8 > /etc/locale.conf
export LANG=pt_BR.UTF-8
# ----------------- opcional
# OTIMIZAR MIRRORS E DNS (melhora muito tempo de instalacao de pacotes)
# nao e obrigatorio mas recomendado
nano /etc/resolv.conf
# para utilizar o DNS do Google adicione "nameserver 8.8.8.8" antes de outros nameservers, sem aspas
# salve com ctrl+o, enter
nano /etc/pacman.d/mirrorlist
# ctrl+k para apagar mirrors que nao sejam brasileiros (sao mais ou menos 5 brasileiros)
# ctrl+o, enter para salvar
# saia do nano e caminhe para a pasta de mirrors
cd /etc/pacman.d/
# rankeie os mirrors brasileiors (quanto mais mirrors, mais lento)
rankmirrors mirrorlist
# caminhe de volta para a home (alias "~")
cd ~
# ----- fim-opcional
# DEFINIR CONFIGS DE TECLADO PARA PERSISTIR ENTRE SESSOES
nano /etc/vconsole.conf
# KEYMAP="br-abnt2.map.gz"
# FONT=Lat2-Terminus16
# FONT_MAP=
# ctrl+o, enter, ctrl+x para salvar e sair do nano
# DEFINIR HORA E FUSO
# procurar fuso horario (existe fusos para o Brazil e Americas compativeis)
ls /usr/share/zoneinfo
# dou preferencia ao fuso de Sao Paulo
ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
# sincronizar o relogio de hardware com o sistema
hwclock --systohc --utc
# CONFIGURAR REDE PARA USUARIOS
# alguns tutoriais definem o servico de rede agora...
# essa rede serve apenas para o live boot e não para a instalação final
# eu prefiro usar o dhcpcd manualmente e depois instalar o NetworkManager
# que e compativel e habilita icones para o gnome 3
# ----- opcional (rede do live boot para instalacao de dependencias)
# WIRED/ ETHERNET
# execute ip link e veja qual sua rede ether
ip link
# normalmente e "eth0" (formato antigo) ou "enp3s0" (formato novo e meu caso)
systemctl enable dhcpcd@enp3s0.service
#
# WIRELESS
pacman -S wireless_tools wpa_supplicant wpa_actiond netcf dialog
systemctl enable net-auto-wireless.service
# ----- fim-opcional (rede para instalacao)
# HABILITAR REPOSITORIO MULTI ARQUITETURA (tipo o ia32 do Ubuntu)
nano /etc/pacman.conf
# descomente "[multilib]" e seus dados
# descomente "Color" para ter cores
# insira "ILoveCandy" depois de "Color" para ativar o loading do Pac-Man
# ctrl+x, yes, enter para salvar
# sincronizar multilib
pacman -Sy
# CRIAR SENHA DO ROOT (opcional, recomendado... nao esqueca essa senha)
passwd
# CRIAR USUARIO PESSOAL, substituindo "meulogin" pelo seu login desejado
useradd -m -g users -G wheel,storage,power -s /bin/bash meulogin
# ALTERAR SENHA DO USUARIO PESSOAL, substituindo "meulogin" pelo seu login desejado
passwd meulogin
# INSTALAR SUDO (MUITO IMPORTANTE)
pacman -S sudo
# editar as propriedades de sudo
EDITOR=nano visudo
# descomentar linha "%wheel ALL=(ALL) ALL"
# instala o Intel microcode para processadores Intel
pacman -S intel-ucode
# INSTALAR GRUB BIOS
# Existe a opção de instalar o GRUB BIOS ou UEFI.
# BIOS GRUB -------------------------------
# baixar e instalar o GRUB BIOS
pacman -S grub-bios
# target i386 e o padrao e serve para 64-bits tambem
# mais detalhes na wiki e google
# recorra a outros tutoriais para definir melhor este comando para arquiteturas especificas
# atencao para direcionar a instalacao para a raiz da unidade formatada no inicio do tutorial
# ja que seu pc pode ter diversas memorias secundarias (USB inclusive)
grub-install --target=i386-pc --recheck /dev/sdx
# UEFI GRUB
# antes de qualquer coisa, para UEFI, o GRUB requer uma particao EFI SYSTEM formatada como FAT32 e com ao menos 512M
# baixar e instalar o GRUB
pacman -S grub
# target x86_64 e o padrao e serve para 64-bits tambem
# mais detalhes na wiki e google
# recorra a outros tutoriais para definir melhor este comando para arquiteturas especificas
# atencao para direcionar a instalacao para a raiz da unidade formatada no inicio do tutorial
# ja que seu pc pode ter diversas memorias secundarias (USB inclusive)
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
# !!! nao sei exatamente o que a proxima linha faz, mas funciona :)
cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
# criar arquivo de configuracao do GRUB
grub-mkconfig -o /boot/grub/grub.cfg
# sair do arch-chroot
exit
# desmontar particoes
umount /mnt/home
umount /mnt
# reinicie e defina a unidade de instalacao como primeira opcao de boot, na sua BIOS
reboot
# o sistema devera bootar no terminal do arch ja instalado, sem gerenciador grafico
# REALIZE LOGIN NO SISTEMA OPERACIONAL INSTALADO
# ALTERE O HOSTNAME, substituindo meuhostname pelo nome desejado
sudo hostnamectl set-hostname meuhostname
# CONECTAR COM A INTERNET (caso nao tenha habilitado o dhcpcd ou wpa anteriormente)
# pode ser necessario usar sudo para o dhcpcd
dhcpcd
# ele demora alguns segundos (5 seg em media)
# teste a conexao
ping -c 3 8.8.8.8
# -------- Configurar AUR
# adicionar AUR ao pacman
sudo nano /etc/pacman.conf
# adicione ao pacman.conf, proximo aos outros repositorios:
# --------------------------------------
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
# --------------------------------------
# sincronize o pacman ao AUR e atualizar
sudo pacman -Syyu --noconfirm
# DEPRECATED ---------------
# instalar yaourt
#sudo pacman -S yaourt
# instalar o pacaur
# o pacaur e como o yaourt, com mais inteligencias e facilidades.
# compartilham as mesmas funcoes, locks e instalacoes ja que sao baseados no pacman
# adicione a chave para cower, dependencia do pacaur
# pena que ambos nao sao paralelos como o, ja depreciado, "bauer"
#gpg --recv-key 1EB2638FF56C0C53
# instale o pacaur
#yaourt -S pacaur
# instalar aurman
# alterar para usuario nao root
sudo su meulogin
# instalar
git clone https://aur.archlinux.org/aurman.git
cd aurman
makepkg -Acs
sudo pacman -U aurman-xxx.pkg.tar.xz
cd ..
rm -rf aurman
# ----- opcional
# instalar e utilizar powerpill como backend paralelo, no lugar do pacman
gpg --recv-keys 1D1F0DC78F173680
pacaur -S powerpill
# configure o .bashrc da home de usuario com o seguinte
export PACMAN=/usr/bin/powerpill
# essa variavel informa ao pacaur qual backend utilizar
# adicione tambem o SigLevel a todos os repositorios padrao do Arch (core, extra, community, multilib)
# para isso edite o pacman.conf
sudo nano /etc/pacman.conf
# ex:
[core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
# ----- fim-opcional
# sincronizar e instalar mixer da alsa
pacman -Sy alsa-utils
# ajuste o som, se desejar
alsamixer
# xf86-input-libinput é o default, mas existem inputs para synaptics, evdev and wacom (ver Arch Wiki)
# se nenhum for escolhido agora, deverá ser escolhido ao instalar o xorg / ambiente grafico
sudo pacman -S xf86-input-libinput
# INSTALAR DRIVER E TOOLS DA NVIDIA
# em alguma parte do processo seguinte existe uma decisão sobre
# lib libx264 ou libx264-10bit, sendo essa segunda de raro uso e dependente de arquitetura
# (ver wiki, comentarios aqui: https://www.reddit.com/r/archlinux/comments/30khba/libx264_vs_libx26410bit/)
# verifique a wiki e instale driver de video adequado à sua GPU
# no meu caso e a nvidia
# lembrando que e bom instalar os drivers de video antes do XOrg e Gnome para evitar
# bindings ruins com mesa ou nouveau
#sudo pacman -S nvidia nvidia-libgl lib32-nvidia-libgl nvidia-settings
sudo pacman -S nvidia-utils lib32-nvidia-utils nvidia-settings
# INSTALAR XORG, FONTES E FERRAMENTAS BASICAS
# force refaz alguns bindings por causa do driver NVIDIA
sudo pacman -S --force xorg-server \
xorg-xinit \
mesa \
ttf-dejavu \
samba \
smbclient \
gvfs \
gvfs-smb \
sshfs
# instalar network manager caso nao esteja utilizando dhcpcd ou wpa como servico (como citado no passo opcional de redes)
# network manager e compativel com Gnome 3 (applet adiciona controles)
sudo pacman -S networkmanager networkmanager-vpnc networkmanager-pptp networkmanager-openconnect network-manager-applet
# habilite o network manager, caso tenha instalado
sudo systemctl enable NetworkManager
# verifique a wiki e instale o seu ambiente grafico, no meu caso e o Gnome 3
# podemos instalar o gnome, todas suas apps, jogos e ferramentas (pacotes "gnome" e "gnome-extra")
# (sudo pacman -S gnome gnome-extra)
# eu escolhi instalar o basico...
# force refaz alguns bindings por causa do driver NVIDIA
sudo pacman -S --force gnome-shell \
gnome-keyring \
libsecret \
seahorse \
nautilus \
gnome-terminal \
gnome-tweak-tool \
gnome-control-center \
gnome-system-monitor \
gnome-disk-utility \
xdg-user-dirs \
gdm \
vinagre \
baobab \
polari \
eog \
gnome-characters \
gnome-logs\
# ATIVAR GDM (desktop manager)
sudo systemctl enable gdm
# reinicie
# o sistema devera exibir a tela de login do GDM
# em caso de erros, procure ler os logs do xorg e journalctl
# ou verifique problemas de drivers de sua GPU
# a wiki do Arch e uma das melhores entre comunidades Linux
# prepara dirs de usuarios (xinitrc e pastas de pictures, documentos, etc)
# talvez nao seja mais necessario no futuro (nem instalacao nem essa execucao)
xdg-user-dirs-update
# FIXME
# configurar teclado abnt2
sudo localectl set-keymap br-abnt2
# configure um DNS bom pelo network manager
# existe uma limitacao de 3 nameservers no resolv.conf
# e bom usar 2 para ipv4 e um ipv6
# - gigadns: 189.38.95.95 / 2804:10:10::10
# - google DNS: 8.8.8.8 / 2001:4860:4860::8888
# sem isso o gnupg nao consegue achar keyservers em ISPs ruins
# popular pacman-key para uso futuro (opcional)
sudo mkdir -p /root/.gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux && sudo pacman-key --refresh-keys
# INSTALAR FERRAMENTAS COMUNS DE DESENVOLVIMENTO
# ele ja verifica o que baixar pelo pacman ou AUR, dando preferencia ao pacman
# aspell -> orthography corrector
pacaur -S --noedit ttf-ms-fonts \
aspell-pt \
tar gzip bzip2 unzip unrar p7zip \
jdk \
git \
p7zip \
firefox \
vlc \
virtualbox \
skype \
google-chrome \
chrome-remote-desktop \
docker \
gitkraken \
plex-media-server \
gimp \
inkscape \
steam-native-runtime \
steam \
atom \
visual-studio-code \
playonlinux \
transmission-gtk \
openssh \
vim \
terminator \
spotify \
empathy \
slack-desktop \
libreoffice-fresh
# HABILITAR SERVICO DOCKER
sudo systemctl enable docker
sudo systemctl start docker
# Docker sem sudo
sudo gpasswd -a ${USER} docker
newgrp docker
# HABILITAR SERVICO PLEX MEDIA SERVER
sudo systemctl enable plexmediaserver.service
sudo systemctl start plexmediaserver.service
# (opcional) para evitar checks de seguranca e fazer o acesso ao HD mais rapido
# edite o fstab e substitua "relatime" por "noatime"
# (ref: https://wiki.archlinux.org/index.php/fstab#atime_options)
sudo nano /etc/fstab
# INFINALITY IS NOT REQUIRED ANYMORE. FREETYPE 2.7+ HAS HINTING
# (https://github.com/bohoomil/fontconfig-ultimate/issues/171)
# desativa windows key da esquerda, mudando para a direita ou nenhuma
gsettings set org.gnome.mutter overlay-key "Super_R"
# gsettings set org.gnome.mutter overlay-key ""
# -------------------------------------------------------------------------
# nao instale o pacote "preload", atrapalha mais do que ajuda em gaming PCs
# -------------------------------------------------------------------------
# EXTENSOES E TEMAS GNOME 3
# common Gnome extensions, status bar system usage monitor, tab change, audio device output changer
# use Gnome Tweak Tool to configure themes, cursors and extensions
pacaur -S --noedit gnome-shell-extensions \
gnome-shell-system-monitor-applet-git \
gnome-shell-extension-coverflow-alt-tab-git \
gnome-shell-extension-audio-output-switcher-git \
gtk-theme-arc-git \
arc-icon-theme \
elementary-icon-theme \
adapta-gtk-theme \
ttf-fira-sans \
noto-fonts
# Add neofetch to bash
pacaur -S --noedit neofetch
echo 'neofetch' >> ~/.bashrc
# Define nautilus como default handler de diretorios e
# faz com que o "mostrar na pasta" do Chrome e outros apps funcione corretamente.
xdg-mime default nautilus.desktop inode/directory
# Permite que Google Chrome instale extensões do site Gnome
pacaur -S --noedit chrome-gnome-shell-git
# define número máximo de watches em arquivos
# crie ou edite o 99-sysctl.conf
sudo nano /etc/sysctl.d/99-sysctl.conf
# adicione a linha:
fs.inotify.max_user_watches = 524288
# instalar NVM, Node.js e modulos globais mais utilizados
pacaur -S nvm
# Do source NVM functionality for Bash (or ZSH)
echo 'source /usr/share/nvm/init-nvm.sh' > .bashrc
# echo 'source /usr/share/nvm/init-nvm.sh' > .zshrc
nvm install stable
nvm use stable
npm i -g gulp grunt webpack electron pm2 express-generator nodemon
# Configurar Git para utilizar o Gnome Keyring (opcional e muito particular)
# depois de instalados gnome-keyring e libsecret
cd /usr/share/git/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring
# EOF
@soaresrodrigo
Copy link

Parabéns mano. Eu fiz um tutorial por agora, mas só o essencial, o seu ta mais completo.

@vtmx
Copy link

vtmx commented Jun 21, 2020

Poxa Leo nem sabia desse seu gist, ia me poupar algumas horas.
Semana passada fui instalar e travei de criar partição GPT, mas depois peguei.

Eu estava usando o Wifi, o comando que funcionou pra mim foi esse:

pacman -S wpa_supplicant dhcpcd

wpa_cli

> add_network
0
> set_network 0 ssid "SSID_NAME"
> set_network 0 psk "PASSWORD"
> enable_network 0
OK
> quit

dhcpcd

@gusbemacbe
Copy link

@leodutra

Meus executáveis foram inspirados pelo teu executável: https://git.io/gusbemacbe-arch-install. :-)

@leodutra
Copy link
Author

Ótimo @gusbemacbe.

Teve problemas com comandos desatualizados? Tem um bom tempo que não preciso usar o gist 🙂

@gusbemacbe
Copy link

Olá @leodutra!

Só poucos comandos desactualizados.

  1. No MBR, tens de fazer a mesma coisa que GPT:
mount /dev/sdx1 /mnt/boot/efi
  1. Quando entrares no chroot, o teu executável não estará disponível. Mas tens de separar o root e o chroot.

  2. Simplifiquei vários comandos com pacotes para um único comando no fim. Adicionei networkmanager no chroot ao invés de utilizador. Mudei de

pacman -S wireless_tools wpa_supplicant wpa_actiond netcf dialog
pacman -S sudo
pacman -S grub-bios
pacman -S grub

para

pacman -S grub grub-bios dialog dosfstools mtools networkmanager os-prober sudo

Adicionei dosfstools e os-prober por causa do dual boot.

Também precisa separar o chroot do utilizador. Divide o teu mesmo executável em três executáveis. Um para root, um para chroot e um para utilizador, porque o mesmo executável vai quebrar o chroot e o utilizador.

@leodutra
Copy link
Author

Obrigado, @gusbemacbe.
Adicionei na minha lista de tarefas uma atualização, mas seu comentário já ajuda muito enquanto isso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment