Skip to content

Instantly share code, notes, and snippets.

@feliperuhland
Last active April 29, 2017 22:03
Show Gist options
  • Save feliperuhland/60e84651cec0333e7b5b530d6cf517cb to your computer and use it in GitHub Desktop.
Save feliperuhland/60e84651cec0333e7b5b530d6cf517cb to your computer and use it in GitHub Desktop.
ArchLinux Script
#!/bin/bash
# encoding: utf-8
# wget https://goo.gl/wr93vY
##################################################
# Variaveis #
##################################################
# Nome do Computador
HOSTN=Arch-VM
# Localização. Verifique o diretório /usr/share/zoneinfo/<Zone>/<SubZone>
LOCALE=America/Sao_Paulo
# Senha de Root do sistema após a instalação
ROOT_PASSWD=123456
# Usuário e senha
USER=usuario
USER_PASSWD=123456
########## Variáveis Para Particionamento do Disco
# ATENÇÃO, este script apaga TODO o conteúdo do disco especificado em $HD.
HD=/dev/sda
# Tamanho da Partição Boot: /boot
BOOT_SIZE=512
# Tamanho da Partição Swap:
SWAP_SIZE=6000
# File System das partições
BOOT_FS=ext4
ROOT_FS=ext4
# Pacote extras (não são obrigatórios)
EXTRA_PKGS='sudo xf86-video-intel xf86-video-fbdev xorg-server xorg-xinit xorg-utils xorg-server-utils ttf-dejavu ttf-bitstream-vera ttf-liberation firefox chromium netctl dialog wpa_supplicant aspell-pt tar gzip bzip2 unzip unrar p7zip i3 vim tmux git zsh rxvt-unicode
'
######## Variáveis menos suscetíveis a mudanças
KEYBOARD_LAYOUT=br-abnt2
LANGUAGE=en_US
######## Variáveis auxiliares. NÃO DEVEM SER ALTERADAS
BOOT_START=1
BOOT_END=$(($BOOT_START+$BOOT_SIZE))
SWAP_START=$BOOT_END
SWAP_END=$(($SWAP_START+$SWAP_SIZE))
ROOT_START=$SWAP_END
##################################################
# functions #
##################################################
function inicializa_hd
{
echo "Inicializando o HD"
# Configura o tipo da tabela de partições (Ignorando erros)
parted -s $HD mklabel msdos &> /dev/null
# Remove qualquer partição antiga
parted -s $HD rm 1 &> /dev/null
parted -s $HD rm 2 &> /dev/null
parted -s $HD rm 3 &> /dev/null
parted -s $HD rm 4 &> /dev/null
}
function particiona_hd
{
ERR=0
# Cria partição boot
echo "Criando partição boot"
parted -s $HD mkpart primary $BOOT_FS $BOOT_START $BOOT_END 1>/dev/null || ERR=1
parted -s $HD set 1 boot on 1>/dev/null || ERR=1
# Cria partição swap
echo "Criando partição swap"
parted -s $HD mkpart primary linux-swap $SWAP_START $SWAP_END 1>/dev/null || ERR=1
# Cria partição root
echo "Criando partição root"
parted -s -- $HD mkpart primary $ROOT_FS $ROOT_START -0 1>/dev/null || ERR=1
if [[ $ERR -eq 1 ]]; then
echo "Erro durante o particionamento"
exit 1
fi
}
function cria_fs
{
ERR=0
# Formata partições root e boot para o File System especificado
echo "Formatando partição boot"
mkfs.$BOOT_FS /dev/sda1 -L Boot 1>/dev/null || ERR=1
echo "Formatando partição root"
mkfs.$ROOT_FS /dev/sda3 -L Root 1>/dev/null || ERR=1
# Cria e inicia a swap
echo "Formatando partição swap"
mkswap /dev/sda2 || ERR=1
swapon /dev/sda2 || ERR=1
if [[ $ERR -eq 1 ]]; then
echo "Erro ao criar File Systems"
exit 1
fi
}
function monta_particoes
{
ERR=0
echo "Montando partições"
# Monta partição root
mount /dev/sda3 /mnt || ERR=1
# Monta partição boot
mkdir /mnt/boot || ERR=1
mount /dev/sda1 /mnt/boot || ERR=1
if [[ $ERR -eq 1 ]]; then
echo "Erro ao criar File Systems"
exit 1
fi
}
function configurando_pacman
{
echo "Configurando pacman"
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bkp
sed "s/^Ser/#Ser/" /etc/pacman.d/mirrorlist > /tmp/mirrors
sed '/Brazil/{n;s/^#//}' /tmp/mirrors > /etc/pacman.d/mirrorlist
if [ "$(uname -m)" = "x86_64" ]
then
cp /etc/pacman.conf /etc/pacman.conf.bkp
# Adiciona o Multilib
sed '/^#\[multilib\]/{s/^#//;n;s/^#//;n;s/^#//}' /etc/pacman.conf > /tmp/pacman
mv /tmp/pacman /etc/pacman.conf
fi
}
function instalando_sistema
{
ERR=0
echo "Rodando pactrap base base-devel"
pacstrap /mnt base base-devel || ERR=1
echo "Rodando pactrap grub-bios $EXTRA_PKGS"
pacstrap /mnt grub-bios `echo $EXTRA_PKGS` || ERR=1
echo "Rodando genfstab"
genfstab -p /mnt >> /mnt/etc/fstab || ERR=1
if [[ $ERR -eq 1 ]]; then
echo "Erro ao instalar sistema"
exit 1
fi
}
##################################################
# Script #
##################################################
# Carrega layout do teclado ABNT2
loadkeys $KEYBOARD_LAYOUT
#### Particionamento
inicializa_hd
particiona_hd
cria_fs
monta_particoes
#### Instalação
configurando_pacman
instalando_sistema
#### Entra no novo sistema (chroot)
arch-chroot /mnt << EOF
# Configura hostname
echo $HOSTN > /etc/hostname
cp /etc/hosts /etc/hosts.bkp
sed 's/localhost$/localhost '$HOSTN'/' /etc/hosts > /tmp/hosts
mv /tmp/hosts /etc/hosts
# Configura layout do teclado
echo 'KEYMAP='$KEYBOARD_LAYOUT > /etc/vconsole.conf
echo 'FONT=lat0-16' >> /etc/vconsole.conf
echo 'FONT_MAP=' >> /etc/vconsole.conf
# Configura locale.gen
cp /etc/locale.gen /etc/locale.gen.bkp
sed 's/^#'$LANGUAGE'/'$LANGUAGE/ /etc/locale.gen > /tmp/locale
mv /tmp/locale /etc/locale.gen
locale-gen
# Configura locale.conf
export LANG=$LANGUAGE'.utf-8'
echo 'LANG='$LANGUAGE'.utf-8' > /etc/locale.conf
echo 'LC_COLLATE=C' >> /etc/locale.conf
echo 'LC_TIME='$LANGUAGE'.utf-8' >> /etc/locale.conf
# Configura hora
rm /etc/localtime
ln -s /usr/share/zoneinfo/$LOCALE /etc/localtime
echo $LOCALE > /etc/timezone
hwclock --systohc --utc
# Configura rede (DHCP via eth0)
cp /etc/rc.conf /etc/rc.conf.bkp
sed 's/^# interface=/interface=eth0/' /etc/rc.conf > /tmp/rc.conf
mv /tmp/rc.conf /etc/rc.conf
# Configura ambiente ramdisk inicial
mkinitcpio -p linux
# Instala e gera configuração do GRUB Legacy
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
# Altera a senha do usuário root
echo -e $ROOT_PASSWD"\n"$ROOT_PASSWD | passwd
# Cria usuário
useradd -m -G lp,wheel,games,video,audio,optical,storage,scanner,power,users,sudo,adm $USER
echo -e $USER_PASSWD"\n"$USER_PASSWD | passwd $USER
# Xinit
echo "exec i3 -V >> ~/i3log-$(date +'%F-%k-%M-%S') 2>&1" > /home/$USER/.xinitrc
# apacman
pacman -S --noconfirm --needed --asdeps jshon
curl -O "https://raw.githubusercontent.com/oshazard/apacman/master/apacman"
bash ./apacman -S --noconfirm apacman
EOF
echo "Umounting partitions"
umount /mnt/{boot,home,}
reboot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment