Vendo a chegada do novo release, 7.0, resolvi encarar o upgrade. Uma das novas características que chamou mais minha atenção foi o novo algoritmo escalonador, ULE, não ativo por padrão, mas através da configuração de kernel:
OPTION SCHED_ULE
Sua interação com sistemas multimídia é realmente melhor em quesitos de resposta, algo que supreendeu até em relação ao scheduler do Linux, também capaz tem preempção tempo-real para esse tipo de aplicação.
Apesar de já portado para o também embrionário FreeBSD-6.3, outras vantagens me fizeram optar pelo upgrade (um parto bem doloroso, diga-se de passagem e descrito mais adiante) como suporte melhorados a novos drivers, que fez com que minha interface FastEthernet USB, USB200M, funcionasse sem nenhuma configuração adicional, simplesmente plugando. Esse não foi o único dispositivo, também minhas interfaces wireless USB da Belkin passaram a funcionar sem o uso do ndiswrapper.
Logo de início minha felicidade foi infinita e tive a sensação de ter dado um passo na direção certa ao fazer o upgrade para a versão CURRENT (isso foi em finados de dezembro, antes do lançamento do RC1). Não durou mais que o tempo necessário para começar a descobrir várias aplicações não funcionando corretamente.
Descobri primeiramente que o OpenOffice simplesmente não abria, com um erro de libc. Após uma busca no google, descobri que era necessário reinstalar ou recompilar TODOS os aplicativos novamente. Tarefa ingrata, devido ao tempo que levava, mas eficaz. Infelizmente eu estava em enganado em relação ao segundo.
Umas das aplicações necessárias para meu trabalho é uma aplicação em java que roda sobre sistema "SSL VPN", da Juniper Networks. Ela cria links entre os sistemas de Pré-Pago que gerencio remotamente, localizados em Dallas, US. Como a lei de Murphy costuma ser cruél, justamente o java resolveu não funcionar mais. Como problema pouco é bobagem, para completar minha miséria, encontrei problemas no ports:
musashi# cd /usr/ports/java/jdk14
musashi# make build
===> jdk-1.4.2p8_10 is marked as broken: Does not compile with GCC 4.2.
*** Error code 1 Stop in /usr/ports/java/jdk14.
Como o jdk15 eu já tinha instalado e não funcionava corretamente com o "SSL VPN", parti para a compilação do jdk16. Após mais de 4 horas aguardando o fim do mesmo, fiz a alteração através da alteração do link em /usr/local/lib/browser_plugin/libjavaplugin_oji.so apontando para o path /usr/local/jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so.
Consegui abrir a aplicação, mas a mesma retorna erro de conexão ao tentar conectar nos servidores, com uma exceção java the http thread. Tentei compilar o jdk14 novamente, mas com outras versões de gcc. Primeiro gcc2.95, seguido pelo gcc4.1 e gcc3.4 (o que funcionou melhor), finalmente o gcc4.3. Todas falharam em algum ponto de compilação. Após várias pesquisas sobre como compilar ou tentar corrigir alguns dos jdk (na verdade 1.4.2 ou 1.6), encontrei uma dica num fórum sobre não utilizar a opção de IPv6 na compilação de qualquer um dos jdk. Tentei a esmo essa solução no jdk15 e consegui fazer a aplicação funcionar (ufffffsss...).
Infelizmente algumas aplicações ainda insistem em não funcionar corretamente. Entre elas está o firefox, que de tempos em tempos dá um crash com o erro abaixo.
The program 'gecko' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadShmSeg (invalid shared segment parameter)'.
(Details: serial 31 error_code 177 request_code 146 minor_code 2)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line option to change this behavior.
You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.)
Nem a recompilação foi capaz de amenizar esse problema. Enfim companheiro, a luta continua...
Copyright (c) 1992-2008 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.0-PRERELEASE #18: Sat Jan 12 14:16:24 BRST 2008
This email address is being protected from spambots. You need JavaScript enabled to view it. :/usr/src/sys/i386/compile/MUSASHI Timecounter "i8254" frequency 1193182 Hz quality
0 CPU: Intel(R) Pentium(R) M processor 1.73GHz (799.68-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x6d8 Stepping = 8
Features=0xafe9fbff Features2=0x180
AMD Features=0x100000 real memory = 528285696 (503 MB)
avail memory = 506576896 (483 MB)
kqemu version 0x00010300
kqemu: KQEMU installed, max_locked_mem=253580kB.
kbd1 at kbdmux0
ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
cpu0 on motherboard
est0: on cpu0
est: CPU supports Enhanced Speedstep, but is not recognized.
est: cpu_vendor GenuineIntel, msr 6120d2906000612
device_attach: est0 attach returned 6
p4tcc0: on cpu0
pcib0: pcibus 0 on motherboard
pci0: on pcib0
vgapci0: port 0x5000-0x5007 mem 0xd0800000-0xd087ffff,0xc0000000-0xcfffffff,0xd0880000-0xd08bffff
irq 10 at device 2.0 on pci0
agp0: on vgapci0
agp0: detected 7932k stolen memory
agp0: aperture size is 256M
drm0: on vgapci0
info: [drm] AGP at 0xc0000000 256MB
info: [drm] Initialized i915 1.5.0 20060119
vgapci1: mem 0xd0900000-0xd097ffff at device 2.1 on pci0
pcib1: irq 10 at device 28.0 on pci0
pci16: on pcib1
pci0:16:0:0: invalid VPD data, remain 0xffff
bge0: mem 0xd0000000-0xd000ffff irq 10 at device 0.0 on pci16
miibus0: on bge0
brgphy0: PHY 1 on miibus0
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
bge0: Ethernet address: 00:14:c2:e7:d2:55
bge0: [ITHREAD]
pcib2: at device 28.1 on pci0
pci32: on pcib2
uhci0: port 0x2000-0x201f irq 10 at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
uhci0: [ITHREAD]
usb0: on uhci0
usb0: USB revision 1.0
uhub0: on usb0
uhub0: 2 ports with 2 removable, self powered
uhci1: port 0x2020-0x203f irq 11 at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
uhci1: [ITHREAD]
usb1: on uhci1
usb1: USB revision 1.0
uhub1: on usb1
uhub1: 2 ports with 2 removable, self powered
uhci2: port 0x2040-0x205f irq 11 at device 29.2 on pci0
uhci2: [GIANT-LOCKED]
uhci2: [ITHREAD]
usb2: on uhci2
usb2: USB revision 1.0
uhub2: on usb2
uhub2: 2 ports with 2 removable, self powered
ehci0: mem 0xd0980000-0xd09803ff irq 10 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb3: EHCI version 1.0 usb3: wrong number of companions (4 != 3)
usb3: companion controllers, 2 ports each: usb0 usb1 usb2
usb3: on ehci0
usb3: USB revision 2.0
uhub3: on usb3
uhub3: 8 ports with 8 removable, self powered
pcib3: at device 30.0 on pci0
pci2: on pcib3
cbb0: mem 0xd0400000-0xd0400fff irq 11 at device 6.0 on pci2
cardbus0: on cbb0
pccard0: on cbb0
cbb0: [ITHREAD]
pci2: at device 6.3 (no driver attached)
pci2: at device 6.4 (no driver attached)
pci2: at device 6.5 (no driver attached)
pcm0: port 0x2100-0x21ff,0x2200-0x223f mem 0xd0981000-0xd09811ff,0xd0982000-0xd09820ff irq 11 at device 30.2 on pci0
pcm0: [ITHREAD]
pcm0:
pci0: at device 30.3 (no driver attached)
isab0: at device 31.0 on pci0
isa0: on isab0
atapci0: port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x2580-0x258f irq 10 at device 31.1 on pci0
ata0: on atapci0
ata0: [ITHREAD]
ata1: on atapci0
ata1: [ITHREAD] pmtimer0 on isa0
orm0: at iomem 0xc0000-0xcffff pnpid ORM0000 on isa0
sc0: at flags 0x100 on isa0
sc0: VGA
vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atkbdc0: at port 0x60,0x64 on isa0
atkbd0: irq 1 on atkbdc0 kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbd0: [ITHREAD]
psm0: irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model IntelliMouse, device ID 3
ppc0: at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold
ppbus0: on ppc0
lpt0: on ppbus0
lpt0: Interrupt-driven port
ppi0: on ppbus0
ppc0: [GIANT-LOCKED]
ppc0: [ITHREAD] sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio0: [FILTER]
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
unknown: can't assign resources (memory)
unknown: can't assign resources (port)
unknown: can't assign resources (irq)
unknown: can't assign resources (port)
unknown: can't assign resources (port)
sio4: at port 0x3e8-0x3ef,0x300-0x30f irq 3 drq 3 pnpid SMCf010 on isa0
sio4: type 16550A
sio4: [FILTER]
unknown: can't assign resources (memory) Timecounters tick every 1.000 msec
ad0: 38154MB at ata0-master UDMA100
acd0: DVDROM at ata0-slave PIO4
GEOM_LABEL: Label for provider acd0 is iso9660/WGR614v7.
Trying to mount root from ufs:/dev/ad0s1a
WARNING: attempt to net_add_domain(bluetooth) after domainfinalize()
drm0: [ITHREAD]
ath0: mem 0xd0410000-0xd041ffff irq 11 at device 0.0 on cardbus0
ath0: [ITHREAD]
ath0: using obsoleted if_watchdog interface
ath0: Ethernet address: 00:13:46:14:1a:31
ath0: mac 7.9 phy 4.5 radio 5.6
ath0: link state changed to UP