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
# *
# *

