sexta-feira, 14 de outubro de 2011

Procedimento Horário de Verão: GNU/Linux, FreeBSD e Windows


Horário de Verão 2011/2012:
Início: 16/10/11 - 3º Domingo
Término: 26/02/2012 - 4 Domingo

Sistemas GNU/Linux:
1. Verificar a existência do arquivo '/etc/localtime' e se este arquivo é um link simbólico ou não.

Não é recomendado possuir o arquivo /etc/localtime como link simbólico, pois em sistemas em que o diretório /usr nao estiver acessivel (nao tiver sido montado, por exemplo) no momento da inicialização da máquina, as informações contidas no arquivo localtime não serão carregadas.
# ls -las /etc/localtime

2. Verificar se existe no diretório /usr/share/zoneinfo/Brazil algum arquivo que contenha informações relativas a outros horários de verão (DICA: geralmente um arquivo com extensão .zic).

    a) Se não existir nenhum arquivo com tais informações então crie um novo, de nome 'verao.zic' por exemplo, no diretório /usr/share/zoneinfo/Brazil/. Este arquivo deverá conter as seguintes linhas:

    Rule Brazil  2011    only     -       Oct    16   00:00   1       S
    Rule Brazil  2012    only     -       Feb    26   00:00   0       -

    Zone    Brazil/East             -3:00   Brazil          BR%sT

# ls -las /usr/share/zoneinfo/Brazil/*.zic

3. Uma vez feitos os devidos ajustes no arquivo 'verao.zic' execute o comando 'zic':
# cd /usr/share/zoneinfo/Brazil/
# zic verao.zic

4. Neste caso em particular o comando atualizará o arquivo East.

Para verificar se as configurações corretas foram feitas, execute o comando 'zdump', conforme segue abaixo:
# zdump -v /usr/share/zoneinfo/Brazil/East |grep 201[12]

Você deverá obter uma resposta como a que segue abaixo:

/usr/share/zoneinfo/Brazil/East  Sun Oct 16 02:59:59 2011 UTC = Sat Oct 15 23:59:59 2011 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/Brazil/East  Sun Oct 16 03:00:00 2011 UTC = Sun Oct 16 01:00:00 2011 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/Brazil/East  Sun Feb 26 01:59:59 2012 UTC = Sat Feb 25 23:59:59 2012 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/Brazil/East  Sun Feb 26 02:00:00 2012 UTC = Sat Feb 25 23:00:00 2012 BRT isdst=0 gmtoff=-10800

Note que em "Sat Oct 15 23:59:59 2011" o sistema ainda não está no Horário de Verão (indicação 'BRT'). No segundo seguinte as modificações do Horário de Verão entram em vigor, adiantando o localtime em uma hora: "Sun Oct 16 01:00:00 2011 BRST" (O horário mostrado ao usuário passará para 1 da manhã, e não para meia-noite, mostrando o adiantamento do horário).

Em "Sat Feb 25 23:59:59 2012 BRST", o Horário de Verão terminará no segundo seguinte, com o localtime sendo então atrasado em 1 hora: "Sat Feb 25 23:00:00 2012 BRT" (o horário mostrado ao usuário voltará para às 23:00).

5. Por último, se o arquivo /etc/localtime NÃO for um link para o arquivo /usr/share/zoneinfo/Brazil/East, deve-se copiar o arquivo East para /etc/localtime
# cp East /etc/localtime

Caso o arquivo /etc/localtime seja um link, sugerimos que o link seja removido e a cópia descrita acima seja executada. Lembre-se sempre de fazer cópias de segurança antes de modificar seu sistema.

Sistemas FreeBSD:
1. Verificar a existência do arquivo '/etc/localtime' e se este arquivo é um link simbólico ou não.

Não é recomendado possuir o arquivo /etc/localtime como link simbólico, pois em sistemas em que o diretório /usr nao estiver acessivel (nao tiver sido montado, por exemplo) no momento da inicialização da máquina, as informações contidas no arquivo localtime não serão carregadas.
# ls -las /etc/localtime

2. Verificar se existe no diretório /usr/share/zoneinfo algum arquivo que contenha informações relativas a outros horários de verão (DICA: geralmente um arquivo com extensão .zic).

    a) Se não existir nenhum arquivo com tais informações então crie um novo, de nome 'verao.zic' por exemplo, no diretório /usr/share/zoneinfo. Este arquivo deverá conter as seguintes linhas:

    Rule Brazil  2011    only     -       Oct    16   00:00   1       S
    Rule Brazil  2012    only     -       Feb    26   00:00   0       -

    Zone hv2011 -3:00 Brazil BR%sT

No exemplo acima, o nome 'hv2011' representa o arquivo que será criado ao executar o comando 'zic verao.zic', o qual conterá as informações do Horário de Verão. Este novo arquivo deverá ser copiado sobre /etc/localtime, lembrando que será preciso fazer uma cópia de segurança do arquivo /etc/localtime antes de sobrescrevê-lo.

# ls -las /usr/share/zoneinfo/ *.zic

3. Uma vez feitos os devidos ajustes no arquivo 'verao.zic' execute o comando 'zic':
# cd /usr/share/zoneinfo/Brazil/
# zic verao.zic

4. Neste caso em particular o comando gerará o arquivo 'hv2011'.

Para verificar se as configurações corretas foram feitas, execute o comando 'zdump', conforme segue abaixo:
# zdump -v /usr/share/zoneinfo/hv2011

Você deverá obter uma resposta como a que segue abaixo:

/usr/share/zoneinfo/hv2011  Sun Oct 16 02:59:59 2011 UTC = Sat Oct 15 23:59:59 2011 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/hv2011  Sun Oct 16 03:00:00 2011 UTC = Sun Oct 16 01:00:00 2011 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/hv2011  Sun Feb 26 01:59:59 2012 UTC = Sat Feb 25 23:59:59 2012 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/hv2011  Sun Feb 26 02:00:00 2012 UTC = Sat Feb 25 23:00:00 2012 BRT isdst=0 gmtoff=-10800

Note que em "Sat Oct 15 23:59:59 2011" o sistema ainda não está no Horário de Verão (indicação 'BRT'). No segundo seguinte as modificações do Horário de Verão entram em vigor, adiantando o localtime em uma hora: "Sun Oct 16 01:00:00 2011 BRST" (O horário mostrado ao usuário passará para 1 da manhã, e não para meia-noite, mostrando o adiantamento do horário).

Em "Sat Feb 25 23:59:59 2012 BRST", o Horário de Verão terminará no segundo seguinte, com o localtime sendo então atrasado em 1 hora: "Sat Feb 25 23:00:00 2012 BRT" (o horário mostrado ao usuário voltará para às 23:00).

5. Por último, se o arquivo /etc/localtime NÃO for um link, deve-se copiar o arquivo 'hv2011' para /etc/localtime
# cp /usr/share/zoneinfo/hv2011 /etc/localtime

Caso o arquivo /etc/localtime seja um link, sugerimos que o link seja removido e a cópia descrita acima seja executada. Lembre-se sempre de fazer cópias de segurança antes de modificar seu sistema.

Sistemas Windows:
1. Faça o download do TZEdit.

2. Ao executar o arquivo baixado ele vai descompactar os arquivos em:
C:\Program Files\TZEdit

3. Entre na pasta e execute o TZEDIT.EXE

4. Configure-o conforme imagem abaixo:

Referências:

terça-feira, 4 de outubro de 2011

Duplicando Discos Virtuais no VirtualBox

Introdução:
Muitas vezes criamos máquinas virtuais e depois desejamos criar uma nova máquina idêntica a primeira, como se fossemos clonar a máquina virtual, a primeira idéia que nos vem a cabeça é copiar o arquivo do disco virtual, criar uma nova máquina e apontar para o disco recém copiado.

O problema:
Os discos possuem uma identificação única e ao realizarmos o procedimento acima, vamos receber uma mensagem dizendo que o disco já está em uso.
Observe que eu renomeie a cópia de CentOS 6.0 para CentOS 6.0 - Cópia, mas o VirtualBox diz que os dois discos tem o mesmo UUID.

Como resolver:
Pesquisando na net (vide referências) descobri que poderia usar um comando para gerar a cópia dos discos, o comando VBoxManage clonehd <disco original> <cópia do disco>, mas eu já tinha feito uma cópia do disco, e acho mais fácil fazer dessa maneira.
Pesquisando mais um pouco descobri que eu poderia pegar a cópia do disco e gerar um novo UUID para o mesmo usando o comando VBoxManage internalcommands sethduuid <copia do disco>.

Usando a cópia do disco:
Agora já podemos usar a cópia que fizemos do disco em uma nova máquina virtual, na mesma máquina física.

Simples não?
 
Referências:
Blog do Athanazio
Blog Networks & Security