Script MULTILINUX para Ubuntu 7.04

De Wiki do Ronald

Este é o início do SCRIPT, baseado no do 6.10.... vamos AJUSTAR para o 7.04

Ainda em FASE de TESTE !!!

PARTICIPE, TESTE e INFORME os PROBLEMAS!!!



RECEITA DE BOLO para o UBUNTU 7.04

#! /bin/bash

##################################################################################
#
#             Script de configuração do MULTILINUX para Ubuntu 7.04
#                 Autor: Ronald Costa   - Jun 2007 - Versão 1.0
#                   E-mail: scherolt@gmail.com
#
#       Este script é LIVRE e pode ser usado sem nenhuma restrição !!!
#                    APENAS MANTENHA OS CRÉDITOS DOS AUTORES !!!
#
#
##################################################################################

##################################################################################
#    - Abra um terminal como usuário no ambiente gráfico
#    - Digite gksu gedit script.sh
#    - Cole este script no editor e salve
#    - Feche o editor
#    - chmod 777 script.sh
#    - Execute o script
#    - gksu script.sh
##################################################################################


zenity --title="MULTILINUX" --info --text="Sistema MULTILINUX para UBUNTU 7.04
             www.ronaldcosta.pro.br
               scherolt@gmail.com"

zenity --title="MULTILINUX" --info --text="Este sistema não tem fins comerciais.
 Sua licença é GPL. Mantenha este SCRIPT sempre um Software Livre!"

zenity --title="MULTILINUX" --info --text="Este script vai ajudar na instalação 
do MULTILINUX. Você deve ter conectado os teclados e mouses USB, 
bem como ter instalado as placas de vídeo adicionais."

zenity --title="Atenção !!!" --warning --text="Caso ainda não tenha instalado placas de vídeo, 
teclados e mouses, clique em CANCELAR, desligue o computador e realize a instalação.
 Depois execute novamente o script para instalação." &&  RESP=0 || RESP=1

#echo Retorno: $RESP

if [ $RESP -eq 1 ]; then
    zenity --title="MULTILINUX" --info --text="Terminando... Execute novamente o script 
    para instalação, depois de ter instalado as placas, teclados e mouses."
    exit
fi

################################################################
#       Pergunta o PROXY da REDE se for o caso....
################################################################

ACTION=$(zenity --title="Acesso a Internet" --text="Você utiliza PROXY em sua rede?:" --list --column "Ação" SIM NÃO);

case "$ACTION" in
"SIM" )
XPROXY=$(zenity --title="Endereço do Proxy da Rede !" --entry --text="Insira o endereço de PROXY da rede aqui ! (Ex: http://10.67.120.35:3128)");
;;
"NÃO" )
zenity --info --title "Sem Proxy !" --text "O Instalador vai considerar que você não usa PROXY !";
;;
*)
zenity --error --title "Alerta" --text "Nenhuma ação foi selecionada. O Instalador vai considerar que você não usa PROXY !";
;;
esac 

export http_proxy="$XPROXY"

export ftp_proxy="$XPROXY"

################################################################
#       Verifica se o USUARIO é ROOT....
################################################################

#verifica se o usuário tem privilégios de ROOT para poder alterar 
# configurações do sistema [ "$USER" != "root" ]

if ! [ "$USER" = "root" ]; then
    zenity --title="MULTILINUX" --info --text="É necessário privilégios de ROOT. 
    O usuário não tem permissão para alterar configuração do sistema necessárias 
    para o funcionamento dos MULTITERMINAIS..."
    exit
fi

################################################################
#     Verifica a Quantidade de PLACAS, TECLADOS E MOUSES....
################################################################

QT_PLACAS=`lspci | grep -c VGA | cut -d" " -f1`

#Sai se existir apenas uma placa de video
if [ $QT_PLACAS = 1 ]; then
    zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
    existe apenas UMA PLACA de vídeo..."
    exit
fi


cd /tmp

cat /proc/bus/input/devices > /tmp/devices.txt

QT_TECLADOS=`cat devices.txt |grep keyboard -A 2| grep Phys |grep input0|wc -l`

#Sai se existir apenas um teclado
if [ $QT_TECLADOS = 1 ]; then
    zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
    existe apenas UM TECLADO conectado..."
    exit
fi

QT_MOUSES=`cat devices.txt |grep Mouse -A 2| grep Phys |grep input0|wc -l`

#Sai se existir apenas um mouse
if [ $QT_MOUSES = 1 ]; then
    zenity --title="MULTILINUX" --info --text="Não será possível configurar o MULTILINUX,
    existe apenas UM MOUSE conectado..."
    exit
fi

zenity --title="MULTILINUX" --info --text="Foram detectadas $QT_PLACAS placas de vídeo. 
O sistema vai tentar configurar $QT_PLACAS MULTITERMINAIS..."

############################################################
# ---- Executa a configuracao do XORG
############################################################

Xorg -configure :3

cp /etc/X11/xorg.conf /tmp

cd /tmp

sed '/Section \"ServerLayout\"/,/EndSection/d' xorg.conf > novo.xorg.conf

cp novo.xorg.conf novo.xorg.conf.aux

sed '/Section \"DRI\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf

cp novo.xorg.conf novo.xorg.conf.aux

sed '/Section \"Screen\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf

cp novo.xorg.conf novo.xorg.conf.aux

sed '/Section \"Monitor\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf

cp novo.xorg.conf novo.xorg.conf.aux

sed '/Section \"Device\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf

cp /root/xorg.conf.new /tmp

sed '/Section \"Files\"/,/EndSection/d' xorg.conf.new > novo.xorg.conf2

cp novo.xorg.conf2 novo.xorg.conf.aux

sed '/Section \"Module\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf2

cp novo.xorg.conf2 novo.xorg.conf.aux

sed '/Section \"InputDevice\"/,/EndSection/d' novo.xorg.conf.aux > novo.xorg.conf2

cat novo.xorg.conf2 >> novo.xorg.conf

sed 's/Mouse0/Configured Mouse/g' novo.xorg.conf > novo.xorg.conf2

cp novo.xorg.conf2 novo.xorg.conf.aux

sed 's/Keyboard0/Generic Keyboard/g' novo.xorg.conf.aux > novo.xorg.conf

rm -rf /root/xorg.conf.new 

#########################################
#   DONT VT SHITCH
#########################################



######################################
# Novo XORG OK esta em novo.xorg.conf
######################################

# Remove o /etc/X11/xorg.conf e coloca o novo !!!
mv /etc/X11/xorg.conf /etc/X11/xorg.conf.antes.do.multiterminal

# Move o /tmp/novo.xorg.conf para /etc/X11/xorg.conf
mv /tmp/novo.xorg.conf /etc/X11/xorg.conf

######################################
#     Seleciona uma RESOLUCAO
######################################

RESOLUCAO=$(zenity --text="Escolha a Resolução desejada !" --list --column "Opção" 1024x768 800x600 640x480);

cp /etc/X11/xorg.conf /tmp/xorg.conf.teste

touch /tmp/resolucao.txt
echo "                Modes           \"$RESOLUCAO\"" > /tmp/resolucao.txt

sed '/Depth     8/r resolucao.txt' xorg.conf.teste > xorg.conf.ok
sed '/Depth     15/r resolucao.txt' xorg.conf.ok > xorg.conf.teste
sed '/Depth     16/r resolucao.txt' xorg.conf.teste > xorg.conf.ok
sed '/Depth     24/r resolucao.txt' xorg.conf.ok > xorg.conf.teste

rm /tmp/xorg.conf.ok
mv /tmp/xorg.conf.teste /etc/X11/xorg.conf


######################################
# Montar o novo GDM.CONF
######################################

# prepara o GDM.CONF removendo o que está depois de [servers]
cd /tmp

QT_TERMINAIS=$QT_PLACAS

sed '/\[servers\]/,$d' /etc/X11/gdm/gdm.conf > /tmp/gdm.conf2
echo>>gdm.conf2

# montando... o novo gdm
echo "[servers]" >> gdm.conf2


for ((i=0;i<=$QT_TERMINAIS;i++))
 do
  echo "$i=Xephyr$i" >> gdm.conf2
 done
 
echo >> gdm.conf2
echo >> gdm.conf2

echo "[server-Xephyr0]" >> gdm.conf2
echo "name=Xephyr0" >> gdm.conf2
echo "command=/usr/bin/X -ac -br" >> gdm.conf2
echo "handled=false" >> gdm.conf2
echo "flexible=false" >> gdm.conf2

echo >> gdm.conf2
echo >> gdm.conf2

for ((i=1;i<=$QT_TERMINAIS;i++))
 do
  t=$((i-1))
  echo "[server-Xephyr$i]" >> gdm.conf2
  echo "name=Xephyr$i" >> gdm.conf2
  echo "command=/usr/sbin/Xephyr.sh -display :0.$t -xauthority /var/lib/gdm/:0.Xauth -fullscreen -kbdphys \
TECLADO$i -mousephys MOUSE$i -use-evdev" >> gdm.conf2
  echo "handled=true" >> gdm.conf2
  echo "flexible=false" >> gdm.conf2
  echo >> gdm.conf2
  echo >> gdm.conf2
 done


######################################
# Detectar os teclados e mouses (USB)
######################################

cd /tmp

cat /proc/bus/input/devices > /tmp/devices.txt

QT_TECLADOS=`cat devices.txt |grep keyboard -A 2| grep Phys |grep input0|wc -l`
cat devices.txt |grep [kK]eyboard -A 2| grep Phys |grep input0|cut -d "=" -f2 > teclados.txt

QT_MOUSES=`cat devices.txt |grep Mouse -A 2| grep Phys |grep input0|wc -l`
cat devices.txt |grep [mM]ouse -A 2| grep Phys |grep input0|cut -d "=" -f2 > mouses.txt

echo "QT de Teclados = $QT_TECLADOS"
echo "-----------------------------------------"
cat teclados.txt
echo
echo "QT de Mouses = $QT_MOUSES"
echo "-----------------------------------------"
cat mouses.txt
echo

################################################################
# Trocando endereços dos TECLADOS no GDM.CONF
################################################################
echo "TROCANDO TECLADOS"
echo "-----------------------------------------"

i=1
cat teclados.txt | while read ENDERECO ; do NOME="TECLADO$i"; sed s,$NOME,$ENDERECO,g gdm.conf2 > gdm.conf3;\
 mv gdm.conf3 gdm.conf2; i=$((i+1)) ; done

echo "OK"
echo "-----------------------------------------"
echo "TROCANDO MOUSES"
echo "-----------------------------------------"

# Trocando endereços dos MOUSES no GDM.CONF
i=1
cat mouses.txt | while read ENDERECO ; do NOME="MOUSE$i"; sed s,$NOME,$ENDERECO,g gdm.conf2 > gdm.conf3;\
 mv gdm.conf3 gdm.conf2; i=$((i+1)) ; done

echo "OK"
echo "-----------------------------------------"

# troca nome para GDM.CONF.OK
mv gdm.conf2 gdm.conf.ok

# faz BACKUP do GDM.CONF original
cp /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm.conf.antes.do.multiterminal

# Coloca no local o GDM.CONF
cp /tmp/gdm.conf.ok /etc/X11/gdm/gdm.conf

echo "GDM.CONF"
echo "-----------------------------------------"

######################################
# Baixar o Xhephyr e instalar
######################################

cd /tmp

wget http://www.c3sl.ufpr.br/multiterminal/howtos/xephyr-precompiled.tar.bz2
tar -xjf xephyr-precompiled.tar.bz2 --directory /usr/local/

echo "DOWNLOAD OK"
echo "-----------------------------------------"

wget http://www.ronaldcosta.pro.br/sistemas/multilinux/download/Xephyr.sh
cp /tmp/Xephyr.sh /usr/sbin/Xephyr.sh

chmod +x /usr/sbin/Xephyr.sh

echo "Xephyr.sh - OK"
echo "-----------------------------------------"
######################################
# Acertar o erro do teclado
######################################

for ((i=0;i<=$QT_TERMINAIS;i++))
 do
   echo "model = \"pc105\"" > /usr/share/X11/xkb/X$i-config.keyboard 
   echo "keycodes = \"evdev\"" >> /usr/share/X11/xkb/X$i-config.keyboard 
   echo "layout = \"br\"" >> /usr/share/X11/xkb/X$i-config.keyboard 
 done

ln -s /usr/share/X11/xkb /usr/lib/X11/xkb
cp /usr/share/X11/xkb/X*.keyboard /usr/lib/X11/xkb
cp `which xkbcomp` /usr/lib/X11/xkb
mkdir /usr/lib/X11/xkb/compiled

######################################
#  TERMINADO !!!
######################################

# Solicitar o REBOOT ou recarregar o X...


zenity --title="Atenção !!!" --warning --text="Atenção!!! O Sistema será reiniciado para finalizar as configurações. Clique em OK para reiniciar. Clique em CANCELAR para não reiniciar." &&  RESP=0 || RESP=1


if [ $RESP -eq 1 ]; then
    zenity --title="MULTILINUX" --info --text="Terminando... O Sistema precisa ser reiniciado."
    exit
fi

reboot

######################################################################
#           Agradecimentos aos amigos que colaboraram:
######################################################################

# * Marcio Kleber Torres
# * 
# * 


Ferramentas pessoais