Advertisement
darkaht

autoinstall.sh (v1.1)

Apr 21st, 2013
711
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. #autoinstall.sh (v1.1)
  3. LOGO() {
  4.     clear && echo -e "\e[1;32m
  5. ## ### ### ###  #   #       #  # # ###  #  ### ###  ## ###  #  #   #  
  6. #   #   # #  #  # # # #     # # # #  #  # #  #  # # #    #  # # #   #  
  7. # # ##  # #  #  # # # #     ### # #  #  # #  #  # #  #   #  ### #   #  
  8. # # #   # #  #  # # # #     # # # #  #  # #  #  # #   #  #  # # #   #  
  9. ## ### # #  #   #   #      # # ###  #   #  ### # # ##   #  # # ### ### \n
  10.                             [By DaRkaHT] \n\e[0m"
  11. }
  12. #############
  13. # FUNCIONES #
  14. #############
  15. barra_progreso() {
  16.     PROGRESO=`expr $1 / 2`
  17.     ESPACIO=`expr 100 - $1`
  18.     ESPACIO_REAL=`expr $ESPACIO / 2`
  19.     echo -n "["             #Principio de la barra.
  20.     for aa in `seq 1 $PROGRESO`; do
  21.         echo -n "="         #Progreso con símbolo "=".
  22.     done
  23.     echo -n ">"             #Punta de la barra.
  24.     for bb in `seq 1 $ESPACIO_REAL`; do
  25.         echo -n " "         #Zona en blanco hasta llegar a 100%.
  26.     done
  27.     echo -ne "] $1% \n \n"  #Final de la barra y porcentaje de progreso.
  28. }
  29.  
  30. funcion_ERROR() {
  31.     if [[ $? != "0" ]]
  32.     then
  33.         if [[ ! -z /ERRORES ]]
  34.         then
  35.             echo "$1" >> /ERRORES
  36.         fi
  37.     LOGO
  38.     echo -e "$1, tendrá que solucionarlo manualmente."
  39.     echo "1) Continuar, se ha solventado el error manualmente."
  40.     echo "2) Abortar instalación."
  41.     read opc_error
  42.         while :
  43.         do
  44.             case $opc_error in
  45.                 1) echo -e "\n Continuando con la instalación del sistema..." && break ;;
  46.                 2) echo -e "\n Abortando instalación..." && exit ;;
  47.                 *) echo "Opción inválida."
  48.                    read opc_error
  49.             esac
  50.         done
  51.     fi
  52. }
  53.  
  54. funcion_COPIAR() {
  55.     cp -Rf $1 $2
  56.     funcion_ERROR "Error: No se ha podido copiar fichero $1"
  57. }
  58.  
  59. funcion_INSTALAR() {
  60.     nice -n -20 emerge $1 --quiet
  61.     funcion_ERROR "Error: No se pudo instalar $1"
  62. }
  63.  
  64. funcion_ADD_RC_UPDATE() {
  65.     rc-update add $1 $2
  66.     funcion_ERROR "Error: No se pudo añadir $1 al inicio"
  67. }
  68.  
  69. funcion_GPASSWD() {
  70.     gpasswd -a $1 $2
  71.     funcion_ERROR "Error: No se ha podido añadir usuario $1 a la lista de usuarios con permiso de $2"
  72. }
  73.  
  74. verif_conex() {
  75.     ping -c2 google.es
  76.     funcion_ERROR "Error: Falló la conexión a internet"
  77. }
  78.  
  79. install() {
  80. #####################   Módulos necesarios para el correcto funcionamiento del livecd.
  81. # CARGANDO MÓDULOS  #  Cada usuario debe cargar los necesarios para su hardware.
  82. #####################
  83. modprobe broadcom
  84. modprobe tg3
  85. update-modules
  86.  
  87. #######################
  88. # OBTENIENDO CONEXION #
  89. #######################
  90. LOGO
  91. echo -e "Iniciando instalación...\n"
  92. barra_progreso 0
  93. echo -e "¿Con que interfaz desea conectarse a la red? \n"
  94.  
  95. SELEC_INTERFAZ=`ifconfig -a | grep -v "lo" | grep -v "sit*" | cut -d" " -f1 | cut -d":" -f1`
  96. select opt in $SELEC_INTERFAZ
  97. do
  98.     if [[ -z $opt ]]
  99.     then
  100.         echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
  101.     else
  102.         interfaz=$opt
  103.         break
  104.     fi
  105. done
  106.  
  107. ifconfig $interfaz up
  108. dhcpcd -k $interfaz --quiet
  109.  
  110. if [[ $interfaz = wlan* ]]
  111. then
  112.     echo
  113.     echo -e "Detectada interfaz de red inalámbrica, escaneando redes wireless... \n"
  114.     echo -e "ATENCIÓN: Si desea conectarse inalámbricamente, solo podrá conectar a redes con seguridad WEP. \n"
  115.     SCAN_WIFI=`iwlist $interfaz scanning | grep "ESSID" | cut -d":" -f2`
  116.     if [[ -z SCAN_WIFI ]]
  117.     then
  118.         echo -e "No se han encontrado redes wireless disponibles, presione INTRO para continuar...\n"
  119.         read
  120.     else
  121.         select opt in $SCAN_WIFI
  122.         do
  123.             if [[ -z $opt ]]
  124.             then
  125.                 echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
  126.             else
  127.                 ESSID=$opt
  128.                 while [[ -z $clave_red ]]
  129.                 do
  130.                     echo
  131.                     echo "Introduzca contraseña para red $opt"
  132.                     read clave_red
  133.                 done
  134.                 iwconfig $interfaz essid "$ESSID" key "s:$clave_red"
  135.             fi
  136.         done
  137.     fi
  138. fi
  139. echo
  140. dhcpcd $interfaz
  141. verif_conex #Verificando conexión.
  142.  
  143.             #########################################
  144.             ## RECOPILANDO INFORMACIÓN DEL SISTEMA ##
  145.             #########################################
  146.  
  147. ########################
  148. # SELECCIONANDO KEYMAP #
  149. ########################
  150. loadkeys es --quiet
  151.  
  152. ################################
  153. # DISCO Y TABLA DE PARTICIONES #
  154. ################################
  155. form_DISCO_PARTS() {
  156.     unset disco fin_sys #fin_boot
  157.     while [[ -z $disco ]]
  158.     do
  159.         LOGO
  160.         echo -e "Especifique en que disco desea instalar el sistema: \n"
  161.         SELEC_HD=`fdisk -l 2> /dev/null | grep -v identifier | grep "Disk" | cut -d"/" -f3  | cut -d":" -f1`
  162.         select opt in $SELEC_HD
  163.         do
  164.             if [[ -z $opt ]]
  165.             then
  166.                 echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
  167.             else
  168.                 disco=$opt
  169.                 break
  170.             fi
  171.         done
  172.     done
  173.  
  174.     LOGO
  175.     echo -e "¿Desea iniciar el asistente de particionamiento del disco ($disco)? \n 1) Si, particionar disco. \n 2) No, el disco está correctamente particionado."
  176.     read menu_part
  177.     case $menu_part in
  178.         1)  while [[ -z $fin_boot ]]
  179.             do
  180.                 ini_boot=1
  181.                 #echo
  182.                 #echo "¿Tamaño partición BOOT (en MB)?"
  183.                 #read fin_boot
  184.                 fin_boot=40
  185.                 fin_boot_MB=`echo -n "+$fin_boot"; echo "M"`
  186.             done
  187.  
  188.             while [[ -z $fin_sys ]]
  189.             do
  190.                 ini_sys=" "
  191.                 echo
  192.                 echo "¿Tamaño partición de sistema (en MB)?"
  193.                 read fin_sys
  194.                 fin_sys_MB=`echo -n "+$fin_sys"; echo "M"`
  195.             done
  196.  
  197.             ini_swap=" "
  198.             echo
  199.             echo "¿Tamaño partición SWAP (en MB)?"
  200.             read fin_swap
  201.             fin_swap_MB=`echo -n "+$fin_swap"; echo "M"` ;;
  202.  
  203.         2)  particionado=no ;;
  204.         *)  echo "Opcion inválida, presione ENTER para continuar..."
  205.             read
  206.     esac
  207. }
  208. form_DISCO_PARTS    #Invocando a la función.
  209.  
  210. ##########################
  211. # CONFIGURACIÓN HOSTNAME #
  212. ##########################
  213. form_CONF_HOSTNAME() {
  214.     unset hostname
  215.     LOGO
  216.     while [[ -z $hostname ]]
  217.     do
  218.         echo "Introduzca el nombre que se le asignara al equipo (HostName):"
  219.         read hostname
  220.     done
  221. }
  222. form_CONF_HOSTNAME  #Invocando a la función.
  223.  
  224.     ###########################################
  225.     # CONFIGURACIÓN DE USUARIOS Y CONTRASEÑAS #
  226.     ###########################################
  227.  
  228. ########
  229. # ROOT #
  230. ########
  231. form_PASS_ROOT() {
  232.     unset pass_root conf_pass_root
  233.     while [[ -z $pass_root || -z $conf_pass_root ]] || [[ -z $pass_root && -z $conf_pass_root ]] || [[ $pass_root != $conf_pass_root ]]
  234.     do
  235.         LOGO
  236.         echo "Por favor, introduzca la contraseña que desea usar para el administrador del sistema (ROOT):"
  237.         read pass_root
  238.         echo
  239.         echo "Por favor, repita la contraseña para el administrador del sistema:"
  240.         read conf_pass_root
  241.             if [[ $conf_pass_root != $pass_root ]]
  242.             then
  243.                 echo
  244.                 echo "Error: La contraseña no coincide con la confirmación, pulse ENTER para continuar..."
  245.                 read
  246.             fi
  247.     done
  248. }
  249. form_PASS_ROOT      #Invocando a la función.
  250.  
  251. ##############
  252. # 1º USUARIO #
  253. ##############
  254. form_PASS_USUARIO() {
  255.     unset usuario pass_user conf_pass_user
  256.     while [[ -z $usuario ]] || [[ -z $pass_user || -z $conf_pass_user ]] || [[ -z $pass_user && -z $conf_pass_user ]] || [[ $pass_user != $conf_pass_user ]]
  257.     do
  258.         LOGO
  259.         echo "Introduzca el nombre que desee usar para el primer usuario:"
  260.         read usuario
  261.         echo
  262.         echo "Introduzca una contraseña para el primer usuario ($usuario):"
  263.         read pass_user
  264.         echo
  265.         echo "Por favor, confirme la contraseña:"
  266.         read conf_pass_user
  267.             if [[ $conf_pass_user != $pass_user ]]
  268.             then
  269.                 echo
  270.                 echo "Error: La contraseña no coincide con la confirmación, pulse ENTER para continuar..."
  271.                 read
  272.             fi
  273.     done
  274. }
  275. form_PASS_USUARIO   #Invocando a la función.
  276.  
  277.     #######################
  278.     # OPCIONES DEL NÚCLEO #
  279.     #######################
  280. opciones_kernel() {
  281.     unset nucleo
  282.     while [[ -z $nucleo ]]
  283.     do
  284.         LOGO
  285.         echo -e "¿Qué tipo de núcleo desea usar? \n"
  286.         echo "1. Kernel Personalizado"
  287.         echo -e "2. GenKernel \n"
  288.         read menu_nucleo
  289.         echo
  290.         case $menu_nucleo in
  291.             1) nucleo=personalizado ;;
  292.             2) nucleo=genkernel ;;
  293.             *) echo "Opcion inválida, presione ENTER para continuar..."
  294.                read
  295.         esac
  296.     done
  297.  
  298.         while [[ $nucleo = "personalizado" ]]
  299.         do
  300.             LOGO
  301.             echo -e "¿Como desea configurar el nucleo? \n"
  302.             echo "1.Ejecutar menu config"
  303.             echo -e "2.Cargar fichero .config \n"
  304.             read menu_nucleo
  305.             echo
  306.             case $menu_nucleo in
  307.                 1) nucleo=menu_config ;;
  308.                 2) nucleo=fichero_config ;;
  309.                 *) echo "Opcion inválida, presione ENTER para continuar..."
  310.                    read
  311.             esac
  312.         done
  313. }
  314. opciones_kernel     #Invocando a la función.
  315.  
  316. ###############################
  317. # INFORMACIÓN TARJETA GRÁFICA #
  318. ###############################
  319. info_tar_graf() {
  320.     unset T_GRAF
  321.     T_GRAF_ATI=`lspci | grep VGA | grep -o Ati`
  322.     T_GRAF_NVIDIA=`lspci | grep VGA | grep -o nVidia`
  323.     T_GRAF_INTEL=`lspci | grep VGA | grep -o Intel`
  324.     T_GRAF_VBOX=`lspci | grep VGA | grep -o VirtualBox`
  325.  
  326.     if [[ $T_GRAF_ATI = "Ati" ]]
  327.     then
  328.         T_GRAF=radeon
  329.     elif [[ $T_GRAF_NVIDIA = "nVidia" ]]
  330.     then
  331.         T_GRAF=nouveau
  332.     elif [[ $T_GRAF_INTEL = "Intel" ]]
  333.     then
  334.         T_GRAF=intel
  335.     elif [[ $T_GRAF_VBOX = "VirtualBox" ]]
  336.     then
  337.         T_GRAF=virtualbox
  338.     fi
  339.  
  340.         while [[ -z $T_GRAF ]]
  341.         do
  342.             LOGO
  343.             echo -e "No se ha detectado ninguna tarjeta gráfica Ati/Nvidia/Intel/VirtualBox en su equipo,
  344. por favor, introduzca manualmente el nombre de su tarjeta gráfica: \n"
  345.             read T_GRAF
  346.         done
  347. }
  348. info_tar_graf       #Invocando a la función.
  349.  
  350. ###########################
  351. # DIÁLOGO DE CONFIRMACIÓN #
  352. ###########################
  353. while :
  354. do
  355.     LOGO
  356.     echo -e "Finalizando asistente...\n"
  357.     barra_progreso 10
  358.  
  359.     echo -e "¿Esta seguro de querer usar la siguiente configuración en su sistema? \n
  360. HostName:               $hostname
  361. Usuario:                $usuario
  362. Pass Usuario:               $pass_user
  363. Pass Root:              $pass_root
  364. Disco:                  $disco
  365. Tamaño Particion BOOT:         $fin_boot   MB (Recomendado)
  366. Tamaño Particion del sistema:      $fin_sys    MB
  367. Tamaño Particion SWAP:         $fin_swap   MB
  368. Nucleo:                 $nucleo
  369. Tarjeta Gráfica:           $T_GRAF \n
  370.  
  371. 1. Si, continuar la instalación.\n
  372. 2. Cambiar HostName.
  373. 3. Cambiar contraseña de administrador del sistema (root).
  374. 4. Cambiar preferencias del primer usuario del sistema.
  375. 5. Cambiar preferencias del disco y las particiones del sistema.
  376. 6. Cambiar opciones del núcleo.
  377. 7. Cambiar opciones de tarjeta gráfica (detección automática).\n"
  378.     read opcion_infosys
  379.     case $opcion_infosys in
  380.         1) echo -e "\n Continuando la instalación..."
  381.            break ;;
  382.         2) form_CONF_HOSTNAME ;;
  383.         3) form_PASS_ROOT ;;
  384.         4) form_PASS_USUARIO ;;
  385.         5) form_DISCO_PARTS ;;
  386.         6) opciones_kernel ;;
  387.         7) info_tar_graf ;;
  388.         *) echo "Opcion inválida, presione una tecla para continuar..."
  389.            read
  390.     esac
  391. done
  392.             ################################
  393.             ## INSTALANDO EL SISTEMA BASE ##
  394.             ################################
  395.  
  396. ####################################
  397. # ESCRIBIENDO PARTICIONES EN DISCO #
  398. ####################################
  399. PARTICIONES() {
  400.     fdisk /dev/$disco << EOF
  401. #PARTICIÓN BOOT:
  402. n
  403. p
  404. 1
  405. $ini_boot
  406. $fin_boot_MB
  407.  
  408. #PARTICIÓN DEL SISTEMA:
  409. n
  410. p
  411. 2
  412. $ini_sys
  413. $fin_sys_MB
  414.  
  415. #PARTICIÓN SWAP:
  416. n
  417. p
  418. 3
  419. $ini_swap
  420. $fin_swap_MB
  421.  
  422. #ESTABLECIENDO PARTICIÓN BOOT COMO BOOTEABLE:
  423. a
  424. 1
  425.  
  426. #ESTABLECIENDO PARTICIÓN SWAP:
  427. t
  428. 3
  429. 82
  430.  
  431. #GUARDAR CAMBIOS:
  432. w
  433. EOF
  434. }
  435.  
  436. if [[ $particionado != "no" ]]
  437. then
  438.     PARTICIONES #Invocando a la función.
  439.     funcion_ERROR "Error: No se han podido escribir las particiones en el disco"
  440. fi
  441.  
  442. ########################### "sleep" necesario para dar tiempo
  443. # FORMATEO DE PARTICIONES # a terminar de escribir particiones
  444. ########################### en el disco. Sino, no funciona.
  445. sleep 03
  446. mke2fs -t ext2 /dev/"$disco"1           #Format part BOOT.
  447. if [[ $? = "0" ]]
  448. then
  449.     sleep 03
  450.     mke2fs -t ext4 /dev/"$disco"2       #Format part SISTEMA.
  451.     if [[ $? = "0" ]]
  452.     then
  453.         sleep 03
  454.         mkswap /dev/"$disco"3       #Format part SWAP.
  455.         if [[ $? != "0" ]]
  456.         then
  457.             funcion_ERROR "No se pudo dar formato a la partición de intercambio SWAP ("$disco"3)"
  458.         fi
  459.     elif [[ $? != "0" ]]
  460.     then
  461.         funcion_ERROR "No se pudo dar formato a la partición de sistema ("$disco"2)"
  462.     fi
  463. elif [[ $? != "0" ]]
  464. then
  465.     funcion_ERROR "No se pudo dar formato a partición BOOT ("$disco"1)"
  466. fi
  467.  
  468. ##########################
  469. # MONTAJE DE PARTICIONES #
  470. ##########################
  471. mount /dev/"$disco"2 /mnt/gentoo            #MONTANDO PARTICION SISTEMA.
  472. if [[ $? = "0" ]]
  473. then
  474.     mkdir /mnt/gentoo/boot              #CREANDO PUNTO DE MONTAJE PARTICION BOOT.
  475.     mount /dev/"$disco"1 /mnt/gentoo/boot       #MONTANDO PARTICION BOOT.
  476.     if [[ $? = "0" ]]
  477.     then
  478.         mkswap /dev/"$disco"3           #ACTIVANDO PARTICION SWAP.
  479.         if [[ $? != "0" ]]
  480.         then
  481.             funcion_ERROR "NO SE ACTIVAR PARTICION DE INTERCAMBIO SWAP ("$disco"1)"
  482.         fi
  483.     elif [[ $? != "0" ]]
  484.     then
  485.         funcion_ERROR "NO SE PUDO MONTAR PARTICION BOOT ("$disco"1)"
  486.     fi
  487. elif [[ $? != "0" ]]
  488. then
  489.     funcion_ERROR "NO SE PUDO MONTAR PARTICION DE SISTEMA ("$disco"2)"
  490. fi
  491.  
  492.     #######################################
  493.     # COPIANDO Y EXTRAYENDO STAGE/PORTAGE #
  494.     #######################################
  495. LOGO
  496. echo -e "Copiando y extrayendo ficheros Stage y Portage, por favor espere...\n"
  497. barra_progreso 20
  498.  
  499. funcion_COPIAR /mnt/cdrom/stage3*.bz2 /mnt/gentoo
  500. funcion_COPIAR /mnt/cdrom/portage*.bz2 /mnt/gentoo
  501.  
  502. tar xjpf /mnt/gentoo/stage3*.bz2 -C /mnt/gentoo
  503. funcion_ERROR "Error: No se ha podido descomprimir el paquete STAGE"
  504.  
  505. tar xjf /mnt/gentoo/portage*.bz2 -C /mnt/gentoo/usr
  506. funcion_ERROR "Error: No se ha podido descomprimir el paquete PORTAGE"
  507.  
  508.     ################################
  509.     # MONTANDO CARPETAS DEV Y PROC #
  510.     ################################
  511. mount -t proc none /mnt/gentoo/proc
  512. funcion_ERROR "Error: No se ha podido montar la carpeta PROC"
  513.  
  514. mount --rbind /dev /mnt/gentoo/dev
  515. funcion_ERROR "Error: No se ha podido montar la carpeta DEV"
  516.  
  517.     ######################################
  518.     # COPIANDO FICHEROS DE CONFIGURACIÓN #
  519.     ######################################
  520.  
  521. #RESOLV.CONF
  522. funcion_COPIAR /etc/resolv.conf /mnt/gentoo/etc
  523.  
  524. #MAKE.CONF
  525. funcion_COPIAR /mnt/cdrom/make.conf /mnt/gentoo/etc/make.conf
  526.  
  527. echo VIDEO_CARDS=$T_GRAF >> /mnt/gentoo/etc/make.conf
  528. funcion_ERROR "Error: No se ha podido añadir tarjeta grafica al archivo MAKE.CONF"
  529.  
  530. #HOSTNAME
  531. echo "HOSTNAME=$hostname" > /mnt/gentoo/etc/conf.d/hostname
  532. funcion_ERROR "Error: No se ha podido configurar Hostname"
  533.  
  534. #02LOCALE
  535. funcion_COPIAR /mnt/cdrom/02locale /mnt/gentoo/etc/env.d/02locale
  536.  
  537. #KEYMAPS
  538. funcion_COPIAR /mnt/cdrom/keymaps /mnt/gentoo/etc/conf.d/keymaps
  539.  
  540. #CONSOLEFONT
  541. funcion_COPIAR /mnt/cdrom/consolefont /mnt/gentoo/etc/conf.d/consolefont
  542.  
  543. #CLOCK
  544. funcion_COPIAR /mnt/cdrom/hwclock /mnt/gentoo/etc/conf.d/hwclock
  545.  
  546. #NET
  547. #Configuracion no requerida.
  548.  
  549. #RC.CONF
  550. funcion_COPIAR /mnt/cdrom/rc.conf /mnt/gentoo/etc/
  551.  
  552. #KERNEL CONFIG
  553. funcion_COPIAR /mnt/cdrom/kernel-config /mnt/gentoo
  554.  
  555. #FICHEROS PORTAGE
  556. if [[ -z /mnt/gentoo/etc/portage ]]
  557. then
  558.     mkdir /mnt/gentoo/etc/portage
  559. fi
  560.  
  561. funcion_COPIAR /mnt/cdrom/package.use /mnt/gentoo/etc/portage
  562. funcion_COPIAR /mnt/cdrom/package.mask /mnt/gentoo/etc/portage
  563. funcion_COPIAR /mnt/cdrom/package.unmask /mnt/gentoo/etc/portage
  564.  
  565. #OTROS
  566. funcion_COPIAR /mnt/cdrom/software/libflashplayer.so /mnt/gentoo
  567. funcion_COPIAR /mnt/cdrom/config /mnt/gentoo
  568.  
  569. #SCRIPT INSTALACIÓN
  570. funcion_COPIAR /mnt/cdrom/autoinstall.sh /mnt/gentoo
  571.  
  572.     ############################################
  573.     # EXPORTANDO VARIABLES AL SIGUIENTE SCRIPT #
  574.     ############################################
  575. echo "Disco: $disco" > /mnt/gentoo/INFO
  576. echo "Nucleo: $nucleo" >> /mnt/gentoo/INFO
  577. echo "Tarjeta-Grafica: $T_GRAF" >> /mnt/gentoo/INFO
  578. echo "Pass-Root: $pass_root" >> /mnt/gentoo/INFO
  579. echo "Usuario: $usuario" >> /mnt/gentoo/INFO
  580. echo "Pass-User: $pass_user" >> /mnt/gentoo/INFO
  581. echo "Interfaz: $interfaz" >> /mnt/gentoo/INFO
  582.  
  583.     ########################
  584.     # ENTRANDO EN LA JAULA #
  585.     ########################
  586. chroot /mnt/gentoo/ sh autoinstall.sh entorno_chroot /bin/bash/
  587. }   #Cerrando funcion "install"
  588.  
  589. entorno_chroot() {
  590.  
  591. verif_conex #Verificando conexión dentro del entorno chroot.
  592.  
  593. ########################
  594. # IMPORTANDO VARIABLES #
  595. ########################
  596. disco=`cat /INFO | grep Disco | cut -d" " -f2`
  597. nucleo=`cat /INFO | grep Nucleo | cut -d" " -f2`
  598. T_GRAF=`cat /INFO | grep -o Tarjeta-Grafica`
  599. pass_root=`cat /INFO | grep Pass-Root | cut -d" " -f2`
  600. pass_user=`cat /INFO | grep Pass-User | cut -d" " -f2`
  601. usuario=`cat /INFO | grep Usuario | cut -d" " -f2`
  602. interfaz=`cat /INFO | grep Interfaz | cut -d" " -f2`
  603.  
  604. #####################################
  605. # ACTUALIZANDO VARIABLES DE ENTORNO #
  606. #####################################
  607. env-update && source /etc/profile
  608. export PS1="(CHROOT) $PS1"
  609.  
  610. #####################################
  611. # ACTUALIZANDO E INSTALANDO PORTAGE #
  612. #####################################
  613. emerge --sync
  614. eselect news --read #Leyendo noticias de Portage
  615.  
  616. LOGO
  617. echo -e "Instalando Portage, por favor espere...\n"
  618. barra_progreso 30
  619.  
  620. funcion_INSTALAR portage && etc-update
  621.  
  622. ###############################
  623. # SELECCION PERFIL DE SISTEMA #
  624. ###############################
  625. eselect profile set 3
  626.  
  627. ##################################
  628. # DESCARGAR E INSTALAR EL NÚCLEO #
  629. ##################################
  630. LOGO
  631. echo -e "Instalando el núcleo del sistema, por favor espere...\n"
  632. barra_progreso 35
  633.  
  634. funcion_INSTALAR sys-kernel/gentoo-sources
  635.  
  636. if [[ $nucleo = "genkernel" ]]
  637. then
  638.     funcion_INSTALAR sys-kernel/genkernel
  639.     genkernel all
  640.     funcion_ERROR "Error: Falló la compilación de GenKernel"
  641.     version_genkernel=`ls /boot/ | grep kernel-genkernel | cut -d"-" -f4,5,6`
  642. elif [[ $nucleo = "menu_config" ]]
  643. then
  644.     cd /usr/src/linux
  645.     make menuconfig
  646.     opc_kernel=0
  647.         until [[ $opc_kernel = "1" ]]
  648.         do
  649.             LOGO
  650.             echo "¿Ha terminado de configurar el nucleo?"
  651.             echo -e "1.Si, continuar        2.No, ejecutar de nuevo menu-config \n"
  652.             read opc_kernel
  653.             echo
  654.                 case $opc_kernel in
  655.                     1)  echo "Continuando con la instalacion..." && opc_kernel=1 ;;
  656.                     2)  make menuconfig ;;
  657.                     *)  echo "Opcion inválida, presione ENTER para continuar..."
  658.                         read
  659.                 esac
  660.             done
  661.  
  662. elif [[ $nucleo = "fichero_config" ]]
  663. then
  664.     cd /usr/src/linux
  665.     funcion_COPIAR /kernel-config /usr/src/linux/.config
  666. fi
  667.  
  668. if [[ $nucleo != "genkernel" ]]
  669. then
  670.     nice -n -20 make && nice -n -20 make modules_install
  671.     funcion_ERROR "Error: Falló la compilación del núcleo"
  672.     version_nucleo=`ls /usr/src/ | grep linux- | cut -d"-" -f2,4`
  673.     cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-$version_nucleo
  674.     funcion_ERROR "Error: Falló la copia del núcleo"
  675. fi
  676.  
  677. ####################
  678. # CONFIGURAR FSTAB #
  679. ####################
  680. UID_PART_BOOT=`ls -l /dev/disk/by-uuid/ | grep "$disco"1 | cut -d" " -f9`
  681. UID_PART_SYS=`ls -l /dev/disk/by-uuid/ | grep "$disco"2 | cut -d" " -f9`
  682. UID_PART_SWAP=`ls -l /dev/disk/by-uuid/ | grep "$disco"3 | cut -d" " -f9`
  683. echo "
  684. UUID=$UID_PART_BOOT /boot       ext2    defaults,noatime    1 2
  685. UUID=$UID_PART_SYS  /       ext4    noatime         0 1
  686. UUID=$UID_PART_SWAP none        swap    sw          0 0
  687. #/dev/cdrom     /mnt/cdrom  auto    noauto,user     0 0 [DESACTIVADO, ERROR AUTOMOUNT]
  688. proc            /proc       proc    defaults            0 0" > /etc/fstab
  689. funcion_ERROR "Error: No se ha podido copiar la tabla FSTAB"
  690.  
  691. #############################################
  692. # INSTALACION Y CONFIGURACION DE GRUB/MTAB: #
  693. #############################################
  694. LOGO
  695. echo -e "Instalando GRUB, por favor espere...\n"
  696. barra_progreso 40
  697.  
  698. funcion_INSTALAR grub
  699.     if [[ $? = "0" ]]
  700.     then
  701.         grep -v rootfs /proc/mounts > /etc/mtab
  702.         funcion_ERROR "Error: Error al crear tabla MTAB"
  703.  
  704.             ###############
  705.             # CONFIG GRUB #
  706.             ###############
  707.             PART_SYS="$disco"2
  708.             echo "
  709. #Título para arrancar por defecto.
  710. default 0
  711.  
  712. #Segundos de espera.
  713. timeout 05
  714.  
  715. #Imagen de inicio
  716. splashimage=(hd0,0)/boot/grub/splash.xpm.gz" > /boot/grub/grub.conf
  717.             funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
  718.  
  719.             if [[ $nucleo = "genkernel" ]]
  720.             then
  721.                 echo "
  722. #Nombre del núcleo para mostrar.
  723. title Gentoo Linux Genkernel $version_genkernel
  724.  
  725. #Partición donde se encuentra GenKernel.
  726. root (hd0,0)
  727. kernel /boot/kernel-genkernel-x86_64-$version_genkernel real_root=/dev/$PART_SYS
  728. initrd /boot/initramfs-genkernel-x86_64-$version_genkernel" >> /boot/grub/grub.conf
  729.             funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
  730.             elif [[ $nucleo != "genkernel" ]]
  731.             then
  732.                 echo "
  733. #Nombre del núcleo para mostrar.
  734. title=Gentoo Linux Kernel $version_nucleo
  735.  
  736. #Partición donde se encuentra la imagen del núcleo.
  737. root (hd0,0)
  738. kernel /boot/kernel-$version_nucleo root=/dev/$PART_SYS" >> /boot/grub/grub.conf
  739.                 funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
  740.             fi
  741.  
  742.             #SOPORTE GRUB WINDOWS
  743.             echo "
  744. #Soporte Windows
  745. title Microsoft Windows 7 Professional
  746. rootnoverify (hd0,4)
  747. chainloader +1" >> /boot/grub/grub.conf
  748.             funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
  749.  
  750.             grub-install --no-floppy --root-directory=/boot /dev/$disco
  751.             funcion_ERROR "Error: No se pudo instalar GRUB en el disco $disco"
  752.     fi
  753.  
  754. ###########################
  755. # APLICACIONES NECESARIAS #
  756. ###########################
  757. LOGO
  758. echo -e "Instalando aplicaciones necesarias para el sistema base, por favor espere...\n"
  759. barra_progreso 50
  760.  
  761. #Bitácora del sistema:
  762. funcion_INSTALAR syslog-ng && funcion_ADD_RC_UPDATE syslog-ng default
  763.  
  764. #Planificador:
  765. funcion_INSTALAR vixie-cron && funcion_ADD_RC_UPDATE vixie-cron default
  766.  
  767. #Otros:
  768. funcion_INSTALAR dhcpcd
  769. funcion_INSTALAR mlocate
  770.  
  771. funcion_INSTALAR sudo && echo "
  772. # Configuración del fichero SUDOERS
  773. Defaults    env_reset
  774.  
  775. # Especificación de privilegios del usuario
  776. root    ALL=(ALL) ALL
  777. $usuario    ALL=(ALL) ALL
  778.  
  779. %sudo ALL=(ALL) ALL
  780. $usuario    ALL=(ALL) ALL
  781.  
  782. # Miembros del grupo de administración que pueden obtener privilegios de root.
  783. %admin ALL=(ALL) ALL
  784. $usuario    ALL=(ALL) ALL" > /etc/sudoers
  785. funcion_ERROR "Error: No se ha podido escribir fichero de configuración SUDOERS"
  786.  
  787. #########################################
  788. # ESTABLECIENDO CONTRASEÑAS DE USUARIOS #
  789. #########################################
  790. passwd root << EOF
  791. $pass_root
  792. $pass_root
  793. EOF
  794.  
  795. useradd $usuario
  796. passwd $usuario << EOF
  797. $pass_user
  798. $pass_user
  799. EOF
  800.  
  801. ####################################
  802. # OTORGANDO PRIVILEGIOS AL USUARIO #    (Solución al problema de autentificación SU)
  803. ####################################
  804. usermod -G users,wheel $usuario
  805.  
  806. mkdir /home/$usuario
  807. funcion_ERROR "Error: No se ha podido crear carpeta de usuario para el usuario $usuario"
  808.  
  809. chmod -R 744 /home/$usuario
  810. funcion_ERROR "Error: No se ha podido cambiar permisos a /home/$usuario"
  811.  
  812. chown -R $usuario /home/$usuario
  813. funcion_ERROR "Error: No se ha podido cambiar propietario de /home/$usuario"
  814.  
  815.                 ##############
  816.                 ## HARDWARE ##
  817.                 ##############
  818. LOGO
  819. echo -e "Instalando soporte para hardware...\n"
  820. barra_progreso 60
  821.  
  822.             ############
  823.             # SENSORES #
  824.             ############
  825. #funcion_INSTALAR lm_sensors
  826.  
  827.         ####################
  828.         # SOPORTE WIRELESS #
  829.         ####################
  830. funcion_INSTALAR sys-firmware/iwl5000-ucode
  831.  
  832.         #####################
  833.         # SOPORTE BLUETOOTH #
  834.         #####################
  835. funcion_INSTALAR net-wireless/bluez && funcion_ADD_RC_UPDATE bluetooth default
  836. #&& funcion_INSTALAR net-wireless/bluez-firmware
  837.  
  838.         ##########
  839.         ## ALSA ##
  840.         ##########
  841. funcion_INSTALAR media-sound/alsa-utils
  842.         if [[ $? = "0" ]]
  843.         then
  844.             funcion_ADD_RC_UPDATE alsasound boot
  845.             funcion_GPASSWD root audio
  846.             funcion_GPASSWD $usuario audio
  847.         fi
  848.  
  849.                 ###########################     Soporte para instalación
  850.                 ## SOPORTE EN VIRTUALBOX ##     en VirtualBox.
  851.                 ###########################
  852. if [[ $T_GRAF = "virtualbox" ]]
  853. then
  854.     LOGO
  855.     echo -e "Instalando modulos para soporte en VirtualBox, por favor espere...\n"
  856.     barra_progreso 65
  857.  
  858.     funcion_INSTALAR virtualbox-modules && echo "
  859. modules=vboxdrv
  860. modules=vboxnetflt
  861. modules=vboxnetadp" >> /etc/conf.d/modules
  862.     funcion_ERROR "Error: No se han podido añadir módulos virtualbox a la lista de modulós arrancados al inicio"
  863.  
  864.     #GUEST-ADDITIONS
  865.     funcion_INSTALAR virtualbox-guest-additions
  866.         if [[ $? = "0" ]]
  867.         then
  868.             funcion_GPASSWD root vboxguest
  869.             funcion_GPASSWD $usuario vboxguest
  870.         fi
  871. fi
  872.                 ##########
  873.                 ## XORG ##
  874.                 ##########
  875. LOGO
  876. echo -e "Instalando Xorg...\n"
  877. barra_progreso 70
  878.  
  879. funcion_INSTALAR x11-base/xorg-drivers
  880. #funcion_INSTALAR x11-base/xorg-server      Es dependencia de xorg-drivers.
  881. env-update && source /etc/profile
  882.  
  883.                 ###########################
  884.                 ## ENTORNO GRAFICO: XFCE ##
  885.                 ###########################
  886. LOGO
  887. echo -e "Instalando entorno grafico (XFCE)...\n"
  888. barra_progreso 80
  889.  
  890. funcion_INSTALAR xfce-base/xfce4-meta
  891. funcion_INSTALAR  x11-misc/slim
  892.     echo "XSESSION=Xfce4" > /etc/env.d/90xsession
  893.     echo "DISPLAYMANAGER=slim"  > /etc/conf.d/xdm
  894. funcion_ADD_RC_UPDATE xdm default
  895.  
  896.     #OTORGANDO PERMISOS
  897.     for x in cdrom cdrw usb ; do gpasswd -a $usuario $x ; done
  898.     env-update && source /etc/profile
  899.  
  900.     #EXTRAS XFCE
  901.     funcion_INSTALAR x11-terms/xfce4-terminal
  902.     funcion_INSTALAR xfce-extra/xfce4-power-manager
  903.     funcion_INSTALAR xfce-extra/xfce4-battery-plugin
  904.     funcion_INSTALAR xfce-extra/thunar-volman           #Gestor soporte extraible
  905.     funcion_INSTALAR xfce-extra/xfce4-mixer             #Control sonido
  906.     funcion_INSTALAR sci-calculators/galculator         #Calculadora
  907.     funcion_INSTALAR media-gfx/ristretto                #Visor de imágenes
  908.  
  909.     #GESTOR DE RED
  910.     #funcion_INSTALAR net-misc/networkmanager && funcion_ADD_RC_UPDATE NetworkManager default
  911.     funcion_INSTALAR net-misc/wicd && funcion_ADD_RC_UPDATE wicd boot
  912.  
  913.                 ##############
  914.                 ## SOFTWARE ##
  915.                 ##############
  916. LOGO
  917. echo -e "Instalando software del sistema...\n"
  918. barra_progreso 90
  919.  
  920. ##############
  921. # ACCESORIOS #
  922. ##############
  923. funcion_INSTALAR app-editors/gedit
  924. funcion_INSTALAR dev-util/geany
  925. funcion_INSTALAR dev-util/meld
  926. funcion_INSTALAR app-text/evince            #Visor PDF
  927. funcion_INSTALAR x11-misc/lxmed             #Editor Menu
  928. funcion_INSTALAR app-office/orage           #Calendario
  929.  
  930. funcion_INSTALAR app-admin/conky #&& funcion_COPIAR /config/conky-config /etc/conky/conky.conf
  931. #echo "sleep 15 && conky -d" >> /etc/init.d/start-conky.sh
  932.  
  933. #####################
  934. # SCANNERS/SNIFFERS #
  935. #####################
  936. funcion_INSTALAR net-analyzer/nmap
  937. funcion_INSTALAR net-analyzer/wireshark
  938. funcion_INSTALAR net-analyzer/ettercap
  939. funcion_INSTALAR net-analyzer/dsniff
  940. funcion_INSTALAR net-wireless/aircrack-ng
  941.  
  942. ##################
  943. # VIRTUALIZACIÓN #
  944. ##################
  945.  
  946. #VIRTUALBOX
  947. funcion_INSTALAR app-emulation/virtualbox && funcion_GPASSWD $usuario vboxusers
  948.  
  949. ############
  950. # INTERNET #
  951. ############
  952. funcion_INSTALAR net-ftp/filezilla
  953.  
  954. #CHROME
  955. funcion_INSTALAR www-client/google-chrome
  956.     if [[ $? = "0" ]]
  957.     then
  958.         echo "" >> /dev/null
  959.     elif [[ -z /opt/google/chrome/plugins ]]
  960.     then
  961.         funcion_COPIAR /libflashplayer.so  /opt/google/chrome/plugins
  962.     elif [[ ! -z /opt/google/chrome/plugins ]]
  963.     then
  964.         mkdir /opt/google/chrome/plugins
  965.         funcion_COPIAR /libflashplayer.so /opt/google/chrome/plugins
  966.     fi
  967.  
  968. #FIREFOX
  969. funcion_INSTALAR www-client/firefox
  970.     if [[ $? = "0" ]]
  971.     then
  972.         echo "" >> /dev/null
  973.     elif [[ -z /usr/lib64/firefox/plugins ]]
  974.     then
  975.         cp /libflashplayer.so  /usr/lib64/firefox/plugins
  976.     elif [[ ! -z /usr/lib64/firefox/plugins ]]
  977.     then
  978.         mkdir /usr/lib64/firefox/plugins
  979.         cp /libflashplayer.so /usr/lib64/firefox/plugins
  980.     fi
  981.  
  982. ############
  983. # GRÁFICOS #
  984. ############
  985. funcion_INSTALAR media-gfx/gimp
  986.  
  987. ################
  988. # SONIDO/VIDEO #
  989. ################
  990. funcion_INSTALAR media-video/vlc
  991. funcion_INSTALAR media-video/cheese
  992.  
  993. #############
  994. # OFIMÁTICA #
  995. #############
  996. funcion_INSTALAR app-office/openoffice-bin
  997.  
  998. ########################
  999. # HERRAMIENTAS SISTEMA #
  1000. ########################
  1001. funcion_INSTALAR sys-fs/ntfs3g              #Soporte NTFS
  1002. funcion_INSTALAR app-portage/layman         #Gestor Gentoo-Overlays
  1003. #funcion_INSTALAR virtual/jre               #Java
  1004. funcion_INSTALAR app-portage/gentoolkit
  1005. funcion_INSTALAR sys-boot/unetbootin
  1006.  
  1007. #Descompresor e integración con thunar
  1008. funcion_INSTALAR app-arch/file-roller && funcion_INSTALAR xfce-extra/thunar-archive-plugin
  1009.  
  1010.             #############################
  1011.             ## FINALIZANDO INSTALACIÓN ##
  1012.             #############################
  1013.  
  1014. #################################
  1015. # LIMPIANDO ARCHIVOS TEMPORALES #
  1016. #################################
  1017. rm -R /stage3*.bz2
  1018. rm -R /portage*.bz2
  1019. rm -R /kernel-config
  1020. rm -R /autoinstall.sh
  1021. rm -R /config
  1022. rm -R /INFO
  1023.  
  1024. LOGO
  1025. echo -e "Finalizando instalación del sistema...\n"
  1026. barra_progreso 100
  1027.  
  1028. echo "Felicidades! La instalación se ha completado con éxito.
  1029. Ahora tiene un sistema operativo completamente funcional, que lo disfrute.
  1030. Presione INTRO para reiniciar el equipo y completar la instalación."
  1031. read
  1032. reboot
  1033. }   #Cerrando funcion "entorno_chroot"
  1034.  
  1035. #SALTO HACIA ENTORNO CHROOT
  1036. if [[ -z $1 ]]
  1037. then
  1038.     install             #Invocando a la función install.
  1039. elif [[ $1 = "entorno_chroot" ]]
  1040. then
  1041.     entorno_chroot          #Invocando a la función entorno_chroot.
  1042. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement