#!/bin/sh

	# ANSI COLORS
	CRE="
[K"
	NORMAL="[0;39m"
	# RED: Failure or error message
	RED="[1;31m"
	# GREEN: Success message
	GREEN="[1;32m"
	# BLUE: System messages
	BLUE="[1;34m"
	# MAGENTA: Found devices or drivers
	MAGENTA="[1;35m"
	# CYAN: Questions
	CYAN="[1;36m"
	# BOLD WHITE: Hint
	WHITE="[1;37m"

if grep "lang=es" /proc/cmdline  > /dev/null
then
ESPANOL="SI"
else
ESPANOL="NO"
fi


if [ "$ESPANOL" = "SI" ]
then

TXT="Elige: 
Instalador de Knoppix (recomendado)
Instalador de Kanotix (nuevo método)
-------------------------------------------

El instalador de Knoppix 
A favor: 
 * Está en castellano 
 
 * Posee además un actualizador de paquetes de software, es decir que
 te permite actualizar una vieja instalación de Musix. 

 * Brinda 3 tipos de instalación: knoppix, begginer y Debian. La
 primera instala el sistema y corre tal como desde el Live-CD, la
 segunda está más orientada al uso multiusuario y es bastante
 recomendable dado que el comportamiento es muy similar al del
 Live-CD, la tercera, Debian, suele lograr un reinicio más rápido del
 sistema, pero a veces se torna un poco complicada la detección de
 hardware, aunque ha mejorado mucho el proceso. En fin,
 cualquier método debería funcionar bien, y se recomienda
 experimentar con los 2 últimos. 

 

En contra: 
 * La tipografíaa, es decir la letra (font, fuente) con que muestra los
 textos, es confusa debido a un problema en el sistema de fuentes de
 Debian. Solamente se ve bien desde el escritorio KDE. Puedes
 iniciarlo desde KDE si inicias Musix con el argumento de booteo
 \"musix dma kdm\" o \"xorgmusix dma kdm\". 

 * No posee una forma sencilla de forzar la instalación ante la falla
 en la detección de las particiones cuando estas realmente existen. 

 
El instalador de Kanotix 
A favor: 

 * Todo se ve perfectamente bien 
 
 * Posee un modo que sirve para  restaurar una instalación mediante la
 reparación de GRUB 

 * Puedes forzar la instalación si crees que está todo bien y el
 instalador no detecta bien las particiones. Esto es muy útil cuando
 por ejemplo trabajando con discos SATA el sistema se niega a
 instalarse porque no detecta la partición SWAP o lo que fuere. Si se
 fuerza la instalación y todo el terreno estaba bien preparado, no
 tendrías problemas. 

En contra: 
 * Instala el sistema sólo al estilo Debian (algo que no está para nada
 mal, pero no posee otro estilo como el begginer o knoppix) 

 * Varias opciones no funcionan en Musix: por ejemplo, el actualizador
 de instalacón (Update...), la opción de puntos de montaje de otras
 particiones (solo funciona esta característica si se forza la
 instalación) 

 * No está en castellano, se encuentra en aleman e ingles."

else
# Texto en English
TXT="Choose:
  
  Knoppix's installer
  Kanotix's installer
-------------------------------------------

 Knoppix installer

* It has a package-updater 
* Brings you 3 installation styles: knoppix, begginer and Debian
* Multiple language support

* The font is not pretty if you dont use the KDE desktop
* You can not force the installation in an easy way

 
 Kanotix installer

* It looks fine, the text fonts are ok
* It can restore a damaged installation
* You can force the installation

* It has only a Debian style (not so bad!)
* The updater does not work on Musix
* The Partitioning options (Mountpoints of other partitions) only work if you Force the installation.
"


fi


export USAR_NLS=si
export TEXTDOMAIN=instalar
export TEXTDOMAINDIR="/etc/musix/locales"


#Contenido de config/encabezado :

. /etc/musix/funciones-i18n
[ -e /etc/musix/funciones ] && . /etc/musix/funciones

# Vemos si estamos en X o en consola
x=0
probar_X && x=1
if [ "$x" = "0" ]; then
echo "Estamos en entorno de consola de texto"
sleep 2s
knoppix-installer
exit
fi

# Si ya estï¿½ instalado, avisa y pregunta si quiere instalar nuevos programas con synaptic

INSTALLED="no"
[ -e /KNOPPIX/bin/ash ] || INSTALLED="yes"
if [ "$INSTALLED" = "yes" ]
then

#puede ser -nearmouse o -center (o nada)
pos="-nearmouse"
_n "Musix ya esta instalado
en el disco duro.
Quieres instalar nuevos programas?



" | gmessage -title 'Musix GNU+Linux' -file - $pos -buttons $(_n "Si:0,No:2" ) -default $(_n "Si")
if [ $? -eq 2 ]; then exit 2; fi

# inicia synaptic como root y sale
kdesu synaptic
exit

fi


# Nuevo en Musix 1.0/Stable r0
# Aquï¿½ vemos si estamos en inglï¿½s, el texto explicativo irï¿½ en inglï¿½s, caso contrario, espaï¿½ol




# Si elige el instalador de Knoppix, continua, sino carga knxinstaller
pos="-nearmouse"
_n "
$TXT

" | gmessage -title 'Installers' -file - $pos -buttons $( _n "Knoppix:1,Kanotix:2,Abortar:3,Ayuda:4" )

A="$?"

if [ "$A" = "3" ]; then exit 2; fi

if [ "$A" = "1" ] 
then 
echo $"${NORMAL}Este es el programa de instalacion de ${RED}Musix GNU+Linux${NORMAL}
Por favor, aguarde unos instantes... ${NORMAL} 
(no cierre esta ventana)"
knoppix-installer
	if [ "$?" = "1" ]
	then
	
	gmessage "Error... You can try with IGNORE_CHECK=1 knoppix-installer"
	konqueror /usr/local/lib/Ayuda/Ayuda026.html/www.musix.org.ar/wiki/index.php/Instalacion.html	
	exit
	fi

fi


if [ "$A" = "2" ] 
then 
knxinstaller
# Salimos... porque knxinstaller sale luego de que configura
# la instalaciï¿½n, y llama a xdialog, por lo cual 
# este script instalar comienza a hacer cambios
# TODO: sería bueno saber cómo resolver esto!!
# Porque hay que hacer cambios posteriores... quizá
# insertando esos parches en otros módulos del instalador...
# dado que knxinstaler usa en definitiva los módulos de knoppix-installer

exit
fi


if [ "$A" = "4" ] 
then 

konqueror /usr/local/lib/Ayuda/Ayuda026.html/www.musix.org.ar/wiki/index.php/Instalacion.html	

exit
fi


# Si no existe este archivo de configuraciï¿½n, es porque no hemos ni siquiera
# configurado la instalaciï¿½n, por lo cual es mejor salir!
ls ~/.knofig || exit




# cambios posteriores
DESTINO=`cat ~/.knofig | grep HD_CHOICE= | cut -f2 -d"'" | cut -f3 -d"/"`

# NOTE: nuevo en Musix 1.0 R3
# si no existe /etc/musix-version en el destino, no 
# fue instalado, por lo cual salimos.
echo "montando /mnt/$DESTINO"
sleep 3s
mount /mnt/$DESTINO

ls /mnt/$DESTINO/etc/musix-version
if [ "$?" = "2" ]
then
echo "Musix no parece haber sido instalado en
/mnt/$DESTINO

Saliendo...
"
read
exit
else
echo "Musix ha sido instalado en /dev/$DESTINO"
sleep 2s
fi


# NOTE: Musix 1.0 R3, solucionando problemas con discos SATA
# con lspci | grep SATA || lspci | grep "Serial ATA" sabemos si existe una controladora SATA
# Notar que por suerte el menu.lst instalado sólo contiene
# información sobre Musix y en todo caso sobre Windows
# pero no sobre otro sistema operativo libre.
# NOTE: nuevo: he reformado /usr/sbin/update-grub para que
# cree bien el menu.lst (en caso de que no encuentre el dispositivo root),
# así que trabajaremos sólo
# con los fstab, pero dejaremos crear información de debug para todos
# incluso menu.lst, por las dudas

# NOTE: activando nuevamente para que funcione solamente con SATA

lspci | grep SATA || lspci | grep "Serial ATA"
if [ "$?" = "0" ]
then
echo "$RED realizaremos
algunas modificaciones /etc/fstab en la partición
donde Musix fue instalado. $NORMAL"



# Primero: modificamos ### menu.lst ###

# Antes hago una copia de seguridad sólo para debug
cp /mnt/$DESTINO/boot/grub/menu.lst /mnt/$DESTINO/boot/grub/menu.lst-orig

# Cambiando hda1 por la partición de destino real: $DESTINO
cat /mnt/$DESTINO/boot/grub/menu.lst | sed s/hda1/$DESTINO/g > /mnt/$DESTINO/boot/grub/menu.lst-temp
cp /mnt/$DESTINO/boot/grub/menu.lst-temp /mnt/$DESTINO/boot/grub/menu.lst
# Eso fue sencillo.

# Debemos cambiar (0,0) en las entradas de Musix, al número
# que corresponda a $DESTINO, para lo cual hay que hacer una tabla de equivalencias, 
# porque grub nomencla distinto que fstab



equiv_grub_letras="0:a
1:b
2:c
3:d
4:e
5:f
6:g
7:h
8:i
9:j"

# equiv_grub_num="0:1" no es necesario, porque simplemente hacemos un expr - 1 y listo.

# Transformando un sda2, por ejemplo, en 0,1, sería así:

primer_byte_fstab=`echo $DESTINO | cut -b 3` # esto da: a, b, etc
segundo_byte_fstab=`echo $DESTINO | cut -b 4` # esto da: 1, 2, etc
DESTINO_simple=`echo $DESTINO | cut -b 3-4` # esto da a2, por ejemplo.


# Ahora conseguimos la equivalencia entre la primer letra
# de la forma sda2 hacia el primer número que va en GRUB: NUM_GRUB
for linea in $(echo $equiv_grub_letras)
do
GREP_LETRA=`echo "$linea" | cut -f2 -d":"` # devuelve una letra en la tabla de equivalencias
NUM1_GRUB=`echo "$linea" | cut -f1 -d":"` # devuelve un numero en la tabla de equivalencias

echo $DESTINO_simple | grep $GREP_LETRA
if [ "$?" = "0" ]
then
echo "Para la letra $GREP_LETRA corresponde el número $NUM1_GRUB"
break # ojo que no sé si esto en algún caso puede hacer un exit !
# la idea es que solamente detenga el for.
fi

done

NUM2_GRUB=`expr $segundo_byte_fstab - 1` # ,1) o algo así.

# DEBUG:
echo "El segundo número de GRUB debe ser: $NUM2_GRUB"

echo "($NUM1_GRUB,$NUM2_GRUB)" # (0,1) por ejemplo.


# 22 nov 2007
## NOTE: activamos todo el parche para menu.lst, a pesar de que update-grub intenta hacer lo mismo, no logra cambiar el valor 0,0
# espero que esto lo logre


cat /mnt/$DESTINO/boot/grub/menu.lst | sed s/0,0/$NUM1_GRUB,$NUM2_GRUB/g > /mnt/$DESTINO/boot/grub/menu.lst-temp2
cp /mnt/$DESTINO/boot/grub/menu.lst-temp2 /mnt/$DESTINO/boot/grub/menu.lst

# ### nuevo:
echo "
#Emparchado con el valor $NUM1_GRUB,$NUM2_GRUB por el script /bin/instalar" >> /mnt/$DESTINO/boot/grub/menu.lst


# Notar que creamos menu.lst-temp*, para tener una salida de debug y solicitarla
# a los usuarios que prueben esto.

# ### Resta FSTAB ###

# Hay una línea que la conforma mal, y que queda así: noauto,users,exec 0 0
# sin nada más.Entonces pienso que es bueno borrarla: | grep -v "noauto,users,exec 0 0" 
# Primer cambio en fstab:borramos esa línea.
cat /mnt/$DESTINO/etc/fstab | grep -v "noauto,users,exec 0 0" > /mnt/$DESTINO/etc/fstab-temp1
cp /mnt/$DESTINO/etc/fstab-temp1 /mnt/$DESTINO/etc/fstab

# Ahora nos queda copiar lo bueno que hay en el fstab del live-cd al fstab instalado
# un problema a resolver, es que en el fstab del live-cd, la partición de
# destino está aún configurada para montarse en /mnt, eso es fácil: grep -v

# Podemos obtener la lista correcta de particiones en el fstab del live cd con
# cat /etc/fstab | grep -A10 "Add"
# y eso simplemente lo volcamos con un >> en el fstab instalado, que justamente
# requiere de esas líneas, entonces:
cat /etc/fstab | grep -v "$DESTINO" | grep -A10 "Added by KNOPPIX" >> /mnt/$DESTINO/etc/fstab
# Eso debería haber resuelto todo! :)

# BIEN!, listo, por ahora, lo que resta es pedirle al usuario que nos envie
# los archivos para debug

mkdir /tmp/instalar-debug/
# Nuevo: creando backups de los logs para debug en partición de destino
mkdir /mnt/$DESTINO/var/log/instalar-debug/

cp /mnt/$DESTINO/boot/grub/menu.lst-orig /tmp/instalar-debug/
# backup
cp /mnt/$DESTINO/boot/grub/*.* /mnt/$DESTINO/var/log/instalar-debug/
cp /mnt/$DESTINO/boot/grub/* /mnt/$DESTINO/var/log/instalar-debug/

cp /mnt/$DESTINO/boot/grub/menu.lst /tmp/instalar-debug/menu.lst
cp /mnt/$DESTINO/boot/grub/menu.lst-temp2 /tmp/instalar-debug/menu.lst-temp2

cp /mnt/$DESTINO/etc/fstab /tmp/instalar-debug/fstab-instalado
cp /mnt/$DESTINO/etc/fstab /mnt/$DESTINO/var/log/instalar-debug/fstab-instalado

cp /mnt/$DESTINO/etc/fstab-temp1 /tmp/instalar-debug/fstab-temp1-instalado
cp /mnt/$DESTINO/etc/fstab-temp1 /mnt/$DESTINO/var/log/instalar-debug/fstab-temp1-instalado


cp /etc/fstab /tmp/instalar-debug/fstab-live
cp /etc/fstab /mnt/$DESTINO/var/log/instalar-debug/fstab-live


cp ~/.knofig /tmp/instalar-debug/knofig
cp ~/.knofig /mnt/$DESTINO/var/log/instalar-debug/knofig


echo "Por favor, necesitamos debuguear (investigar, corregir) el proceso de instalación de Musix en discos SATA o en PCs con controladoras SATA, por lo cual te solicitamos que nos envíes estos archivos en /tmp/instalar-debug/

Abriremos konqueror, y luego finalizaremos el proceso de instalación.

Presiona [Enter] para continuar...
"
read

konqueror /tmp/instalar-debug/ &

fi # lspci | grep SATA || lspci | grep "Serial ATA"



# modificando el motd (mensaje de consola, diario)
echo "Bienvenid@ a Musix GNU+Linux, si necesitas ayuda con un comando puedes escribir man nombre_del_comando" > /mnt/$DESTINO/etc/motd


# Esto debe ocurrir ANTES de update-grub-total , porque tal script desmonta todo
# NOTE: nuevo en Musix 1.0 R3: quitando todos los savedefault, dado que producen problemas al reiniciar luego de un corte de electricidad
cp /mnt/$DESTINO/boot/grub/menu.lst /mnt/$DESTINO/boot/grub/menu.lst-temp
cat /mnt/$DESTINO/boot/grub/menu.lst-temp | sed s/savedefault//g > /mnt/$DESTINO/boot/grub/menu.lst



# Este script sólo puede correr luego de que instalar solucionó
# el posible problema de instalación en discos sata.
# Nuevo en Musix 1.0: detecta otros sistemas instalados y los incorpora al menu.lst de la particiï¿½n destino:
update-grub-total 




# DESABILITANDO LA REPARACION INITRD porque pruebo Yaird!#

# borro los initrd para los kernels de Tapsa que quedaron mï¿½s hechos
# ACTUALIZADO para musix 0.40 con kernel 2.6.11
# corregido musix 049
#chroot /mnt/$DESTINO rm /boot/initrd.img-2.6.11
#chroot /mnt/$DESTINO rm /boot/initrd.img-2.6.15.2
#chroot /mnt/$DESTINO rm /boot/initrd.img-2.6.15.4

# ¿Para qué hacíamos esto? Quitarlo:
# Pruebo otro mï¿½todo por las dudas.
#echo "montando con mount /mnt/$DESTINO "
#mount /mnt/$DESTINO 


# Esto ya estaba deshabilitado en Musix 1.0
# corregido musix 049
#[ -f /mnt/$DESTINO/boot/initrd.img-2.6.11 ] && rm /mnt/$DESTINO/boot/initrd.img-2.6.11

#[ -f /mnt/$DESTINO/boot/initrd.img-2.6.15.2 ] && rm /mnt/$DESTINO/boot/initrd.img-2.6.15.2

#[ -f /mnt/$DESTINO/boot/initrd.img-2.6.15.4 ] && rm /mnt/$DESTINO/boot/initrd.img-2.6.15.4





echo $"${RED}Listo. ${NORMAL}"
echo $"${GREEN} 
Te recomendamos unirte a una lista de mail de usuarios
 GNU+Linux. Los usuarios de GNU+Linux formamos una 
comunidad alrededor del Software Libre, 
y lo usual es ayudarnos entre todos. 

Puedes visitar ${WHITE} www.musix.org.ar ${NORMAL}"
sleep 1s
echo $"${GREEN} 
Es probable que en tu ciudad exista un Grupo 
de Usuarios GNU+Linux, intenta buscando en Internet, 
por ejemplo, ${RED} LUG o GLUG nombre_de_tu_ciudad. ${BLUE}"
sleep 1s
echo $"${GREEN} 
En las listas de e-mail de Usuarios GNU+Linux 
se suelen resolver todos los problemas que presente
el manejo del sistema, se comienzan proyectos de 
software, se comparten experiencias, se aprende, etc. 

Esperamos que disfrutes el uso de Musix GNU+Linux!

${BLUE}"
sleep 1s
echo $"${WHITE} Que te diviertas, suerte! ${NORMAL}"
read

