Anúncios

DonkeyMails.com: No Minimum Payout

terça-feira, 29 de março de 2011

Dica: Configurar IP fixo no Ubuntu e outras distribuições Linux

Este já é um dos assuntos mais abordados em sites e blogs sobre Linux, contudo irei falar sobre o mesmo, já que foi algo que utilizei durante a minha migração para o Ubuntu.

A situação era a seguinte: um laboratório com dezenas de computadores e todos com IPs "aleatórios", fornecidos pelo servidor DHCP.
Como precisava saber o IP de cada uma para acessar compartilhamentos, SSH e outras finalidades, se fez necessário o uso de IP estático ("fixo").

Para tal, basta editar a interface utilizada, no arquivo "/etc/network/interfaces", do seguinte modo:
 # Interface
auto eth0
iface eth0 inet static
# Endereço de IP da máquina (a ser utilizado)
address 192.168.x.x
# Mascara de rede
netmask 255.255.255.0
# Gateway
gateway 192.168.x.x
# Servidor DNS... fazendo uso desta opção, o servidor DNS aqui
# informado será automaticamente adicionado aos nameservers
# no arquivo "/etc/resolv.conf"
dns-provider 192.168.x.x


Após a edição é só reiniciar o serviço:
 sudo /etc/init.d/networking restart

E testar se está tudo funcionando devidamente!

Também há a possibilidade de fazer tal configuração através de um cliente gráfico, porem não funcionou da forma que eu gostaria.

Mais uma vez, espero que este post tenha sido útil. Se houver qualquer dúvida ou erro, não deixe de recorrer aos comentários!

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
A fonte que utilizei quando precisei fazer uso de IP fixo e durante a criação deste post foi este tópico da comunidade "Viva O Linux":

domingo, 27 de março de 2011

Migração Linux - parte 4: Apt-cacher

Olá pessoal!

Desculpem-me pela demora, mas na última semana tive a combinação de provas e uma gripe forte, então, tinha dia que eu nem chegava perto do PC de casa direito.
...
A instalação e configuração do servidor Apt-cacher, devo dizer, é uma das partes mais fáceis.

Primeiramente, o baixei (como ele usa o apache, também se faz necessária a instalação deste último). Como o instalei em outra máquina, não na mesma que utilizei para o netboot, precisei instalar o apache também:
 sudo apt-get install apache2 apt-cacher
Tendo sido o apt-cacher instalado, basta agora configurá-lo através do arquivo "/etc/apt-cacher/apt-cacher.conf". Nele há as seguintes opções (comentarei as mais importantes):
 # Diretório onde serão armazenados os arquivos .deb do cache.
cache_dir=/var/cache/apt-cacher
# E-mail do administrador da rede.
admin_email=root@localhost
# Porta padrão... no caso de haver um firewall, pode ser necessário liberá-la.
daemon_port=3142
group=www-data
user=www-data
# IPs que podem acessar o servidor apt-cacher, separados por vírgulas.
# Do jeito que aqui está, todos dentro da subrede "192.168.1.0" são permitidos.
# Para liberar faixas de IP, basta utilizar um "-" entre o inicial e o final,
# por exemplo, "192.168.1.10-192.168.1.50" (sem aspas). Para liberar qualquer
# ip, se não me engano, é só atribuir um "*" (sem aspas).
allowed_hosts=192.168.1.0/24
# O contrário da opção anterior, funcionando da mesma forma.
denied_hosts=
# O mesmo que "allowed_hosts", porem aqui são passados os IPs v6 liberados.
allowed_hosts_6=fec0::/16
# O contrário da opção anterior.
denied_hosts_6=
generate_reports=1
# Limpa diariamente os pacotes em cache que não mais estejam na lista
# dos Canais de Software do repositório atual.
clean_cache=1
offline_mode=0
logdir=/var/log/apt-cacher
# Tempo para que as listas dos Canais de Software do Repositório sejam
# atualizadas (em horas). Se for zero, a cada requisição isto será feito,
# sendo os pacotes atualizados (baixados novamente) se necessário.
expire_hours=0
use_proxy=0
use_proxy_auth=0
limit=0
debug=0
# Permite adicionar codenomes para os repositórios.
path_map = debian ftp.uni-kl.de/pub/linux/debian ftp2.de.debian.org/debian ; ubuntu archive.ubuntu.com/ubuntu ; security security.debian.org/debian-security ftp2.de.debian.org/debian-security
Eu só alterei as opções "admin_email" e "allowed_hosts" (permiti apenas uma faixa de IPs). O resto eu deixei com as definições padrão.
Estando tudo certo com o apt-cacher.conf, posteriormente só modifiquei o arquivo "/etc/default/apt-cacher", atribuindo "1" a "AUTOSTART" (AUTOSTART =1). Isso tem como objetivo iniciar o apt-cacher juntamente com o sistema.
Agora é só iniciar o apt-cacher:
 sudo service apt-cacher start
Estando com ele rodando, para ver se está funcionando, tente acessar através do navegador "http://[IPDoServidor]:3142/". Se aparecer uma página com as configurações do mesmo, tudo certo até aqui.

Também há a opção de importar o cache do apt do servidor para o apt-cacher, de modo a aproveitar os pacotes que já tenham sido baixados anteriormente (atualizações e aplicativos em geral). Como eu já havia testado algumas coisas no servidor, aproveitei para ganhar um tempo. Para importar, bastou utilizar o seguinte comando:
 sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives

Se tudo estiver certo até aqui, será hora de fazer as alterações no lado dos clientes, ou seja, nas máquinas que irão utilizar o servidor apt-cacher.

Para direcioná-las para o servidor apt-cacher, basta editar o arquivo "/etc/apt/sources.list". Você simplesmente irá fazer o mesmo do exemplo abaixo com todos os demais repositórios presentes no arquivo.
 #Substituir:
deb http://br.archive.ubuntu.com/ubuntu/ lucid main restricted
#Por:
deb http://[IPDoServidorApt-Cacher]:3142/br.archive.ubuntu.com/ubuntu/ lucid main restricted
Após isso, é só atualizar os repositórios:
 sudo apt-get update

Se tudo tiver ocorrido sem problemas até aqui, instalação e configuração concluídas com sucesso. Para testar, você pode tentar instalar algo através dos repositórios. Se baixar corretamente, estará funcionando. Das próximas vezes em que for baixar o mesmo programa/pacote, seja no mesmo computador ou em outro que também esteja direcionado para o servidor apt-cacher, o receberá praticamente instantaneamente, já que não serão provenientes dos repositórios na WEB, mas sim do servidor em questão (só serão baixados novamente se estiverem "obsoletos").

Eu cheguei a criar um script bem simples para configurar o arquivo "sources.list" dos clientes. Se quiserem dar uma olhada, basta conferirem a última parte, que tratará da configuração do sistema, pós instalação, e dos aplicativos utilizados.

Espero que estejam gostando e que o que aqui escrevo esteja sendo útil! Logo virei com a última parte!


As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.

Para construir este post, foram utilizados como base as seguintes fontes:
http://www.vivaolinux.com.br/dica/APTCacher-Seu-repositorio-de-pacotes-locais/
http://wiki.ubuntu-br.org/apt-cacher
http://www.dicas-l.com.br/arquivo/apt-cacher.php

terça-feira, 8 de março de 2011

Migração Linux - parte 3: Preseed

Saudações, pessoal!

Desculpem-me pela demora em postar esta segunda parte... planejava fazê-lo no último Sábado ou Domingo, mas a preguiça não permitiu.

Indo ao assunto deste post, a parte do preseed não é complicada (apesar de eu ter levado uns 2~3 dias para fazê-la funcionar devidamente, mas foi por problemas de "burrice" mesmo). No arquivo você define as respostas a todas as perguntas que são feitas durante a instalação do sistema, além de poder fazer algumas coisas mais, que não aparecem durante uma instalação convencional.

Quado gerei meu arquivo de preseed, utilizei como base o disponibilizado na própria documentação do Ubuntu (que, por sinal, é o mesmo da documentação do Debian). Ele já está bem completo e todo comentado, então, se precisarem de alguma opção que não for tratada aqui e tiverem dúvidas, não exitem em perguntar através dos comentários, pois eu tentarei ajudar.

Também gostaria de ressaltar que só falarei dos parâmetros que utilizei durante minha experiência com o assunto desta postagem. Não irei citar os demais, pois, além de não ter trabalhado com os mesmos, se fosse descrevê-los, o conteúdo iria ficar muito extenso, por isso recomendo a quem tiver dúvidas a fazer perguntas através dos comentários e também a dar uma olhada na própria documentação do Ubuntu, na parte que trata do conteúdo do arquivo de preseed.

Agora, vamos ao que realmente importa!
A sintaxe dos comandos é a seguinte:
 <dono> <questão> <tipo> <valor>

Como exemplo, segue a linha abaixo.
 d-i debian-installer/locale string en_US

No caso acima, o dono seria "d-i" (Debian Installer), a questão "debian-installer/locale", o tipo "string" e o valor "en_US".

A estrutura também segue algumas regrinhas, tais como:
  • Deve haver apenas um espaço ou tabulação entre o "dono", a "questão", o "tipo" e o "valor";
  • Uma linha pode ser quebrada em várias utilizando uma contra-barra ("barra invertida") no local da divisão (muito útil se for particionar o disco através do preseed);
  • Algumas questões recebem valores na forma de "código", ao invés de seu valor em inglês, exibido em um instalação normal.

Para mais informações quanto a essas regras, questões, etc, dê uma olhada na própria documentação do Ubuntu!

Abaixo segue uma cópia de meu arquivo de preseed, sendo omitidos apenas os comentários e os valores de algumas questões:
 d-i debian-installer/locale string pt_BR
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string br
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string meudominio
d-i netcfg/wireless_wep string
#d-i mirror/protocol string ftp
d-i mirror/country string enter information manually
d-i mirror/http/hostname string [ipDoServidorDeNetBoot]
d-i mirror/http/directory string /ubuntu/lucid/alternate
d-i mirror/http/proxy string
d-i mirror/suite string lucid
d-i mirror/udeb/components multiselect main, restricted
d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/expert_recipe string boot-root :: 40 50 100 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 10000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 7000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 512 2000 2000 linux-swap method{ swap } format{ } .
d-i partman/default_filesystem string ext4
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i passwd/make-user boolean true
d-i passwd/root-password-crypted password [hash MD5 da senha do root]
d-i passwd/user-fullname string Nome Completo Do Usuario
d-i passwd/username string nomeDoUsuario
d-i passwd/user-password-crypted password [hash MD5 da senha do usuário]
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
tasksel tasksel/first multiselect ubuntu-desktop
d-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean false
d-i grub-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/password password [senha]
d-i grub-installer/password-again password [senha]
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false
xserver-xorg xserver-xorg/config/device/driver select vesa
xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
select 1024x768 @ 60 Hz

Agora, comentando as linhas:
Nas questões abaixo eu passei a linguagem e o país ("pt_BR"), desativei a detecção automática do teclado e informei o código do layout do mesmo ("br").

 d-i debian-installer/locale string pt_BR
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string br
Em seguida, "configurei" a rede, passando para o "netcfg" que a interface deve ser escolhida automaticamente, informando também uma entrada "qualquer" para o hostname (como todos os computadores utilizam o mesmo arquivo de preseed durante a instalação, não é interessante especificar o nome nele, senão todas possuirão o mesmo hostname), um domínio e desabilitei a questão sobre a chave WEP (no caso de haver uma interface wireless), passando uma chave "em branco".
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string meudominio
d-i netcfg/wireless_wep string
Depois, defini os mirrors da seguinte maneira:
  • Não informo o protolo, sendo considerado o valor padrão (não recordo se é ftp mesmo ou http);
  • Também não informo o país;
  • Passo o hostname do mirror que, neste caso, é o ip do servidor utilizado para o NetBoot;
  • Informo o caminho para o mirror, que, considerando o que foi feito na parte 2, referente ao NetBoot, é "ubuntu/lucid/alternate" (o local onde foi montada a imagem do Ubuntu 10.04 alternate);
  • Passo uma resposta em branco para a questão do proxy;
  • Informo o nome da versão (neste caso, "lucid"), de modo a ele encontrar na imagem montada, se não me engano, dentro de "dists" (onde tem uma pasta lucid) o arquivo "Releases";
  • Digo de onde (de que "repositórios") os componentes adicionais serão buscados/instalados.
#d-i mirror/protocol string ftp
d-i mirror/country string enter information manually
d-i mirror/http/hostname string ipDoServidorDeNetBoot
d-i mirror/http/directory string /ubuntu/lucid/alternate
d-i mirror/http/proxy string
d-i mirror/suite string lucid
d-i mirror/udeb/components multiselect main, restricted
No bloco a seguir, defino o relógio como sendo baseado no "fuso horário" UTC, a time zone como sendo de São Paulo (as time zones podem ser encontradas em "/usr/share/zoneinfo", em um sistema já instalado) e informo que será utilizado um servidor ntp para ajustar a hora (como não especifico um em especial, ele usará o padrão).
d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
Agora vem o particionamento:
  • Eu o defini como "regular" (pode ser "regular", "lvm" ou "crypto");
  • Permiti a remoção de uma configuração LVM que venha a existir (se fosse encontrada, haveria um alerta durante a instalação);
  • Permiti também a remoção de um arranjo RAID que venha a existir;
  • Confirmei a escrita de partições LVM;
  • Passei uma "receita" (não encontrei forma melhor de dizer que não fosse a tradução literal de "recipe") com as configurações das novas partições a serem criadas (entrarei em detalhers sobre isso em outro post, pois, se fosse fazê-lo aqui, este texto ficaria mais longo do que já está);
  • Difini o sistema de arquivos padrão como sendo ext4 (talvez não fosse necessário fazer uso desta opção, pois no recipe eu já especifiquei o sistema de arquivos);
  • Confirmei a escrita dos rótulos das partições e aquelas questões "chatas", perguntando se eu realmente desejo efetuar as alterações, pedindo para confirmar isso e aquilo.
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/expert_recipe string boot-root :: 40 50 100 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 10000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 7000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 512 2000 2000 linux-swap method{ swap } format{ } .
d-i partman/default_filesystem string ext4
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
Aqui, eu:
  • Confirmo a criação de um usuário normal (creio que não fosse necessário responder a questão, pois o valor padrão, se não me engano, é "true");
  • Informo a senha do root de forma criptografada (posteriormente explicarei como criar o hash MD5);
  • Passo o nome completo do usuário normal;
  • Passo o log in dele (seu username propriamente dito);
  • Informo a senha do mesmo de forma criptografada, assim como feito com o root;
  • Confirmo previamente aquele aviso chato de senha fraca;
  • Informo que o /home do usuário normal não deve ser criptografado.
d-i passwd/make-user boolean true
d-i passwd/root-password-crypted password [hash MD5 da senha do root]
d-i passwd/user-fullname string Nome Completo Do Usuario
d-i passwd/username string nomeDoUsuario
d-i passwd/user-password-crypted password [hash MD5 da senha do usuário]
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
Nas linhas abaixo eu apenas adiciono ao apt os repositórios "restricted" e "universe".
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
Nesta parte eu selecionei os pacotes a serem instalados e indiquei como as atualizações serão efetuadas. Especificamente, escolho os pacotes do Ubuntu Desktop (instalo a versão Desktop), como adicionais tenho o Open SSH e o build-essential, e, com relação as atualizações, através do "none", digo que as atualizações de segurança deve ser instaladas apenas manualmente. Quanto a "questão" pkgsel/updatebd", se receber true, pelo que entendi, ela atualiza o banco de dados do locate, o que pode levar algum tempo, então, respondi false, de modo a ganhar tempo.
tasksel tasksel/first multiselect ubuntu-desktop
d-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean false
Agora defini algumas questões quanto ao Boot Loader:
  • Não pulei a instalção do Grub (o que resultaria na instalação do lilo);
  • Confirmei a instalação do mesmo na MBR apenas se nenhum outro sistema for encontrado (o HD já terá sido completamente formatado no momento, então, não haverá problemas);
  • Por questões de segurança, optei por adicionar uma senha ao grub.
d-i grub-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/password password [senha]
d-i grub-installer/password-again password [senha]
Neste pequeno pedaço, eu pulo o aviso de que a instalação foi concluída, reiniciando de imediato o PC, além de instruí-lo a não ejetar o CD, tendo em vista que é uma instalação pela rede, logo, não há CD.
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false
Por fim, eu respondo a algumas questões do X.
Como é feita uma instalação utilizando preseed, supostamente a escolha do driver de vídeo feita pelo X é ignorada, não sendo instalado o driver devido, então, eu informo que deverá ser instalado o vesa, que "funciona" praticamente com tudo quanto é VGA. Também o instruo a detectar o monitor automaticamente e escolho a configuração "medium" (creio que seja quanto aos efeitos gráficos), informando, depois de tudo, que a resolução do monitor deve ser de 1024 x 768 @ 60Hz
xserver-xorg xserver-xorg/config/device/driver select vesa
xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
select 1024x768 @ 60 Hz

Observações:
Como o hostname recebeu apenas uma resposta "provisória", torna-se necessário informá-lo como um parâmetro na hora da instalação.
 hostname=nomeDaMaquina

Devido o fato de os mirrors terem sido apontados para o CD (imagem montada), é preciso alterá-los após a instalação. Para isso, basta editar o arquivo "/etc/apt/sources.list" e corrigir as URLs dos repositórios (substituir o IP do servidor de NetBoot pelo endereço do repositório na WEB). Abaixo segue um exemplo:
 #Substituir:
deb http://[ipDoServidorDeNetBoot]/ubuntu/lucid/alternate lucid multiverse
#Por:
deb http://br.archive.ubuntu.com/ubuntu/ lucid multiverse

Estando com meu arquivo de preseed pronto, eu o salvei em "/var/lib/tftpboot/ubuntu/" com o nome de "preseed.cfg". Após isso, bastou dar boot pela rede no Ubuntu 10.04 ALTERNATE, no menu com as opções de instalação apertar TAB e, no "console" que se abre na parte inferior da tela, passar informar os seguintes parâmetros de instalação:
 auto=true priority=critical url=http://[servidorDeNetBoot]/ubuntu/preseed.cfg console-keymaps-at/keymap=br locale=pt_BR hostname=nomeDaMaquina
Explicando os parâmtros passados:
  • auto=true > Indica que a instalação será feita de maneira automática;
  • priority=critical > Indica a prioridade do debconf como "critical" (prioridade crítica);
  • url=http://[servidorDeNetBoot]/ubuntu/preseed.cfg > especifica a localização do arquivo de preseed;
  • console-keymaps-at/keymap=br > Indica o "mapa de caracteres" do teclado como sendo o do Brasil, pois, como foi dado boot pela rede e o arquivo de preseed ainda não foi carregado, ele usa uma configuração padrão (creio que seja o padrão norte-americano ou um "internacional");
  • locale=pt_BR > praticamente o mesmo caso citado acima, mudando apenas que aqui se refere ao idioma a e localização;
  • hostname=nomeDaMaquina > especifica o nome do computador, assim como eu, anteriormente, já havia citado que seria necessário ser feito.

Tem como passar muitos outros parâmetros, mas esses foram os que usei.

Depois disso é só apertar ENTER que a instalação irá se iniciar e seguirá de maneira completamente automática!

Se encontrarem algum erro no que foi descrito acima, por favor, avisem através dos comentários! Sei que tem algumas entradas no arquivo de preseed que são redundantes, então, se quiserem resaltá-las, o façam! Não as removi ainda, pois não tive tempo (Ok... na realidade tive, porem não me lembrei) de testar o arquivo sem as mesmas.
Se tiverem qualquer dúvida, novamente deixo a recomendação de recorrerem aos comentários (tentarei ajudar na medida do possível)!


Espero que este post tenha sido útil. Na próxima parte, descreverei a configuração de um servior "apt-cacher", cuja função é criar um cache local dos pacotes baixados.

Migração Linux - parte 2 / Migração Linux - parte 4

As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.

Anúncios

DonkeyMails.com: No Minimum Payout