História de horror #1: “tuner” atropela “reiserfs”

Comprei uma placa de captura de TV/rádio toda pimpona (“Winfast TV2000XP Global“) com a intenção de acrescentar ao meu servidor caseiro a funcionalidade de Centro de Entretenimento, com o “MythTV“. Dada a escassa escolha que existe de placas analógicas, agora com a entrada em força do DVB (lá fora), não dá para ser esquisito e escolher apenas modelos bem suportados em Linux… Parecia-me uma placa PCI tão corriqueira como a anterior, uma “Pinnacle PCTV” antiquíssima que “ardeu” um destes dias… mas em vez de ser baseada no velhinho “bt8x8” e num sintonizador básico, a coisa vem artilhada com um conjunto de chips (adc Conexant CX2388 + tuner Xceive XC2028) infernais, cujo suporte em Linux ainda está longe de ser “desembrulhar e usar”… tive mesmo de dessoldar a protecção electromagnética para poder identificar o sintonizador!…

Comecei por meter a placa e carregar os módulos respectivos (“cx88xx” et alia), tentando vários parâmetros prováveis para esta placa (existem várias parecidas nesta família) para ver o que dava. Ainda consegui que os dispositivos correctos aparecessem automaticamente debaixo de /dev, o que é bom sinal, e o “tvtime” e o “xawtv” conseguiram usá-los. Parecia tudo estar a correr bem, até perceber que nem que eu fizesse o pino seria capaz de apanhar um canal que fosse… só mais tarde é que percebi que o sintonizador precisa de firmware!… raisparta estes gajos mais o “time-to-market” e as malditas FPGAs!!! Lá fui à procura do dito cujo, e fiquei também a saber que ainda por cima o respectivo controlador tem de ser especial de corrida, não pode ser o módulo “tuner” que normalmente vem no núcleo… baaah!… mania de complicar as coisas!!!

Bom, mas como a teimosia é uma fonte inesgotável de colorido na minha vida, vai daí carreguei o módulo “tuner” normal, desta vez com os parâmetros correctos para esta placa. Para além do “kernel oops”, a consola agora totalmente ajavardada mimoseou-me com uma quantidade de mensagens de erro emitidas pelo módulo “ReiserFS”, que devia estar ali ao lado sem fazer mal a ninguém quando lhe aterrou em cima uma violação de memória daquelas à antiga… na sua (e minha) aflição, desatou a percorrer os nós do sistema de ficheiros, à procura de qualquer coisa que fizesse sentido, e foi provavelmente nesse momento que a tabela de partições foi aniquilada. Tive de reiniciar o servidor para reganhar o controlo da máquina, mas já não veio acima. Tendo em conta que tenho 3 partições nesse disco, incluindo duas “root” (uma do servidor e outra do cliente “diskless”) , o panorama não era bom… tinha perdido todos os meus PCs duma só vez. (Nota mental: guardar isto como exemplo clássico de um “ponto central de falha”.)

O que vale é o belo “liveCD” do Ubuntu, sempre à mão de semear. Arrancando com o CD, pude instalar em ambiente temporário a aplicação “testdisk”, que apesar do nome mal escolhido é uma belíssima ferramenta de recuperação de dados, pois é capaz de ler as partições perdidas num disco e recriar a respectiva tabela. Depois reiniciei a máquina e reinstalei o GRUB de volta no MBR, ainda a partir do CD, e estava pronto para outra. Mesmo assim ainda tive de desligar o bicho uma ou duas vezes durante o processo, porque houve alturas em que o disco estava inacessível… acho que o auto-detect de geometria de discos da BIOS também quis entrar na brincadeira…

Conclusão: a TV destrói a informação!!! (nada que não soubéssemos já, mas…😉 )

~ por Vasco Névoa em Junho 27, 2007.

6 Respostas to “História de horror #1: “tuner” atropela “reiserfs””

  1. Para brincares com software novo, o melhor que tens a fazer é utilizares um fakeroot/chroot.

    Desta forma consegues correr uma outra instância do ambiente GNU/linux no teu ubuntu, sem teres que rebootares a máquina e afins. E assim, isolas o teu chroot do resto do sistema (uma espécie de sandbox), onde podes ajavardar à vontade.

    Vou te dar um exemplo no qual utilizei o chroot: Estava a desenvolver uma aplicação que “emulava” o symphonyOs (genero teres um desktop full screen, activado pela tecla F12, e que teria um conjunto de widgets – uma especie de iGoogle). Ora, para isto uso as funcionalidades de rendering da libxul, e mozembed-dev. Só que tu no Feisty não consegues instalar a libxul e as suas dependencias sem teres que desinstalar uma data de cenas, inclusive o firefox. Existe um bug report relacionado com isto no launchpad.
    Então fiz um chroot da ultima versão estável do debian e pimba! consegues instalar tudo o que queres nessa sandbox via apt-get, sem mexeres na tua instalação primária.

    Se quiseres experimentar,podes começar com o seguinte link:
    http://www.debian.org/doc/manuals/reference/ch-tips.en.html#s-chroot

    brinca à vontade no chroot, e depois qd te fartares, apagas a directoria respectiva e voilá! no damages!

  2. Obrigado pela dica e pelo link, tá cheio de coisas boas.
    Mas foste escolher mal a ferramenta para o problema, um chroot corre com o mesmo núcleo de linux que o ambiente “normal”, o que no meu caso não ia resolver nada… continuaria com o meu hardware e os mesmos módulos de núcleo sujeitos às mesmas intempéries – lembra-te que o problema foi causado pelo mau comportamento de um módulo carregado, que corrompeu todo o núcleo que estava a correr… e portanto, não faz qualquer diferença qual o conjunto de ficheiros que estão acessíveis nesse momento.
    Uma outra forma de criar uma caixa de areia que incluísse o núcleo do sistema operativo seria usar virtualização: vmware, user-mode-linux, xen… mas não sei como o acesso ao HW se processa nesses casos; ainda poderia configurar a minha placa de TV?…

  3. Olá na realidade estou com um problema parecido com minha placa de tv, pixelview 8000gt, ela tem o mesmo conjunto de chipsets e não consigo fazer funcionar, vagando pela web li seu comentário e percebi que vc fez algumas coisas pra tentar faze-la funcionar..
    Gostaria de saber se vc conseguiu fazer ela funcionar e como fez isso…agradeço…

  4. Lamento não poder ajudar muito, mas não voltei a tentar desde essa vez.
    No entanto, tenho aqui alguma informação sobre a minha placa que pode servir de ponto de partida para a investigação:
    http://www.linuxtv.org/v4lwiki/index.php/Leadtek_WinFast_2000
    Boa sorte!

  5. Outra coisa que pode ajudar: o maior problema parece ser o tuner XC2028, mas existe um módulo de kernel para o “irmão mais velho” XC3028, que é usado nas placas de DVB. Supostamente é compatível.

  6. agradeço, realmente o problema maior é o tuner, já li e reli muita coisa na net..to tendo dificuldade em iniciar alguma coisa, neste link tem alguma coisa, mas nem sei como fazer:
    http://linuxtv.org/v4lwiki/index.php/Cx88_devices_%28cx2388x%29
    no mais continuo parado com a placa no micro!valeu.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

 
%d bloggers like this: