Finalmente aumentei meu arsenal de brinquedos. Novo PSP Slim. Conexão WLAN e USB. Através dessa, funciona perfeitamente com BSD:
umass0: Sony "PSP" Type A, rev 2.00/1.00, addr 2
da0 at umass-sim0 bus 0 target 0 lun 0 da0:
Removable Direct Access SCSI-0 device da0: 40.000MB/s transfers
da0: 61MB (126848 512 byte sectors: 64H 32S/T 61C)
Pode ser acessado com:
mount_msdosfs -o longnames -m 777 /dev/da0s1 /mnt/PSP
Minha diversão agora é tentar acertar a codificação de filmes para assistir no PSP, já que o mesmo tem saída pra TV (e claro que comprei o cabo :-).
A melhor dica que encontrei foi em:
Tentei fazer um resample de um vídeo para adequar ao PSP, mas falhou com o seguinte erro:
helio@musashi:torrents$ ffmpeg -i Video.mp4 -r 29 -b 768k -ar 24000 -ab 64k -s 320x240 M4V00001.MP4
FFmpeg version SVN-r10657, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --cc=cc --prefix=/usr/local --make=gmake --disable-debug --enable-memalign-hack --enable-shared --enable-pp
--extra-cflags=-I/usr/local/include/vorbis -msse -I/usr/local/include --extra-ldflags=-L/usr/local/lib -la52 --extra-libs=-pthread
--enable-gpl --enable-pthreads --mandir=/usr/local/man --enable-liba52 --enable-liba52bin --enable-libfaad --enable-libfaadbin
--enable-libgsm --enable-libmp3lame --enable-libogg --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
libavutil version: 49.5.0
libavcodec version: 51.44.0
libavformat version: 51.14.0
built on Nov 17 2007 21:27:40, gcc: 3.4.6 [FreeBSD] 20060305
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Video.mp4': Duration: 01:38:49.8, start: 0.000000, bitrate: 775 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 320x176, 25.00 fps(r) Stream #0.1(eng): Audio: mpeg4aac, 48000 Hz, stereo
File 'M4V00001.MP4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'M4V00001.MP4': Stream #0.0(eng): Video: mpeg4, yuv420p, 320x240, q=2-31, 768 kb/s, 29.00 fps(c)
Stream #0.1(eng): Audio: 0x0000, 24000 Hz, stereo, 64 kb/s
Stream mapping: Stream #0.0 -> #0.0 Stream #0.1 -> #0.1
Compiler did not align stack variables. Libavcodec has been miscompiled and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. You may try recompiling using gcc >= 4.2.
Do not report crashes to FFmpeg developers.
Unsupported codec for output stream #0.1
Consegui arrumar refazendo a instalação do ffmpeg via ports:
root@musashi# cd /usr/ports/multimedia/ffmpeg root@musashi# env CC=gcc4.2 make build deinstall install clean
Com isso o filme foi resampleado (existe isso?), mas não foi aceito no PSP... brinquedo novo é assim :-)
-rwxr-xr-x 1 helio users 1555 Nov 4 2001 nsbm2html
-rwxr-xr-x 1 helio users 154 Oct 4 2001 admin-linux-br
-rwx------ 1 helio users 49 May 6 2001 pop.secure.sh
-rwxr-xr-x 1 helio users 651 Dec 7 2000 housemailer.sh
-rwxr-xr-x 1 helio users 1044 Oct 29 1997 getmail.sh
Esse getmail.sh foi realmente meu primeiro script...
O legal de usar "tar" para fazer backup (e também restaurar) é que vc consegue manter a data de criação do arquivo. Olhando em meu laptop, achei alguns beeeem antigos:
-rwxr-xr-x 1 helio users 181 Dec 12 2003 speedyteste.sh
-rwxr-xr-x 1 helio users 67 Nov 18 2003 coreclean.sh
-rwxr-xr-x 1 helio users 350 Sep 24 2003 mywget
-rwxr-xr-x 1 helio users 1908 Sep 23 2003 jisql
-rwxr-xr-x 1 helio users 282 Jun 16 2003 dvd-rip_pt.sh
-rwxr-xr-x 1 helio users 5380 Jun 3 2003 tcp_queue_test
-rw-r--r-- 1 helio users 4458 Jun 3 2003 tcp_queue_test.c
-rwxr-xr-x 1 helio users 111 May 27 2003 xquake2.sh
-rwxr-xr-x 1 helio users 1091 May 20 2003 change_bg.py
-rwxr-xr-x 1 helio users 1063 Apr 27 2003 make_downloads.py
-rwxr-xr-x 1 helio users 629 Apr 21 2003 avi_enconder.sh
-rwxr-xr-x 1 helio users 242 Apr 21 2003 dvd-rip.sh
-rwxr-xr-x 1 helio users 7887 Apr 21 2003 dvd2divxscript.pl
-rwxr-xr-x 1 helio users 51 Apr 3 2003 mygcc
-rwxr-xr-x 1 helio users 111 Mar 25 2003 hgcc.sh
-rwxr-xr-x 1 helio users 1017 Feb 25 2003 pimpoplayer.py
-rwxr-xr-x 1 helio users 653 Dec 11 2002 pythonget.py
-rwxr-xr-x 1 helio users 2814 Nov 21 2002 aph_preenche.py
-rwxr-xr-x 1 helio users 809 Nov 19 2002 get_storeproc.sh
-rwxr-xr-x 1 helio users 377 Nov 19 2002 isql_safe
-rwxr-xr-x 1 helio users 480 Nov 13 2002 myisql
-rwxr-xr-x 1 helio users 647 Nov 1 2002 asse.sh
-rwxr-xr-x 1 helio users 20 Oct 2 2002 pfctl
-rwxr-xr-x 1 helio users 2519 Aug 14 2002 velox-auth.py
-rwx------ 1 helio users 13885 Aug 8 2002 stat.pl
-rwxr-xr-x 1 helio users 1700 Aug 1 2002 changepasswdial.py
-rwxr-xr-x 1 helio users 83 Jul 30 2002 evol-kill.sh
-rwxr-xr-x 1 helio users 2762 Jul 25 2002 http_teste.py
-rwxr-xr-x 1 helio users 115 Jul 3 2002 planta_dsl_teste.sh
-rwxr-xr-x 1 helio users 166 Apr 9 2002 bookmarksupdate.sh
-rwxr-xr-x 1 helio users 1805 Jul 17 2001 id-velox.sh
-rwxr-xr-x 1 helio users 123 Jun 18 2001 wordview.sh
-rwxr-xr-x 1 helio users 275 May 21 2001 Xterm
-rwxr-xr-x 1 helio users 261 May 21 2001 Xterm-ROOT
Devo ter alguns de 1997 em outro backup, do antigo servidor de casa :-)
Para quem já utilizou a solução de SSLVPN da Juniper, sabe que é preciso mapear as portas para seu uso (no meu FreeBSD não funciona o modo de tunelamento).
Como vários serviços são acessiveis via portas baixas, incluindo ssh, ftp, telnet, etc, existe a possibilidade de mapear as portas acima de 1024 nas portas baixas através de vários ips de loopback.
O script abaixo gera o arquivo rinetd.conf para as várias interfaces :-)
#! /bin/sh
CONF="/usr/local/etc/rinetd.conf"
PORTS="110:11000 25:2500 443:44300 80:8000 22:2200 23:2300 21:2100 20:2000"
### Commands here ###
TMSTAMP=`date "+%Y%m%d"`
if [ -f $CONF ]; then
mv $CONF $CONF-$TMSTAMP
fi
IPS=`ifconfig lo0 | grep netmask | awk '{print $2}'`
for ip in $IPS
do echo "Configuring: $ip"
for port in $PORTS
do
LOW_PORT=`echo $port | awk -F":" '{print $1}'`
HIGH_PORT=`echo $port | awk -F":" '{print $2}'`
echo -e "$ip $LOW_PORT \t $ip $HIGH_PORT" >> $CONF
done
done
Da última compilação de kernel:
Copyright (c) 1992-2007 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 6.3-PRERELEASE #1: Sat Nov 10 13:01:13 CST 2007 root@musashi:/usr/src/sys/i386/compile/GENERIC
WARNING: MPSAFE network stack disabled, expect reduced performance.
ACPI APIC Table: Timecounter "i8254" frequency 1193182 Hz quality
0 CPU: Intel(R) Pentium(R) M processor 1.73GHz (1729.18-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x6d8 Stepping = 8
[...]
A tag 6.3-PRERELEASE já diz tudo. Se bem que eu provavelmente vá pular direto pro release 7.0... mais emocionante.
Imaginem eu falando incessantemente, após o almoço, por 4 horas durante uma semana...
Nada como os desafios para nos fazer acordar. Meu desafio foi criar um sistema de monitoração de performance para sistemas pré-pago. Com RRDTool na mão e perl na cabeça, lá fui eu. Não que eu seja exímio programador em Perl (ou qualquer outra linguagem), mas os sistemas de telefonia, principalmente na parte de pré-pago, usam sistemas Solaris 9.0, onde perl já vem instalado.
O resultado, já nesses gráficos, ficou além do esperado e pronto em 5 dias!!! Haja código... já sobre a documentação... essa virou parte das lendas como boi-tatá, saci pererê...
O primeiro gráfico mostra as verificações de crédito para liberar a chamada (First Interrogation), assim como os débitos (Final Report). O segundo, chamadas originadas (celular ligando para alguém) dentro da própria rede da operadora.
Após uma longa e dura peregrinação, de loja em loja, de site em site, consegui achar uma webcam compatível com FreeBSD, através do driver pwc.ko (disponível no ports, multimedia/pwcbsd). Comprei uma Webcam Trust WB-1200p por € 9,00.
Minha primeira decepção foi quando conectei a câmera na usb, já conservando a caixa, plástico, etc, para o caso de uma eventual devolução. A mensagem que recebi do sistema ficou muito aquém do que esperava:
ugen0: Pixart Imaging Inc. CIF Single Chip, rev 1.10/1.00, addr 2
Para minha surpresa (e total desagrado), não foi criado o dispositivo /dev/video0 ou algo parecido, mas somente o mais genérico dos USBs. Voltei ao site do driver:
http://info.iet.unipi.it/~luigi/FreeBSD/usb-cameras.html
para verificar se tinha comprado uma câmera de mesmo nome, mas versão de hardware diferente (ploduto cinez...). Vi que realmente estava certo, hardware correto...
port 2 addr 2: full speed, power 500 mA,
config 1, CIF Single Chip(0x2468), Pixart Imaging Inc.(0x093a), rev 1.00
Tentei fazer meu Ekiga usar a webcam e... nada. Testei o aplicativo qcamshot e... nada. Finalmente testei o programa spca5view e... funcionou!!!
helio@musashi:~$ spca5view -d /dev/ugen0 -a
USB SPCA5XX camera found.
Pixart PAC207BCA [spca5xx_probe:8263]
Camera type GBRG [spca5xx_getcapability:2241] maxw 352 maxh 288 minw 160 minh 120
calculating frame rate...
just a moment please...........2.24(fps)
Infelizmente a danada da webcam faz jus ao preço: imagens distorcidas, péssima captura, baixa quantidade de frames (apesar que isso se deve mais ao driver), enfim... uma webcam de € 9,00.
Outra decepção ficou por conta dos aplicativos, raros os que reconheçem o dispositivo e fazem uso dele. Será que isso será corrigido no release 7.0? Enquanto isso, vou me divertindo com imagens distorcidas de mim mesmo, talvez geradas pela webcam, talvez pelo driver, talvez pela minha pessoa. Quem sabe?
Fiz um pequeno programa para ajudar aos novos estagiários a entender o "modus operandi" da empresa. Os efeitos superaram as expectativas, como comprovaram meus amigos de NRO (network rollout):
(15:00:55) Adriano_ASA @ at work SP: que porra é essa ????
(15:01:55) Adriano_ASA @ at work SP: responde essa merda !!!
(15:02:00) Adriano_ASA @ at work SP: seu fdp !!!
(15:02:12) Adriano_ASA @ at work SP: tá formatando o IO do NRG de cliente !!!
(15:02:23) helio: hahahahahaha
(15:02:32) helio: ele não faz nada
(15:02:37) helio: é pra dar trote nos estags
(15:02:41) helio: e nos manés!!!!
(15:02:44) helio: hahahahahaha
(15:02:46) helio: peguei!!!
(15:02:55) Adriano_ASA @ at work SP: hehehehe...
(15:03:02) Adriano_ASA @ at work SP: legal !!
(15:03:09) helio: pega os caras aí
(15:03:39) Adriano_ASA @ at work SP: seu viado !!!
(15:07:46) Adriano_ASA @ at work SP: Vai correr atrás de mulher !!!
(15:08:01) Adriano_ASA @ at work SP: fica gastando tempo com estas porras !!!
(15:11:41) helio: hahahahaha
(15:11:47) helio: tá todo mundo do GSDC sabendo
(15:11:51) helio: fracasso miserável
(15:13:12) Adriano_ASA @ at work SP has closed the conversation window.
Chamei de "counter.c", e pode ser compilado com "gcc -o counter counter.c". Os efeitos são hi-lá-ri-os!!!
#include
#include
#include
void start_msg( int );
void print_point( int );
int main() {
char response[128];
int progress = 0;
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
sigaction(SIGCHLD, &sa, NULL);
sigaction(SIGTERM, &sa, NULL);
sigaction(SIGKILL, &sa, NULL);
sigaction(SIGINT, &sa, NULL);
sigaction(SIGTRAP, &sa, NULL);
sigaction(SIGSTOP, &sa, NULL);
sigaction(SIGTSTP, &sa, NULL);
sigaction(SIGTTIN, &sa, NULL);
sigaction(SIGTTOU, &sa, NULL);
start_msg(500);
printf("Do you want to format your hard disk c:\\ ? [yes/no]: yes\n");
printf("Are you really sure you want to do this? [yes/no]: ");
scanf(response);
start_msg(1);
printf("Do you want to format your hard disk c:\? [yes/no]: yes\n");
printf("Are you really sure you want to do this? [ yes/no]: yes\n");
printf("\nProceeding with disk formatting.\n");
printf("All your data will be erased and lost.\n");
printf("Stop the process in case you didn´t create a backup.\n");
printf("Formatting");
for (progress = 10; progress <= 100 ; progress += 10) {
print_point(10);
printf("%d%c", progress,'%');
}
printf("\nHard disk successfuly formatted\n\n\n\n");
printf("System rebooting....");
fflush(NULL);
sleep(60*3);
return 0;
}
void start_msg(int timeout ) {
int i, counter = 30;
system("clear");
printf("\n#####################################################################\n");
printf("# Disk Formatter - Use with caution!!!! #\n");
printf("# DISCLOSURE: There isn´t responsabilities for any damage caused #\n");
printf("# this program. The usage and responsability, as any prosecution #\n");
printf("# belongs exclusively to the user. #\n");
printf("# Be sure about the impacts and use with caution. #\n");
printf("#####################################################################\n\n\n");
printf("Formatting system startup");
for (i=0; i < counter; i++){
printf(".");
usleep(timeout);
}
printf(" ready!\n");
}
void print_point(int n) {
int i;
for (i=0; i <= n; i++) {
printf(".");
fflush(NULL);
sleep(3);
}
}
Finalmente recebi os dvds de instalação do Solaris 10 (que podem ser solicitados gratuitamente no site da Sun). Aproveitei uma máquina que estava com problemas de instalação do programa RT, um sistema de tickets para problemas de operação (ideal para ambiente de NOC), rodando Solaris 11 (Open Solaris na verdade) num hardware Sun-Fire-V210.
Apanhei um pouco pra instalar já que a mesma tem de ser feita via cabo console (demorei pra achar a opção correta de terminal). Ao final tinha tudo pronto e rodando o Solaris 10.
SunOS ssgo 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Fire-V210
De cara já percebi que a máquina respondia melhor e mais rápido em relação ao sistema anterior, não querendo denegrir o OpenSolaris.
Nada como ser _user_ friendly.
Faz tempo que instalei o grub, boot loader muito flexível e fácil de configurar, no meu FreeBSD, aliás desde que era 6.1-RELEASE. Agora que estou totalmente atualizado como 6.2-STABLE, isso tornou-se ponto de honra. Infelizmente o erro abaixo insistia em ocorrer ao tentar instalar o mesmo na MBR:
musashi# grub-install hd0
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions.
Anywhere else TAB lists the possible completions of a device/filename. ]
grub> root (hd0,0,a)
Filesystem type is ufs2, partition type 0xa5
grub> setup --stage2=/boot/grub/stage2 --prefix=/boot/grub (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/ufs2_stage1_5" exists... yes
Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... failed (this is not fatal)
Running "embed /boot/grub/ufs2_stage1_5 (hd0,0,a)"... failed (this is not fatal)
Running "install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0)
/boot/grub/stage2 p /boot/grub/menu.lst "... failed
Error 29: Disk write error
grub> quit
Eu já tinha tido o desprazer de ver esse erro anteriormente, mas achava que era relacionado com a versão do grub (como descrito em algumas listas). Dessa vez, sapeando no Google, que já começa a trazer muito mais ruído que informação, encontrei esse link:
Por um grande acaso vi a variável kern.geom.debugflags com um parâmetro configurado. Não tive dúvidas e segui o mesmo.
musashi# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
Resultado: sou um feliz usuário com um novo boot loader, o qual vou colocar uma bela tela gráfica :-) Só espero que meu sistema funcione amanhã, já que eu ainda não desliguei o mesmo...
musashi# grub-install /dev/ad0
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
Page 31 of 35