quarta-feira, 16 de janeiro de 2013

Acesso VNC no Linux sem monitor conectado - Debian Ubuntu

Antes voce deve instalar o Servidor VNC x11vnc 
Um detalhe no Xorg é que para iniciar o X voce deve estar com um monitor conectado, o servidor X não inicia sem monitor, na nossa situação temos um servidor que gostariamos de deixar sem monitor mas ao mesmo tempo conectar via VNC para acessar o Grafico, segue a solução para configurar a disponibilidade do Servidor X para o acesso VNC sem monitor.

Vamos utilizar o Xserver Dummy, digite o comando abaixo para instalar:

apt-get install xserver-xorg-video-dummy


Crie o arquivo xorg.conf

touch /etc/X11/xorg.conf



Salve o conteudo dentro do arquivo xorg.conf

##Arquivo xorg.conf para Servidor VNC x11vnc
##
Section "Device"

    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1024x800"
    EndSubSection
EndSection

##
##Fim do xorg.conf


Reinicie o Gerenciador Grafico
Para GDM (Gnome) digite:

su /etc/init.d/gdm restart



Para KDM (Kde) digite:

su /etc/init.d/kdm restart




Para XDM digite:

su /etc/init.d/xdm restart



Caso queira acessar o Grafico da maquina local ou voltar a configuração original basta renomear ou apagar o arquivo "xorg.conf".







Instalar VNC Server x11vnc no Debian - Ubuntu

No nosso caso usamos o Debian Wheezy Netinstall mas poderá usar para as outras distribuições "Like Debian".
Vamos ao que interessa:

Primeiramente vamos instalar o pacote necessario para execução do Servidor Vnc
No bash digite o comando:


apt-get install x11vnc



Agora vamos configurar o arquivo que armazena a senha de acesso do servidor Vnc


Crie o Diretorio para armazenar o arquivo de senha

mkdir -p /etc/x11vnc



Crie o arquivo de senha dentro de /etc/x11vnc/

touch /etc/x11vnc/vncpasswd



Crie uma senha e armazene dentro do arquivo criado:

x11vnc -storepasswd suasenha /etc/x11vnc/vncpasswd



Crie um arquivo para armazenar o script de inicialização do Servidor Vnc x11vnc

touch /etc/init.d/x11vnc-init


Dê permissão de execução para o script

chmod +x /etc/init.d/x11vnc-init


Copie o conteudo do script abaixo e cole dentro do arquivo "/etc/init.d/x11vnc-init"

#!/bin/bash
# --------------------------------
# /etc/init.d/x11vnc
# --------------------------------

# find xauthority file
find_xauth () {
  FOUND=0
  RETRIES=4
  [ -z "$1" ] || RETRIES="$1"

  [ -e "/var/lib/kdm/" ] &&
     XAUTHFILE_KDM=`find /var/lib/kdm/ -iname "A\:0-*"`
  [ -e "/var/run/xauth/" ] &&
     XAUTHFILE_KDM2=`find /var/run/xauth/ -iname "A\:0-*"`
  [ -e "/var/lib/xdm/authdir/authfiles/" ] &&
     XAUTHFILE_XDM=`find /var/lib/xdm/authdir/authfiles/ -iname "A\:0-*"`
  [ -e "/var/lib/gdm/" ] &&
     XAUTHFILE_GDM=`find /var/lib/gdm/ -iname *Xauth*`

  [ -f "$XAUTHFILE_KDM" ]  && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM"
  [ -f "$XAUTHFILE_KDM2" ] && FOUND=1 && XAUTHORITY="$XAUTHFILE_KDM2"
  [ -f "$XAUTHFILE_XDM" ]  && FOUND=1 && XAUTHORITY="$XAUTHFILE_XDM"
  [ -f "$XAUTHFILE_GDM" ]  && FOUND=1 && XAUTHORITY="$XAUTHFILE_GDM"

  if [ "$FOUND" -eq "0" ]; then
    if [ "$RETRIES" -gt "0" ]; then
      let "RETRIES-=1"
      find_xauth "$RETRIES"
    else
      echo "carregamento FALHOU (nao foi possivel encontrar uma maneira para me autenticar com o Servidor X)" >>/var/log/x11vnc.log
      exit -1
    fi
  else
    echo "Encontrado o arquivo de autenticacao ($XAUTHORITY)" >>/var/log/x11vnc.log
  fi
}

START_COMMAND="x11vnc"
X11VNC_PARAMS="-ncache -noxrecord -noxfixes -display :0 -noxdamage  -forever -bg"

case "$1" in
  start)

    if [ ! -f /etc/x11vnc/vncpasswd ]; then
      echo " carregamento FALHOU (arquivo '/etc/x11vnc/vncpasswd' nao encontrado)" >>/var/log/x11vnc.log
      echo "   Crie a senha manualmente digitando o comando: x11vnc -storepasswd suasenha /etc/x11vnc/vncpasswd " >>/var/log/x11vnc.log
      exit -1;
    fi

    #su -c "$COMMAND" -l x11vnc &
    if [ $X11VNC_X11 = 1 ]; then
      find_xauth
      START_COMMAND="$START_COMMAND -auth $XAUTHORITY $X11VNC_PARAMS"
    else
      START_COMMAND="$START_COMMAND $X11VNC_PARAMS"
    fi
    OUTPUT=`$START_COMMAND`
    echo "$START_COMMAND" >>/var/log/x11vnc.log
    echo "$OUTPUT" >>/var/log/x11vnc.log
  ;;
  stop)
    pid=`pidof x11vnc`
    if [ -z "$pid" ]
    then
     echo "x11vnc nao esta rodando" >>/var/log/x11vnc.log
     exit -1;
    else
     kill -9 $pid
    echo "x11vnc parado" >>/var/log/x11vnc.log
    fi

  ;;
  *)
    echo "x11vnc Script de Inicializacao"
    echo "Use: $0 (start|stop)"
    echo "$OUTPUT"
  ;;
esac
exit 0

##Fim do script

Para inicializar junto com o Gerenciador de Display (Display Manager) siga as intruções 


Caso o seu gerenciador de Display for o GDM (GNOME) use o comando:
echo "sh /etc/init.d/x11vnc-init start" >>  /etc/X11/gdm/Init/Default /etc/gdm/Init/Default

Caso o seu gerenciador de Display for o KDM (KDE) use o comando:
echo "sh /etc/init.d/x11vnc-init start" >>  /etc/kde*/kdm/Xsetup

Caso o seu gerenciador de Display for o XDM use o comando:
echo "sh /etc/init.d/x11vnc-init start" >>  /etc/X11/xdm/Xsetup 

Caso o seu gerenciador de Display for o CDE use o comando:
echo "sh /etc/init.d/x11vnc-init start" >>  /etc/dt/config/Xsetup


Reinicie o Gerenciador de Display e acesse o Vnc pelo IP da maquina e a porta 5900








quinta-feira, 10 de janeiro de 2013

Instalação do Xen 4.1 no Debian Wheezy 7.0 Netinstall - Script

Neste Post você poderá instalar de forma simples o Xen 4.1 no Debian Wheezy 7.0 e desfrutar desta Incrivel ferramenta gratuita de Virtualização.  O Ambiente foi criado com 3 partições, segue abaixo:

Você tem a liberdade de montar as partições e seus tamanhos conforme sua necessidade, nós usamos o exemplo a seguir:

Hd de 1 TeraByte

Partição Raiz '/' - Tipo: EXT4 - Tamanho: 50 Gb
Partição para os Discos das DOMUs (Maquinas virtuais) - Tipo: Linux LVM - Tamanho: 938 Gb
Partição de Area de troca - Tipo SWAP - Tamanho: 12 Gb

Instalamos o Linux sem configurar a interface de rede local, selecionamos para "Não configurar agora" e prosseguimos a instalação sem rede, poderá usar essa opção conforme sua necessidade.

Para poupar recursos do sistema usamos o Xdm como gerenciador de login e o FluxBox como Gerenciador de Janelas.


Foi optado pelo uso do Virt-Manager para o Gerenciamento das maquinas virtuais, ele facilita a criação, administração e visualização da sua VM, também poderá gerenciar o seu grupo de volumes lógicos, criando volumes lógicos no momento da criação da VM, isto tudo via interface gráfica.



Após a instalação crie um arquivo "script.sh" com o conteudo Abaixo e dê permissão de execução:



#!/bin/bash

function pause(){
   read -p "$*"
}

pause 'Este Script ira instalar o Xen 4.1 no Debian Wheezy, pressione [ENTER] para continuar...'

echo 'Etapa de Configuracao das interfaces de rede LoopBack  e Eth0   '
echo -n 'Deseja configurar as interfaces de rede ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
                pause 'O sistema ira configurar a rede, pressione [ENTER] para continuar...'
                echo 'auto lo' > /etc/network/interfaces
                echo 'iface lo inet loopback' >> /etc/network/interfaces
                echo '' >> /etc/network/interfaces
                echo 'auto eth0' >> /etc/network/interfaces
                echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
fi

echo 'Serviço de rede'
echo -n 'Deseja reiniciar Servico de rede ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
echo 'Reiniciando os serviços de rede...'
                /etc/init.d/networking restart
fi

echo 'Arquivos de enderecos de repositorio'
echo -n 'Deseja configurar os arquivos de endereco dos repositorios ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
                echo 'deb http://security.debian.org/ wheezy/updates main contrib non-free' > /etc/apt/sources.list
echo 'deb-src http://security.debian.org/ wheezy/updates main contrib non-free' >> /etc/apt/sources.list
echo 'deb http://ftp.br.debian.org/debian/ wheezy main contrib non-free' >> /etc/apt/sources.list
echo 'deb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free' >> /etc/apt/sources.list
echo 'Arquivos de configuração de repositorio configurados...'
fi

echo 'Atualizacao de endereços de repositorio'
echo -n 'Deseja atualizar os enderecos dos repositorios ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
apt-get update
fi

echo 'Instalacao de pacotes necessarios'
echo -n 'Deseja instalar os pacotes para instalacao do Servidor Xen ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
apt-get install xen-linux-system-3.2.0-4-amd64 xen-utils-4.1 xen-tools sudo xserver-xorg xserver-xorg-core xorg fluxbox xdm xenwatch virt-manager firmware-realtek openssh-server vim less -y
fi

echo 'Configuracao do Gestor de Inicialização GRUB'
echo -n 'Deseja configurar o Grub para o Servidor Xen ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
mv /etc/grub.d/10_linux /etc/grub.d/50_linux
echo "" >> /etc/default/grub
echo "# Disable OS prober to prevent virtual machines on logical volumes from appearing in the boot menu." >> /etc/default/grub
echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub
echo "" >> /etc/default/grub
echo "# Xen boot parameters for all Xen boots" >> /etc/default/grub
echo 'GRUB_CMDLINE_XEN="dom0_mem=1024M"' >> /etc/default/grub
update-grub2
fi

echo 'Copiar Bibliotecas do XEN para o Virt-Manager'
echo -n 'Deseja copiar as bibliotecas do Servidor Xen para o Virt-Manager ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
mkdir -p /usr/lib/xen-default/
mkdir -p /usr/lib64/xen/
cp /usr/lib/xen-4.1/* -rv /usr/lib/xen-default/
cp /usr/lib/xen-4.1/* -rv /usr/lib64/xen/
fi

echo 'Configuracao do HOST Xen (DOMAIN 0)'
echo -n 'Deseja configurar os parametros necessarios no Servidor Xen ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
sed -i 's|(enable-dom0-ballooning yes)|(enable-dom0-ballooning no)|g' /etc/xen/xend-config.sxp
sed -i 's|#(xend-http-server no)|(xend-http-server yes)|g' /etc/xen/xend-config.sxp
sed -i 's|#(xend-unix-server no)|(xend-unix-server yes)|g' /etc/xen/xend-config.sxp
sed -i 's|# (network-script network-bridge)|(network-script network-bridge)|g' /etc/xen/xend-config.sxp
sed -i 's|(dom0-min-mem 196)|(dom0-min-mem 1024)|g' /etc/xen/xend-config.sxp
sed -i 's|XENDOMAINS_SAVE=/var/lib/xen/save|XENDOMAINS_SAVE=""|g' /etc/default/xendomains
sed -i 's|XENDOMAINS_RESTORE=true|XENDOMAINS_RESTORE=false|g' /etc/default/xendomains
fi

echo 'Configurar a rede Bridge xenbr0'
echo -n 'Deseja Configurar a rede Bridge xenbr0 ? s/n  ' ; read resposta

if [ $resposta == "s" ] ; then
echo '' >> /etc/network/interfaces
echo 'auto xenbr0' >> /etc/network/interfaces
echo 'iface xenbr0 inet dhcp' >> /etc/network/interfaces
echo 'bridge_ports eth0' >> /etc/network/interfaces
echo 'bridge_stp on' >> /etc/network/interfaces
echo 'bridge_maxwait 0' >> /etc/network/interfaces
echo 'bridge_fd 0' >> /etc/network/interfaces
ifconfig xenbr0 up
/etc/init.d/networking restart
brctl addbr xenbr0
fi


#FIM