#!/bin/bash #!/bin/bash # # CATix Programa per instal·lar la CATix # (C)2004 Antoni Mirabete i Terés - InterIntra s.l. # Correu electrònic: # Sota llicència GPL 2.0 # # Agraïment especial a Klaus Knopper # Agraïment especial a tots els desenvolupadors i col·laboradors del programari lliure # PATH="/bin:/sbin:/usr/bin:/usr/sbin" export PATH XDIALOG_HIGH_DIALOG_COMPAT=1 export XDIALOG_HIGH_DIALOG_COMPAT [ "`id -u`" != "0" ] && exec sudo "$0" "$@" DIALOG="dialog" [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog" trap 1 2 3 15 # Llegim el fitxer de configuració CATix [ -f /etc/sysconfig/catix ] && . /etc/sysconfig/catix # Si no hi ha el directori /catix no hem engegat des d'una imatge comprimida [ -d /catix ] || exit 5 # Missatges. Pendent de traducció a altres idiomes if [ -z "$LLENGUATGE" ] ; then LLENGUATGE="ca" ; fi case "$LLENGUATGE" in ca) titol="Instal·lació de la CATix" subtitol1="Selecció del tipus d'instal·lació" missatge1="Escull el tipus d'instal·lació. (consulta la documentació per més informació)\n\n Tipus Espai Necessari Característiques " modusinstal="fitxeric| Imatge Comprimida 800 MB Copia fitxer catix.ic|fitxeric|parcial| Instal·lació Parcial 300 MB Copia els directoris /etc /home /root /var|parcial|parcialifitxeric| Instal·lació Parcial i Imatge Comprimida 1000 MB Copia fitxer catix.ic i directoris /etc /var /home /root /var|parcialifitxeric|total| Instal·lació Total 2500 MB Copia tots els fitxers i directoris|total" subtitol2="Selecció de la partició on instal·lar la CATix" missatge2="Escull a quina partició vols instal·lar la CATix d'entre les disponibles \n (només es mostren les que tenen espai disponible pel tipus d'instal·lació seleccionada prèviament i amb sistema de fitxers soportat)\n\n Partició Sistema de Fitxers Espai Lliure " subtitol3="Selecció del desti de la instal·lació" missatge3="Selecciona el desti de la instal·lació (consulta la documentació per més informació)\n La instal·lació tardarà de 20 a 40 minuts. Paciència" destiinstal="directori| directori|directori|fitxer| fitxer|fitxer|particio| particio|particio" missatge4="La CATix s'ha instal·lat satisfactòriament." missatge5="No he trobat cap partició disponible. Les particions han de tenir espai suficient. Les particions NTFS no són soportades. Pots copiar el fitxer catix.ic que està a l'arrel del cdrom de la CATix utilitzant el sistema operatiu propietari de la partició" missatge6="Estic instal·lant la CATix. Això pot tardar una mica..." ;; de|at|ch) titol="Instal·lació de la CATix" subtitol1="Selecció del tipus d'instal·lació" missatge1="Escull el tipus d'instal·lació. (consulta la documentació per més informació)\n\n Tipus Espai Necessari Característiques " modusinstal="fitxeric| Imatge Comprimida 800 MB Copia fitxer catix.ic|fitxeric|parcial| Instal·lació Parcial 300 MB Copia els directoris /etc /home /root /var|parcial|parcialifitxeric| Instal·lació Parcial i Imatge Comprimida 1000 MB Copia fitxer catix.ic i directoris /etc /var /home /root /var|parcialifitxeric|total| Instal·lació Total 2500 MB Copia tots els fitxers i directoris|total" subtitol2="Selecció de la partició on instal·lar la CATix" missatge2="Escull a quina partició vols instal·lar la CATix d'entre les disponibles \n (només es mostren les que tenen espai disponible pel tipus d'instal·lació seleccionada prèviament i amb sistema de fitxers soportat)\n\n Partició Sistema de Fitxers Espai Lliure " subtitol3="Selecció del desti de la instal·lació" missatge3="Selecciona el desti de la instal·lació (consulta la documentació per més informació)\n La instal·lació tardarà de 20 a 40 minuts. Paciència" destiinstal="directori| directori|directori|fitxer| fitxer|fitxer|particio| particio|particio" missatge4="La CATix s'ha instal·lat satisfactòriament." missatge5="No he trobat cap partició disponible. Les particions han de tenir espai suficient. Les particions NTFS no són soportades. Pots copiar el fitxer catix.ic que està a l'arrel del cdrom de la CATix utilitzant el sistema operatiu propietari de la partició" missatge6="Estic instal·lant la CATix. Això pot tardar una mica..." ;; es) titol="Instal·lació de la CATix" subtitol1="Selecció del tipus d'instal·lació" missatge1="Escull el tipus d'instal·lació. (consulta la documentació per més informació)\n\n Tipus Espai Necessari Característiques " modusinstal="fitxeric| Imatge Comprimida 800 MB Copia fitxer catix.ic|fitxeric|parcial| Instal·lació Parcial 300 MB Copia els directoris /etc /home /root /var|parcial|parcialifitxeric| Instal·lació Parcial i Imatge Comprimida 1000 MB Copia fitxer catix.ic i directoris /etc /var /home /root /var|parcialifitxeric|total| Instal·lació Total 2500 MB Copia tots els fitxers i directoris|total" subtitol2="Selecció de la partició on instal·lar la CATix" missatge2="Escull a quina partició vols instal·lar la CATix d'entre les disponibles \n (només es mostren les que tenen espai disponible pel tipus d'instal·lació seleccionada prèviament i amb sistema de fitxers soportat)\n\n Partició Sistema de Fitxers Espai Lliure " subtitol3="Selecció del desti de la instal·lació" missatge3="Selecciona el desti de la instal·lació (consulta la documentació per més informació)\n La instal·lació tardarà de 20 a 40 minuts. Paciència" destiinstal="directori| directori|directori|fitxer| fitxer|fitxer|particio| particio|particio" missatge4="La CATix s'ha instal·lat satisfactòriament." missatge5="No he trobat cap partició disponible. Les particions han de tenir espai suficient. Les particions NTFS no són soportades. Pots copiar el fitxer catix.ic que està a l'arrel del cdrom de la CATix utilitzant el sistema operatiu propietari de la partició" missatge6="Estic instal·lant la CATix. Això pot tardar una mica..." ;; *) titol="Instal·lació de la CATix" subtitol1="Selecció del tipus d'instal·lació" missatge1="Escull el tipus d'instal·lació. (consulta la documentació per més informació)\n\n Tipus Espai Necessari Característiques " modusinstal="fitxeric| Imatge Comprimida 800 MB Copia fitxer catix.ic|fitxeric|parcial| Instal·lació Parcial 300 MB Copia els directoris /etc /home /root /var|parcial|parcialifitxeric| Instal·lació Parcial i Imatge Comprimida 1000 MB Copia fitxer catix.ic i directoris /etc /var /home /root /var|parcialifitxeric|total| Instal·lació Total 2500 MB Copia tots els fitxers i directoris|total" subtitol2="Selecció de la partició on instal·lar la CATix" missatge2="Escull a quina partició vols instal·lar la CATix d'entre les disponibles \n (només es mostren les que tenen espai disponible pel tipus d'instal·lació seleccionada prèviament i amb sistema de fitxers soportat)\n\n Partició Sistema de Fitxers Espai Lliure " subtitol3="Selecció del desti de la instal·lació" missatge3="Selecciona el desti de la instal·lació (consulta la documentació per més informació)\n La instal·lació tardarà de 20 a 40 minuts. Paciència" destiinstal="directori| directori|directori|fitxer| fitxer|fitxer|particio| particio|particio" missatge4="La CATix s'ha instal·lat satisfactòriament." missatge5="No he trobat cap partició disponible. Les particions han de tenir espai suficient. Les particions NTFS no són soportades. Pots copiar el fitxer catix.ic que està a l'arrel del cdrom de la CATix utilitzant el sistema operatiu propietari de la partició" missatge6="Estic instal·lant la CATix. Això pot tardar una mica..." ;; esac IFS='|' instal="instal:"`$DIALOG 2>&1 --backtitle "$subtitol1" --title "$titol" --no-tags --radiolist "$missatge1" 30 110 6 $modusinstal` case $? in 0) unset IFS instal="$(echo "$instal" | grep "instal")" instal="${instal##*:}" echo "instal: $instal" ;; 1) unset IFS echo "Cancel·lar ha sigut premut." exit 1 ;; 255) unset IFS echo "Has tancat el quadre de diàleg." exit 255 ;; esac case "$instal" in fitxeric) grandaria=800 ;; parcial) grandaria=300 ;; parcialifitxeric) grandaria=1000 ;; total) grandaria=2500 ;; esac # Busquem particions disponibles. De moment no acceptem particions ntfs. for dispositiu in /dev/[sh]d[a-z]?* ; do if [ "$dispositiu" = '/dev/[sh]d[a-z]?*' ] ; then break ; fi disp="${dispositiu##*'/dev/'}" fstabparticio="$(cat /etc/fstab | grep "$dispositiu")" if [ -z "$fstabparticio" ] ; then continue ; fi case $fstabparticio in *"swap"*) continue ;; *"ntfs"*) continue ;; esac particiodisponible="$particiodisponible $disp " done partdisp="" for particio in $particiodisponible ; do mounts="$(grep $particio /proc/mounts)" if [ -z "$mounts" ] ; then mkdir -p /mnt/$particio if mount /dev/$particio /mnt/$particio >/dev/null 2>&1 ; then mounts="$(grep $particio /proc/mounts)" espaidisponible=$(df -m /dev/$particio | awk '/^\/dev\//{print $4}') umount /dev/$particio fi else espaidisponible=$(df -m /dev/$particio | awk '/^\/dev\//{print $4}') fi if [ "$espaidisponible" -lt $grandaria ]; then continue ; fi case $mounts in *ext2*) partdisp="$partdisp$particio| $particio ext2 $espaidisponible MB|$particio|" ;; *ext3*) partdisp="$partdisp$particio| $particio ext3 $espaidisponible MB|$particio|" ;; *reiserfs*) partdisp="$partdisp$particio| $particio reiserfs $espaidisponible MB|$particio|" ;; *jfs*) partdisp="$partdisp$particio| $particio jfs $espaidisponible MB|$particio|" ;; *xfs*) partdisp="$partdisp$particio| $particio xfs $espaidisponible MB|$particio|" ;; *msdos*) # if [ "$instal" != "fitxeric" ] ; then continue ; fi partdisp="$partdisp$particio| $particio msdos $espaidisponible MB|$particio|" ;; *vfat*) # if [ "$instal" != "fitxeric" ] ; then continue ; fi partdisp="$partdisp$particio| $particio vfat $espaidisponible MB|$particio|" ;; *ntfs*) # De moment no acceptem ntfs perquè no hem comprovat el suport a l'escriptura. ;; esac done if [ -z "$partdisp" ] ; then fet=`$DIALOG 2>&1 --msgbox "$missatge5" 10 70` exit 5 fi partdisp="${partdisp%%|}" # Demanem a l'usuari quina partició vol utilitzar d'entre les disponibles IFS='|' particioseleccionada="particioseleccionada:"`$DIALOG 2>&1 --backtitle "$subtitol2" --title "${titol/0/1}" --no-tags --radiolist "$missatge2" 30 80 10 $partdisp` case $? in 0) unset IFS particioseleccionada="$(echo "$particioseleccionada" | grep "particioseleccionada")" particioseleccionada="${particioseleccionada##*:}" echo "particioseleccionada: $particioseleccionada" ;; 1) unset IFS echo "Cancel·lar ha sigut premut." exit 1 ;; 255) unset IFS echo "Has tancat el quadre de diàleg." exit 255 ;; esac # Mirem l'espai lliure per poder limitar l'espai d'intercanvi mostrat mounts="$(grep $particioseleccionada /proc/mounts)" if [ -z "$mounts" ] ; then mkdir -p /mnt/$particioseleccionada if mount /dev/$particioseleccionada /mnt/$particioseleccionada >/dev/null 2>&1 ; then espaidisponible=$(df -m /dev/$particioseleccionada | awk '/^\/dev\//{print $4}') umount /dev/$particioseleccionada fi else espaidisponible=$(df -m /dev/$particioseleccionada | awk '/^\/dev\//{print $4}') fi # Mirem si la partició escollida en vfat o msdos, que ens obliga a escollir el desti a fitxer mounts="$(grep $particioseleccionada /proc/mounts)" if [ -z "$mounts" ] ; then mkdir -p /mnt/$particioseleccionada if mount /dev/$particioseleccionada /mnt/$particioseleccionada >/dev/null 2>&1 ; then mounts="$(grep $particioseleccionada /proc/mounts)" umount /dev/$particioseleccionada fi fi desti="" case $mounts in *msdos*) desti="fitxer" ;; *vfat*) desti="fitxer" ;; *ntfs*) # De moment no acceptem ntfs perquè no hem comprovat el suport a l'escriptura. ;; esac if [ "$instal" == "fitxeric" ] ; then desti="fitxer" ; fi # Preguntem si no està ja decidit a on volem instal·lar: fitxer, directori, partició. if [ -z "$desti" ] ; then IFS='|' desti="desti:"`$DIALOG 2>&1 --backtitle "$subtitol3" --title "$titol" --no-tags --radiolist "$missatge3" 30 110 6 $destiinstal` case $? in 0) unset IFS desti="$(echo "$desti" | grep "desti")" desti="${desti##*:}" echo "desti: $desti" ;; 1) unset IFS echo "Cancel·lar ha sigut premut." exit 1 ;; 255) unset IFS echo "Has tancat el quadre de diàleg." exit 255 ;; esac fi fet=`$DIALOG 2>&1 --msgbox "$missatge6" 10 70` mounts="$(grep $particioseleccionada /proc/mounts)" if [ -z "$mounts" ] ; then mkdir -p /mnt/$particioseleccionada if mount /dev/$particioseleccionada /mnt/$particioseleccionada >/dev/null 2>&1 ; then desmunta="si" fi fi case "$instal" in fitxeric) mkdir -p /mnt/$particioseleccionada/boot cp /mediacatix/catix.ic /mnt/$particioseleccionada cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/boot/linux-catix-1.0.1 ;; parcial) case "$desti" in directori) mkdir -p /mnt/$particioseleccionada/catixip cp -a /home /etc /root /var /mnt/$particioseleccionada/catixip ;; fitxer) mkdir -p /mnt/installcatix dd if=/dev/zero of=/mnt/$particioseleccionada/catix.ip bs=1M count="$grandaria" mke2fs /mnt/$particioseleccionada/catix.ip mount -o loop,rw /mnt/$particioseleccionada/catix.ip /mnt/installcatix cp -a /home /etc /root /var /mnt/installcatix umount /mnt/installcatix ;; particio) cp -a /home /etc /root /var /mnt/$particioseleccionada cp /etc/sysconfig/catix /mnt/$particioseleccionada/etc/sysconfig/catix.total ;; esac ;; parcialifitxeric) case "$desti" in directori) cp /mediacatix/catix.ic /mnt/$particioseleccionada mkdir -p /mnt/$particioseleccionada/catixip/boot cp -a /home /etc /root /var /mnt/$particioseleccionada/catixip cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/catixip/boot/linux-catix-1.0.1 ;; fitxer) cp /mediacatix/catix.ic /mnt/$particioseleccionada mkdir -p /mnt/installcatix mkdir -p /mnt/$particioseleccionada/boot dd if=/dev/zero of=/mnt/$particioseleccionada/catix.ip bs=1M count="$grandaria" mke2fs -F /mnt/$particioseleccionada/catix.ip mount -o loop,rw /mnt/$particioseleccionada/catix.ip /mnt/installcatix cp -a /home /etc /root /var /mnt/installcatix umount /mnt/installcatix cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/boot/linux-catix-1.0.1 ;; particio) mkdir -p /mnt/$particioseleccionada/boot cp /mediacatix/catix.ic /mnt/$particioseleccionada cp -a /home /etc /root /var /mnt/$particioseleccionada cp /etc/sysconfig/catix /mnt/$particioseleccionada/etc/sysconfig/catix.parcial cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/boot/linux-catix-1.0.1 ;; esac ;; total) case "$desti" in directori) mkdir -p /mnt/$particioseleccionada/catixit mkdir -p /mnt/$particioseleccionada/catixit/home mkdir -p /mnt/$particioseleccionada/catixit/proc mkdir -p /mnt/$particioseleccionada/catixit/sys cp -a /catix/etc/skel /mnt/$particioseleccionada/catixit/home/catix chown -R catix.catix /mnt/$particioseleccionada/catixit/home/catix cp -a /catix/etc/skel /mnt/$particioseleccionada/catixit/root chmod -R root.root /mnt/$particioseleccionada/catixit/root cp -a /catix/* /mnt/$particioseleccionada/catixit cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/catixit/boot/linux-catix-1.0.1 ;; fitxer) mkdir -p /mnt/installcatix mkdir -p /mnt/$particioseleccionada/boot dd if=/dev/zero of=/mnt/$particioseleccionada/catix.it bs=1M count="$grandaria" mke2fs /mnt/$particioseleccionada/catix.it mount -o loop,rw /mnt/$particioseleccionada/catix.it /mnt/installcatix cp -a /catix/* /mnt/installcatix mkdir -p /mnt/installcatix/home mkdir -p /mnt/installcatix/proc mkdir -p /mnt/installcatix/sys cp -a /catix/etc/skel /mnt/installcatix/home/catix chown -R catix.catix /mnt/installcatix/home/catix cp -a /catix/etc/skel /mnt/installcatix/root chmod -R root.root /mnt/installcatix/root umount /mnt/installcatix cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/boot/linux-catix-1.0.1 ;; particio) cp -a /catix/* /mnt/$particioseleccionada mkdir -p /mnt/$particioseleccionada/home mkdir -p /mnt/$particioseleccionada/proc mkdir -p /mnt/$particioseleccionada/sys cp -a /catix/etc/skel /mnt/$particioseleccionada/home/catix chown -R catix.catix /mnt/$particioseleccionada/home/catix cp -a /catix/etc/skel /mnt/$particioseleccionada/root chmod -R root.root /mnt/$particioseleccionada/root cp /etc/sysconfig/catix /mnt/$particioseleccionada/etc/sysconfig/catix.total cp -a /mediacatix/boot/isolinux/linux /mnt/$particioseleccionada/boot/linux-catix-1.0.1 ;; esac ;; esac if [ -n "$desmunta" ] ; then umount /dev/$particioseleccionada ; fi $DIALOG --msgbox "$missatge4" 0 0 2>&1 > /dev/null exit 0