Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #autoinstall.sh (v1.0)
- LOGO() {
- clear && echo -e "\e[1;32m
- ## ### ### ### # # # # # ### # ### ### ## ### # # #
- # # # # # # # # # # # # # # # # # # # # # # # # #
- # # ## # # # # # # # ### # # # # # # # # # # ### # #
- # # # # # # # # # # # # # # # # # # # # # # # # # #
- ## ### # # # # # # # ### # # ### # # ## # # # ### ###
- [By DaRkaHT]
- \e[0m"
- }
- #############
- # FUNCIONES #
- #############
- funcion_ERROR() {
- if [[ $? != "0" ]]
- then
- if [[ ! -z /ERRORES ]]
- then
- echo "$1" >> /ERRORES
- fi
- LOGO
- echo -e "$1, tendrá que solucionarlo manualmente desde otro entorno chroot.
- 1. Continuar, se ha solventado el error manualmente.
- 2. Abortar instalacion.\n"
- read opc_error
- echo
- case $opc_error in
- 1) echo "Continuando con la instalación del sistema..."
- ;;
- 2) echo "Abortando instalación" && exit
- ;;
- *) echo "Opcion invalida"
- ;;
- esac
- 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."
- }
- install() {
- ##################### (Módulos necesarios
- # CARGANDO MÓDULOS # para el livecd)
- #####################
- rmmod broadcom
- rmmod tg3
- update-modules
- modprobe broadcom
- modprobe tg3
- update-modules
- #######################
- # OBTENIENDO CONEXION #
- #######################
- while [[ -z $interfaz ]]
- do
- LOGO
- echo -e "Iniciando instalación...
- (0%) [> ]\n"
- echo
- echo -e "¿Con qué interfaz desea conectarse a la red?
- 1.eth0
- 2.wlan0 (Solo redes con seguridad WEP)
- 3.Otra interfaz
- 4.Instalación offline \n"
- read menu_conexion
- echo
- case $menu_conexion in
- 1) interfaz=eth0
- ifconfig eth0 up
- dhcpcd -k eth0
- dhcpcd eth0
- ;;
- 2) echo -e "Introduzca nombre de la red: \n"
- read nombre_red
- if [[ -z $nombre_red ]]
- then
- echo -e "Error: No ha introducido un nombre de red válido. \n"
- fi
- echo -e "Introduzca clave de acceso para la red (Solo redes WEP): \n"
- read clave_red
- if [[ -z $clave_red ]]
- then
- echo -e "Error: No ha introducido una clave válida para la red. \n"
- fi
- interfaz=wlan0
- dhcpcd -k wlan0
- ifconfig wlan0 up
- iwconfig wlan0 essid "$nombre_red" key "s:$clave_red" && dhcpcd wlan0
- ;;
- 3) while [[ -z $interfaz ]]
- do
- LOGO
- echo -e "¿Se trata de una interfaz inalámbrica? \n"
- echo "1.Si"
- echo -e "2.No \n"
- read menu_conexion
- case $menu_conexion in
- 1) echo
- echo -e "Introduzca nombre de la interfaz: \n"
- read interfaz
- dhcpcd -k wlan0
- ifconfig $interfaz up
- iwconfig $interfaz essid "$nombre_red" key "s:$clave_red" && dhcpcd $interfaz
- ;;
- 2) echo -e "Introduzca nombre de la interfaz: \n"
- read interfaz
- dhcpcd -k $interfaz
- dhcpcd $interfaz
- ;;
- *) echo "Opcion invalida.";
- echo "Presiona ENTER para continuar...";
- read foo
- ;;
- esac
- done
- ;;
- 4) dhcpcd -k
- interfaz=offline
- ;;
- *) echo "Opcion invalida.";
- echo "Presiona ENTER para continuar...";
- read foo
- esac
- done
- #########################################
- ## RECOPILANDO INFORMACIÓN DEL SISTEMA ##
- #########################################
- ########################
- # SELECCIONANDO KEYMAP #
- ########################
- loadkeys es --quiet
- ########################
- # TABLA DE PARTICIONES #
- ########################
- LOGO
- echo -e "Especifique en que disco desea instalar DaRkOS. Ejemplos: sda, sdb, hda, hdb..: \n"
- read disco
- if [[ -z $disco ]]
- then
- echo -e "No ha introducido un nombre que designe un disco valido, por favor hagalo ahora: \n"
- read disco
- fi
- form_INFO_PARTS() {
- ini_boot=1
- echo
- #echo -e "¿Tamaño particion BOOT (en MB)? \n"
- #read fin_boot
- fin_boot=40
- fin_boot_MB=`echo -n "+$fin_boot"; echo "M"`
- ini_sys=" "
- #echo
- echo -e "¿Tamaño particion de sistema (en MB)? \n"
- read fin_sys
- fin_sys_MB=`echo -n "+$fin_sys"; echo "M"`
- ini_swap=" "
- echo
- echo -e "¿Tamaño particion SWAP (en MB)? \n"
- read fin_swap
- fin_swap_MB=`echo -n "+$fin_swap"; echo "M"`
- }
- LOGO
- echo -e "¿Desea iniciar el asistente de particionamiento?
- 1. Si, particionar disco.
- 2. No, el disco esta correctamente particionado.\n"
- read opc_part
- echo
- case $opc_part in
- 1) form_INFO_PARTS #Llamando a la función.
- ;;
- 2) particionado=no
- ;;
- *) echo "Opcion invalida"
- ;;
- esac
- ##########################
- # CONFIGURACIÓN HOSTNAME #
- ##########################
- form_CONF_HOSTNAME() {
- LOGO
- echo -e "Introduzca el nombre que se le asignara al equipo (HostName):\n"
- read hostname
- if [[ -z $hostname ]]
- then
- echo -e "No ha introducido un hostname valido, por favor hagalo ahora:\n"
- read hostname
- fi
- }
- form_CONF_HOSTNAME #Llamando a la función.
- ###########################################
- # CONFIGURACIÓN DE USUARIOS Y CONTRASEÑAS #
- ###########################################
- ########
- # ROOT #
- ########
- form_PASS_ROOT() {
- LOGO
- echo -e "Por favor, introduzca la contraseña que desea usar para el administrador del sistema (ROOT):\n"
- read pass_root
- if [[ -z $pass_root ]]
- then
- echo -e "No ha introducido ninguna contraseña para el usuario ROOT, por favor hágalo ahora:\n"
- read pass_root
- fi
- echo
- echo -e "Por favor, repita la contraseña para el administrador del sistema:\n"
- read conf_pass_root
- if [[ -z $conf_pass_root ]]
- then
- echo -e "No ha introducido ninguna contraseña para la confirmación de contraseña del usuario $usuario, por favor hágalo ahora:\n"
- read conf_pass_root
- elif [[ $conf_pass_root != $pass_root ]]
- then
- echo -e "Error: La contraseña no coincide con la confirmación, pulse ENTER para volver a introducir una contraseña:\n"
- read
- clear
- PASS_ROOT
- fi
- }
- form_PASS_ROOT #Llamando a la función.
- ##############
- # 1º USUARIO #
- ##############
- form_PASS_USUARIO() {
- LOGO
- echo -e "Introduzca el nombre que desee usar para el primer usuario:\n"
- read usuario
- echo
- if [[ -z $usuario ]]
- then
- echo -e "No ha introducido ningún nombre de usuario, por favor hágalo ahora:\n"
- read usuario
- fi
- echo -e "Introduzca una contraseña para el primer usuario:\n"
- read pass_user
- echo
- if [[ -z $pass_user ]]
- then
- echo -e "No ha introducido ninguna contraseña para el usuario $usuario, por favor hágalo ahora:\n"
- read pass_user
- fi
- echo -e "Por favor, confirme la contraseña:\n"
- read conf_pass_user
- if [[ -z $conf_pass_user ]]
- then
- echo -e "No ha introducido ninguna contraseña para la confirmación de contraseña del usuario $usuario, por favor hágalo ahora:\n"
- read conf_pass_user
- elif [[ $conf_pass_user != $pass_user ]]
- then
- echo -e "Error: La contraseña no coincide con la confirmación, pulse ENTER para volver a introducir una contraseña:\n"
- read
- clear
- PASS_USUARIO
- fi
- }
- form_PASS_USUARIO #Llamando a la función.
- #######################
- # OPCIONES DEL NÚCLEO #
- #######################
- opciones_kernel() {
- 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 in
- echo
- case $menu_nucleo in
- 1) nucleo=personalizado
- ;;
- 2) nucleo=genkernel
- ;;
- *) echo "Opcion invalida.";
- echo "Presiona ENTER para continuar...";
- read foo
- ;;
- 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 invalida.";
- echo "Presiona ENTER para continuar...";
- read foo
- ;;
- esac
- done
- }
- opciones_kernel #Llamando a la función.
- ###############################
- # INFORMACIÓN TARJETA GRÁFICA #
- ###############################
- info_tar_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
- echo "Tarjeta gráfica ATI detectada"
- T_GRAF=radeon
- elif [[ $T_GRAF_NVIDIA = "nVidia" ]]
- then
- echo "Tarjeta gráfica NVIDIA detectada"
- T_GRAF="nvidia nouveau"
- elif [[ $T_GRAF_INTEL = "Intel" ]]
- then
- echo "Tarjeta gráfica INTEL detectada"
- T_GRAF=intel
- elif [[ $T_GRAF_VBOX = "VirtualBox" ]]
- then
- echo "Tarjeta gráfica virtual VIRTUALBOX detectada"
- 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
- echo
- echo -e "Está seguro de querer usar $T_GRAF como tarjeta gráfica?
- 1. Si
- 2. No \n"
- read opc_graf
- done
- while [[ $op_graf = "1" ]]
- do
- echo -e "Introduzca de nuevo el nombre de su tarjeta gráfica \n"
- read T_GRAF
- echo
- echo -e "Esta seguro de querer usar $T_GRAF como tarjeta gráfica?
- 1. Si 2.No \n"
- done
- }
- info_tar_graf #Llamando a la función.
- ###########################
- # DIÁLOGO DE CONFIRMACIÓN #
- ###########################
- while [[ $opcion_infosys != "1" ]]
- do
- LOGO
- echo -e "Finalizando asistente...
- (10%) [====> ]\n"
- echo -e "
- ¿Esta seguro de querer usar la siguiente configuración en su sistema?
- 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
- 1. Si, continuar la instalació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
- echo "Continuando la instalación..."
- ;;
- 2) form_CONF_HOSTNAME
- ;;
- 3) form_PASS_ROOT
- ;;
- 4) form_PASS_USUARIO
- ;;
- 5) form_INFO_PARTS
- ;;
- 6) opciones_kernel
- ;;
- 7) info_tar_graf
- ;;
- *) echo "Opcion inválida, presione una tecla para continuar...";
- read foo ;;
- esac
- done
- ################################
- ## INSTALANDO EL SISTEMA BASE ##
- ################################
- ####################################
- # ESCRIBIENDO PARTICIONES EN DISCO #
- ####################################
- PARTICIONES() {
- fdisk /dev/$disco << EOF
- #BOOT
- n
- p
- 1
- $ini_boot
- $fin_boot_MB
- #SYS
- n
- p
- 2
- $ini_sys
- $fin_sys_MB
- #SWAP
- n
- p
- 3
- $ini_swap
- $fin_swap_MB
- #PART-ARRANCABLE
- a
- 1
- #SELECT-PART-SWAP
- t
- 3
- 82
- #GUARDAR
- w
- EOF
- }
- if [[ $particionado != "no" ]]
- then
- PARTICIONES #Llamando a la función.
- funcion_ERROR "Error: No se han podido escribir las particiones."
- 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 #Formart 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...
- (20%) [========> ]\n"
- 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
- dir_portage="/mnt/gentoo/etc/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
- if [[ $interfaz = "offline" ]]
- then
- funcion_COPIAR /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/
- fi
- #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() {
- ########################
- # 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 #
- #####################################
- if [[ $interfaz != "offline" ]]
- then
- emerge --sync
- fi
- LOGO
- echo -e "Instalando Portage, por favor espere...
- (30%) [=============> ]\n"
- funcion_INSTALAR portage
- etc-update
- ###############################
- # SELECCION PERFIL DE SISTEMA #
- ###############################
- eselect profile set 3
- ##################################
- # DESCARGAR E INSTALAR EL NÚCLEO #
- ##################################
- LOGO
- echo -e "Instalando el nucleo del sistema, por favor espere...
- (35%) [================> ]\n"
- 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 invalida.";
- echo "Presiona ENTER para continuar...";
- read foo;;
- 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`
- funcion_COPIAR /usr/src/linux/arch/x86_64/boot/bzImage /boot/kernel-$version_nucleo
- 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...
- (40%) [=================> ]\n"
- 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...
- (50%) [======================> ]\n"
- #Bitácora del sistema:
- funcion_INSTALAR syslog-ng
- if [[ $? = "0" ]]
- then
- funcion_ADD_RC_UPDATE syslog-ng default
- fi
- #Planificador:
- funcion_INSTALAR vixie-cron
- if [[ $? = "0" ]]
- then
- funcion_ADD_RC_UPDATE vixie-cron default
- fi
- #Otros:
- funcion_INSTALAR dhcpcd
- funcion_INSTALAR mlocate
- funcion_INSTALAR sudo
- if [[ $? = "0" ]]
- then
- 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 copiar fichero de configuracion SUDOERS."
- fi
- #########################################
- # 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...
- (60%) [==============================> ]\n"
- ############
- # SENSORES #
- ############
- #funcion_INSTALAR lm_sensors
- ####################
- # SOPORTE WIRELESS #
- ####################
- funcion_INSTALAR sys-firmware/iwl5000-ucode
- #####################
- # SOPORTE BLUETOOTH #
- #####################
- funcion_INSTALAR net-wireless/bluez
- if [[ $? = "0" ]]
- then
- #funcion_INSTALAR net-wireless/bluez-firmware
- funcion_ADD_RC_UPDATE bluetooth default
- fi
- ##########
- ## 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 VirtualBox, por favor espere...
- (65%) [================================> ]\n"
- funcion_INSTALAR virtualbox-modules
- if [[ $? = "0" ]]
- then
- 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."
- fi
- #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...
- (70%) [=====================================> ]\n"
- 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)...
- (80%) [==============================> ]\n"
- 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/wicd
- if [[ $? = "0" ]]
- then
- funcion_ADD_RC_UPDATE wicd boot
- fi
- ##############
- ## SOFTWARE ##
- ##############
- LOGO
- echo -e "Instalando software del sistema...
- (90%) [=====================================> ]\n"
- ##############
- # 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
- #####################
- # 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
- if [[ $? = "0" ]]
- then
- funcion_GPASSWD $usuario vboxusers
- fi
- ############
- # 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
- cp /libflashplayer.so /opt/google/chrome/plugins
- elif [[ ! -z /opt/google/chrome/plugins ]]
- then
- mkdir /opt/google/chrome/plugins
- cp /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
- #CHROMIUM
- #funcion_INSTALAR www-client/chromium
- # if [[ $? = "0" ]]
- # then
- # echo "" >> /dev/null
- # elif [[ -z /usr/lib/chromium-browser/plugins ]]
- # then
- # cp /libflashplayer.so /usr/lib/chromium-browser/plugins
- # elif [[ ! -z /usr/lib/chromium-browser/plugins ]]
- # then
- # mkdir /usr/lib/chromium-browser/plugins
- # cp /libflashplayer.so /usr/lib/chromium-browser/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 virtual/jre #Java
- funcion_INSTALAR sys-fs/ntfs3g #Soporte NTFS
- funcion_INSTALAR app-portage/layman #Gestor Gentoo-Overlays
- funcion_INSTALAR gentoolkit
- funcion_INSTALAR app-arch/file-roller #Descompresor
- if [[ $? = "0" ]]
- then
- funcion_INSTALAR xfce-extra/thunar-archive-plugin
- fi
- funcion_INSTALAR sys-boot/unetbootin
- #############################
- ## FINALIZANDO INSTALACIÓN ##
- #############################
- #################################
- # LIMPIANDO ARCHIVOS TEMPORALES #
- #################################
- rm -R /stage3*.bz2
- rm -R /portage*.bz2
- rm -R /kernel-config
- rm -R /autoinstall.sh
- rm -R /software.sh
- rm -R /config
- rm -R /INFO
- LOGO
- echo -e "Finalizando instalación del sistema...
- (100%) [=============================================>]\n"
- 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 #Llamando a la función install.
- elif [[ $1 = "entorno_chroot" ]]
- then
- entorno_chroot #Llamando a la función chroot.
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement