Post em Destaque

FreeBSD participando do Google Summer of Code program.

O Google Summer of Code é uma iniciativa do Google em apoiar o software Open Source apoiando programadores à desenvolverem código nas suas férias de verão.  🙂 As instituições participantes ganharão até US$5.000,00 sendo US$500,00 por aluno orientado. É uma troca de conhecimento e incentivo. O...

Leia mais...

BSD Magazine mês 03/2018

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 12-04-2018

Tags:, , , , , , , ,

0

Saiu a edição do mês de março da revista que fala do mundo BSD e Software Livre.

Nessa edição temos casadinha de jogos no OpenBSD, um rápido início com Kubernetes (k8s) e GKE (Google Kubernetes Engine), tunando um FreeBSD, gerenciar múltiplas instalações Perl 6 e outras.

Share Button

NomadBSD 1.0.1

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 10-04-2018

Tags:, , ,

0

Pra quem quiser experimentar um FreeBSD rodando de um pendrive, aqui está a dica: o NomadBSD 1.0.1 é baseado no FreeBSD 11.1, vem com um ambiente desktop que pode até ser usado para recuperar outros sistemas. Para quem quiser experimentar o FreeBSD sem mexer em seu sistema, é uma boa opção.

Share Button

BSDDay 2018

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 08-04-2018

Tags:, ,

0

Depois de um longo período afastado aqui do blog, estou voltando e tentarei manter as notícias em dia.  🙂

Agora em maio dia 26 teremos o BSDDay 2018, um evento voltado para tecnologia falando de BSDs e Software Livre. Não deixem de ir pois será uma troca de conhecimentos, tempo de fazer novas amizades e contatos nessa nossa área.

O evento será na UFRRJ (Universidade Federal Rural do Rio de Janeiro) em Seropédica. Mais sobre o evento e as palestras basta visitar o site aqui.

Ah! Estarei falando no evento sobre Router performático com FreeBSD. Na verdade contarei sobre os problemas que tivemos aqui no Provedor e as soluções até chegarmos hoje com um tráfego de mais de 6Gbps.

 

Share Button

FreeBSD 10.2 – Sistema para Backup com Raiz em RAID 1 (mirror) e Dados em RAID 10 (mirror+stripe)

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 03-02-2016

Tags:, , ,

5

Fazia um tempo que eu não postava um artigo mas recentemente fiz um Servidor de Backup e nele eu tinha apenas 4 HDs de 2TB cada. Queria aproveitar o espaço em disco e ao mesmo tempo fazer algo seguro. Não preciso dizer que Backup é algo extremamente sério e não podemos bobear com isso.

Nesse artigo vamos montar o sistema assim:

Partições do SO:

RAID 1:

/ – 50Gb

swap – 8Gb

RAID 10:

/dados – restante do espaço

Com o Raid 1 teremos o famoso mirror onde o sistema estará presente em todos os discos. Em caso de falhas os outros discos farão o trabalho de manter o sistema em pé. No Raid 10 teremos o mirror (RAID 1) para manter a segurança em caso de falhas e em cima do mirror, faremos um stripe (RAID 0) para aproveitar bem o espaço dos discos com performance aprimorada.  🙂

Para começarmos a brincadeira, tenha em mãos um CD ou pendrive com o instalador do FreeBSD 10.2-RELEASE.

Como o instalador do FreeBSD não possui suporte para criar os RAIDs durante a instalação, faremos no método manual. Observem a tela abaixo:

tela1

Nesse momento vamos para o shell fazer a nossa configuração das partições. As configurações abaixo fiz para a minha necessidade; sintam-se à vontade de alterá-las:

Temos 4 discos SATA III de 2Tb: ada0, ada1, ada2 e ada3

# gpart create -s gpt ada0

# gpart create -s gpt ada1

# gpart create -s gpt ada2

# gpart create -s gpt ada3

Criando as partições de boot nos discos:

# gpart add -s 128k -t freebsd-boot -l boot0 ada0
# gpart add -s 128k -t freebsd-boot -l boot1 ada1
# gpart add -s 128k -t freebsd-boot -l boot2 ada2
# gpart add -s 128k -t freebsd-boot -l boot3 ada3

Criando as partições de swap de 8Gb:

# gpart add -a 1m -s 8G -t freebsd-swap -l swap0 ada0
# gpart add -a 1m -s 8G -t freebsd-swap -l swap1 ada1
# gpart add -a 1m -s 8G -t freebsd-swap -l swap2 ada2
# gpart add -a 1m -s 8G -t freebsd-swap -l swap3 ada3

Vamos criar o raiz do SO que vai conter todo o Sistema com 50Gb:
# gpart add -a 1m -s 50G -t freebsd-ufs -l root0 ada0
# gpart add -a 1m -s 50G -t freebsd-ufs -l root1 ada1
# gpart add -a 1m -s 50G -t freebsd-ufs -l root2 ada2
# gpart add -a 1m -s 50G -t freebsd-ufs -l root3 ada3

Por último a partição que usaremos para armazenar os backups em RAID10:
# gpart add -a 1m -t freebsd-ufs -l dados0 ada0
# gpart add -a 1m -t freebsd-ufs -l dados1 ada1
# gpart add -a 1m -t freebsd-ufs -l dados2 ada2
# gpart add -a 1m -t freebsd-ufs -l dados3 ada3

Agora que já temos as partições, precisaremos gerar o bootcode nos discos:
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada2
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada3

# true > /dev/ada0
# true > /dev/ada1
# true > /dev/ada2
# true > /dev/ada3
Agora que terminamos de definir as partições passaremos para a criação dos mirrors:

Fazendo os mirrors que acomodarão o SO e swap:

# kldload geom_mirror
# gmirror label -h swap /dev/gpt/swap0 /dev/gpt/swap1 /dev/gpt/swap2 /dev/gpt/swap3
# gmirror label -h root /dev/gpt/root0 /dev/gpt/root1 /dev/gpt/root2 /dev/gpt/root3
Agora faremos os mirrors das partições Dados:
# gmirror label -h dados0 /dev/gpt/dados0 /dev/gpt/dados1
# gmirror label -h dados1 /dev/gpt/dados2 /dev/gpt/dados3

Acima criamos o RAID 1 com os 2 primeiros discos para tolerância à falhas.

Para confirmarmos que os mirrors estão OK:

# gmirror status

tela2

Agora precisamos criar o stripe e fechar o RAID 10:
# kldload geom_stripe
# gstripe label -h dados /dev/mirror/dados0 /dev/mirror/dados1

Nesse ponto teremos um device /dev/stripe/dados com aproximadamente 3.5Tb que usaremos pra armazenar nosso backup.  :)

# gstripe status

tela3
 Agora que criamos o RAID 1 e o RAID 10, formataremos eles com UFS:

# newfs -U -L root /dev/mirror/root
# newfs -U -L dados /dev/stripe/dados

Caso os discos sejam SSD, adicione o parâmetro -t conforme abaixo, para habilitar o suporte à TRIM:
# newfs -t -U -L root /dev/mirror/root
# newfs -t -U -L dados /dev/stripe/dados

Próximo passo montaremos o sistema de arquivos para continuarmos a instalação do sistema:

# mount /dev/mirror/root /mnt
# mkdir /mnt/backup
# mount /dev/stripe/dados /mnt/backup

Nesse momento sairemos do shell e retornaremos para a instalação do SO:

# exit

Instale o sistema normalmente até chegar na tela abaixo:

tela4


Nesse ponto volte para o shell onde criaremos o nosso fstab:

# vi /tmp/bsdinstall_etc/fstab

Adicione o seguinte conteúdo:

/dev/mirror/swap  none            swap    sw      0       0
/dev/mirror/root  /               ufs     rw      1       1
/dev/stripe/dados /backup         ufs     rw      1       1

# exit

Continue toda a instalação até a tela abaixo:

tela5

Confirme com Yes e novamente no shell faça a configuração abaixo:

# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf

Acima habilitamos a carga dos drivers senão o sistema não vai subir após o boot. :)

Vamos habilitar um report diário sobre o mirror e o stripe e ficarmos atentos se aparecer algum problema:

# echo 'daily_status_gmirror_enable="YES"' >> /etc/periodic.conf

# echo 'daily_status_gstripe_enable="YES"' >> /etc/periodic.conf

Basta agora sair com exit, reiniciar e partir para o abraço. rsrsrs

Espero que este post seja útil para todos.

Abrs e até a próxima.

Referência: https://www.ateamsystems.com/tech-blog/installing-freebsd-9-gmirror-gpt-partitions-raid-1/
Share Button

BSDCon Brasil 2015 – Será em Fortaleza (CE)

Posted by gondim | Posted in Dicas, FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 09-05-2015

0

Esse ano teremos a BSDCon aqui no Brasil pessoal. Isso mesmo! O maior evento BSD que ocorre no mundo ocorrerá aqui em casa.

Para tanto estou colocando aqui a apresentação do evento que me foi divulgado e junto a chamada para envio de trabalhos que farão parte desse evento maravilhoso.

APRESENTAÇÃO

BSDCon Brasil (http://www.bsdcon.com.br) é uma conferência brasileira
voltada e movida para atender a comunidade BSD.
Sua primeira edição ocorreu em 2003 e reuniu um grande número de
desenvolvedores e usuários de sistemas de linhagem BSD, onde houve uma
excelente e agradável troca de experiências durante palestras e outras
atividades realizadas.

Este ano a BSDCon Brasil acontecerá durante os dias 9 e 10 de Outubro
de 2015, em Fortaleza (CE).

CHAMADA OFICIAL

É com orgulho que anunciamos nossa Chamada para Trabalhos.

Não é necessário que artigos acadêmicos/científicos sejam escritos
para que você submeta uma proposta. Caso você se sinta a vontade para
escrever um artigo, nós o receberemos com prazer.

Palestras apresentadas durante o evento estão previstas para durar
entre 45 e 60 minutos e deve ser ministradas em Português
(preferencialmente), Espanhol ou Inglês.

Aconselhamos que a apresentação de propostas seja escrita com um forte
viés de conteúdo técnico.
Propostas tendenciosas para desenvolvimento de negócios, propaganda e
marketing comercial não atendem as necessidades da conferência e serão
recusadas!

Temas de interesse para a conferência incluem, mas não estão limitados a:

[*] Alta Disponibilidade
[*] Aplicações de Rede
[*] Automação & Sistemas Embarcados
[*] Controladores de Dispositivos (Drivers)
[*] Controle de Aplicações de Terceiros
[*] Documentação & Tradução
[*] Firewall & Roteamento
[*] Integração Contínua
[*] Internet das Coisas
[*] Introdução aos Sistemas *BSD
[*] IPv6
[*] Kernel & Desenvolvimento Interno
[*] Melhores Práticas
[*] Monitoramento & Log
[*] Orchestration
[*] Performance
[*] Privacidade & Segurança
[*] Sistemas de Arquivos
[*] Sistemas de Gerenciamento de Banco de Dados
[*] Transmissões Sem Fio
[*] Virtualização

Estamos anciosos para ler o que você tem à nos oferecer! Por favor,
envie sua proposta para:

submissoes (@) bsdcon.com.br

Mande-nos sua proposta, um pequeno resumo sobre você e,
preferencialmente, nos informe sobre custos (valores) para sua viagem.

AGENDA

Aceite de Propostas
8 de Maio de 2015 —– INÍCIO
14 de Junho de 2015 — FIM

Contato com Autores de Submissões Aceitas
13 de Julho de 2015

NOTAS

* Caso sua proposta seja aceita, esperamos que você apresente-a
pessoalmente;
* Palestrantes não necessitam pagar pela inscrição na conferência;
* Podemos custear transporte e hospedagem de palestrantes;
* Gastos envolvendo alimentação não serão custeados pelo evento;
* Utilizaremos um projetor de vídeo para realizar as apresentações.

BSDCon Brasil 2015
http://www.bsdcon.com.br

Share Button

Não seja pego de surpresa com a atualização da libxml2 via ports

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 14-05-2014

Tags:,

3

Recentemente saiu uma vulnerabilidade no pacote libxml2 e eu meio que no automático fui atualizar e me deparei com uma série de novidades. Bem, para começar não seja pego de surpresa faça o comando abaixo e veja quem você vai ter que recompilar após a atualização dessa lib. Bem já começa porque é uma lib então alguém vai depender dela. rsrsrsr

Abaixo um exemplo que rodei:

# pkg info -r libxml2
libxml2-2.9.1:
php5-5.4.28
php5-dom-5.4.28
php5-soap-5.4.28
php5-xml-5.4.28
php5-xmlrpc-5.4.28
php5-simplexml-5.4.28
php5-xmlreader-5.4.28
php5-xmlwriter-5.4.28
libxslt-1.1.28_3
php5-xsl-5.4.28
mod_php5-5.4.28,1

Ou seja todos esses candangos acima dependem da libxml2 porque foram compilados com ela.  🙂

Um detalhe veja o php5. Então se você já tinha o php5 compilado antes de 27/03/2014 provavelmente você ainda não havia usado o www/mod_php5. Pois é, o Apache PHP Module (mod_php*) foi separado do php5 e agora você vai precisar dele se você usava o jeito antigo. Para quem usa o lang/php53 essa mudança não ocorreu.

Nesse caso para consertar isso é simples:

 20140327:
  AFFECTS: users of lang/php5 and lang/php55 with Apache module
  AUTHOR: [email protected]

  The Apache PHP module has been separated from the main PHP port.
  If you had the APACHE OPTION selected, you have to perform the
  following steps:

  1) update your lang/php* options (i.e. ‘make config’)
  2) rebuild lang/php* port
  3) install www/mod_php* port

  It is *mandatory* to build both ports with the same DEBUG and ZTS
  options, so if you have a threaded Apache (i.e. worker or event MPM)
  you have to select the ZTS option in lang/php* port.

Essa parte de cima foi tirada justamente do /usr/ports/UPDATING.

Alguns servidores peguei outros pacotes dependentes dessa lib como o clamav e o bind, cuidado para não esquecer de recompilá-los senão pode parar um correio ou um DNS. Aqui você vai encontrar um post meu sobre uma ferramenta que ajudará à descobrir pacotes quebrados no sistema, é bem útil.

Bem era isso e uma boa atualização para todos.

Share Button

FreeBSD + OpenBGP + PTT – dicas úteis

Posted by gondim | Posted in Dicas, FreeBSD, Tecnologia | Posted on 10-05-2014

Tags:, ,

2

Olá povo  🙂  venho nesse post passar algumas dicas úteis para quem possui router FreeBSD rodando OpenBGP e está tentando fechar um peering com o PTT (Ponto de Troca de Tráfego), que no meu caso foi com o PTT-SP. Se você não sabe o que é um PTT então esse post não lhe será útil.  🙂

Vamos aos detalhes:

1º anúncio dos prefixos: defina os anúncios mais específicos para o PTT. Aqui como eu tenho 4 blocos IPv4 /20 sendo anunciados para a minha Operadora de Trânsito para a Internet, resolvi anunciar esses blocos como 8 prefixos IPv4 /21 para o PTT-SP.

2º teste de quantidade de mac address aprendidos simultaneamente: o PTT executa um teste para checar se existe uma limitação baixa para aprendizado de macs. Eles fazem isso disparando diversos pacotes icmp simultaneamente de diversos IPs do PTT. No FreeBSD existe uma sysctl que limita isso, dando a impressão que o FreeBSD não aceita mais que 200 mac address na tabela arp. A variável net.inet.icmp.icmplim vem por default com valor 200. Aumente para um valor acima de 1000, no meu caso coloquei o valor de 2000. Após isso percebi a entrada de 1018 mac address vindos do PTT-SP. Só adicionar no /etc/sysctl.conf.

net.inet.icmp.icmplim=2000

3º enforce neighbor-as: setar na configuração do OpenBGP com o PTT o parâmetro enforce neighbor-as com valor = no. Sem isso as sessões BGP com o PTT não fecham.

Abaixo um exemplo de configuração do OpenBGP para o PTT:

ptt

 

Acima são só exemplos para ajudar em alguma dúvida sobre na configuração do OpenBGP para com o PTT. O correto é realmente estudar o OpenBGP pois existem mais configurações e filtros necessários para cada cenário. Espero ter ajudado.  🙂

Share Button

Você já atualizou seu FreeBSD? Vejam o EoL das versões.

Posted by gondim | Posted in Dicas, FreeBSD, Segurança | Posted on 30-03-2014

Tags:, , ,

1

Já tem algum tempo que foi disponibilizada uma tabela com as data finais de suporte para algumas versões do FreeBSD. O FreeBSD 8.3, por exemplo, não terá mais atualizações de segurança à partir de 30/04. Nesse caso para manter o sistema seguro deverá atualizar para a versão 8.4 ou posterior e usar a árvore releng ou stable.

Sistemas inseguros são uma das principais causas para as crescentes Botnets que vemos pela Internet, causando danos à terceiros, servindo de armas para cyber ataques como DDoS (Distributed Denial of Service). O último ataque DDoS foi recorde da Internet, bateu 400Gbps de tráfego e usou uma recente vulnerabilidade no NTP, matéria aqui. Por isso como SysAdmins temos a obrigação de mantermos nossos sistemas o mais seguro possível.

Abaixo a tabela de EoL (End of Life) das versões do FreeBSD e fiquem atentos:

 +----------------------------------------------------------------------------+
 |   Branch  |   Release  |  Type  |   Release Date   |     Estimated EoL     |
 +-----------+------------+--------+------------------+-----------------------+
 |stable/8   |n/a         |n/a     |n/a               |June 30, 2015          |
 +-----------+------------+--------+------------------+-----------------------+
 |releng/8.3 |8.3-RELEASE |Extended|April 18, 2012    |April 30, 2014         |
 +-----------+------------+--------+------------------+-----------------------+
 |releng/8.4 |8.4-RELEASE |Extended|June 9, 2013      |June 30, 2015          |
 +-----------+------------+--------+------------------+-----------------------+
 |stable/9   |n/a         |n/a     |n/a               |last release + 2 years |
 +-----------+------------+--------+------------------+-----------------------+
 |releng/9.1 |9.1-RELEASE |Extended|December 30, 2012 |December 31, 2014      |
 +-----------+------------+--------+------------------+-----------------------+
 |releng/9.2 |9.2-RELEASE |Normal  |September 30, 2013|September 30, 2014     |
 +-----------+------------+--------+------------------+-----------------------+
 |stable/10  |n/a         |n/a     |n/a               |last release + 2 years |
 +-----------+------------+--------+------------------+-----------------------+
 |releng/10.0|10.0-RELEASE|Normal  |January 20, 2014  |January 31, 2015       |
 +----------------------------------------------------------------------------+
Share Button

Xen – habilitando console para FreeBSD domU

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 03-03-2014

Tags:, ,

0

Esses dias estava tentando entrar via console pelo Xen em uma VM FreeBSD e não estava conseguindo pois a mesma não vem com acesso configurado no FreeBSD. O resultado é um cursor parado como se estivesse travado, executando o comando abaixo:

# xm console vm_freebsd

Então procurando pela Internet achei a solução simples e rápida para esse problema e por isso venho compartilha-la. Agradecimentos ao Tiago Ribeiro pela descrição da solução:

Com seu FreeBSD virtualizado e rodando, vá ao arquivo /etc/ttys e altere a linha:

ttyu0 “/usr/libexec/getty std.9600” dialup off secure
Para:
ttyu0 “/usr/libexec/getty std.9600” vt100 on secure

 

No arquivo /boot/loader.conf insira a linha:

console=”comconsole”

Agora basta reiniciar a sua VM FreeBSD e rodar novamente o comando para acessar a console dele:

# xm console vm_freebsd

Mais referência aqui.

Share Button

Dicas de atualização do FreeBSD 9.2 para a versão 10.0 compilando tudo.

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 16-01-2014

Tags:

7

Bem, já venho à um bom tempo atualizando e testando a versão 10.0 do FreeBSD, cujo anúncio oficial deve sair dia 20/01. Resolvi então fazer um relato de algumas coisas que passei e que acredito que ajudará um bocado.  🙂

Outra coisa importante: a ideia aqui é ajudar mas não posso me responsabilizar por qualquer dano causado em seu sistema.

1ª dica: sempre existe aquele medo das coisas não saírem como desejado e perder todos os dados importantes. Para isso é sempre bom começarmos com um bom backup… façam backup de tudo que puderem.

2ª dica: migrem para o pkgng antes de atualizarem o sistema, isso vai facilitar e evitar problemas mais na frente. Isso é muito fácil basta ver abaixo:

# cd /usr/ports/ports-mgmt/pkg
# make install clean
# pkg2ng
# echo ‘WITH_PKGNG=yes’ >> /etc/make.conf

Os comandos acima irão instalar o pacote pkg e converter a base de dados antiga para a nova. Atenção: esse procedimento é irreversível!

3ª dica importante!: se tiver usando algum shell como bash, que não faz parte do sistema, mude para sh ou csh tanto o seu user quanto o do root. Porque se ficar quebrado o shell, você não vai se logar mais remotamente. Só em single user.

4ª dica: após compilar e instalar o seu novo sistema existe uma coisa que dá muita dor de cabeça quando for recompilar os pacotes que foram instalados pelo ports. Essa coisa  se chama: libiconv O FreeBSD 10.0 já vem com essa lib em sua base e não é mais usada a libiconv do ports mas se não for devidamente removida vai dar muito problema nas recompilações. Para fazer a remoção basta fazer:

# pkg query %ro libiconv > /root/ports_to_update
# pkg delete -f libiconv

A primeira linha apenas salva todos os pacotes que usam a libiconv em /root/ports_to_update meramente informativo. A segunda remove o pacote libiconv do sistema.
Os arquivos que não devem mais existir no seu sistema depois disso são esses aqui:

/usr/local/lib/libiconv.a
/usr/local/lib/libiconv.la
/usr/local/lib/libiconv.so.3

5ª dica:  é muito recomendado que se recompile todos os seus pacotes instalados através do ports. Muita coisa mudou entre a versão 9.x e a 10.x e as vezes algo não funciona pelo simples motivo de não ter recompilado as aplicações. Eu costumo usar e indico que se use o portmaster para isso. Antes de começar à recompilar tudo vamos recompilar alguns caras primeiro:

  • Recompilar o pacote dialog4ports porque senão nenhum dialog de ports vai funcionar. Pode fazer make config que não vai funcionar nada. Para resolver:

# portmaster -d dialog4ports

  • Se você usa suporte à mysql e por isso tem instalado algum pacote como esse: mysqlXX-client onde XX pode ser 51, 55 ou 56 você deve compilar ele novamente assim como no exemplo abaixo:

# portmaster -d mysql55-client

Desse jeito vai evitar um monte de problemas com pacotes que dependem dele.  🙂

  • cmake é outro que é bom recompilar para não dar problemas lá na frente.

# portmaster -d cmake

  • gmake, se tiver é bom recompilar logo também:

# portmaster -d gmake

  • Se tiver usando db4 vai precisar trocar para db5:

# portmaster -o databases/db5 db42-4.2.52_5

  • Remover o portaudit já que esse não será mais usado. A nova forma é: pkg audit -F

# pkg delete portaudit
# rm -Rf /var/db/portaudit

6ª dica: alguns pacotes ainda podem dar problemas com o libiconv como é o caso do pacote php5-iconv. Nesse caso experimente excluir o pacote com o pkg e depois instalar ele novamente. Abaixo o exemplo:

# pkg delete -f php5-iconv
# portmaster -d converters/php5-iconv

7ª dica: recompilar tudo já que é o aconselhado. Para fazer isso com o portmaster basta fazer:

# portmaster -d -a -f

Bem pessoal, isso foi o que lembrei aqui mas caso lembre de mais alguma coisa eu atualizo essa página. Como o universo de testes de cada um pode ser diferente do meu, problemas novos podem ocorrer mas acredito que assim como eu… tenho certeza que você vai tirar de letra. 🙂

Boa atualização pra todos.

Share Button