Post em Destaque

FreeBSD 9 agora na Nuvem / FreeNAS 8.2

Depois de uma semana que eu estava em curso e longe aqui do Blog venho com uma notícia excelente. Agora o Rackspace, um dos grandes líderes de Cloud Computing está suportando FreeBSD 9 como produto. Agora além da Amazon EC2 temos a Rackspace e esperamos que muitos outros venham. Isso é bom porque...

Leia mais...

Depurando programas no FreeBSD

Posted by Otacílio | Posted in Dicas | Posted on 15-04-2013

5

Introdução

 

Ao escrever um programa que esteja um pouco além do tradicional “Hello World!” o desenvolvedor precisa saber utilizar as ferramentas de depuração disponíveis no sistema. Sem elas, depurar um aplicativo que não seja básico é algo trabalhoso. Se programas básicos são trabalhosos de depurar, programas que utilizam apontadores podem tornar-se um verdadeiro suplício.

No FreeBSD estão disponíveis várias ferramentas de depuração, das quais, algumas serão abordadas.  São elas DDD, Valgrind e o recurso de cobertura de código do GCC.

 

Depurando programas com o DDD

 

O Data Display Debugger, ou DDD, é uma interface para o gdb, tornando o uso deste último bem mais amigável para o usuário. Para usar o DDD obviamente é necessário que o mesmo esteja presente no sistema. Para instalá-lo o usuário pode utilizar o ports do FreeBSD. Assim, pode-se executar os seguintes comandos para realizar a instalação:

# (cd /usr/ports/devel/ddd && make install clean)

 

Escrevendo o programa exemplo

 

Depois de instalar o DDD escreva o seguinte programa exemplo em C que implementa uma pilha, para em seguida depurá-lo.

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

typedef struct no_s{
    int         payload;
    struct no_s    *next;
}no_t;

void push(no_t **pilha, int elemento){
    no_t    *aux;

    aux = malloc(sizeof(no_t));
    aux->payload = elemento;    
    aux->next = *pilha;    
    *pilha = aux;
}

int pop(no_t **pilha){
    no_t    *aux;
    
    aux = *pilha;   
    *pilha = (*pilha)->next;
    return aux->payload;
}

int main(int argc, char **argv){
    no_t    *pilha;
    int     elemento;

    printf(“Informe um elemento maior que 0 para empilhar e menor que 0 para desempilhar todos\n”);
    do{        
        scanf(“%u”, &elemento);
        if(elemento >= 0){
            push(&pilha, elemento);
        }
    }while(elemento >=0);    

    printf(“============================\n”);

    while(pilha != NULL){
        printf(“%u\n”, pop(&pilha));
    }
    
    return 0;
}

Salve este programa como pilha.c e compile o mesmo com o comando:

$ gcc -Wall -o pilha pilha.c

Atenção! Ao copiar o texto do browser, as aspas que o browser exibe não são as reconhecidas pelo compilador C, então você deve substitui-las manualmente.

O programa deve compilar sem nenhum erro.

Execute o programa e forneça as entradas 1, 2, 3, -1. O programa imprime as saídas 3, 2 e 1 e depois apresenta um erro.

$ ./pilha
Informe um elemento maior que 0 para empilhar e menor que 0 para desempilhar todos
1
2
3
-1
============================
3
2
1
Segmentation fault: 11 (imagem do núcleo gravada)

Para encontrar a causa da falha de segmento compile novamente o programa adicionando o parâmetro -g para que o GCC adicione os símbolos de depuração no executável.

$ gcc -Wall -g -o pilha pilha.c

Execute novamente o programa com os mesmos parâmetros de entrada: 1, 2, 3 e -1.

O programa termina novamente com um erro, sendo que dessa vez uma imagem de memória com os símbolos necessários para depuração foi criada. O arquivo com a imagem é o pilha.core.

 

Depurando o arquivo pilha.core

 

Execute o ddd informando o programa que será depurado.

$ ddd pilha

Em seguida abra o arquivo pilha.core utilizando as opções de menu “File->Open Core Dump…”

O DDD mostra exatamente a linha que causou o problema adicionando uma seta vermelha à mesma. Uma outra informação bastante útil é a pilha de chamadas de rotinas. Esta mostra o caminho que o programa seguiu até o momento em que executou a operação ilegal. Para visualizar a pilha de chamadas usa-se a opção de menu “Status->Backtrace…”.

backtrace_de_chamadas

 

 

 

 

 

 

A janela exibe a sequência de chamadas de todas as rotinas até o ponto em que o problema ocorreu, inclusive com a linha da rotina .

 

Adicionando um ponto de parada

 

Para adicionar o ponto de parada procure a linha com a seta vermelha do lado dela.  Clique com o botão direito e selecione “Set Breakpoint”. Execute novamente o programa teclando em F3, sendo que o cursor deve estar na janela de mensagens do DDD.

Dica: Eu gosto de executar o programa com a seguinte opção marcada: “Program->Run in Execution Window”.  Dessa forma o ddd sempre executa o programa em um terminal próprio impedindo a poluição que normalmente ocorre quando a entrada e saída de dados é feita diretamente na janela.

Durante a execução, o DDD vai pará-lo exatamente no ponto onde está configurado o breakpoint. Neste, pode-se iniciar a execução passo-a-passo. Para executar o programa linha por linha sem entrar nas chamadas de sub-rotina usa-se a tecla F5, para “entrar” nas chamadas de sub-rotina a tecla a ser usada é a F6. Para continuar a execução normalmente usa-se a tecla F9.

 

Visualizando o conteúdo de variáveis

 

Executar o programa passo a passo observando os valores das variáveis pode ajudar muito a encontrar o erro.  Para isto, neste programa, adiciona-se um ponto de parada na linha correspondente ao segundo while (linha 40). Para isso clique com o botão direito e selecione “Set Breakpoint” na inha 40 e remova o da linha 22 clicando com o botão direito na mesma e escolhendo a opção de menu “Disable Breakpoint” para desabilitar ou “Delete Breakpoint” para remover. Execute novamente  programa pressionando F3 (com o cursor na janela de mensagens do DDD) e entre com os valores 1, 2, 3, -1. O programa deve parar no local da placa de “STOP”.

Muito bem, para examinar o estado da lista encadeada utilizada na implementação da pilha, clique com o botão direito sobre a variável “pilha” e selecione “Display pilha”. A variável deve ser exibida na área destinada a exibição de variáveis. Nesta região, clique novamente com o botão direito sobre o quadro onde é exibida a variável “pilha” e selecione “Display *()”. Clique agora sobre o campo “next” do quadro apontado por “pilha” e selecione “Display *()”. Repita a operação sobre os quadros que vão surgindo inclusive para o quadro com o payload = 1. Sua tela deve estar como na imagem abaixo:

Captura_de_tela

 

 

 

 

 

Observe que o último campo “next” aponta para uma posição inválida diferente de NULL (0x0). Este é o erro então. O laço iterage até que o valor NULL seja encontrado, mas este nunca o é porque a variável não foi inicializada como tal. Para consertar o bug procure a linha 31 onde a variável “*pilha” é declara e substitua a linha por:

no_t    *pilha=NULL;

Compile o programa. Abra-o novamente no DDD usando a opção “File->Open Program…”  e execute-o com F3,  informando os mesmos valores de entrada. Quando o programa parar na placa “STOP” aperte F9 para continuar a execução. O erro não deverá ocorrer mais.

 

 Conclusões

 

Neste post foi tratado o básico da depuração de um programa C utilizando o software de interface gráfica para o gdb, o DDD. Com este, foi possível encontrar o erro que fazia com o que o programa pilha.c abortasse. Além disso, visualizou-se a lista encadeada utilizada na representação da pilha permitindo a fácil compreensão de como os dados estavam organizados na memória.  Isto é particularmente útil quando se está trabalhando com estruturas de dados que utilizam listas encadeadas.

 

Share Button

FreeNAS 8.3.1 traz ZFS com criptografia Full Disk

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 25-03-2013

Tags:, ,

2

Enviado por João Fernando Costa Júnior (revistaΘespiritolivre·org) para o br-linux e aproveitei para postar a notícia aqui também.

“Os desenvolvedores e mantenedores do FreeNAS lançaram a primeira atualização da versão 8.3, a 8.3.1, que introduziu a versão 28 do sistema de arquivos ZFS e o FreeBSD 8.3. FreeNAS 8.3.1 apresenta a capacidade de configurar criptografia de todo o disco (com ZFS), além de trazer várias outras melhorias de menor relevância. FreeNAS é um Network Attached Storage (NAS) baseado em FreeBSD, que permite aos usuários facilmente configurar e controlar o seu próprio armazenamento e servidores de arquivos.

O FreeNAS 8.3.1 usa ferramenta do FreeBSD GELI para implementar a criptografia ZFS full disk e faz uso de aceleração de hardware para este fim, quando disponíveis. Segundo os desenvolvedores, “este tipo de criptografia é destinado principalmente a usuários que armazenam dados sensíveis e queiram manter a capacidade de remover os discos do pool sem ter que primeiro limpar o conteúdo do disco.” O wiki do FreeNAS inclui uma seção sobre criptografia ZFS para ajudar os usuários a decidir qual o método de criptografia é o melhor para eles. Os desenvolvedores do FreeNAS pedem aos utilizadores que consultem a documentação sobre os recursos de criptografia que eles estão prestes a usar, antes de criptografar dados, para evitar que os usuários fiquem com um volume criptografado protegidos por criptografia AES de 256 forte sem meios para acessá-lo.” [referência: revista.espiritolivre.org]

Share Button

BSD Magazine – mês março

Posted by gondim | Posted in Dicas, FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 14-03-2013

Tags:,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

Conteúdo:

  • Reacting to Panic: How to Configure the System to handle Crash Dumps
  • MaheshaBSD Server: MySQL and WordPress in FreeBSD
  • FreeBSD Programming Primer: How to Embed CSS and Javascript in Pages
  • Hardening FreeBSD with TrustedBSD and MAC: configuration of mac_ifoff, mac_portacl, and MAC LOMAC modules

Bsd_03_2013-1

Share Button

BSD Magazine – Mês de Fevereiro

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 15-02-2013

Tags:,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

Conteúdo:

  • VAX/OpenVMS Rehosting in NetBSD 6.0 Hosts
  • What’s around the Corner: A Look at Upcoming PC-BSD Changes
  • SSL for Dovecot and Roundcube for the Qmail MTA
  • FreeBSD Unattended Installation of Servers
  • FreeBSD Programming Primer (CMS)
  • Organizational Structure and Culture at FreeBSD

Bsd_02_2013-1

Share Button

Árvore subversion do FreeBSD – o que nós mortais precisamos saber

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 05-01-2013

Tags:, , , ,

1

Percebi ultimamente uma certa confunsão de algumas pessoas sobre a árvore subversion e resolvi fazer esse post rápido e explicativo. Quando fazemos a primeira vez o svn co, estamos escolhendo com que ramo queremos trabalhar. Podemos trocar de ramo quando quisermos mas precisamos entender o que é cada um ou pelo menos os mais importantes:

svn://svn.freebsd.org/base/release/9.1.0 -> esse seria o 9.1-RELEASE puro, sem por nada à mais. A imagem da ISO que baixamos para fazermos a instalação. Se escolhermos usar ele não teremos qualquer atualização, nem mesmo a de segurança.

svn://svn.freebsd.org/base/releng/9.1 -> esse é o mínimo que usaríamos em um servidor porque ele é o 9.1-RELEASE e sempre que houverem atualizações de segurança, elas serão adicionadas aqui e passarão à ter um sufixo no nome indicando que houve uma atualização. Ex.: 9.1-RELEASE-p5 que indicaria ser a 5ª atualização de segurança para o sistema. Nessa modalidade você só terá correções de segurança.

svn://svn.freebsd.org/base/stable/9 -> aqui encontramos o famoso STABLE que atualmente é o 9.1-STABLE, que um dia será 9.2-PRERELEASE quando tiver para sair o 9.2. Esse ramo sempre que atualizado virá com as atualizações de segurança, correção de bugs e ainda algumas coisas novas que o time do FreeBSD pode achar interessante ser adicionado. Eu pessoalmente uso esse mas com moderação conforme expliquei em post anterior.

svn://svn.freebsd.org/ports/head -> esse aqui é o nosso ports que usamos para instalar nossos pacotes optimizados. Que podemos usar ele no lugar do portsnap.

Dica: se você quer confirmar ou saber em que branch está sendo usado no releng/9.1, por exemplo. Lembra do sufixo? Você pode ver no seu navegador acessando o arquivo newvers.sh da versão que você quiser consultar. Abaixo 2 exemplos:

Ao abrirmos esses 2 arquivos encontraremos 2 variáveis no início deles:

REVISION=”9.1″
BRANCH=”RELEASE”

REVISION=”9.0″
BRANCH=”RELEASE-p5″

O primeiro significa que no 9.1 ainda não houve alguma atualização de segurança. Já no segundo consta que na versão 9.0 estamos na 5ª atualização de segurança por causa do p5. Logicamente concluímos que o 9.1 já vem com todas as atualizações do 9.0. Possivelmente em uma próxima atualização poderíamos ter:

REVISION=”9.1″
BRANCH=”RELEASE-p1″

REVISION=”9.0″
BRANCH=”RELEASE-p6″

Adicionando mais uma coisa importante: se você já está usando um ramo por exemplo releng/9.1 e quer mudar para outro, tipo o stable/9, não precisa apagar todo o seu /usr/src e fazer novamente. Você pode usar outro recurso do subversion mostrado abaixo:

# cd /usr/src
# svn switch svn://svn.freebsd.org/base/stable/9

Bem, espero ter ajudado com mais essas informações.

Grande abraço à todos

 

Share Button

Tenha mais controle do seu ports com o subversion

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 04-01-2013

Tags:, ,

0

A vida é uma constante adaptação, seja no trabalho, em casa, com os amigos, nos eventos e fóruns… Estamos sempre presenciando coisas novas e tendo que nos adaptar à elas porque senão ficamos parados no tempo e espaço.  🙂

Usar o ports com subversion é uma dessas mudanças e que embora não tão recente, nos permite ter um controle maior dos pacotes e nos salvar em momentos difíceis.

Primeiramente alguns devem se perguntar: por que usar o ports? por que não usar os binários pré-compilados?

Você pode usá-los mas eu usaria eles em coisas simples que não me exigissem suportes específicos. Por exemplo: eu usaria um pkg_add -r bash para instalar o bash mas não faria isso para instalar um apache. Por que? Porque existem várias opções de compilação em determinados pacotes que você pode querer retirar ou colocar, que pode melhorar ou piorar a performance ou até mesmo ser mais suscetível à falhas de segurança. Sem falar que um pacote binário poderia vir faltando algo em sua compilação que você necessitaria usar. Outra coisa que não combina são usar pacotes pré-compilados com pacotes compilados do ports. Ou você opta por um ou pelo outro mas não use ou tente usar os 2 porque não vai ficar legal, à não ser que sejam pacotes pré-complilados simples como é o caso do bash. Um exemplo ruim de mistura seria instalar todo um ambiente de desktop por pacotes e depois querer usar o ports para atualizar as coisas. São coisas assim que me fazem usar apenas o ports.

Existem 2 formas de se ter o ports e mantê-lo atualizado:

  • Usando o programa portsnap.
  • Fazendo uso do svn (subversion).

O portsnap é a maneira mais básica e simples de se ter o ports e mantê-lo atualizado, contudo você não consegue fazer coisas como voltar um port de uma determinada versão anterior porque a atual apresentou um problema.  Você fica preso sempre na versão mais atual.

O subversion já te permite fazer tudo que o portsnap não faz e mais um pouco.  🙂 Eu posso por exemplo dizer que quero um pacote de um release do svn mais antigo e com isso uma versão daquele programa mais antigo que estou precisando. Nós veremos mais adiante um exemplo.

Para usarmos o ports pelo subversion precisaremos zerar o /usr/ports e fazer o seguinte uma vez apenas. Estou levando em consideração que você já tem o devel/subversion já instalado:

# svn co svn://svn.freebsd.org/ports/head /usr/ports

Nesse momento se a sua Internet não for das mais rápidas, sugiro você fazer uma pipoca e assistir um bom filme enquanto o download é feito.  São aproximadamente quase 1Gb.  🙂 Tudo abaixo você deverá fazer dentro de /usr/ports:

Após isso vamos baixar o arquivo INDEX-9 para que possamos fazer buscas com o make search e ele não vem no svn:

# make fetchindex

Para manter o seu ports atualizado basta fazer:

# svn up

Para ver informações como revisão do seu ports:

# svn info
Path: .
Working Copy Root Path: /usr/ports
URL: svn://svn.freebsd.org/ports/head
Repository Root: svn://svn.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 309926
Node Kind: directory
Schedule: normal
Last Changed Author: rm
Last Changed Rev: 309926
Last Changed Date: 2013-01-04 09:14:36 -0200 (Fri, 04 Jan 2013)

Agora vamos pegar um exemplo com o programa nmap. Vamos ver a revisão dele especificamente:

# svn info /usr/ports/security/nmap
Path: security/nmap
Working Copy Root Path: /usr/ports
URL: svn://svn.freebsd.org/ports/head/security/nmap
Repository Root: svn://svn.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 309926
Node Kind: directory
Schedule: normal
Last Changed Author: mm
Last Changed Rev: 308630
Last Changed Date: 2012-12-10 17:11:11 -0200 (Mon, 10 Dec 2012)

Percebemos que a revisão dele ainda é a mais atual do ports, 309926. Vamos olhar qual versão de arquivo ele vai baixar:

# cat /usr/ports/security/nmap/distinfo
SHA256 (nmap-6.01.tar.bz2) = 77f6635b677d28b546cbef97e4ead6c2d4a5aebcaa108fe3a3c135db6448617a
SIZE (nmap-6.01.tar.bz2) = 21640157

Percebemos que vai ser usado a versão 6.01 se eu for instalar esse pacote. Vamos dizer que eu queira uma versão bem mais antiga, por algum motivo. Nesse caso vou ter mudar a revisão desse port em específico para algo muito mais antigo. Então vamos fazer o seguinte:

# svn up -r200000 /usr/ports/security/nmap
Updating ‘security/nmap’:
A    security/nmap/pkg-descr.fe
UU   security/nmap/pkg-plist
UU   security/nmap/Makefile
UU   security/nmap/distinfo
UU   security/nmap/pkg-descr
D    security/nmap/files/patch-libnetutil__netutil.cc
D    security/nmap/files/patch-libdnet-stripped__configure
D    security/nmap/files/patch-nmap.cc
A    security/nmap/files/patch-nmapfe::Makefile.in
A    security/nmap/files/patch-nbase::configure
UU   security/nmap/files/patch-configure
UU   security/nmap/files/patch-Makefile.in
UU   security/nmap/files/patch-tcpip.cc
A    security/nmap/files/patch-nmapfe::nmapfe_sig.c
UU   security/nmap/files/patch-output.cc
UU   security/nmap/files/patch-libdnet-stripped__src__eth-bsd.c
A    security/nmap/pkg-plist.fe
Updated to revision 200000.

Nesse momento mudei a revisão apenas do nmap para 200000. Vamos olhar novamente o distinfo?

# cat /usr/ports/security/nmap/distinfo
MD5 (nmap-4.20.tar.bz2) = ea50419f99472200c4184a304e3831ea
SHA256 (nmap-4.20.tar.bz2) = c923a6cfa6d3683dc7ee27a721c19d15fd66f264f8ca6dbc9cfac710591f32a8
SIZE (nmap-4.20.tar.bz2) = 2156077

Opa! Agora se eu for instalar o nmap, será a versão 4.20!

Para voltar ao normal as revisões alteradas basta fazer novamente: svn up e todos estarão novamente na revisão mais atual.

É isso pessoal, espero que esse post tenha sido útil e mais uma vez demonstrar o quanto é simples usar FreeBSD e o ports.

Qualquer outra dúvida sobre subversion estudem ele, porque é bem legal. Mais pode ser lido aqui.

 

Share Button

Feliz Natal e fechando com dica do fsck automático

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 24-12-2012

Tags:

4

Gostaria de desejar, em nome de todos da BSDInfo, um feliz Natal para todos os leitores do nosso blog. Que a paz e muita saúde estejam com vocês e esperamos fazer mais em 2013.

Aproveitando deixo aqui uma pequena dica para quem tem servidores à distância. Pode ocorrer em algum momento a necessidade de um fsck no sistema. Mas o que fazer quando o sistema re-inicia e entra no modo single user para fazer um fsck manualmente? Bem nessa altura do campeonato você perdeu acesso remoto e ficou desesperado.

Quanto à isso não há muito o que fazer quando o problema acontece, mas você pode tentar evitar essa dor de cabeça adicionando uma simples linha em /etc/rc.conf:

fsck_y_enable=”YES”

Isso vai fazer com que em caso de pane e o sistema re-iniciar necessitando de um fsck, essa já faça com yes automaticamente sem a necessidade de intervenção manual. Isso poderá salvar vidas.  🙂

oh oh oh Feliz Natal pra todos!

Share Button

Segurança na Internet

Posted by lgvalentim | Posted in Dicas, Segurança | Posted on 11-12-2012

5

O CERT.br (Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no Brasil), divisão do NIC.br (Núcleo de Informação e Coordenação do Ponto BR), disponibilizou recentemente uma nova versão da Cartilha de Segurança para Internet. Tal como o nome indica, trata-se de uma série de orientações que podem ajudar o usuário a se prevenir dos perigos existentes no “mundo on-line”.

Há instruções, por exemplo, sobre golpes na Web, malwares, SPAMs, segurança em dispositivos móveis, uso de senhas, aspectos de privacidade, entre outros. Todas as orientações são fornecidas em linguagem simples, isto é, sem uso excessivo de termos técnicos ou de conceitos complexos, o que facilita sua compreensão inclusive por pessoas com pouca familiaridade com computadores.

A Cartilha de Segurança para Internet pode ser acessada pelo endereço cartilha.cert.br e está disponível em HTML5. No site, também é possível obter uma cópia em PDF e, em breve, será disponibilizada uma versão em formato ePub (para leitores de e-books).Todo o conteúdo possui licença Creative Commons BY-NC-ND 3.0, que permite cópia irrestrita e livre distribuição, desde que não exista finalidade comercial.

 

 

fonte:CERT.br

Share Button

FreeBSD 9.1-RELEASE no SVN

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 01-12-2012

Tags:,

0

É isso mesmo pessoal!!! Para quem está usando a árvore svn releng/9.1 já pode atualizar e usar o FreeBSD 9.1-RELEASE. Abaixo o BSDInfo já usando o sistema novo.  🙂

(root@zeus)[~]# uname -a
FreeBSD zeus.bsdinfo.com.br 9.1-RELEASE FreeBSD 9.1-RELEASE #38 r243752: Sat Dec  1 15:10:14 BRST 2012     root@zeus.bsdinfo.com.br:/usr/obj/usr/src/sys/GONDIM  amd64

Em /usr/src/UPDATING:

Updating Information for FreeBSD current users

This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
See end of file for further details.  For commonly done items, please see the
COMMON ITEMS: section later in the file.  These instructions assume that you
basically know what you are doing.  If not, then please consult the FreeBSD
handbook.

Items affecting the ports and packages system can be found in
/usr/ports/UPDATING.  Please read that file before running portupgrade.

20121205:
9.1-RELEASE.

É isso aí pessoal… agora é só aguardarmos o anúncio oficial e as ISOs.  🙂

Um excelente fim de semana pra todos.

Share Button

Testando um novo Kernel sem medo

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 29-11-2012

Tags:, , ,

9

Volta e meia queremos fazer umas alterações no Kernel, optimizar, acrescentar ou até mesmo retirar coisas, o famoso tunar. Quem nunca ficou com aquele medo de ter errado alguma coisa e o sistema não bootar mais? Pois é, mas é possível testarmos nosso novo Kernel antes de colocá-lo em produção.

A dica aqui é simples: depois que você compilar o novo Kernel, basta instalar ele conforme descrito abaixo:

# cd /usr/src
# make buildkernel KERNCONF=SEU_KERNEL
# make installkernel KERNCONF=SEU_KERNEL KODIR=/boot/testkernel
# nextboot -k testkernel

Descrevendo o procedimento acima: vamos imaginar que você já tenha feito as suas alterações no Kernel. Acima estamos compilando o novo kernel e depois instalando ele em /boot/testkernel para que ele não sobrescreva o kernel atual que está em produção.

O próximo comando é quem faz a mágica: nextboot -k testkernel que fará com que o próximo boot use o kernel novo, o que você fez. Se ocorrer algum panic com ele, o sistema re-iniciará e carregará o kernel de produção ou você mesmo poderá re-iniciar o sistema que o mesmo retornará com o kernel anterior.

O nextboot criará o arquivo /boot/nextboot.conf cujas configurações internas apontarão para o kernel do próximo boot. Simples como muitas outras coisas no FreeBSD. Abaixo o conteúdo criado pelo comando:

nextboot_enable=”YES”
kernel=”testkernel”
kernel_options=””

Dica simples mas que às vezes pode evitar muitas dores de cabeça.  🙂

Share Button