Post em Destaque

Começa a árvore FreeBSD 9.3-STABLE e inicia o processo de Upcoming do 10.1

Boas novas para todos nós, povo BSD: Ontem começou a árvore do FreeBSD 9.3-STABLE. Para quem utiliza o STABLE basta atualizar os fontes para a revisão 268592, compilar e instalar o sistema, que terá a nova versão STABLE do 9.3. Lembrando que ainda não saiu o anúncio oficial do 9.3-RELEASE que...

Leia mais...

Palestra no VOL DAY III

Posted by gondim | Posted in FreeBSD | Posted on 22-07-2012

Tags:, , ,

1

É com orgulho e motivação que venho estrear essa nova página com uma palestra que ministrei no VOL Day III onde falei sobre HAST (ferramenta nativa do FreeBSD 9 capaz de fazer um cluster e espelhar os dados à nível de blocos entre os discos dos nós), CARP onde nós montamos nosso failover e o ZFS que é o sistema de arquivos mais avançado existente. Juntando os 3 teremos uma solução fabulosa de Alta Disponibilidade.

Palestra em PDF

Share Button

Iniciando com o FreeBSD

Posted by admin | Posted in FreeBSD | Posted on 22-07-2012

Tags:

0

Acreditava que seria fácil fazer uma pequena apresentação sobre FreeBSD, mas acredito que muitos que chegaram até aqui ou os que ainda estão por vir, não serão tão “marinheiros de primeira viagem”.

E que nesse início de trabalho possamos contar com a ajuda de todos vocês.

Muito obrigado.

 

Share Button

Fim de linha para as versões 8.1 e 8.2 final do mês

Posted by gondim | Posted in FreeBSD, Segurança, Software Livre | Posted on 01-07-2012

Tags:, ,

0

É pessoal segundo o anúncio abaixo, 31/07 é o fim da linha para o FreeBSD 8.1 e 8.2 no quesito segurança. Aconselha-se para quem tiver usando um desses releases, atualizar para a versão 8.3 pelo menos e continuar tendo suporte em segurança.  🙂

Hello Everyone,

On July 31st 2012, FreeBSD 8.1 and FreeBSD 8.2 will reach their End of
Life and will no longer be supported by the FreeBSD Security Team.
Users of FreeBSD 8.1 and 8.2 are strongly encouraged to upgrade to one
of the newer releases before the that date.

The current supported branches and expected EoL dates are:

  +---------------------------------------------------------------------+
  |  Branch   |  Release   |  Type  |   Release date  |  Estimated EoL  |
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_7   |n/a         |n/a     |n/a              |February 28, 2013|
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_7_4 |7.4-RELEASE |Extended|February 24, 2011|February 28, 2013|
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_8 |n/a |n/a |n/a |last release + 2y|
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_8_1 |8.1-RELEASE |Extended|July 23, 2010    |July 31, 2012    |
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_8_2 |8.2-RELEASE |Normal  |February 24, 2011|July 31, 2012    |
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_8_3 |8.3-RELEASE |Extended|April 18, 2012   |April 30, 2014   |
  |-----------+------------+--------+-----------------+-----------------|
  |RELENG_9 |n/a |n/a |n/a |last release + 2y||-----------+------------+--------+-----------------+-----------------|
  |RELENG_9_0 |9.0-RELEASE |Normal  |January 10, 2012 |January 31, 2013 |
  +---------------------------------------------------------------------+
— Simon L. B. Nielsen FreeBSD Security Officer
Share Button

Programação para lançamento do FreeBSD 9.1R

Posted by gondim | Posted in FreeBSD, Software Livre, Tecnologia | Posted on 14-06-2012

Tags:,

0

Texto original do anúncio abaixo:

Just a quick note to say we have settled on a target schedule for the
FreeBSD 9.1 Release.  The schedule itself is here:

  http://www.freebsd.org/releases/9.1R/schedule.html

The highlights:

Code Freeze:	July 2nd, 2012
BETA1:		July 6th, 2012
RC1:		July 20th, 2012
RC2:		August 3rd, 2012
Release:	August 13th, 2012

Those are the target dates for when builds start.  The builds becoming
available is usually a few days afterwards (except for the final release
which is often times 4 days to a week after the builds start because
there is more prep work involved...).

Thanks.
Share Button

Melhorando a segurança no FreeBSD – Parte 2

Posted by gondim | Posted in Dicas, FreeBSD, Segurança | Posted on 20-05-2012

Tags:, , , , ,

0

Dando continuidade nas melhorias de segurança no FreeBSD veremos mais algumas coisas que não foram abordadas aqui. O usuário root sempre foi um cara muito privilegiado e por isso devemos evitá-lo ao máximo e também não permitir que outras pessoas usem ele. Logicamente que segurança física sempre foi o Calcanhar de Aquiles da Segurança da Informação, mas podemos tomar alguns cuidados. Abaixo vamos seguir algumas dicas:

Remoção do usuário “toor”. Não tem utilidade para o sistema e possui “UID 0” que é um perigo para o sistema. Reparem que o perigo não está no nome do usuário e sim no UID (User ID) que sendo 0, é o grande perigo. Só o nome root não seria perigoso se o UID dele fosse diferente de 0.

Para remover o toor basta executar: vipw ir na linha abaixo e apagar teclando “dd”, depois “shift :” e “wq!” para sair gravando. Bem precisa conhecer um pouco de vi.  🙂

toor:*:0:0::0:0:Bourne-again Superuser:/root:

Outra coisa é retirar o shell de todos os usuários que não necessitarem de shell. Serviços não precisam que seus usuários tenham shell. Para isso verifique como está o seu /etc/master.password com o vipw. No FreeBSD 9.0 eles já são instalados com /usr/sbin/nologin como shell das contas. Mas quem ainda usa versões anteriores vão precisar alterar. Deve ficar parecido com o exemplo abaixo:

# $FreeBSD: release/9.0.0/etc/master.passwd 218047 2011-01-28 22:29:38Z pjd $
#
root:$1$ensO.a5U$02Vji3o598eieKtAf6Lpm.:0:0::0:0:Charlie &:/root:/usr/local/bin/bash
daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62::0:0:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65::0:0:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin

Reparem que só o root tem shell que no meu caso é o bash.

Próxima melhoria seria aumentar a segurança da senha do root trocando md5 para blowfish. Para essa tarefa precisamos editar o arquivo /etc/login.conf:

default:\
        :passwd_format=md5:\

Para:

default:\
        :passwd_format=blf:\

Após alterar o arquivo login.conf precisamos rodar o seguinte comando para que seja gerado o /etc/login.conf.db, cujo arquivo é o que o sistema realmente usa.

# cap_mkdb /etc/login.conf

Mas não acabamos com a senha ainda. Após feito isso precisamos alterar novamente as senhas que desejamos para que essas agora estejam em blowfish e isso pode ser feito com o comando passwd. Reparem na diferença dos tipos:

MD5:

root:$1$9kaWUo5i$fIoOwZFsBsZG9WR/.nqhh1:0:0::0:0:Charlie &:/root:/usr/local/bin/bash

Blowfish:

root:$2a$04$qXWwmvWbpMrp7qpwDbxX/uVccYR3jfhET/hD1U2h9ZN7QyP13yW26:0:0::0:0:Charlie &:/root:/usr/local/bin/bash

Blowfish é bem mais forte (seguro) que md5. Obs: antigamente se usava o /etc/auth.conf para essa configuração.

Outra coisa boa é definir um idle timeout para o root, no caso de você acidentalmente esquecer o usuário root logado no servidor. Se você estiver usando bash como shell, basta adicionar essa variável em /etc/profile:

TMOUT=300

A variável acima trabalha em segundos, ou seja, se o root ficar sem fazer nada por 5 minutos, automaticamente este é deslogado.

Se estiver usando csh como shell, adicione a seguinte linha em /etc/csh.login:

set autologout=5

O autologout trabalha em minutos e vai fazer a mesma função do TMOUT no csh.

Se usa outro shell você precisará pesquisar se este possui uma variável de controle para essa finalidade.

Infelizmente no sh não existe um equivalente para essa finalidade.

Continuando com a nossa melhoria de segurança se você não quiser que alguém logue como root na console do seu servidor podemos editar o arquivo /etc/ttys cujo exemplo está abaixo:

# If console is marked “insecure”, then init will ask for the root password
# when going to single-user mode.
console none                            unknown off secure
#
ttyv0   “/usr/libexec/getty Pc”         xterm   on  secure
# Virtual terminals
ttyv1   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv2   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv3   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv4   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv5   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv6   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv7   “/usr/libexec/getty Pc”         xterm   on  secure
ttyv8   “/usr/local/bin/xdm -nodaemon”  xterm   off secure
# Serial terminals
# The ‘dialup’ keyword identifies dialin lines to login, fingerd etc.
ttyu0   “/usr/libexec/getty std.9600”   dialup  off secure
ttyu1   “/usr/libexec/getty std.9600”   dialup  off secure
ttyu2   “/usr/libexec/getty std.9600”   dialup  off secure
ttyu3   “/usr/libexec/getty std.9600”   dialup  off secure
# Dumb console
dcons   “/usr/libexec/getty std.9600”   vt100   off secure

Basta mudar a coluna secure para insecure conforme abaixo:

# If console is marked “insecure”, then init will ask for the root password
# when going to single-user mode.
console none                            unknown off insecure
#
ttyv0   “/usr/libexec/getty Pc”         xterm   on  insecure
# Virtual terminals
ttyv1   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv2   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv3   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv4   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv5   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv6   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv7   “/usr/libexec/getty Pc”         xterm   on  insecure
ttyv8   “/usr/local/bin/xdm -nodaemon”  xterm   off insecure
# Serial terminals
# The ‘dialup’ keyword identifies dialin lines to login, fingerd etc.
ttyu0   “/usr/libexec/getty std.9600”   dialup  off insecure
ttyu1   “/usr/libexec/getty std.9600”   dialup  off insecure
ttyu2   “/usr/libexec/getty std.9600”   dialup  off insecure
ttyu3   “/usr/libexec/getty std.9600”   dialup  off insecure
# Dumb console
dcons   “/usr/libexec/getty std.9600”   vt100   off insecure

Cuidado com a linha “console none                            unknown off insecure” porque se você colocar ela como insecure quando precisar entrar em sigle mode para recuperar algo no sistema, será pedido a senha de root. Isso pode ser ruim se caso estiver tentando recuperar senhas. Logo ficará ao seu critério colocar a console como insecure. Qualquer tty definida como insecure não será possível acessar como root.

Agora vamos restringir certos acessos, mas chequem se alguma aplicação de vocês precisará de acesso à um desses arquivos em específico:

# chflags noschg /usr/bin/crontab

# echo “root” > /var/cron/allow
# echo “root” > /var/at/at.allow
# chmod o= /etc/crontab
# chmod o= /usr/bin/crontab
# chmod o= /usr/bin/at
# chmod o= /usr/bin/atq
# chmod o= /usr/bin/atrm
# chmod o= /usr/bin/batch

# chflags schg /usr/bin/crontab

Alguns arquivos já tem vindo com proteções usando chflags e por isso precisamos removê-las para alterar as permissões e depois adiciona-las novamente. Para ver se algum arquivo está com chflags setado use o ls com o parâmetro “o”. Abaixo um exemplo:

# ls -laAGo/usr/bin/crontab
-r-sr-xr-x  1 root  wheel  schg  27404 Feb  9 15:17 /usr/bin/crontab

Repare na quinta coluna a flag schg que diz que esse arquivo é imutável.

Continuando… acima estamos restringindo o uso do cron e at somente para o root. Nenhum outro usuário do sistema poderá usá-los. Também estamos removendo as permissões de usuários regulares dos arquivos pertinentes ao cron e at.

Abaixo mais restrições aos usuários regulares para que não acessem alguns conteúdos pois não deveriam ser de interesse deles:

# chmod o= /etc/fstab
# chmod o= /etc/ftpusers
# chmod o= /etc/group
# chmod o= /etc/hosts
# chmod o= /etc/hosts.allow
# chmod o= /etc/hosts.equiv
# chmod o= /etc/hosts.lpd
# chmod o= /etc/inetd.conf
# chmod o= /etc/login.access
# chmod o= /etc/login.conf
# chmod o= /etc/newsyslog.conf
# chmod o= /etc/rc.conf
# chmod o= /etc/ssh/sshd_config
# chmod o= /etc/sysctl.conf
# chmod o= /etc/syslog.conf
# chmod o= /etc/ttys

Quanto aos logs também pode ser feito uma coisa interessante com chflags mas tenham em mente que fazendo isso o rotacionamento de logs não funcionará mais. Minha sugestão, se você quiser uma boa segurança nesse aspecto, é você montar um servidor de logs e configurar os demais servidores para enviarem os logs para esse servidor. Aí sim nesse servidor específico você poderia até fazer o que está abaixo:

# chmod o= /var/log
# chflags sappnd /var/log
# chflags sappnd /var/log/*

Com essa conf acima, os arquivos de log estarão em append only e não poderá ser removida qualquer linha deles, somente adicionada.

Mais restrições à usuários regulares para que não tenham informações importantes do sistema como quem está logado, listar jails, quem logou e por aí vai:

# chmod o= /usr/bin/users
# chmod o= /usr/bin/w
# chmod o= /usr/bin/who
# chmod o= /usr/bin/lastcomm
# chmod o= /usr/sbin/jls
# chmod o= /usr/bin/last
# chmod o= /usr/sbin/lastlogin

Desabilitar o uso do rlogin e do rsh:

# chflags noschg /usr/bin/rlogin /usr/bin/rsh

# chmod ugo= /usr/bin/rlogin
# chmod ugo= /usr/bin/rsh

# chflags schg /usr/bin/rlogin /usr/bin/rsh

O syslogd vem por default habilitado para receber logs e por isso abre uma porta de acesso ao mesmo. Como falei anteriormente acho mais seguro fazer isso em um servidor separado e por isso vamos desabilitar essa função no syslogd local e deixá-la habilitada no servidor de logs. O syslogd continuará funcionando do mesmo jeito só não haverá nenhuma porta escutando uma conexão.

# echo ‘syslogd_flags=”-ss”‘ >> /etc/rc.conf

Vamos partir agora para variáveis da systcl. Existem 2 variáveis que habilitam o recurso log_in_vain que é muito útil quando queremos saber se alguém está tentando acessar alguma porta de serviço que não esteja habilitada no nosso servidor. Para habilitar é muito simples adicione as linhas abaixo no seu /etc/sysctl.conf. Isso também pode ser habilitado pelo /etc/rc.conf, para isso consulte o /etc/defaults/rc.conf.

sysctl net.inet.tcp.log_in_vain=1
sysctl net.inet.udp.log_in_vain=1

Fazendo um teste de uma outra máquina, tentei fazer um telnet na máquina protegida (10.255.0.12) na porta 9998/tcp o que resultou no log abaixo:

/var/log/messages:May 20 11:52:11 protheus kernel: TCP: [192.168.255.1]:59486 to [10.255.0.12]:9998 tcpflags 0x2<SYN>; tcp_input: Connection attempt to closed port

Agora vamos bloquear que outros usuários possam ver processos de outros usuários, colocando a linha abaixo também no /etc/sysctl.conf:

security.bsd.see_other_uids=0

Muitas das coisas do post acima, retirei dessa documentação do Jon LaBass. Pelo menos as que achei mais interessantes e adicionei algumas mudanças pois uma coisa que foi citada em seu texto, ainda não existe implementação no FreeBSD que foi o caso do idletime no /etc/login.conf. Ela existe para uso de aplicações de terceiros mas não na base do FreeBSD, ou seja, o fato de setar ela não irá funcionar e por isso usei outros recursos como o TMOUT e o autologout. Existem outras alterações citadas por ele mas preferi expor apenas as que me interessei.

É isso aí pessoal e até a próxima.

Não deixem de ler o meu primeiro post sobre Melhorando a Segurança no FreeBSD com securelevel + chflags aqui.

Share Button

FreeBSD no desktop. Por que não?

Posted by gondim | Posted in Dicas, FreeBSD, Tecnologia | Posted on 18-05-2012

Tags:, , ,

2

Hoje venho falar de algo que não é novidade no mundo BSD mas aqui, para nós, não é tão utilizado quanto uma certa distribuição GNU/Linux. FreeBSD sempre foi um sistema voltado para servidores mas nada impedia que fosse instalado em desktops. Como sabemos existem muitos pacotes e configurações necessárias para que o sistema se torne mais amigável. Para esse propósito surgiu um projeto como o PC-BSD. O projeto tem o objetivo de ser usado no ambiente desktop tornando-o mais simples ao usuário. Se gostas de um desafio e conhecer novos ambientes por que não experimentar esse sistema? Um outro projeto destinado à desktops mas de uma forma mais Hacker, é o MidnightBSD. Não sou daqueles que afirmam que um sistema é melhor ou pior que o outro mas incentivo as pessoas à experimentarem e verem se gostam. Isso sim é liberdade, poder usar aquilo que gostamos. Se o que gostamos é pago ou free aí é outro problema. Mas liberdade, para mim, é ser livre para poder escolher. Ser obrigado à algo não é e nunca será sinônimo de liberdade.

Vamos à algumas características de cada Desktop:

PC-BSD: atualmente na versão 9.0, esse projeto é o mesmo FreeBSD e acompanha seu versionamento oficial. Possui todos os recursos existentes no FreeBSD mas também tem umas características únicas, como seu sistema de empacotamento próprio conhecido como PBI (Push Button Installer). Os arquivos .pbi, encontrados no repositório AppCafe™,  facilitam a instalação de novos pacotes e a atualização do sistema como um todo. Uma comparação seria a semelhança com o Central de Programas do Ubuntu Linux. Também pode ser instalado com KDE, Gnome e outros gerenciadores de janelas.

Umas imagens de desktops com PC-BSD:

MidnightBSD: atualmente na versão 0.3. O MidnightBSD tem uma característica bem diferenciada do PC-BSD pois este surgiu de um fork do FreeBSD 6.1 beta mas a versão atual foi baseada no FreeBSD 7.0. Este sistema possui também tecnologia proveniente do DragonFly, OpenBSD e NetBSD. A instalação não é amigável como a do PC-BSD. Eu vejo o MidnightBSD para um público desktop Hacker vamos dizer assim.  🙂

Eles criaram um sistema de gerenciamento de pacotes chamado mports com o intuito de facilitar a nossa vida e muito parecido em sua sintaxe com o apt-get do GNU/Debian. Exemplos: mport update, mport search <string>, mport info <pacote>, mport install <pacote> e outros mais.

 

 

 

 

 

 

 

Bem, agora é com vocês e boa diversão.

Share Button

FreeBSD Relatório de Status Trimestral Janeiro – Março de 2012

Posted by gondim | Posted in FreeBSD, Software Livre, Tecnologia | Posted on 13-05-2012

Tags:

10

Este relatório abrange FreeBSD projetos relacionados entre janeiro e março 2012. É o primeiro dos quatro relatórios previstos para 2012. Este trimestre foi marcado por liberar a próxima grande versão do FreeBSD, 9.0, que foi finalmente lançada no início de Janeiro de 2012. O FreeBSD Projeto dedica o FreeBSD 9.0-RELEASE para a memória de Dennis M. Ritchie, um dos fundadores do Sistema Operacional UNIX. Nossa equipe de engenharia de lançamento esteve também ocupada com a preparação da 8.3-RELEASE, que foi publicamente anunciada em abril.

Obrigado a todos os reporters pelo excelente trabalho! Este relatório contém 27 entradas e nós esperamos que você goste de lê-lo.

Por favor, note que o prazo para submissões cobrindo o período entre abril e junho de 2012 é 15 de julho de 2012.

O texto abaixo está em sua íntegra, em inglês e os e-mails foram ofuscados:

Projects

     * FreeBSD Services Control
     * GNU-Free C++11 Stack
     * Growing filesystems online
     * The FreeNAS Project

User-land Programs

     * Clang Replacing GCC in the Base System
     * Replacing the Regular Expression Code
     * The bsdconfig(8) utility

FreeBSD Team Reports

     * Release Engineering Team Status Report
     * The FreeBSD Foundation Team Report

Kernel

     * DTrace Probes for the linuxulator
     * HDMI/DisplayPort Audio Support in HDA Sound Driver (snd_hda)
     * Improved hwpmc(9) Support for MIPS
     * isci(4) SAS Driver

Network Infrastructure

     * Atheros 802.11n Support
     * IPv6 Performance Analysis
     * Multi-FIB: IPv6 Support and Other Enhancements

Documentation

     * The FreeBSD Japanese Documentation Project

Architectures

     * FreeBSD/arm on Various TI Boards
     * FreeBSD/powerpc on Freescale QorIQ DPAA
     * NAND File System, NAND Flash Framework, NAND Simulator
     * Porting DTrace to MIPS and ARM

Ports

     * A New linux_base Port Based Upon CentOS
     * BSD-licensed sort Utility (GNU sort Replacement)
     * KDE/FreeBSD
     * Perl Ports Testing
     * The FreeBSD Haskell Ports
     * The FreeBSD Ports Collection
     __________________________________________________________________

A New linux_base Port Based Upon CentOS

   Contact: Alexander Leidinger <netchild at FreeBSD.org>

   We got a PR with a linux_based port which is based upon CentOS 6.
   Currently this can only be used as a test environment, as it depends
   upon a more recent linux kernel version, than the linuxulator provides.

   As of this writing, I'm in the process of preparing a commit of this
   port.

Open tasks:

    1. Repocopy by portmgr.
    2. Add conflicts in other linux_base ports.
    3. Commit the CentOS based one.
    4. Some cleanup.
     __________________________________________________________________

Atheros 802.11n Support

   URL: http://wiki.FreeBSD.org/AdrianChadd/AtherosTxAgg
   URL: http://wiki.FreeBSD.org/dev/ath(4)

   Contact: Adrian Chadd <adrian at FreeBSD.org>

   802.11n station and hostap support is now fully functional, sans
   correct hostap side power saving. TX aggregation and TX BAR handling is
   implemented.

   Station chip power saving is not implemented at all yet, it's not in
   the scope of this work.

   Testers should disable bgscan (-bgscan) as scan/bgscan will simply drop
   any traffic in the TX/RX queues, causing potential traffic stalls.

Open tasks:

    1. Fix up hostap side power save handling.
    2. Implement filtered frames support in the driver.
    3. Fix scan/bgscan to correctly buffer and retransmit frames when
       going off channel, so frames are not just "dropped" - this causes
       issues in the aggregation sessions and may cause traffic stalls.
    4. Test/fix any issues with adhoc 802.11n support.
     __________________________________________________________________

BSD-licensed sort Utility (GNU sort Replacement)

   URL: http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/textproc/bsdsort/
   URL:
   http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html

   Contact: Oleg Moskalenko <oleg.moskalenko at citrix.com>
   Contact: Gábor Kövesdán <gabor at FreeBSD.org>

   Currently the BSD sort reached usable stable stage. It is stable, it is
   as fast as the GNU sort, and it supports multi-byte locales (this is
   something that GNU sort does not do correctly). BSD sort has all
   features of GNU sort 5.3.0 (version included into FreeBSD) with some
   extra features and bug fixes.

Open tasks:

    1. Add BSD sort into HEAD as an alternative, installed as bsdsort. If
       proven to work as expected, change it to the default sort version
       and remove GNU sort.
    2. Investigate the possibility of a multi-threaded sort implementation
       and implement it, if it proves more efficient.
    3. Upgrade BSD sort features to include some obscure new features in
       the latest GNU sort version 8.15.
     __________________________________________________________________

Clang Replacing GCC in the Base System

   URL: http://wiki.FreeBSD.org/BuildingFreeBSDWithClang

   Contact: Brooks Davis <brooks at FreeBSD.org>
   Contact: David Chisnall <theraven at FreeBSD.org>
   Contact: Dimitry Andric <dim at FreeBSD.org>
   Contact: Ed Schouten <ed at FreeBSD.org>
   Contact: Pawel Worach <pawel.worach at gmail.com>
   Contact: Roman Divacky <rdivacky at FreeBSD.org>

   Both FreeBSD 10.0-CURRENT and 9.0-STABLE now have Clang 3.0 release
   installed by default. At least on 10.0-CURRENT, both world and the
   GENERIC kernel can be completely built without any -Werror warnings.
   This may not be the case for all custom kernel configurations yet.

   As of r231057, there is a WITH_CLANG_EXTRAS option for src.conf(5),
   which will enable a number of additional LLVM and Clang tools, such as
   'llc' and 'opt'. These tools are mainly useful for people that want to
   manipulate LLVM bitcode (.bc) and LLVM assembly language (.ll) files,
   or want to tinker with LLVM and Clang themselves.

   Also, as of r232322, there is a WITH_CLANG_IS_CC option for
   src.conf(5), which will install Clang as /usr/bin/cc, /usr/bin/c++ and
   /usr/bin/cpp, making it the default system compiler. Unless you also
   use the WITHOUT_GCC option, gcc will still be available as
   /usr/bin/gcc, /usr/bin/g++ and /usr/bin/gcpp.

   The intent is to switch on this option by default rather sooner than
   later, so we can start preparing for shipping 10.0-RELEASE with Clang
   as as the default system compiler, and deprecating gcc.

   In other news, we will import a newer snapshot of Clang soon, since
   upstream LLVM/Clang has already announced their 3.1 release will be
   branched April 16, 2012. Most likely, the actual 3.1 release will be
   follow a few weeks later, after which we will do another import.

   Last but not least, there are many ports people working on making our
   ports compile properly with Clang. Fixes are checked in on a very
   regular basis now, and full exp-runs with Clang are also done fairly
   regularly. Of course, there are always a few difficult cases,
   especially with very old software that will not even compile with newer
   versions of gcc, let alone clang.

Open tasks:

    1. One of the most important tasks at the moment is to actually build
       and run your entire FreeBSD system with Clang, as much as possible.
       Any compile-time or run-time problems should be reported to the
       appropriate mailing list, or filed as a PR. If you have patches
       and/or workarounds, that would be even better.
    2. Clang should have gotten better support for cross-compiling after
       3.0, so as soon as a 3.1 version is imported, we will need to look
       at ways to get the FreeBSD world and kernels to cross-compile. This
       is mainly of use for ARM and MIPS, which are architectures you
       usually do not want to build natively on.
    3. Help to make unwilling ports build with Clang is always needed, and
       greatly appreciated. Please mail the maintainer of your favorite
       port with patches, or file PRs.
     __________________________________________________________________

DTrace Probes for the linuxulator

   Contact: Alexander Leidinger <netchild at FreeBSD.org>

   Recently DTrace in the kernel was improved to be able to load kernel
   modules with static dtrace providers after the dtrace modules. This
   allows me to commit my linuxulator specific static provider work to
   -CURRENT.

   Together with the linuxulator DTrace probes I developed some D scripts
   to check various code paths in the linuxulator. Those scripts check
   various error cases which may be interesting to verify userland code,
   but also linuxulator internals like locks.

   As of this writing I'm in the process of updating a test machine to a
   more recent -current to prepare the commit.
     __________________________________________________________________

FreeBSD Services Control

   URL: http://people.FreeBSD.org/~trhodes/fsc/

   Contact: Tom Rhodes <trhodes at FreeBSD.org>

   After a while of moving and getting a new job, I finally got back to
   this project (also thanks to several submissions by Julian Fagir), a
   new version has been uploaded along with a short description page. The
   current version supports more options, a configuration file, and
   updated rc.d script. It also includes manual page updates and an
   optional debugging mode.
     __________________________________________________________________

FreeBSD/arm on Various TI Boards

   URL: http://svnweb.FreeBSD.org/base/projects/armv6/sys/arm/ti/

   Contact: Ben Gray <bgray at FreeBSD.org>
   Contact: Olivier Houchard <cognet at FreeBSD.org>
   Contact: Damjan Marion <dmarion at FreeBSD.org>
   Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>

   The goal of this project is to get FreeBSD running on various popular
   boards that use TI-based SoCs like OMAP3, OMAP4, AM335x. Project covers
   some ARM generic Cortex-A components: GIC (Generic Interrupt
   Controller), PL310 L2 Cache Controller and SCU.

   PandaBoard (TI OMAP4430) and PandaBoard ES (OMAP4460) Dual core ARM
   Cortex-A9 board support includes: USB, onboard Ethernet over USB, GPIO,
   I2C and MMC/SD card drivers. Board works in multiuser mode over NFS
   root.

   BeagleBone (TI AM3358/AM3359) single core ARM Cortex-A8 based board
   support currently includes: Ethernet, L2 cache, GPIO, I2C. Board works
   in multiuser mode over NFS root.

Open tasks:

    1. Completing missing peripherals: DMA, SPI, MMC/SD, Video, Audio.
    2. Completing SMP support and testing.
    3. Importing BeagleBoard (OMAP3) code to SVN.
    4. Improving overall stability and performance.
     __________________________________________________________________

FreeBSD/powerpc on Freescale QorIQ DPAA

   URL:
   http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=P2040
   URL:
   http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=P3041
   URL:
   http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=P5020
   URL:
   http://www.freescale.com/webapp/sps/site/homepage.jsp?code=64BIT&fsrch=
   1&sr=1

   Contact: Michal Dubiel <md at semihalf.com>
   Contact: Rafal Jaworowski <raj at semihalf.com>
   Contact: Piotr Ziecik <kosmo at semihalf.com>

   This work is bringing up the FreeBSD on Freescale QorIQ Data Path
   Acceleration Architecture (DPAA) system-on-chips along with device
   drivers for integrated peripherals. Since the last status report, the
   following support has been added:
     * Ethernet (full network functionality using Regular Mode of DPAA
       infrastructure)
     * QorIQ P5020 SoC (e5500 core in legacy 32-bit mode)
     * P5020 QorIQ Development System support
     * Initial support for Enhanced SDHC

   The next step is:
     * e5500 core in native 64-bit mode

   Related publications:
     * Michal Dubiel, Piotr Ziecik, "FreeBSD on Freescale QorIQ Data Path
       Acceleration Architecture Devices", AsiaBSDCon, March 2012, Tokyo,
       Japan.
     __________________________________________________________________

GNU-Free C++11 Stack

   Contact: David Chisnall <theraven at FreeBSD.org>

   Since the last status report, the combination of libc++ and libcxxrt
   has received some additional testing and gained some new features
   including support for ARM EABI. With clang 3.1, we now pass all of the
   C++11 atomics tests.

   The xlocale implementation (required for libc++) has been tested with a
   variety of ports that were originally written for the Darwin
   implementation, and bugs that this testing uncovered have been fixed.
   This should be released in 9.1.

   In -CURRENT, we are now building libsupc++ as a shared library. This
   provides the ABI layer and building it as a shared library means that
   we can replace it with libcxxrt easily. If you are running -CURRENT,
   please try using libmap.conf to enable libcxxrt instead of libsupc++.

   If libstdc++ is using libcxxrt, you can now link against both libraries
   that are using libstdc++ and libc++, making the migration slightly
   easier, although you cannot pass STL objects between libraries using
   different STL versions.

   We still need a replacement for some parts of libgcc_s and for the
   linker, but we're on track for a BSD licensed C++ stack in 10.0.

Open tasks:

    1. Test ports with libc++. Hopefully most will Just Work, but others
       may need patches or have a hard dependency on libstdc++.
    2. Enable building libc++ by default. This is dependent upon building
       with clang, because the version of gcc in the base system does not
       support C++11 and so can not be used to build libc++.
    3. Removing libstdc++ from the base system and making it available
       through ports for backwards compatibility.
     __________________________________________________________________

Growing filesystems online

   Contact: Edward Tomasz Napierala <trasz at FreeBSD.org>

   The goal of this project is to make it possible to grow a filesystem,
   both UFS and ZFS, while it's mounted read-write. This includes changes
   to both filesystems, GEOM infrastructure, and the da(4) driver. For
   testing purposes, I've also added resizing to mdconfig(8) and
   implemented LUN resizing in CAM Target Layer.

   From the system administrator point of view, this makes it possible to
   resize mounted partition using gpart(8) and then resize the filesystem
   on it using growfs(8) - all without unmounting it first; especially
   useful if it's a root filesystem.

   All the functionality works and is in the process of being refined,
   reviewed and merged to HEAD.

   This project is sponsored by The FreeBSD Foundation.

Open tasks:

    1. The write suspension infrastructure (/dev/ufssuspend) implemented
       to make resizing possible makes it also possible to implement
       online tunefs(8) and fsck(8).
    2. Right now, there is no way for a GEOM class to veto resizing --
       classes are notified about resize and they can either adapt, or
       wither. Many classes store their metadata in the last sector,
       though, so resizing a partition containing e.g. gmirror will make
       it inoperable. It would be nice if geom_mirror(4) could veto
       resizing, so the administrator attempting to shoot himself in the
       foot would get a warning.
     __________________________________________________________________

HDMI/DisplayPort Audio Support in HDA Sound Driver (snd_hda)

   Contact: Alexander Motin <mav at FreeBSD.org>

   snd_hda(4) driver got number of improvements to better support
   HDMI/DisplayPort audio, such as:
     * Added fetching EDID-Like Data from the CODEC and video driver,
       describing audio capabilities of the display device.
     * Added setting HDMI/DP-specific CODEC options, such as number of
       channels, speakers configuration and channels mapping.
     * Added support for more multichannel formats. For HDMI and
       DisplayPort device now supported: 2.0, 2.1, 3.0, 3.1, 4.0, 4.1,
       5.0, 5.1, 6.0, 6.1, 7.0 and 7.1 channels.
     * Added support for compressed streams passthrough with data rate
       6.144 - 24Mbps, such as DTS-HD Master Audio or Dolby TrueHD.
     * Added support for HDA bus multiplexing to handle higher data rates
       (up to 92, 184 or more Mbps, depending on hardware capabilities).
       It allows to handle several 192/24/8 LPCM playback streams
       simultaneously.

   Above functionality was successfully tested on NVIDIA GT210 and GT520
   video cards with nvidia-driver-290.10 driver. HDMI audio on older
   NVIDIA ION and Geforce 8300 boards still does not work for unknown
   reason. There are also successful reports about Intel video with latest
   KMS-based drivers. Support for ATI cards is limited to older cards,
   because video driver supporting newer cards does not support HDMI
   audio.

   The code was committed to HEAD and merged to 9-STABLE branch.

   Project sponsored by iXsystems, Inc.

Open tasks:

    1. Make better use of received EDID-Like Data.
    2. Identify and fix problem with older NVIDIA cards.
     __________________________________________________________________

Improved hwpmc(9) Support for MIPS

   Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>

   hwpmc(9) for MIPS has been reworked. The changes include:
     * msip24k code was split to CPU-specific and arch-specific parts to
       make adding support for new CPUs easier
     * Added support for Octeon PMC
     * Added sampling support for MIPS in general
     __________________________________________________________________

IPv6 Performance Analysis

   URL: http://people.FreeBSD.org/~bz/bench/

   Contact: Bjoern A. Zeeb <bz at FreeBSD.org>

   IPv6 performance numbers were often seen (significantly) lower on
   FreeBSD when compared to IPv4. Continuing last years IPv6-only kernel
   efforts this project looked at various reasons for this and started
   fixing some.

   As part of the project a benchmark framework was created that could
   carry out various tests including reboots in between runs and gather
   results reproducibly without user intervention. It allows regular
   benchmarking with minimal configuration and easy future extension for
   more benchmarks.

   As a result of the initial analysis, UDP locking and route lookups were
   improved, and delayed checksumming, TSO6 and LRO support for IPv6 were
   implemented. Following this checksum "offload" for IPv6 on loopback was
   enabled and various further individual improvements, both locking and
   general code changes, as well as a reduction of the cache size
   footprint were carried out. Some of the changes were equally applied to
   IPv4.

   Performance numbers on physical and loopback interfaces are on par with
   IPv4 when using offload support with TCP/IPv6, which is a huge
   improvement. UDP and non-offload numbers on IPv6 have generally
   improved but are still lower than on IPv4 and will need future work to
   catch up with a decade of IPv4 benchmarking and code path
   optimizations. UDP IPv6 minimal size send path packets per second (pps)
   numbers however have increased beating IPv4 when sending to a local
   discard device.

   This gets us really close to being able to prefer IPv6 by default
   without causing loopback performance regressions. For physical
   interfaces, cxgb(4) in HEAD already supports IPv6 TCP offload and
   LRO/v6 support was added. To be able to get more test results on
   different hardware, both ixgbe(4) and cxgbe(4) were also updated to
   support TSO6 and LRO with IPv6.

   Some of the insights gained from this work will help upcoming
   discussions on both the lower/link-layer overhaul as well as for the
   mbuf changes to prepare our stack for more, future improvements (ahead
   of time).

   I once again want to thank the FreeBSD Foundation and iXsystems for
   their support of the project, as well as George Neville-Neil for
   providing review.

   Having set the start to close one of the biggest feature parity gaps
   left I will continue to improve IPv6 code paths and hope that we will
   see more contributions and independent results from the community as
   well soon.

Open tasks:

    1. Carefully merge code changes to SVN.
     __________________________________________________________________

isci(4) SAS Driver

   Contact: Jim Harris <jimharris at FreeBSD.org>

   An Intel-supported isci(4) driver, for the integrated SAS controller in
   Intel's C600 chipsets, is now available in head, stable/9, stable/8 and
   stable/7.

   The isci(4) driver will also be part of the FreeBSD 8.3 release.
     __________________________________________________________________

KDE/FreeBSD

   URL: http://FreeBSD.kde.org
   URL: http://FreeBSD.kde.org/area51.php

   Contact: KDE FreeBSD <kde at FreeBSD.org>

   The team has made many releases and upstreamed many fixes and patches.
   The latest round of releases include:
     * KDE SC: 4.7.4 (in ports) and 4.8.0, 4.8.1, 4.8.2 (in area51)
     * Qt: 4.8.0, 4.8.1 (in area51)
     * PyQt: 4.9.1; SIP: 4.13.2 (in area51)
     * KDevelop: 2.3.0; KDevPlatform: 1.3.0 (in area51)
     * Calligra: 2.3.87 (in area51)
     * Amarok: 2.5.0
     * CMake: 2.8.7

   Due to the prolonged port freeze the KDE team has not been able to
   update KDE in Ports as it is considered a intrusive change.

   The team is always looking for more testers and porters so please
   contact us at kde at FreeBSD.org and visit our home page at
   http://FreeBSD.kde.org.

Open tasks:

    1. Testing KDE SC 4.8.2.
    2. Testing KDE PIM 4.8.2.
    3. Testing phonon-gstreamer and phonon-vlc as the phonon-xine backend
       was deprecated (but will remain in the ports for now).
    4. Testing the Calligra beta releases (in the area51 repository).
     __________________________________________________________________

Multi-FIB: IPv6 Support and Other Enhancements

   URL: http://svnweb.FreeBSD.org/base/projects/multi-fibv6/

   Contact: Bjoern A. Zeeb <bz at FreeBSD.org>
   Contact: Alexander V. Chernikov <melifaro at FreeBSD.org>

   In 2008 the multiple forwarding information base (FIB) feature was
   introduced for IPv4 allowing up to 16 distinct forwarding ("routing")
   tables in the kernel. Thanks to the sponsorship from Cisco Systems,
   Inc. this feature is now also available for IPv6 and one of the bigger
   IPv6 feature-parity gaps is closed. The changes have been integrated to
   HEAD, were merged back to stable/9 and stable/8 and will be part of
   future releases for these branches. A backport to stable/7 is also
   available in the project branch. If more than one FIB is requested,
   IPv6 FIBs will be added along the extra IPv4 FIBs without any special
   configuration needed and programs like netstat and setfib, as well as
   ipfw, etc. were extended to seamlessly support the multi-FIB feature on
   both address families.

   Thanks to the help of Alexander V. Chernikov all usage of the multi-FIB
   feature is now using the boot-time variable rather than depending on
   the compile time option. In HEAD this now allows us you to use the
   multi-FIB feature with GENERIC kernels not needing to recompile your
   own anymore. The former kernel option can still be used to set a
   default value if desired. Otherwise the net.fibs loader tunable can be
   used to request more than one IPv6 and IPv4 FIB at boot time.

   Last, routing sockets are now aware of FIBs and will only show the
   routing messages targeted at the FIB attached to. This allows route
   monitor or routing daemons to get selective updates for just a specific
   FIB.
     __________________________________________________________________

NAND File System, NAND Flash Framework, NAND Simulator

   URL: http://svnweb.FreeBSD.org/base/projects/nand/

   Contact: Grzegorz Bernacki <gjb at semihalf.com>
   Contact: Mateusz Guzik <mjg at semihalf.com>

   The NAND Flash stack consists of a driver framework for NAND
   controllers and memory chips, a NAND device simulator and a fault
   tolerant, log-structured file system, accompanied by tools, utilities
   and documentation.

   NAND FS support merged into "nand" project branch:
     * NAND FS filesystem
     * NAND FS userland tools

   NAND Framework and NAND simulator merged into "nand" project
   branch:
     * NAND framework: nandbus, generic nand chips drivers
     * NAND Flash controllers (NFC) drivers for NAND Simulator and Marvell
       MV-78100 (ARM)
     * NAND tool (which allows to erase, write/read pages/oob, etc.

   The next steps include:
     * Fix bugs
     * Merge into HEAD

   Work on this project is supported by the FreeBSD Foundation and Juniper
   Networks.
     __________________________________________________________________

Perl Ports Testing

   URL: http://wiki.FreeBSD.org/Perl#Test_Dependencies

   Contact: Steve Wills <swills at FreeBSD.org>

   Many Perl modules in ports come with test cases included with their
   source. This project's goal is to ensure that all these tests pass.
   Significant progress has been made on this project. The change to build
   perl with -pthread was committed and no issues have been reported. Many
   ports have had missing dependencies added and/or other changes and
   approximately 90% of p5- ports pass tests. Work is being done on
   bringing testing support out of ports tinderbox.

Open tasks:

    1. Finish work on patch to bring testing support to ports.
    2. Add additional support for testing other types of ports such as
       python and ruby.
     __________________________________________________________________

Porting DTrace to MIPS and ARM

   Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>

   The major part of DTrace has been ported to MIPS platform. Supported
   ABIs: o32 and n64. n32 has not been tested yet. MIPS implementation
   passes 853 of 927 tests from DTrace test suite.

   The fbt provider and userland DTrace are not supported yet.

   The port to ARM is in progress.

Open tasks:

    1. Userland DTrace support for MIPS.
    2. Investigate amount of effort required for getting fbt provider work
       at least partially.
    3. Find proper solution for cross-platform CTF data generation
       (required for ARM).
     __________________________________________________________________

Release Engineering Team Status Report

   URL: http://www.FreeBSD.org/releng/

   Contact: Release Engineering Team <re at FreeBSD.org>

   On behalf of the FreeBSD Project the Release Engineering Team was are
   pleased to announce the release of the FreeBSD 8.3-RELEASE on April
   18th, 2012.

   With the FreeBSD 8.3 release cycle completed our focus shifts to
   preparing for the FreeBSD 9.1-RELEASE. A schedule will be posted
   shortly, with the release target date set for mid-July 2012.
     __________________________________________________________________

Replacing the Regular Expression Code

   URL: http://svnweb.FreeBSD.org/base/user/gabor/tre-integration/
   URL: http://laurikari.net/tre/
   URL:
   http://www.tdk.aut.bme.hu/Files/TDK2011/POSIX-regularis-kifejezesek1.pd
   f

   Contact: Gábor Kövesdán <gabor at FreeBSD.org>

   Since the last status report, there has been a significant progress in
   optimizing TRE. The multiple pattern heuristic code is mostly finished
   and it distinguishes several different cases to speed up pattern
   matching. It extracts literal fragments from the original patterns and
   uses a multiple pattern matching algorithm to find any occurrence. GNU
   grep uses the Commentz-Walter algorithm, which is an automaton-based
   algorithm, while in this project, it has been decided to use a
   Wu-Manber algorithm, which is more efficient and also easier to
   implement. In the current state, it does not work entirely yet and some
   cases, like the REG_ICASE flag are not yet covered. This is the next
   major step to complete this multiple pattern interface. In the
   development branch, BSD grep is already modified to use this new
   interface so it can be used for testing and debugging purposes.

Open tasks:

    1. Finish multiple pattern heuristic regex matching.
    2. Implement GNU-specific regex extensions.
    3. Test standard-compliance and correct behavior.
     __________________________________________________________________

The bsdconfig(8) utility

   URL: http://druidbsd.cvs.sf.net/viewvc/druidbsd/bsdconfig/
   URL: http://druidbsd.sf.net/download/bsdconfig/bsdconfig-20120512-1.svg
   URL:
   http://druidbsd.sf.net/download/bsdconfig/bsdconfig-20120512-1i.svg

   Contact: Devin Teske <dteske at FreeBSD.org>
   Contact: Ron McDowell <rcm at fuzzwad.org>

   Approaching 20,000 lines of sh(1) code, the bsdconfig(8) tool is
   approximately 70% complete. Upon completion of this project,
   bsdconfig(8) will represent (in conjunction with already-existing
   bsdinstall(8)) a complete set of utilities capable of purposefully
   deprecating sysinstall(8) in FreeBSD 9 and higher. This project has
   been a labor of love for Ron McDowell and I for over 90 days now and we
   are approaching the completion of this wonderful tool.

Open tasks:

    1. The "installer suite" modules for acquiring/installing binary
       packages and additional distribution sets. Startup services module.
     __________________________________________________________________

The FreeBSD Foundation Team Report

   URL: www.FreeBSDFoundation.org

   Contact: Deb Goodkin <deb at FreeBSDFoundation.org>

   The Foundation sponsored AsiaBSDCon 2012 which was held in Tokyo,
   Japan, March 22-25. We were represented at SCALE on Jan 21 and NELF on
   March 17. This quarter we plan on being at ILF (Indiana LinuxFest)
   April 14th, BSDCan May 11-12, and SELF (Southeast LinuxFest) June 9.

   We are proud to be a gold sponsor of BSDCan 2012, which will be held in
   Ottawa, Canada, May 11-12. We are sponsoring 14 developers to attend
   the conference.

   We kicked off three foundation funded projects -- Growing Filesystems
   Online by Edward Tomasz Napierala, Implementing auditdistd daemon by
   Pawel Jakub Dawidek, and NAND Flash Support by Semihalf.

   We are pleased to announce the addition of George Neville-Neil to our
   board of directors. Deb Goodkin, our Director of Operations, was
   interviewed by bsdtalk.

   We announced a call for project proposals. We will accept proposals
   until April 30th. Please read Project Proposal Procedures to find out
   more.

   FreeBSD 9.0 was released and we are proud to say we funded 7 of the new
   features!
     __________________________________________________________________

The FreeBSD Haskell Ports

   URL: http://wiki.FreeBSD.org/Haskell
   URL: https://github.com/freebsd-haskell/freebsd-haskell/
   URL: https://github.com/freebsd-haskell/hsporter/
   URL: https://github.com/freebsd-haskell/hsmtk/

   Contact: Gábor PÁLI <pgj at FreeBSD.org>
   Contact: Ashish SHUKLA <ashish at FreeBSD.org>

   We are proud announce that the FreeBSD Haskell Team has committed the
   Haskell Platform 2011.4.0.0 update, GHC 7.0.4 update, existing port
   updates, as well new port additions to FreeBSD ports repository, which
   were pending due to freeze for 9.0-RELEASE. Some of the new ports which
   were committed include Yesod, Happstack, wxHaskell, gitit, Threadscope,
   etc. and the count of Haskell ports in FreeBSD Ports tree is now almost
   300. All of these updates will be available as part of upcoming
   8.3-RELEASE.

   We started project hsporter to automate creation of new FreeBSD Haskell
   ports from .cabal file, as well as update existing ports. We also
   published scripts which we were using in the FreeBSD Haskell project
   under the project hsmtk.

Open tasks:

    1. Test GHC to work with clang/LLVM.
    2. Add an option to the lang/ghc port to be able to build it with
       already installed GHC instead of requiring a separate GHC boostrap
       tarball.
    3. Add more ports to the Ports Collection.
     __________________________________________________________________

The FreeBSD Japanese Documentation Project

   URL: http://www.FreeBSD.org/ja/
   URL: http://www.jp.FreeBSD.org/doc-jp/

   Contact: Hiroki Sato <hrs at FreeBSD.org>
   Contact: Ryusuke Suzuki <ryusuke at FreeBSD.org>

   The same as before, the outdated contents in the www/ja subtree were
   updated to the latest versions in the English counterpart. The updating
   work of the outdated translations in the www/ja subtree is almost
   complete. Only the translations of the release documents for old
   releases may be outdated.

   During this period, we translated the 9.0-RELEASE announcement and
   published it in a timely manner. It seems that the Japanese version of
   the release announcement is important for Japanese people as this page
   has frequently been referenced.

   For FreeBSD Handbook, translation work of the "cutting-edge" section is
   still on-going. Some updates in the "printing" and the "linuxemu"
   section were done.

Open tasks:

    1. Further translation work of outdated documents in both
       doc/ja_JP.eucJP and www/ja.
     __________________________________________________________________

The FreeBSD Ports Collection

   URL: http://www.FreeBSD.org/ports/
   URL:
   http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributing-ports/
   URL: http://portsmon.FreeBSD.org/index.html
   URL: http://www.FreeBSD.org/portmgr/index.html
   URL: http://blogs.FreeBSDish.org/portmgr/
   URL: http://www.twitter.com/freebsd_portmgr/
   URL: http://www.facebook.com/portmgr

   Contact: Thomas Abthorpe <portmgr-secretary at FreeBSD.org>
   Contact: Port Management Team <portmgr at FreeBSD.org>

   The ports tree slowly climbs above 23,000 ports. The PR count still
   remains at about 1100.

   In Q1 we added 2 new committers, took in 2 commit bits for safe
   keeping, and had one committer return to ports work.

   The Ports Management team have been running -exp runs on an ongoing
   basis, verifying how base system updates may affect the ports tree, as
   well as providing QA runs for major ports updates. Of note, -exp runs
   were done for:
     * Ports validation in the FreeBSD 10 environment
     * Updates to bison, libtool and libiconv
     * Set java/opendjdk6 as default java
     * Tests with clang set as default
     * Update to devel/boost and friends
     * Update of audio/sdl and friends
     * Tests for changes in the ports licensing infrastructure
     * Update to devel/ruby1[8|9]
     * Update to postresql
     * Update to apr
     * Checks for new x11/xorg
     * Security update to security/gnutls
     * Ongoing validation of infrastructure with pkgng

   A lot of focus during this period was put into getting the ports tree
   into a ready state for FreeBSD 8.3, including preparing packages for
   the release.

   Beat Gaetzi has been doing ongoing tests with the ports tree to ensure
   a smooth transition from CVS to Subversion.

Open tasks:

    1. Looking for help getting ports to build with clang.
    2. Looking for help with Tier-2 architectures.
    3. ports broken by src changes.
    4. ports failing on pointyhat.
    5. ports failing on pointyhat-west.
    6. ports that are marked as BROKEN.
    7. When did that port break?
    8. Most ports PRs are assigned, we now need to focus on testing,
       committing and closing.
     __________________________________________________________________

The FreeNAS Project

   URL: http://www.FreeNAS.org

   Contact: Josh Paetzel <jpaetzel at FreeBSD.org>
   Contact: Xin Li <delphij at FreeBSD.org>

   FreeNAS 8.0.4 was released last month, which marks the end of the 8.0.x
   branch in FreeNAS.

   FreeNAS 8.2.0 is in BETA currently, and will hopefully be released by
   the end of April.

   It features a number of improvements over the 8.0.x line, including
   plugin support, (the ability to run arbitrary software in jails), as
   well as better integration between command line ZFS and the GUI.

   Once 8.2.0 is out it will be quickly followed up with 8.3.0, which will
   include a number of driver updates as well as the long awaited ZFS v28.
     __________________________________________________________________

         (c) 1995-2012 The FreeBSD Project. All rights reserved.

 

Share Button

Quando serviços ficam caindo… o que fazer até a solução chegar?

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 22-04-2012

Tags:, , ,

3

Serviços rodando não deveriam cair simplesmente do nada. Muitos deles informam a causa em seus logs ou tentam pelo menos dar uma dica do problema. Pode estar relacionado muitas das vezes com problemas de memória como os segfaults (signal 11) mas as vezes os segfaults podem indicar um bug na aplicação que em algum momento esta simplesmente fecha. O fato é que você precisa investigar o que esta causando o problema mas enquanto isso você precisa garantir que o serviço não pare. Existe uma ferramenta chamada daemontools que monitora um determinado serviço que desejar e se o mesmo cair, instantaneamente o daemontools trata de levantá-lo. É a famosa “gambiarra”.

Para instalarmos o daemontools farei com exemplo o serviço do radius, pois se este cair a autenticação de vários clientes parariam aqui no meu caso:

# cd /usr/ports/sysutils/daemontools

# make install clean distclean

Após instalarmos criaremos o diretório de monitoramento do nosso serviço de exemplo, o radius:

# mkdir -p /var/service/radius

Dentro desse diretório que criamos, você criará um arquivo chamado run com o seguinte conteúdo:

#!/bin/sh
exec fghack /usr/local/sbin/radiusd

Nesse caso o daemontools vai iniciar o /usr/local/sbin/radiusd. Não vamos habilitar o radius no /etc/rc.conf porque o próprio daemontools vai se encarregar de levantar o serviço. Veja que estou dando um exemplo com o radiusd mas que pode ser aplicado à outros serviços.

# chmod 755 /var/service/radius/run

Não podemos deixar de dar permissão de execução para o nosso script. O nome dele precisa ser run. Ok?

Se for monitorar outros serviços basta criar outros subdiretórios dentro do /var/service e os devidos arquivos run.

Para finalizarmos nosso exemplo colocamos a seguinte configuração no /etc/rc.conf:

svscan_enable=”YES”
svscan_servicedir=”/var/service”

Agora podemos iniciar o daemontools e quando fizermos isso, todos os serviços que ele estiver monitorando serão levantados:

# /usr/local/etc/rc.d/svscan start

Vejamos o que ele fez:

# ps afx|grep radius
1587  ??  I         0:00.12 supervise radius
35029  ??  I         0:00.00 fghack /usr/local/sbin/radiusd
35031  ??  Ss       57:22.67 /usr/local/sbin/radiusd

O PID 35031 é o nosso radius rodando propriamente dito, os outros são o daemontools fazendo seu papel. Se quiser fazer um teste basta fazer um kill -9 no 35031 e verá que o mesmo será levantado instantaneamente. 🙂

Bem é isso, be happy!

PS: Sempre verifique o motivo das quedas, veja nos logs, contate o mantenedor do port, busque a solução e não a gambiarra.  🙂

Share Button

PPPoE client no FreeBSD, do ppp ao mpd.

Posted by gondim | Posted in FreeBSD | Posted on 17-04-2012

Tags:, , ,

0

Com o crescimento da banda larga no Brasil e diminuição dos valores cobrados pelas operadoras, as empresas cada vez mais contratam links não dedicados para acesso à Internet. Tais links, na maioria das vezes, vem acompanhados de um protocolo chamado PPPoE.

O FreeBSD vem com um cliente nativo para fazer essa conexão PPPoE (ppp) e um outro muito mais parrudo que pode ser instalado via ports, chamado mpd. O mpd é um software polivalente porque ele faz quase tudo em 1. Ele pode fazer pppoe client, pppoe server, pptp server, pptp client e outras coisinhas lá.

Se você está recebendo agora o link do seu ISP e ele exige que você faça uma conexão PPPoE, você só as seguintes opções:

1ª Colocar um router e compartilhar para a sua rede.

ou

2ª Ligar o link no seu Windão e fazer a configuração do PPPoE.

ou

3ª Usar outro sistema que tenha suporte ao PPPoE.

ou

4ª Deixar o seu FreeBSD fazer todo o trabalho de conexão e ainda agregar outras coisas à ele como: Proxy, Firewall, dhcp para a sua rede, redundância de link/balanceamento e o que lhe for mais útil.

Vamos primeiramente configurar o PPPoE nativo e depois com a Internet funcionando poderemos instalar o mpd:

Salvando a configuração atual do ppp.conf:

# cp /etc/ppp/ppp.conf /etc/ppp/ppp.conf.bkp

Depois zerem o arquivo original:

# >/etc/ppp/ppp.conf

Agora com um editor ee ou vi ou seu editor preferido coloque esses dados dentro do arquivo ppp.conf:

default:
      ident user-ppp VERSION (built COMPILATIONDATE)
      set log phase
      set log local phase lcp ipcp ccp tun command
intnet:
      set device PPPoE:em0:Intnet5
      set mru 1492
      set mtu 1492
      set authname gondim
      set authkey 12345678
      set login
      set dial
      enable dns
      add default HISADDR
      set timeout 0
      open

Reparem na identação pois temos 2 sessões chamadas “default:” e “intnet:”. O que vem abaixo deles está identado um ou mais espaços para a direita. Onde tem “intnet:” você pode trocar para o nome do seu provedor. Exemplo: velox:

Mais abaixo tem a linha: set device PPPoE:em0:Intnet5  onde você vai alterar para:

device PPPoE:<sua_interface_de_rede_de_saída>:<nome_do_serviço>

Se você não souber o nome do serviço então você pode remove-lo ficando assim como exemplo:

device PPPoE:em0

O em0 é nome da minha interface de rede e que por um acaso é onde está ligado o cabo de rede do Provedor.

Em authname gondim você vai colocar seu login de acesso no provedor. Exemplo de um acesso ao Velox:

set authname 2266666666@telemar.com.br 

Em set authkey você vai colocar a sua senha de acesso.  Exemplo aqui do Velox seria:

set authkey 2266666666

O restante na conexão você vai receber o DNS do seu provedor, IP e gateway default. Tudo na interface tun0.

Para testar a conexão só executar:

# ppp -ddial intnet

Onde intnet é o nome que  escolhi na sessão no ppp.conf. Se conectar certinho quando você fizer o ifconfig vai ver que a interface tun0 vai estar com o IP dado pelo provedor da conexão.

(root@strong)[/etc/ppp]# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
options=80000<LINKSTATE>
inet 186.xxx.48.69 –> 10.247.0.1 netmask 0xffffffff
Opened by PID 447

Se for querer parar por aqui e quiser usar apenas essa configuração, você pode colocar isso tudo no /etc/rc.conf para que conecte automaticamente após o boot do sistema:

# Configurando a conexão PPPoE
ppp_enable=”YES”
ppp_mode=”ddial”
ppp_profile=”intnet”

Só não esqueça de trocar o ppp_profile para o nome que você escolheu na sessão no ppp.conf.

Uma vez que estamos conectados na Internet agora podemos passar para o mpd. O mpd que instalaremos será a versão 5:

# cd /usr/ports/net/mpd5

# make install clean distclean

Após a instalação do mpd as configurações serão colocadas em /usr/local/etc/mpd5.

No diretório de configuração encontraremos 3 arquivos exemplos: mpd.conf.sample, mpd.script.sample e mpd.secret.sample

Para o nosso caso usaremos o mpd.conf.sample que renomearemos para mpd.conf

# cd /usr/local/etc/mpd5

# mv mpd.conf.sample mpd.conf

Abaixo meu exemplo de configuração:

startup:
      # configure mpd users
      set user gondim minha_senha admin
      # configure the console
      set console self 127.0.0.1 5005
      set console open
      # configure the web server
      set web self 0.0.0.0 5006
      set web open

default:
      load pppoe_client

pppoe_client:
      create bundle static B1
      set iface route default
      set ipcp ranges 0.0.0.0/0 0.0.0.0/0
      create link static L1 pppoe
      set link action bundle B1
      set auth authname gondim
      set auth password senha_provedor
      set link max-redial 0
      set link mtu 1492
      set link keep-alive 10 60
      set pppoe iface em0
      set pppoe service “”
      open

Muito cuidado com a identação porque é importante para o bom funcionamento. Não esqueça de alterar as linhas abaixo para o usuário, senha de conexão do seu provedor e a interface de rede onde entra o cabo do Provedor:

set auth authname gondim

set auth password senha_provedor

set pppoe iface em0

No bloco startup é bom definir um  usuário e senha para acesso via console e web do mpd. O mpd também oferece 2 interfaces de administração sendo elas via console e web. Você pode mantê-las habilitadas ou não. Não é nosso objetivo aqui nos aprofundar no mpd mas para aqueles que se interessarem, aqui vai o link da documentação: mpd5

Para deixarmos a conexão sendo feita no boot vamos adicionar a seguinte linha no /etc/rc.conf:

mpd_enable=”YES”

É isso aí pessoal e até a próxima!

Share Button

CPU Affinity, uma brincadeira de criança.

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 16-04-2012

Tags:, ,

0

Nem sempre é uma boa ideia ter processos migrando de CPU o tempo todo, pois pode atrapalhar o desempenho de algumas aplicações no seu sistema. Aqui vou falar de um caso muito especial que é quando você tem um grande tráfego de rede tipo acima de 100Mbps. Quando temos um grande tráfego de dados nas interfaces de rede e a irq delas muda de CPU isso pode causar um load maior no sistema e até perda de pacotes na transmissão. Então nos resta fixar aquela interface de rede à uma CPU específica e faremos isso usando um recurso chamado CPU Affinity. Muitos sistemas possuem esse recurso assim como GNU/Linux e FreeBSD. Sendo que o mais intuitivo e simples que já vi, foi o do FreeBSD. Enquanto o primeiro sistema precisa usar o /proc e formas meio toscas para isso, no FreeBSD temos a ferramenta cpuset que faz o que se propõe e cujo man é muito bem documentado com exemplos. Podemos fazer CPU Affinity com process id, set id, thread id e irq. Faremos uso aqui do irq para colocarmos nossas interfaces de rede em CPUs específicas.

Vamos começar listando nossas CPUs, isso pode ser visto pelo comando: top -P ou fazendo:

# cpuset -g
pid -1 mask: 0, 1, 2, 3, 4, 5, 6, 7

Nesse meu caso temos de 0 à 7. Agora precisaremos descobrir as interrupções das interfaces de rede. Não a interrupção que vemos no dmesg mas aquela que o próprio FreeBSD gerou virtualmente.

O melhor comando que conheço para fazer a tarefa de descobrir a irq é o devinfo:

# devinfo -rv | less

Procure pela sua interface de rede, no meu caso aqui uma Intel PCI-e de nome em0 e achei esse trecho:

            em0 pnpinfo vendor=0x8086 device=0x10d3 subvendor=0x8086 subdevice=0x34da at slot=0 function=0 handle=\_SB_.PCI0.MRP1.HART
Interrupt request lines:
256
257
258

Achamos então as interrupções 256, 257 e 258 da em0. Agora vamos dizer que eu queira jogá-las em CPUs diferentes:

/usr/bin/cpuset -l 5 -x 256
/usr/bin/cpuset -l 6 -x 257
/usr/bin/cpuset -l 7 -x 258

Com os comandos acima eu disse que a irq 256 vai para a CPU 6, 257 na CPU 7 e 258 na CPU 8.

Parece até a propaganda da Oi… Simples assim rsrsr

Esses comandos você pode adicionar em um arquivo /etc/rc.local se existir, caso não exista basta criá-lo e colocar esses comandos assim:

#!/bin/sh

/usr/bin/cpuset -l 5 -x 256
/usr/bin/cpuset -l 6 -x 257
/usr/bin/cpuset -l 7 -x 258

Depois um chmod +x /etc/rc.local

Mais dúvidas… o man cpuset, como eu disse, é muito bem documentado.

Share Button