Advertisement
guilehan

Install Arch Linux

Jan 26th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.55 KB | None | 0 0
  1. #!/bin/bash
  2. # encoding: utf-8
  3.  
  4. ##################################################
  5. #                   Variaveis                    #
  6. ##################################################
  7. # Nome do Computador
  8. HOSTN=Arch-VM
  9.  
  10. # Localização. Verifique o diretório /usr/share/zoneinfo/<Zone>/<SubZone>
  11. LOCALE=America/Manaus
  12.  
  13. # Senha de Root do sistema após a instalação
  14. ROOT_PASSWD=123456
  15.  
  16. ########## Variáveis Para Particionamento do Disco
  17. # ATENÇÃO, este script apaga TODO o conteúdo do disco especificado em $HD.
  18. HD=/dev/sda
  19. # Tamanho da Partição Boot: /boot
  20. BOOT_SIZE=200
  21. # Tamanho da Partição Root: /
  22. ROOT_SIZE=10000
  23. # Tamanho da Partição Swap:
  24. SWAP_SIZE=2000
  25. # A partição /home irá ocupar o restante do espaço livre em disco
  26.  
  27. # File System das partições
  28. BOOT_FS=ext4
  29. HOME_FS=ext4
  30. ROOT_FS=ext4
  31.  
  32. # Pacote extras (não são obrigatórios)
  33. #EXTRA_PKGS='vim'
  34.  
  35. ######## Variáveis menos suscetíveis a mudanças
  36. KEYBOARD_LAYOUT=br-abnt2
  37. LANGUAGE=pt_BR
  38.  
  39. ######## Variáveis auxiliares. NÃO DEVEM SER ALTERADAS
  40. BOOT_START=1
  41. BOOT_END=$(($BOOT_START+$BOOT_SIZE))
  42.  
  43. SWAP_START=$BOOT_END
  44. SWAP_END=$(($SWAP_START+$SWAP_SIZE))
  45.  
  46. ROOT_START=$SWAP_END
  47. ROOT_END=$(($ROOT_START+$ROOT_SIZE))
  48.  
  49. HOME_START=$ROOT_END
  50.  
  51. ##################################################
  52. #                   functions                    #
  53. ##################################################
  54. function inicializa_hd
  55. {
  56.         echo "Inicializando o HD"
  57.         # Configura o tipo da tabela de partições (Ignorando erros)
  58.         parted -s $HD mklabel msdos &> /dev/null
  59.  
  60.         # Remove qualquer partição antiga
  61.         parted -s $HD rm 1 &> /dev/null
  62.         parted -s $HD rm 2 &> /dev/null
  63.         parted -s $HD rm 3 &> /dev/null
  64.         parted -s $HD rm 4 &> /dev/null
  65. }
  66.  
  67. function particiona_hd
  68. {
  69.         ERR=0
  70.         # Cria partição boot
  71.         echo "Criando partição boot"
  72.         parted -s $HD mkpart primary $BOOT_FS $BOOT_START $BOOT_END 1>/dev/null || ERR=1
  73.         parted -s $HD set 1 boot on 1>/dev/null || ERR=1
  74.  
  75.         # Cria partição swap
  76.         echo "Criando partição swap"
  77.         parted -s $HD mkpart primary linux-swap $SWAP_START $SWAP_END 1>/dev/null || ERR=1
  78.  
  79.         # Cria partição root
  80.         echo "Criando partição root"
  81.         parted -s $HD mkpart primary $ROOT_FS $ROOT_START $ROOT_END 1>/dev/null || ERR=1
  82.  
  83.         # Cria partição home
  84.         echo "Criando partição home"
  85.         parted -s -- $HD mkpart primary $HOME_FS $HOME_START -0 1>/dev/null || ERR=1
  86.  
  87.         if [[ $ERR -eq 1 ]]; then
  88.                 echo "Erro durante o particionamento"
  89.                 exit 1
  90.         fi
  91. }
  92.  
  93. function cria_fs
  94. {
  95.         ERR=0
  96.         # Formata partições root, home e boot para o File System especificado
  97.         echo "Formatando partição boot"
  98.         mkfs.$BOOT_FS /dev/sda1 -L Boot 1>/dev/null || ERR=1
  99.         echo "Formatando partição root"
  100.         mkfs.$ROOT_FS /dev/sda3 -L Root 1>/dev/null || ERR=1
  101.         echo "Formatando partição home"
  102.         mkfs.$HOME_FS /dev/sda4 -L Home 1>/dev/null || ERR=1
  103.         # Cria e inicia a swap
  104.         echo "Formatando partição swap"
  105.         mkswap /dev/sda2 || ERR=1
  106.         swapon /dev/sda2 || ERR=1
  107.  
  108.         if [[ $ERR -eq 1 ]]; then
  109.                 echo "Erro ao criar File Systems"
  110.                 exit 1
  111.         fi
  112. }
  113.  
  114. function monta_particoes
  115. {
  116.         ERR=0
  117.         echo "Montando partições"
  118.         # Monta partição root
  119.         mount /dev/sda3 /mnt || ERR=1
  120.         # Monta partição boot
  121.         mkdir /mnt/boot || ERR=1
  122.         mount /dev/sda1 /mnt/boot || ERR=1
  123.         # Monta partição home
  124.         mkdir /mnt/home || ERR=1
  125.         mount /dev/sda4 /mnt/home || ERR=1
  126.  
  127.         if [[ $ERR -eq 1 ]]; then
  128.                 echo "Erro ao criar File Systems"
  129.                 exit 1
  130.         fi
  131. }
  132.  
  133. function configurando_pacman
  134. {
  135.         echo "Configurando pacman"
  136.         cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bkp
  137.         sed "s/^Ser/#Ser/" /etc/pacman.d/mirrorlist > /tmp/mirrors
  138.         sed '/Brazil/{n;s/^#//}' /tmp/mirrors > /etc/pacman.d/mirrorlist
  139.  
  140.         if [ "$(uname -m)" = "x86_64" ]
  141.         then
  142.                 cp /etc/pacman.conf /etc/pacman.conf.bkp
  143.                 # Adiciona o Multilib
  144.                 sed '/^#\[multilib\]/{s/^#//;n;s/^#//;n;s/^#//}' /etc/pacman.conf > /tmp/pacman
  145.                 mv /tmp/pacman /etc/pacman.conf
  146.  
  147.         fi
  148. }
  149.  
  150. function instalando_sistema
  151. {
  152.         ERR=0
  153.         echo "Rodando pactrap base base-devel"
  154.         pacstrap /mnt base base-devel || ERR=1
  155.         echo "Rodando pactrap grub-bios"
  156.         pacstrap /mnt grub-bios || ERR=1
  157.         echo "Rodando genfstab"
  158.         genfstab -p /mnt >> /mnt/etc/fstab || ERR=1
  159.  
  160.         if [[ $ERR -eq 1 ]]; then
  161.                 echo "Erro ao instalar sistema"
  162.                 exit 1
  163.         fi
  164. }
  165.  
  166. ##################################################
  167. #                   Script                       #
  168. ##################################################
  169. # Carrega layout do teclado ABNT2
  170. loadkeys $KEYBOARD_LAYOUT
  171.  
  172. #### Particionamento
  173. inicializa_hd
  174. particiona_hd
  175. cria_fs
  176. monta_particoes
  177.  
  178. #### Instalação
  179. configurando_pacman
  180. instalando_sistema
  181.  
  182. #### Entra no novo sistema (chroot)
  183. arch-chroot /mnt << EOF
  184. # Configura hostname
  185. echo $HOSTN > /etc/hostname
  186. cp /etc/hosts /etc/hosts.bkp
  187. sed 's/localhost$/localhost '$HOSTN'/' /etc/hosts > /tmp/hosts
  188. mv /tmp/hosts /etc/hosts
  189.  
  190. # Configura layout do teclado
  191. echo 'KEYMAP='$KEYBOARD_LAYOUT > /etc/vconsole.conf
  192. echo 'FONT=lat0-16' >> /etc/vconsole.conf
  193. echo 'FONT_MAP=' >> /etc/vconsole.conf
  194.  
  195. # Configura locale.gen
  196. cp /etc/locale.gen /etc/locale.gen.bkp
  197. sed 's/^#'$LANGUAGE'/'$LANGUAGE/ /etc/locale.gen > /tmp/locale
  198. mv /tmp/locale /etc/locale.gen
  199. locale-gen
  200.  
  201. # Configura locale.conf
  202. export LANG=$LANGUAGE'.utf-8'
  203. echo 'LANG='$LANGUAGE'.utf-8' > /etc/locale.conf
  204. echo 'LC_COLLATE=C' >> /etc/locale.conf
  205. echo 'LC_TIME='$LANGUAGE'.utf-8' >> /etc/locale.conf
  206.  
  207. # Configura hora
  208. ln -s /usr/share/zoneinfo/$LOCALE /etc/localtime
  209. echo $LOCALE > /etc/timezone
  210. hwclock --systohc --utc
  211.  
  212. # Configura rede (DHCP via eth0)
  213. cp /etc/rc.conf /etc/rc.conf.bkp
  214. sed 's/^# interface=/interface=eth0/' /etc/rc.conf > /tmp/rc.conf
  215. mv /tmp/rc.conf /etc/rc.conf
  216.  
  217. # Configura ambiente ramdisk inicial
  218. mkinitcpio -p linux
  219.  
  220. # Instala e gera configuração do GRUB Legacy
  221. grub-install /dev/sda
  222. grub-mkconfig -o /boot/grub/grub.cfg
  223.  
  224. # Altera a senha do usuário root
  225. echo -e $ROOT_PASSWD"\n"$ROOT_PASSWD | passwd
  226. EOF
  227.  
  228. echo "Umounting partitions"
  229. umount /mnt/{boot,home,}
  230. reboot
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement