Advertisement
darkaht

autoinstall.sh (v1.0)

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