Cleverton Bueno
← Voltar para todos os artigos

O Cérebro da Operação – Desvendando o QNX

Este é um guia prático que detalha o "Método CompCet" de instalação e configuração do QNX, incluindo a criação da rotina "mapa.ces" para contornar uma falha crítica de boot não documentada pelo fabricante.

Introdução: A Escolha de um Sistema Operacional Superior

No final da década de 80, o mundo da computação para pequenas e médias empresas era dominado pelo MS-DOS. Em um ambiente multiusuário, isso se traduzia em redes complexas, caras e muitas vezes instáveis. Para uma aplicação de missão crítica como um sistema de gestão de saúde, onde a performance e a confiabilidade não são negociáveis, era preciso uma base mais sólida. Essa base era o QNX.
QNX não era apenas mais um sistema operacional; era uma filosofia de engenharia diferente. Nascido para o mundo da automação industrial e sistemas de tempo real, ele foi construído sobre três pilares que o tornavam a escolha perfeita para a Prosoft e depois para a CompCet: multitarefa preemptiva, arquitetura de microkernel e um modelo de comunicação interprocessos via mensagens. Para o usuário final, isso se traduzia em uma experiência notavelmente rápida e estável, mesmo com dezenas de terminais conectados a um único servidor. Para nós, os desenvolvedores e técnicos, era um ambiente poderoso e elegante que, uma vez dominado, nos permitia construir sistemas de uma robustez inigualável.

A Arquitetura Elegante: Microkernel e a Dança das Mensagens

O segredo da velocidade e estabilidade do QNX residia em sua arquitetura. Como exploramos em detalhe no artigo "Anatomia de um Sistema Operacional de Tempo Real", o QNX utilizava um microkernel e um elegante modelo de comunicação via troca de mensagens. Essa abordagem delegava as funções do sistema a "Administradores" independentes, como o de Tarefas, de Arquivos e de Dispositivos, resultando em uma resiliência e performance inigualáveis. Agora, vamos ver como essa teoria se aplicava na prática do dia a dia.

A Visão do Usuário: O Shell e o Sistema de Arquivos Hierárquico

Para o usuário, a interação com esse poderoso sistema se dava através de uma interface de linha de comando chamada Shell. O Shell era o intérprete que transformava os comandos digitados em ações do sistema. Ele era responsável por encontrar e executar os programas (que por padrão ficavam no diretório /cmds), redirecionar a entrada e saída (> para um arquivo, < de um arquivo) e criar "pipes" (|) para encadear comandos, onde a saída de um programa se tornava a entrada do próximo.

A organização dos dados era feita em um sistema de arquivos hierárquico, ou "em árvore", muito similar ao do Unix. Tudo partia do diretório raiz (/). A partir dele, surgiam os diretórios principais do sistema, como:

  • /cmds: Onde ficavam os comandos executáveis do sistema.
  • /config: Arquivos de configuração, incluindo o vital sys.init.
  • /user: Onde os diretórios de cada usuário eram criados.
  • /drivers: Os drivers de dispositivo, como os de disco.

Essa estrutura lógica e organizada permitia um gerenciamento de arquivos e programas eficiente e familiar para quem já tinha tido contato com outros sistemas multiusuário.

O Desafio da Configuração: O "Método CompCet" na Prática

Instalar o QNX e fazê-lo reconhecer todo o hardware customizado era um processo que combinava os procedimentos do manual com uma série de "segredos de campo", aprendidos à custa de muita investigação. Este era o nosso método, a rotina que cada técnico da CompCet precisava dominar.

Passo 1: A Instalação Base e o Particionamento

O processo começava com a criação de um espaço para o QNX no disco rígido. Usando o utilitário fdisk, criávamos uma partição dedicada, identificada como "OS type 7". Em seguida, com o comando dinit 3 +hard, inicializávamos essa partição, criando a estrutura vazia do sistema de arquivos do QNX.

Passo 2: O Segredo da Estabilidade – A Rotina mapa.ces

Aqui entrava o nosso grande diferencial, uma solução que nem a própria Quantum, desenvolvedora do QNX, conhecia. Descobrimos que, em certas condições, o processo de configuração do QNX corrompia o seu próprio setor de boot, invertendo alguns bytes cruciais e impedindo que o sistema iniciasse. Após incontáveis horas de análise, desenvolvemos uma rotina de segurança: a mapa.ces. Antes de qualquer configuração crítica, executávamos um programa que fazia um "dump" (uma cópia exata) dos cinco primeiros setores do disco rígido para um arquivo seguro. Se o boot falhasse, simplesmente usávamos um disquete de emergência para restaurar esses setores a partir do mapa.ces, recuperando o sistema em segundos. Essa rotina foi a nossa salvação e garantiu a estabilidade das nossas instalações.

Passo 3: Ligando o Hardware ao Software – osconfig

Com o sistema de arquivos pronto, precisávamos informar ao QNX sobre o hardware que havíamos configurado via jumpers. O comando osconfig /config/sys.cfg abria um utilitário de configuração que nos permitia criar um arquivo, o sys.cfg, e registrar nele os endereços de I/O e outras configurações físicas das nossas placas multi-seriais. Este arquivo era o mapa que o sistema operacional usaria para encontrar e se comunicar com o hardware.

Passo 4: O Momento da Verdade – O Comando boot

Este era o passo mais crítico e perigoso. O comando boot era responsável por gravar as informações de inicialização no setor de boot do HD, unindo o kernel do QNX com a configuração de hardware que havíamos definido. O comando que usávamos era:

boot 3:/netboot/os.2.21atp c=3:/config/sys.cfg +h +q

Vamos decifrá-lo:

  • boot 3:/netboot/os.2.21atp: Especifica o arquivo do kernel a ser carregado (a versão atp era para "AT Protected Mode", que permitia usar mais de 640KB de memória).
  • c=3:/config/sys.cfg: Aponta para o arquivo de configuração de hardware que criamos com o osconfig.
  • +h +q: Flags adicionais de configuração.

Era neste momento que, em cerca de 30% das vezes, o boot se corrompia. Quando isso acontecia, a rotina mapa.ces entrava em ação, nos permitindo recuperar e tentar novamente.

Passo 5: A Ativação Final – O sys.init e o Comando stty

Com o boot configurado e o sistema reiniciado com sucesso, o QNX executava automaticamente um script de inicialização: o arquivo /config/sys.init. Era neste arquivo de texto que colocávamos os comandos finais para "acordar" as portas seriais para o sistema. Usando o utilitário stty (set tty), ativávamos as interrupções necessárias para as placas multi-seriais:

  • stty inton=3
  • stty inton=4

Esses comandos instruíam o QNX a começar a "ouvir" as IRQs 3 e 4. Imediatamente após a execução desses comandos, os terminais conectados às placas finalmente ganhavam vida, exibindo o tão esperado prompt de Login:.

Conclusão

Dominar o QNX era mais do que apenas conhecer seus comandos. Era entender sua filosofia de design, sua arquitetura de mensagens e, crucialmente, saber navegar por suas peculiaridades e desafios não documentados. A combinação da elegância do microkernel do QNX com o conhecimento prático e profundo que desenvolvemos na ProSoft e depois na CompCet – simbolizado pela rotina mapa.ces – foi a fórmula que nos permitiu construir sistemas de saúde de altíssima performance e confiabilidade. Era a prova de que a verdadeira expertise não estava apenas em seguir o manual, mas em escrever os capitulos que faltavam nele.