Mudanças entre as edições de "Projeto: Administração Centralizada de Sistemas Operacionais"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 375: Linha 375:
 
Siga o tutorial na página
 
Siga o tutorial na página
 
http://www.guiadohardware.net/comunidade/tutorial-instalando/988514/<br/>
 
http://www.guiadohardware.net/comunidade/tutorial-instalando/988514/<br/>
Para o Ubuntu 10.04 http://ubuntued.info/como-instalar-o-virtualbox-no-ubuntu
+
Para o Ubuntu 10.04 http://ubuntued.info/como-instalar-o-virtualbox-no-ubuntu<br/>
 
Depois da instalação do virtualbox e do sistema operacional, vá em '''configurações''', '''rede''', no campo '''Conectado a''' selecione a opção '''Interface do Hospedeiro''' ou '''Placa em modo Bridge'''.
 
Depois da instalação do virtualbox e do sistema operacional, vá em '''configurações''', '''rede''', no campo '''Conectado a''' selecione a opção '''Interface do Hospedeiro''' ou '''Placa em modo Bridge'''.
  

Edição das 08h21min de 11 de novembro de 2010

Projeto

O projeto "Administração Centralizada de Sistemas Operacionais" está sendo realizado no Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina Campus São José, no período de 02/08/2010 à 22/12/2010 pelo aluno Gustavo Paulo Medeiros Da Silva (4ª fase, CST Sistemas de Telecomunicações) e orientado pelo professor Ederson Torresini.

Objetivos

Centralizar a administração dos sistemas operacionais de uma rede.

Diário de Bordo

06/08/2010 (semana 1)

Nesta primeira semana foi feita uma pesquisa para conhecer e comparar programas que copiam imagens de um SO para outros computadores, através da rede. A seguir tem uma tabela comparando os programas pesquisados.


Armazenamento de partição Operações pós-instalação
Projeto S.O. baseado em... Livre? Multicast Protocolos Sistema de arquivo Trocar o nome da máquina redimensionamento de partição
FOG Project UNIX, DOS Sim Sim TFTP, UDP, TCP, NFS NTFS, XFS, JFS, HPFS, FAT16/32, Reiser3, EXT2, EXT3 Sim Sim***
Clonezilla UNIX Sim Sim TFTP, UDP, TCP NTFS, FAT16/32, EXT2, EXT3, Reiserfs Não* Sim**
Symantec Ghost DOS, UNIX Não Sim TCP NTFS, FAT16/32, EXT2, EXT3 Não* Sim**
G4U UNIX Sim Não FTP, TCP Todos (copia bit-a-bit) Não* Não
UDP Cast UNIX Sim Sim TFTP, UDP Todos (copia bit-a-bit) Não* Não
Partimage UNIX Sim Não NFS, UDP, TCP FAT16/32, Reiser3, EXT2, EXT3 Não* Não

(*) É necessário trocar o nome dos computadores para não haver confusão na rede. Trocar o nome, máquina por máquina.
(**) Não é possível utilizar a rede, tem que realizar o boot no cd de instalação do produto.
(***) O redimensionamento é feito apenas com imagens do sistema Windows. Para esse caso redimensionar é colocar uma imagem de um disco rígido de 200 GB em um disco rígido de 10GB, enquanto os dados são menos de 10GB.

11/08/2010 (semana 2)

Problema

Para redes pequenas, formatar computador por computador é um problema, porém, quando estamos falando de uma rede com maior porte (15 computadores no mínimo), o problema aumenta, porque o tempo gasto para formatar todas as máquinas será muito grande.


Proposta de Solução

Centralizar a administração de sistemas operacionais utilizando um servidor de distribuição de imagens.


Objetivo Geral

O objetivo geral do projeto é diminuir o tempo gasto pela formatação dos computadores.


Objetivos específicos

1- Copiar imagens para computadores com características físicas diferentes (HD, memória, etc).

13/08/2010 (semana 2)

Para a escolha do servidor de imagens foi feito uma lista de requisitos onde o servidor terá que atender.

Requisitos Que seja...
Custo Gratuito
SO Unix
Protocolo Protocolo de transferência simples (TFTP)
Sistemas de arquivos O maior número possível
Operações pós instalação Modificar o nome do computador e expandir a partição (ou partições)

De acordo com a pesquisa realizada, o programa que atende os requisitos mínimos para a execução do projeto foi o FOG Project.

27/08/2010 (semana 4)

Para realizar testes com o servidor escolhido vamos preparar um cenário onde apenas o servidor e um cliente estarão ativos. Por precaução, o servidor e o cliente serão instalados em máquinas virtuais rodando o UBUNTU 10.4 (OBS: O SERVIDOR SÓ FUNCIONA COM A INSTALAÇÃO DO UBUNTU EM INGLÊS). Além das máquinas, será feita uma rede virtual (Vlan) para separá-los da rede da instituição com o intuito de evitar futuro transtornos.

14/09/2010 (semana 7)

Ao longo das últimas semanas tivemos dificuldades com a montagem do cenário de testes, detalhes despercebidos estavam atrapalhando a execução do projeto que aos poucos foram encontrados e eliminados.

Problemas

  • 1° - Para o servidor de imagens funcionar é preciso que a instalação do Ubuntu esteja em inglês.
  • 2° - Para as vlans se "enxergarem" é preciso que as máquinas virtuais estejam na mesma rede. No VirtualBox por padrão, na configurações de rede no campo conectado a está selecionado a opção NAT, opção que separa a máquina virtual da rede do hospedeiro, para as vlans funcionarem é preciso selecionar a opção Interface do Hospedeiro ou Placa em modo Bridge.
  • 3° - Para o VirtualBox dá o boot pela rede, ele irá procurar o servidor na rede real, desprezando a vlan. Para dá o boot na vlan, é preciso configurar uma interface vitual no computador hospedeiro e na configurações de rede do VirtualBox no campo NOME selecione a interface virtual criada, (ex.: eth0.1).

Organização do cenário de testes

  • A máquina virtual onde o servidor está instalado tem acesso a rede real e a vlan.
  • A máquina virtual que será o cliente tem acesso apenas a vlan.

<graphviz> digraph Redes { "VirtualBox (1)" [shape=Mrecord] "VirtualBox (2)" [shape=Mrecord] "eth0.1 (1)" [color=blue] "eth0.1 (2)" [color=blue] "eth0 (1)" [color=red] "eth0 (2)" [color=red]

"FOG Project" -> "VirtualBox (1)" "VirtualBox (1)" -> "Computador 1" "VirtualBox (1)" -> "eth0.1 (1)" [color=blue] "VirtualBox (1)" -> "eth0 (1)" [color=red] "Computador 1" -> "eth0 (1)" [color=red]

"VirtualBox (2)" -> "Computador 2" "VirtualBox (2)" -> "eth0.1 (2)" [color=blue] "Computador 2" -> "eth0.1 (2)" [color=blue] "Computador 2" -> "eth0 (2)" [color=red]

"rede real" [color=red] "eth0 (1)" -> "rede real" [color=red] "eth0 (2)" -> "rede real" [color=red]

"vlan" [color=blue] "eth0.1 (1)" -> "vlan" [color=blue] "eth0.1 (2)" -> "vlan" [color=blue] subgraph clusterKernel { label="rede física" "rede real" "vlan"

} } </graphviz>

Legenda:

  • ----->: vlan.
  • ----->: rede real.
  • ----->: Máquina onde está instalado.
  • (1): parte do servidor.
  • (2): parte do cliente.
  • eth0: interface de rede (rede real).
  • eth0.1: interface de rede (vlan).

30/09/2010 (semana 9)

Testes de cópia.
Ao longo das últimas semanas alguns testes foram feitos com o servidor.

  • Teste n° 1 - o cliente irá fornecer uma cópia de si mesma para o servidor.

Depois da várias tentativas sem sucesso, notamos que no momento em que o servidor estava tentando copiar o sistema do cliente, aparecia na tela em um curto momento um erro com o "NFS" (na verdade quem notou esse erro foi o prof. Ederson, eu nem enxerguei isso).
Um erro com NFS, pra começar, o que é NFS?
É um aplicativo que torna uma pasta de um coputador visível por todos os computadores da mesma rede. Para mais informações siga o link http://pt.wikipedia.org/wiki/Network_File_System
O motivo do erro com o "NFS" ainda é desconhecido, mas para funcionar, instalei um servidor "NFS" em outro computador e vários testes foram feitos, após os testes o servidor não apresentava mais problemas.

  • Teste n° 2 - um outro cliente irá puxar a imagem do servidor FOG.

O teste dois apenas está funcionando com outra máquina com as mesmas características (HD com mesmo tamanho), máquinas com características diferentes ainda apresentam erros.

01/10/2010 (semana 9)

Os testes feitos ontem foram repetidos, mas desta vez, com sistema operacional Windows XP.
O teste um não apresentou nem um tipo de problema, nem mesmo com o NFS. O teste dois continua com o mesmo problema, está funcionando com outra máquina com as mesmas características, máquinas com características diferentes ainda apresentam erros.

13/10/2010 (semana 11)

Cópia de imagens para as máquinas.

  • Imagens - ubuntu, windows (as duas imagens são clones de máquinas com um HD de 3 GB, o ubuntu é do tipo Multiple Partition - All Disks e o windows é do tipo Single Partition NTFS).
  • Hosts - windows, ubuntu, windows_pequeno, ubuntu_pequeno, SEM_SO.

windows e ubuntu possuem um HD de 8 GB.
windows_pequeno e ubuntu_pequeno possuem HD de 3 GB.
SEM_SO, HD de 3 GB e sem sistema operacional.

imagem máquinas aceita
windows windows_pequeno S
windows windows N *
windows ubuntu_pequeno S
windows SEM_SO S
ubuntu windows_pequeno S
ubuntu ubuntu N **
ubuntu ubuntu_pequeno S
ubuntu SEM_SO N

(*) copia, mas após a cópia aparece "Erro de disco".
(**) antes de começar o processo de cópia abre um terminal de comandos grub.

14/10/2010 (semana 11)

O teste agora é com uma imagem do ubuntu do tipo Multiple Partition - Single Disk com 3 GB, os resultados não mudaram muito de acordo com a tabela anterior mas desta vez a máquina de 8 GB de HD aceitou a imagem ubuntu.

22/10/2010 (semana 12)

Após um computador com um HD de 8 GB ter um sistema de 3 GB precisamos aumentar a partição.
Como fazer isso de maneira rápida e se está com a partição montada?

  • 1- Podemos dá um boot em um cd de instalação e aumentar a partição. Esse método é demorado.
  • 2- entrar no ubuntu, utilizar o comandos parted ou fdisk para criar uma nova partição para preencher o restante do disco, esses comandos não funcionam com o disco montado. A intenção é aumentar partição para preencher o restante do disco e não criar uma nova. Esse método é inadequado.
  • 3- Junto com o servidor FOG ter também um servidor LTSP para processar os comandos fdisk ou parted sem estar com o HD montado. Método adequado.

26/10/2010 (semana 13)

O servidor LTSP não obteve sucessos e como este projeto tem prazo de conclusão não vou me aprofundar nos seus mecanismos.

29/10/2010 (semana 13)

Testes com multicasting.
Os testes com multicasting foram um pouco limitados pelo motivo do cenário de teste ser apenas com dois computadores reais, mas nada que atrapalhe esse método com três máquinas virtuais rodando com 200 MB de RAM. Demerou um pouco mas os testes ocorreram bem.
O servidor FOG irá disponibilizar uma única imagem, é o mesmo processo do unicasting, mas agora possui vários clientes que devem estar alinhados para receber a imagem. Para fazer o alinhamento é preciso modificar o campo "UDPSENDER_MAXWAIT" do arquivo /opt/fog/service/etc/config.php, esse campo indica o quanto tempo (em segundos) em que todos os computadores que irão puxar a imagem devem estar preparados, no meu caso, como testei com três máquinas virtuais configurei para esperar dez segundos, caso um computador se atrase a cópia não é feita e todos os outros computadores ficam travados.

03/11/2010 (semana 14)

Nome de interface de rede diferente.
Ao digitar o comando ifconfig no terminal de um computador que recebeu uma imagem, a interface de rede estará com um nome diferente de "eth0", como "eth1" ou "eth2".

eth1      Link encap:Ethernet  Endereço de HW 00:08:54:45:30:2d  
          inet end.: 172.18.22.149  Bcast:172.18.255.255  Masc:255.255.0.0
          endereço inet6: fe80::208:54ff:fe45:302d/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:4785911 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:3214739 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:1415960411 (1.4 GB) TX bytes:2246766805 (2.2 GB)
          IRQ:20 Endereço de E/S:0x2000

lo        Link encap:Loopback Local  
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:16436  Métrica:1
          pacotes RX:4 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:4 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:240 (240.0 B) TX bytes:240 (240.0 B)

Para resolver esse problema, antes de clonar um computador, devemos excluir o arquivo "/etc/udev/rules.d/70-persistent-net.rules", esse arquivo é responsável por ligar um endereço MAC a um nome.
Quando o computador é reiniciado o arquivo excluído é restaurado.
Caso o arquivo do computador clonado não é excluído, o arquivo do computador que recebe a imagem ficará assim.

# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

ENDEREÇO MAC DO COMPUTADOR CLONADO.
# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:4d:a5:17:28", ATTR{type}=="1",
 KERNEL=="eth*", NAME="eth0"


ENDEREÇO MAC DO COMPUTADOR CLIENTE.
# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:54:45:30:2d", ATTR{type}=="1",
 KERNEL=="eth*", NAME="eth1"


!!!Note que o MAC "00:08:54:45:30:2d" está com a interface "eth1"!!!

Caso contrário.

# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

ENDEREÇO MAC DO COMPUTADOR CLIENTE.
# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:54:45:30:2d", ATTR{type}=="1",
 KERNEL=="eth*", NAME="eth0"


!!!Note que o MAC "00:08:54:45:30:2d" está com a interface "eth0"!!!

10/11/2010 (semana 15)

Nome de computadores iguais.
Um problema de uma distribuição de imagens é que todos os computadores que receberem essa imagem terão o mesmo nome. O servidor FOG apresenta uma solução mas apenas para sistemas Windows [1]. Para o Ubuntu é preciso mudar manualmente em cada máquina ou fazer um programa para fazer isso automaticamente.
Estratégia do programa.
O programa irá consultar o endereço MAC do computador no arquivo "/etc/udev/rules.d/70-persistent-net.rules", comparar com um arquivo texto onde está registrado o seu MAC e o seu nome e depois o programa irá modificar o arquivo "/etc/hostname".

//feito por Gustavo Paulo Medeiros Da Silva

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

main(){
	int i, x=1, n=0, m=16;
	char *y;
	char mac1[19], mac2[273], mac3[18]="ATTR{address}==", nome[18], nome1[50];

	//abre o arquivo o arquivo 70-persistent-net.rules
	FILE *pt;
	pt=fopen("/etc/udev/rules.d/70-persistent-net.rules","r");

	//faz a leitura e contatena cada string até a string que contém o primeiro endereço MAC em "mac2"
	for(i=0;i<44;i++){
		fscanf(pt,"%s",mac1);//lê estring do arquivo
		strcat(mac2,mac1);
	}
	fclose(pt);

	//procura em "mac2" a string "ATTR{address}==" e copia o endereço MAC para "y"
	y=strstr (mac2, mac3); 

	//filtra o endereço MAC para a string "mac3" 
	while(n<=16){
		mac3[n]=y[m];
		n++, m++;
	}
	FILE *p;
	p=fopen("nome.txt","r");//abre o arquivo nome.txt

	//se o arquivo não for encontrado o programa é finalizado
	//o arquivo nome tem que ficar no diretório onde o programa está sendo executado
	if (!p){
		printf ("O arquivo nome.txt não foi encontrado!\n");
		exit (1);
	}

	//procura o nome ligado ao MAC
	while(x!=0){
		fscanf(p,"%s",nome1);
		x= strcmp ( mac3, nome1 );
		//se o MAC está registrado no arquivo nome.txt, o nome é passado para string "nome" 
		if(x==0){
			fscanf(p,"%s",nome);
			printf("%s  %s\n",mac3,nome);
		}

		//se o endereço MAC não for encontrado o programa é finalizado
		i=feof(p);
		if(i==1){
			printf("Este computador não está registrado no arquivo nome.txt!\n");
			exit (1);
		}
		
	}
	fclose(p);

	x=strlen(nome);
	//grava o nome no arquivo /etc/hostname
	FILE *f;
	f=fopen("/etc/hostname","w");

	//Para executar esse programa é preciso ser administrador
	if (!f){
		printf ("Para alterar o nome desse computador é preciso ser administrador!\n");
		exit (1);
	}

	fwrite(nome,x,1,f);
	fclose(f);
	
	//reiniciar o computador para alterar o nome
	printf("É necessário reiniciar, continuar?  Ctrl+C para cancelar...\n");
	getchar();
	system("sudo reboot");
}

O arquivo "nome.txt" que o programa irá consultar deve estar no mesmo diretório do programa.

  1. endereço_mac nome_do_computador

00:08:54:45:30:2d nome_1 00:1d:7d:fb:2a:a0 nome_2 00:1a:4d:a5:17:28 nome_3 </syntaxhighlight>

Tutoriais

Virtualbox

Siga o tutorial na página http://www.guiadohardware.net/comunidade/tutorial-instalando/988514/
Para o Ubuntu 10.04 http://ubuntued.info/como-instalar-o-virtualbox-no-ubuntu
Depois da instalação do virtualbox e do sistema operacional, vá em configurações, rede, no campo Conectado a selecione a opção Interface do Hospedeiro ou Placa em modo Bridge.

VLAN

Para fazer uma VLAN, no terminal de comandos digite:

sudo apt-get install vlan

Para configurar a VLAN.

 
sudo gedit /etc/network/interfaces

Adicione as configurações da VLAN, por exemplo:

auto eth0.1
iface eth0.1 inet static
   address 10.0.3.2
   netmask 255.255.255.0
   network 10.0.3.0
   vlan_raw_device eth0

Esses comandos irão ativar as configurações da interface eth0.1:

vconfig add eth0 1
/etc/init.d/networking restart

NFS

Para instalar o servidor NFS, vá até o terminal e digite o comando a seguir. Apenas a instalação do NFS no cliente é o suficiente para o FOG operar, mas se você é curioso e quer fazer um servidor NFS próprio aqui tem um simples tutorial.

sudo apt-get install nfs-kernel-server

Agora para compartilhar a pasta ou Hd na rede basta editarmos o arquivo /etc/exports. Para o exemplo, utilizarei a pasta /home no computador 10.0.0.1. /home *(rw,sync,no_root_squash) </syntaxhighlight> Agora vamos iniciar o servidor de NFS .

sudo /etc/init.d/nfs-kernel-server start

Agora é preciso montar a pasta compartilhada no outro computador que está na rede, mas primeiro vamos instalar o cliente nfs e depois criar uma pasta para a montagem.

sudo apt-get install nfs-common
mkdir /home/pasta

Depois.

sudo mount -t nfs 10.0.0.1:/home /home/pasta

Esse comando irá montar a pasta /home do servidor na pasta /home/pasta do cliente.