Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #autoinstall.sh (v1.1)
- LOGO() {
- clear && echo -e "\e[1;32m
- ## ### ### ### # # # # # ### # ### ### ## ### # # #
- # # # # # # # # # # # # # # # # # # # # # # # # #
- # # ## # # # # # # # ### # # # # # # # # # # ### # #
- # # # # # # # # # # # # # # # # # # # # # # # # # #
- ## ### # # # # # # # ### # # ### # # ## # # # ### ### \n
- [By DaRkaHT] \n\e[0m"
- }
- #############
- # FUNCIONES #
- #############
- barra_progreso() {
- PROGRESO=`expr $1 / 2`
- ESPACIO=`expr 100 - $1`
- ESPACIO_REAL=`expr $ESPACIO / 2`
- echo -n "[" #Principio de la barra.
- for aa in `seq 1 $PROGRESO`; do
- echo -n "=" #Progreso con símbolo "=".
- done
- echo -n ">" #Punta de la barra.
- for bb in `seq 1 $ESPACIO_REAL`; do
- echo -n " " #Zona en blanco hasta llegar a 100%.
- done
- echo -ne "] $1% \n \n" #Final de la barra y porcentaje de progreso.
- }
- funcion_ERROR() {
- if [[ $? != "0" ]]
- then
- if [[ ! -z /ERRORES ]]
- then
- echo "$1" >> /ERRORES
- fi
- LOGO
- echo -e "$1, tendrá que solucionarlo manualmente."
- echo "1) Continuar, se ha solventado el error manualmente."
- echo "2) Abortar instalación."
- read opc_error
- while :
- do
- case $opc_error in
- 1) echo -e "\n Continuando con la instalación del sistema..." && break ;;
- 2) echo -e "\n Abortando instalación..." && exit ;;
- *) echo "Opción inválida."
- read opc_error
- esac
- done
- fi
- }
- funcion_COPIAR() {
- cp -Rf $1 $2
- funcion_ERROR "Error: No se ha podido copiar fichero $1"
- }
- funcion_INSTALAR() {
- nice -n -20 emerge $1 --quiet
- funcion_ERROR "Error: No se pudo instalar $1"
- }
- funcion_ADD_RC_UPDATE() {
- rc-update add $1 $2
- funcion_ERROR "Error: No se pudo añadir $1 al inicio"
- }
- funcion_GPASSWD() {
- gpasswd -a $1 $2
- funcion_ERROR "Error: No se ha podido añadir usuario $1 a la lista de usuarios con permiso de $2"
- }
- verif_conex() {
- ping -c2 google.es
- funcion_ERROR "Error: Falló la conexión a internet"
- }
- install() {
- ##################### Módulos necesarios para el correcto funcionamiento del livecd.
- # CARGANDO MÓDULOS # Cada usuario debe cargar los necesarios para su hardware.
- #####################
- modprobe broadcom
- modprobe tg3
- update-modules
- #######################
- # OBTENIENDO CONEXION #
- #######################
- LOGO
- echo -e "Iniciando instalación...\n"
- barra_progreso 0
- echo -e "¿Con que interfaz desea conectarse a la red? \n"
- SELEC_INTERFAZ=`ifconfig -a | grep -v "lo" | grep -v "sit*" | cut -d" " -f1 | cut -d":" -f1`
- select opt in $SELEC_INTERFAZ
- do
- if [[ -z $opt ]]
- then
- echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
- else
- interfaz=$opt
- break
- fi
- done
- ifconfig $interfaz up
- dhcpcd -k $interfaz --quiet
- if [[ $interfaz = wlan* ]]
- then
- echo
- echo -e "Detectada interfaz de red inalámbrica, escaneando redes wireless... \n"
- echo -e "ATENCIÓN: Si desea conectarse inalámbricamente, solo podrá conectar a redes con seguridad WEP. \n"
- SCAN_WIFI=`iwlist $interfaz scanning | grep "ESSID" | cut -d":" -f2`
- if [[ -z SCAN_WIFI ]]
- then
- echo -e "No se han encontrado redes wireless disponibles, presione INTRO para continuar...\n"
- read
- else
- select opt in $SCAN_WIFI
- do
- if [[ -z $opt ]]
- then
- echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
- else
- ESSID=$opt
- while [[ -z $clave_red ]]
- do
- echo
- echo "Introduzca contraseña para red $opt"
- read clave_red
- done
- iwconfig $interfaz essid "$ESSID" key "s:$clave_red"
- fi
- done
- fi
- fi
- echo
- dhcpcd $interfaz
- verif_conex #Verificando conexión.
- #########################################
- ## RECOPILANDO INFORMACIÓN DEL SISTEMA ##
- #########################################
- ########################
- # SELECCIONANDO KEYMAP #
- ########################
- loadkeys es --quiet
- ################################
- # DISCO Y TABLA DE PARTICIONES #
- ################################
- form_DISCO_PARTS() {
- unset disco fin_sys #fin_boot
- while [[ -z $disco ]]
- do
- LOGO
- echo -e "Especifique en que disco desea instalar el sistema: \n"
- SELEC_HD=`fdisk -l 2> /dev/null | grep -v identifier | grep "Disk" | cut -d"/" -f3 | cut -d":" -f1`
- select opt in $SELEC_HD
- do
- if [[ -z $opt ]]
- then
- echo -e "Opción inválida. Seleccióne una de las opciónes disponibles en la lista. \n"
- else
- disco=$opt
- break
- fi
- done
- done
- LOGO
- echo -e "¿Desea iniciar el asistente de particionamiento del disco ($disco)? \n 1) Si, particionar disco. \n 2) No, el disco está correctamente particionado."
- read menu_part
- case $menu_part in
- 1) while [[ -z $fin_boot ]]
- do
- ini_boot=1
- #echo
- #echo "¿Tamaño partición BOOT (en MB)?"
- #read fin_boot
- fin_boot=40
- fin_boot_MB=`echo -n "+$fin_boot"; echo "M"`
- done
- while [[ -z $fin_sys ]]
- do
- ini_sys=" "
- echo
- echo "¿Tamaño partición de sistema (en MB)?"
- read fin_sys
- fin_sys_MB=`echo -n "+$fin_sys"; echo "M"`
- done
- ini_swap=" "
- echo
- echo "¿Tamaño partición SWAP (en MB)?"
- read fin_swap
- fin_swap_MB=`echo -n "+$fin_swap"; echo "M"` ;;
- 2) particionado=no ;;
- *) echo "Opcion inválida, presione ENTER para continuar..."
- read
- esac
- }
- form_DISCO_PARTS #Invocando a la función.
- ##########################
- # CONFIGURACIÓN HOSTNAME #
- ##########################
- form_CONF_HOSTNAME() {
- unset hostname
- LOGO
- while [[ -z $hostname ]]
- do
- echo "Introduzca el nombre que se le asignara al equipo (HostName):"
- read hostname
- done
- }
- form_CONF_HOSTNAME #Invocando a la función.
- ###########################################
- # CONFIGURACIÓN DE USUARIOS Y CONTRASEÑAS #
- ###########################################
- ########
- # ROOT #
- ########
- form_PASS_ROOT() {
- unset pass_root conf_pass_root
- while [[ -z $pass_root || -z $conf_pass_root ]] || [[ -z $pass_root && -z $conf_pass_root ]] || [[ $pass_root != $conf_pass_root ]]
- do
- LOGO
- echo "Por favor, introduzca la contraseña que desea usar para el administrador del sistema (ROOT):"
- read pass_root
- echo
- echo "Por favor, repita la contraseña para el administrador del sistema:"
- read conf_pass_root
- if [[ $conf_pass_root != $pass_root ]]
- then
- echo
- echo "Error: La contraseña no coincide con la confirmación, pulse ENTER para continuar..."
- read
- fi
- done
- }
- form_PASS_ROOT #Invocando a la función.
- ##############
- # 1º USUARIO #
- ##############
- form_PASS_USUARIO() {
- unset usuario pass_user conf_pass_user
- while [[ -z $usuario ]] || [[ -z $pass_user || -z $conf_pass_user ]] || [[ -z $pass_user && -z $conf_pass_user ]] || [[ $pass_user != $conf_pass_user ]]
- do
- LOGO
- echo "Introduzca el nombre que desee usar para el primer usuario:"
- read usuario
- echo
- echo "Introduzca una contraseña para el primer usuario ($usuario):"
- read pass_user
- echo
- echo "Por favor, confirme la contraseña:"
- read conf_pass_user
- if [[ $conf_pass_user != $pass_user ]]
- then
- echo
- echo "Error: La contraseña no coincide con la confirmación, pulse ENTER para continuar..."
- read
- fi
- done
- }
- form_PASS_USUARIO #Invocando a la función.
- #######################
- # OPCIONES DEL NÚCLEO #
- #######################
- opciones_kernel() {
- unset nucleo
- while [[ -z $nucleo ]]
- do
- LOGO
- echo -e "¿Qué tipo de núcleo desea usar? \n"
- echo "1. Kernel Personalizado"
- echo -e "2. GenKernel \n"
- read menu_nucleo
- echo
- case $menu_nucleo in
- 1) nucleo=personalizado ;;
- 2) nucleo=genkernel ;;
- *) echo "Opcion inválida, presione ENTER para continuar..."
- read
- esac
- done
- while [[ $nucleo = "personalizado" ]]
- do
- LOGO
- echo -e "¿Como desea configurar el nucleo? \n"
- echo "1.Ejecutar menu config"
- echo -e "2.Cargar fichero .config \n"
- read menu_nucleo
- echo
- case $menu_nucleo in
- 1) nucleo=menu_config ;;
- 2) nucleo=fichero_config ;;
- *) echo "Opcion inválida, presione ENTER para continuar..."
- read
- esac
- done
- }
- opciones_kernel #Invocando a la función.
- ###############################
- # INFORMACIÓN TARJETA GRÁFICA #
- ###############################
- info_tar_graf() {
- unset T_GRAF
- T_GRAF_ATI=`lspci | grep VGA | grep -o Ati`
- T_GRAF_NVIDIA=`lspci | grep VGA | grep -o nVidia`
- T_GRAF_INTEL=`lspci | grep VGA | grep -o Intel`
- T_GRAF_VBOX=`lspci | grep VGA | grep -o VirtualBox`
- if [[ $T_GRAF_ATI = "Ati" ]]
- then
- T_GRAF=radeon
- elif [[ $T_GRAF_NVIDIA = "nVidia" ]]
- then
- T_GRAF=nouveau
- elif [[ $T_GRAF_INTEL = "Intel" ]]
- then
- T_GRAF=intel
- elif [[ $T_GRAF_VBOX = "VirtualBox" ]]
- then
- T_GRAF=virtualbox
- fi
- while [[ -z $T_GRAF ]]
- do
- LOGO
- echo -e "No se ha detectado ninguna tarjeta gráfica Ati/Nvidia/Intel/VirtualBox en su equipo,
- por favor, introduzca manualmente el nombre de su tarjeta gráfica: \n"
- read T_GRAF
- done
- }
- info_tar_graf #Invocando a la función.
- ###########################
- # DIÁLOGO DE CONFIRMACIÓN #
- ###########################
- while :
- do
- LOGO
- echo -e "Finalizando asistente...\n"
- barra_progreso 10
- echo -e "¿Esta seguro de querer usar la siguiente configuración en su sistema? \n
- HostName: $hostname
- Usuario: $usuario
- Pass Usuario: $pass_user
- Pass Root: $pass_root
- Disco: $disco
- Tamaño Particion BOOT: $fin_boot MB (Recomendado)
- Tamaño Particion del sistema: $fin_sys MB
- Tamaño Particion SWAP: $fin_swap MB
- Nucleo: $nucleo
- Tarjeta Gráfica: $T_GRAF \n
- 1. Si, continuar la instalación.\n
- 2. Cambiar HostName.
- 3. Cambiar contraseña de administrador del sistema (root).
- 4. Cambiar preferencias del primer usuario del sistema.
- 5. Cambiar preferencias del disco y las particiones del sistema.
- 6. Cambiar opciones del núcleo.
- 7. Cambiar opciones de tarjeta gráfica (detección automática).\n"
- read opcion_infosys
- case $opcion_infosys in
- 1) echo -e "\n Continuando la instalación..."
- break ;;
- 2) form_CONF_HOSTNAME ;;
- 3) form_PASS_ROOT ;;
- 4) form_PASS_USUARIO ;;
- 5) form_DISCO_PARTS ;;
- 6) opciones_kernel ;;
- 7) info_tar_graf ;;
- *) echo "Opcion inválida, presione una tecla para continuar..."
- read
- esac
- done
- ################################
- ## INSTALANDO EL SISTEMA BASE ##
- ################################
- ####################################
- # ESCRIBIENDO PARTICIONES EN DISCO #
- ####################################
- PARTICIONES() {
- fdisk /dev/$disco << EOF
- #PARTICIÓN BOOT:
- n
- p
- 1
- $ini_boot
- $fin_boot_MB
- #PARTICIÓN DEL SISTEMA:
- n
- p
- 2
- $ini_sys
- $fin_sys_MB
- #PARTICIÓN SWAP:
- n
- p
- 3
- $ini_swap
- $fin_swap_MB
- #ESTABLECIENDO PARTICIÓN BOOT COMO BOOTEABLE:
- a
- 1
- #ESTABLECIENDO PARTICIÓN SWAP:
- t
- 3
- 82
- #GUARDAR CAMBIOS:
- w
- EOF
- }
- if [[ $particionado != "no" ]]
- then
- PARTICIONES #Invocando a la función.
- funcion_ERROR "Error: No se han podido escribir las particiones en el disco"
- fi
- ########################### "sleep" necesario para dar tiempo
- # FORMATEO DE PARTICIONES # a terminar de escribir particiones
- ########################### en el disco. Sino, no funciona.
- sleep 03
- mke2fs -t ext2 /dev/"$disco"1 #Format part BOOT.
- if [[ $? = "0" ]]
- then
- sleep 03
- mke2fs -t ext4 /dev/"$disco"2 #Format part SISTEMA.
- if [[ $? = "0" ]]
- then
- sleep 03
- mkswap /dev/"$disco"3 #Format part SWAP.
- if [[ $? != "0" ]]
- then
- funcion_ERROR "No se pudo dar formato a la partición de intercambio SWAP ("$disco"3)"
- fi
- elif [[ $? != "0" ]]
- then
- funcion_ERROR "No se pudo dar formato a la partición de sistema ("$disco"2)"
- fi
- elif [[ $? != "0" ]]
- then
- funcion_ERROR "No se pudo dar formato a partición BOOT ("$disco"1)"
- fi
- ##########################
- # MONTAJE DE PARTICIONES #
- ##########################
- mount /dev/"$disco"2 /mnt/gentoo #MONTANDO PARTICION SISTEMA.
- if [[ $? = "0" ]]
- then
- mkdir /mnt/gentoo/boot #CREANDO PUNTO DE MONTAJE PARTICION BOOT.
- mount /dev/"$disco"1 /mnt/gentoo/boot #MONTANDO PARTICION BOOT.
- if [[ $? = "0" ]]
- then
- mkswap /dev/"$disco"3 #ACTIVANDO PARTICION SWAP.
- if [[ $? != "0" ]]
- then
- funcion_ERROR "NO SE ACTIVAR PARTICION DE INTERCAMBIO SWAP ("$disco"1)"
- fi
- elif [[ $? != "0" ]]
- then
- funcion_ERROR "NO SE PUDO MONTAR PARTICION BOOT ("$disco"1)"
- fi
- elif [[ $? != "0" ]]
- then
- funcion_ERROR "NO SE PUDO MONTAR PARTICION DE SISTEMA ("$disco"2)"
- fi
- #######################################
- # COPIANDO Y EXTRAYENDO STAGE/PORTAGE #
- #######################################
- LOGO
- echo -e "Copiando y extrayendo ficheros Stage y Portage, por favor espere...\n"
- barra_progreso 20
- funcion_COPIAR /mnt/cdrom/stage3*.bz2 /mnt/gentoo
- funcion_COPIAR /mnt/cdrom/portage*.bz2 /mnt/gentoo
- tar xjpf /mnt/gentoo/stage3*.bz2 -C /mnt/gentoo
- funcion_ERROR "Error: No se ha podido descomprimir el paquete STAGE"
- tar xjf /mnt/gentoo/portage*.bz2 -C /mnt/gentoo/usr
- funcion_ERROR "Error: No se ha podido descomprimir el paquete PORTAGE"
- ################################
- # MONTANDO CARPETAS DEV Y PROC #
- ################################
- mount -t proc none /mnt/gentoo/proc
- funcion_ERROR "Error: No se ha podido montar la carpeta PROC"
- mount --rbind /dev /mnt/gentoo/dev
- funcion_ERROR "Error: No se ha podido montar la carpeta DEV"
- ######################################
- # COPIANDO FICHEROS DE CONFIGURACIÓN #
- ######################################
- #RESOLV.CONF
- funcion_COPIAR /etc/resolv.conf /mnt/gentoo/etc
- #MAKE.CONF
- funcion_COPIAR /mnt/cdrom/make.conf /mnt/gentoo/etc/make.conf
- echo VIDEO_CARDS=$T_GRAF >> /mnt/gentoo/etc/make.conf
- funcion_ERROR "Error: No se ha podido añadir tarjeta grafica al archivo MAKE.CONF"
- #HOSTNAME
- echo "HOSTNAME=$hostname" > /mnt/gentoo/etc/conf.d/hostname
- funcion_ERROR "Error: No se ha podido configurar Hostname"
- #02LOCALE
- funcion_COPIAR /mnt/cdrom/02locale /mnt/gentoo/etc/env.d/02locale
- #KEYMAPS
- funcion_COPIAR /mnt/cdrom/keymaps /mnt/gentoo/etc/conf.d/keymaps
- #CONSOLEFONT
- funcion_COPIAR /mnt/cdrom/consolefont /mnt/gentoo/etc/conf.d/consolefont
- #CLOCK
- funcion_COPIAR /mnt/cdrom/hwclock /mnt/gentoo/etc/conf.d/hwclock
- #NET
- #Configuracion no requerida.
- #RC.CONF
- funcion_COPIAR /mnt/cdrom/rc.conf /mnt/gentoo/etc/
- #KERNEL CONFIG
- funcion_COPIAR /mnt/cdrom/kernel-config /mnt/gentoo
- #FICHEROS PORTAGE
- if [[ -z /mnt/gentoo/etc/portage ]]
- then
- mkdir /mnt/gentoo/etc/portage
- fi
- funcion_COPIAR /mnt/cdrom/package.use /mnt/gentoo/etc/portage
- funcion_COPIAR /mnt/cdrom/package.mask /mnt/gentoo/etc/portage
- funcion_COPIAR /mnt/cdrom/package.unmask /mnt/gentoo/etc/portage
- #OTROS
- funcion_COPIAR /mnt/cdrom/software/libflashplayer.so /mnt/gentoo
- funcion_COPIAR /mnt/cdrom/config /mnt/gentoo
- #SCRIPT INSTALACIÓN
- funcion_COPIAR /mnt/cdrom/autoinstall.sh /mnt/gentoo
- ############################################
- # EXPORTANDO VARIABLES AL SIGUIENTE SCRIPT #
- ############################################
- echo "Disco: $disco" > /mnt/gentoo/INFO
- echo "Nucleo: $nucleo" >> /mnt/gentoo/INFO
- echo "Tarjeta-Grafica: $T_GRAF" >> /mnt/gentoo/INFO
- echo "Pass-Root: $pass_root" >> /mnt/gentoo/INFO
- echo "Usuario: $usuario" >> /mnt/gentoo/INFO
- echo "Pass-User: $pass_user" >> /mnt/gentoo/INFO
- echo "Interfaz: $interfaz" >> /mnt/gentoo/INFO
- ########################
- # ENTRANDO EN LA JAULA #
- ########################
- chroot /mnt/gentoo/ sh autoinstall.sh entorno_chroot /bin/bash/
- } #Cerrando funcion "install"
- entorno_chroot() {
- verif_conex #Verificando conexión dentro del entorno chroot.
- ########################
- # IMPORTANDO VARIABLES #
- ########################
- disco=`cat /INFO | grep Disco | cut -d" " -f2`
- nucleo=`cat /INFO | grep Nucleo | cut -d" " -f2`
- T_GRAF=`cat /INFO | grep -o Tarjeta-Grafica`
- pass_root=`cat /INFO | grep Pass-Root | cut -d" " -f2`
- pass_user=`cat /INFO | grep Pass-User | cut -d" " -f2`
- usuario=`cat /INFO | grep Usuario | cut -d" " -f2`
- interfaz=`cat /INFO | grep Interfaz | cut -d" " -f2`
- #####################################
- # ACTUALIZANDO VARIABLES DE ENTORNO #
- #####################################
- env-update && source /etc/profile
- export PS1="(CHROOT) $PS1"
- #####################################
- # ACTUALIZANDO E INSTALANDO PORTAGE #
- #####################################
- emerge --sync
- eselect news --read #Leyendo noticias de Portage
- LOGO
- echo -e "Instalando Portage, por favor espere...\n"
- barra_progreso 30
- funcion_INSTALAR portage && etc-update
- ###############################
- # SELECCION PERFIL DE SISTEMA #
- ###############################
- eselect profile set 3
- ##################################
- # DESCARGAR E INSTALAR EL NÚCLEO #
- ##################################
- LOGO
- echo -e "Instalando el núcleo del sistema, por favor espere...\n"
- barra_progreso 35
- funcion_INSTALAR sys-kernel/gentoo-sources
- if [[ $nucleo = "genkernel" ]]
- then
- funcion_INSTALAR sys-kernel/genkernel
- genkernel all
- funcion_ERROR "Error: Falló la compilación de GenKernel"
- version_genkernel=`ls /boot/ | grep kernel-genkernel | cut -d"-" -f4,5,6`
- elif [[ $nucleo = "menu_config" ]]
- then
- cd /usr/src/linux
- make menuconfig
- opc_kernel=0
- until [[ $opc_kernel = "1" ]]
- do
- LOGO
- echo "¿Ha terminado de configurar el nucleo?"
- echo -e "1.Si, continuar 2.No, ejecutar de nuevo menu-config \n"
- read opc_kernel
- echo
- case $opc_kernel in
- 1) echo "Continuando con la instalacion..." && opc_kernel=1 ;;
- 2) make menuconfig ;;
- *) echo "Opcion inválida, presione ENTER para continuar..."
- read
- esac
- done
- elif [[ $nucleo = "fichero_config" ]]
- then
- cd /usr/src/linux
- funcion_COPIAR /kernel-config /usr/src/linux/.config
- fi
- if [[ $nucleo != "genkernel" ]]
- then
- nice -n -20 make && nice -n -20 make modules_install
- funcion_ERROR "Error: Falló la compilación del núcleo"
- version_nucleo=`ls /usr/src/ | grep linux- | cut -d"-" -f2,4`
- cp /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-$version_nucleo
- funcion_ERROR "Error: Falló la copia del núcleo"
- fi
- ####################
- # CONFIGURAR FSTAB #
- ####################
- UID_PART_BOOT=`ls -l /dev/disk/by-uuid/ | grep "$disco"1 | cut -d" " -f9`
- UID_PART_SYS=`ls -l /dev/disk/by-uuid/ | grep "$disco"2 | cut -d" " -f9`
- UID_PART_SWAP=`ls -l /dev/disk/by-uuid/ | grep "$disco"3 | cut -d" " -f9`
- echo "
- UUID=$UID_PART_BOOT /boot ext2 defaults,noatime 1 2
- UUID=$UID_PART_SYS / ext4 noatime 0 1
- UUID=$UID_PART_SWAP none swap sw 0 0
- #/dev/cdrom /mnt/cdrom auto noauto,user 0 0 [DESACTIVADO, ERROR AUTOMOUNT]
- proc /proc proc defaults 0 0" > /etc/fstab
- funcion_ERROR "Error: No se ha podido copiar la tabla FSTAB"
- #############################################
- # INSTALACION Y CONFIGURACION DE GRUB/MTAB: #
- #############################################
- LOGO
- echo -e "Instalando GRUB, por favor espere...\n"
- barra_progreso 40
- funcion_INSTALAR grub
- if [[ $? = "0" ]]
- then
- grep -v rootfs /proc/mounts > /etc/mtab
- funcion_ERROR "Error: Error al crear tabla MTAB"
- ###############
- # CONFIG GRUB #
- ###############
- PART_SYS="$disco"2
- echo "
- #Título para arrancar por defecto.
- default 0
- #Segundos de espera.
- timeout 05
- #Imagen de inicio
- splashimage=(hd0,0)/boot/grub/splash.xpm.gz" > /boot/grub/grub.conf
- funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
- if [[ $nucleo = "genkernel" ]]
- then
- echo "
- #Nombre del núcleo para mostrar.
- title Gentoo Linux Genkernel $version_genkernel
- #Partición donde se encuentra GenKernel.
- root (hd0,0)
- kernel /boot/kernel-genkernel-x86_64-$version_genkernel real_root=/dev/$PART_SYS
- initrd /boot/initramfs-genkernel-x86_64-$version_genkernel" >> /boot/grub/grub.conf
- funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
- elif [[ $nucleo != "genkernel" ]]
- then
- echo "
- #Nombre del núcleo para mostrar.
- title=Gentoo Linux Kernel $version_nucleo
- #Partición donde se encuentra la imagen del núcleo.
- root (hd0,0)
- kernel /boot/kernel-$version_nucleo root=/dev/$PART_SYS" >> /boot/grub/grub.conf
- funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
- fi
- #SOPORTE GRUB WINDOWS
- echo "
- #Soporte Windows
- title Microsoft Windows 7 Professional
- rootnoverify (hd0,4)
- chainloader +1" >> /boot/grub/grub.conf
- funcion_ERROR "Error: No se ha podido escribir en fichero grub.conf"
- grub-install --no-floppy --root-directory=/boot /dev/$disco
- funcion_ERROR "Error: No se pudo instalar GRUB en el disco $disco"
- fi
- ###########################
- # APLICACIONES NECESARIAS #
- ###########################
- LOGO
- echo -e "Instalando aplicaciones necesarias para el sistema base, por favor espere...\n"
- barra_progreso 50
- #Bitácora del sistema:
- funcion_INSTALAR syslog-ng && funcion_ADD_RC_UPDATE syslog-ng default
- #Planificador:
- funcion_INSTALAR vixie-cron && funcion_ADD_RC_UPDATE vixie-cron default
- #Otros:
- funcion_INSTALAR dhcpcd
- funcion_INSTALAR mlocate
- funcion_INSTALAR sudo && echo "
- # Configuración del fichero SUDOERS
- Defaults env_reset
- # Especificación de privilegios del usuario
- root ALL=(ALL) ALL
- $usuario ALL=(ALL) ALL
- %sudo ALL=(ALL) ALL
- $usuario ALL=(ALL) ALL
- # Miembros del grupo de administración que pueden obtener privilegios de root.
- %admin ALL=(ALL) ALL
- $usuario ALL=(ALL) ALL" > /etc/sudoers
- funcion_ERROR "Error: No se ha podido escribir fichero de configuración SUDOERS"
- #########################################
- # ESTABLECIENDO CONTRASEÑAS DE USUARIOS #
- #########################################
- passwd root << EOF
- $pass_root
- $pass_root
- EOF
- useradd $usuario
- passwd $usuario << EOF
- $pass_user
- $pass_user
- EOF
- ####################################
- # OTORGANDO PRIVILEGIOS AL USUARIO # (Solución al problema de autentificación SU)
- ####################################
- usermod -G users,wheel $usuario
- mkdir /home/$usuario
- funcion_ERROR "Error: No se ha podido crear carpeta de usuario para el usuario $usuario"
- chmod -R 744 /home/$usuario
- funcion_ERROR "Error: No se ha podido cambiar permisos a /home/$usuario"
- chown -R $usuario /home/$usuario
- funcion_ERROR "Error: No se ha podido cambiar propietario de /home/$usuario"
- ##############
- ## HARDWARE ##
- ##############
- LOGO
- echo -e "Instalando soporte para hardware...\n"
- barra_progreso 60
- ############
- # SENSORES #
- ############
- #funcion_INSTALAR lm_sensors
- ####################
- # SOPORTE WIRELESS #
- ####################
- funcion_INSTALAR sys-firmware/iwl5000-ucode
- #####################
- # SOPORTE BLUETOOTH #
- #####################
- funcion_INSTALAR net-wireless/bluez && funcion_ADD_RC_UPDATE bluetooth default
- #&& funcion_INSTALAR net-wireless/bluez-firmware
- ##########
- ## ALSA ##
- ##########
- funcion_INSTALAR media-sound/alsa-utils
- if [[ $? = "0" ]]
- then
- funcion_ADD_RC_UPDATE alsasound boot
- funcion_GPASSWD root audio
- funcion_GPASSWD $usuario audio
- fi
- ########################### Soporte para instalación
- ## SOPORTE EN VIRTUALBOX ## en VirtualBox.
- ###########################
- if [[ $T_GRAF = "virtualbox" ]]
- then
- LOGO
- echo -e "Instalando modulos para soporte en VirtualBox, por favor espere...\n"
- barra_progreso 65
- funcion_INSTALAR virtualbox-modules && echo "
- modules=vboxdrv
- modules=vboxnetflt
- modules=vboxnetadp" >> /etc/conf.d/modules
- funcion_ERROR "Error: No se han podido añadir módulos virtualbox a la lista de modulós arrancados al inicio"
- #GUEST-ADDITIONS
- funcion_INSTALAR virtualbox-guest-additions
- if [[ $? = "0" ]]
- then
- funcion_GPASSWD root vboxguest
- funcion_GPASSWD $usuario vboxguest
- fi
- fi
- ##########
- ## XORG ##
- ##########
- LOGO
- echo -e "Instalando Xorg...\n"
- barra_progreso 70
- funcion_INSTALAR x11-base/xorg-drivers
- #funcion_INSTALAR x11-base/xorg-server Es dependencia de xorg-drivers.
- env-update && source /etc/profile
- ###########################
- ## ENTORNO GRAFICO: XFCE ##
- ###########################
- LOGO
- echo -e "Instalando entorno grafico (XFCE)...\n"
- barra_progreso 80
- funcion_INSTALAR xfce-base/xfce4-meta
- funcion_INSTALAR x11-misc/slim
- echo "XSESSION=Xfce4" > /etc/env.d/90xsession
- echo "DISPLAYMANAGER=slim" > /etc/conf.d/xdm
- funcion_ADD_RC_UPDATE xdm default
- #OTORGANDO PERMISOS
- for x in cdrom cdrw usb ; do gpasswd -a $usuario $x ; done
- env-update && source /etc/profile
- #EXTRAS XFCE
- funcion_INSTALAR x11-terms/xfce4-terminal
- funcion_INSTALAR xfce-extra/xfce4-power-manager
- funcion_INSTALAR xfce-extra/xfce4-battery-plugin
- funcion_INSTALAR xfce-extra/thunar-volman #Gestor soporte extraible
- funcion_INSTALAR xfce-extra/xfce4-mixer #Control sonido
- funcion_INSTALAR sci-calculators/galculator #Calculadora
- funcion_INSTALAR media-gfx/ristretto #Visor de imágenes
- #GESTOR DE RED
- #funcion_INSTALAR net-misc/networkmanager && funcion_ADD_RC_UPDATE NetworkManager default
- funcion_INSTALAR net-misc/wicd && funcion_ADD_RC_UPDATE wicd boot
- ##############
- ## SOFTWARE ##
- ##############
- LOGO
- echo -e "Instalando software del sistema...\n"
- barra_progreso 90
- ##############
- # ACCESORIOS #
- ##############
- funcion_INSTALAR app-editors/gedit
- funcion_INSTALAR dev-util/geany
- funcion_INSTALAR dev-util/meld
- funcion_INSTALAR app-text/evince #Visor PDF
- funcion_INSTALAR x11-misc/lxmed #Editor Menu
- funcion_INSTALAR app-office/orage #Calendario
- funcion_INSTALAR app-admin/conky #&& funcion_COPIAR /config/conky-config /etc/conky/conky.conf
- #echo "sleep 15 && conky -d" >> /etc/init.d/start-conky.sh
- #####################
- # SCANNERS/SNIFFERS #
- #####################
- funcion_INSTALAR net-analyzer/nmap
- funcion_INSTALAR net-analyzer/wireshark
- funcion_INSTALAR net-analyzer/ettercap
- funcion_INSTALAR net-analyzer/dsniff
- funcion_INSTALAR net-wireless/aircrack-ng
- ##################
- # VIRTUALIZACIÓN #
- ##################
- #VIRTUALBOX
- funcion_INSTALAR app-emulation/virtualbox && funcion_GPASSWD $usuario vboxusers
- ############
- # INTERNET #
- ############
- funcion_INSTALAR net-ftp/filezilla
- #CHROME
- funcion_INSTALAR www-client/google-chrome
- if [[ $? = "0" ]]
- then
- echo "" >> /dev/null
- elif [[ -z /opt/google/chrome/plugins ]]
- then
- funcion_COPIAR /libflashplayer.so /opt/google/chrome/plugins
- elif [[ ! -z /opt/google/chrome/plugins ]]
- then
- mkdir /opt/google/chrome/plugins
- funcion_COPIAR /libflashplayer.so /opt/google/chrome/plugins
- fi
- #FIREFOX
- funcion_INSTALAR www-client/firefox
- if [[ $? = "0" ]]
- then
- echo "" >> /dev/null
- elif [[ -z /usr/lib64/firefox/plugins ]]
- then
- cp /libflashplayer.so /usr/lib64/firefox/plugins
- elif [[ ! -z /usr/lib64/firefox/plugins ]]
- then
- mkdir /usr/lib64/firefox/plugins
- cp /libflashplayer.so /usr/lib64/firefox/plugins
- fi
- ############
- # GRÁFICOS #
- ############
- funcion_INSTALAR media-gfx/gimp
- ################
- # SONIDO/VIDEO #
- ################
- funcion_INSTALAR media-video/vlc
- funcion_INSTALAR media-video/cheese
- #############
- # OFIMÁTICA #
- #############
- funcion_INSTALAR app-office/openoffice-bin
- ########################
- # HERRAMIENTAS SISTEMA #
- ########################
- funcion_INSTALAR sys-fs/ntfs3g #Soporte NTFS
- funcion_INSTALAR app-portage/layman #Gestor Gentoo-Overlays
- #funcion_INSTALAR virtual/jre #Java
- funcion_INSTALAR app-portage/gentoolkit
- funcion_INSTALAR sys-boot/unetbootin
- #Descompresor e integración con thunar
- funcion_INSTALAR app-arch/file-roller && funcion_INSTALAR xfce-extra/thunar-archive-plugin
- #############################
- ## FINALIZANDO INSTALACIÓN ##
- #############################
- #################################
- # LIMPIANDO ARCHIVOS TEMPORALES #
- #################################
- rm -R /stage3*.bz2
- rm -R /portage*.bz2
- rm -R /kernel-config
- rm -R /autoinstall.sh
- rm -R /config
- rm -R /INFO
- LOGO
- echo -e "Finalizando instalación del sistema...\n"
- barra_progreso 100
- echo "Felicidades! La instalación se ha completado con éxito.
- Ahora tiene un sistema operativo completamente funcional, que lo disfrute.
- Presione INTRO para reiniciar el equipo y completar la instalación."
- read
- reboot
- } #Cerrando funcion "entorno_chroot"
- #SALTO HACIA ENTORNO CHROOT
- if [[ -z $1 ]]
- then
- install #Invocando a la función install.
- elif [[ $1 = "entorno_chroot" ]]
- then
- entorno_chroot #Invocando a la función entorno_chroot.
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement