(51) 99877.8389
(51) 3022.5100
  • Blog COMDESK

    Acompanhe Artigos, Notícias e nossos Casos de Sucesso.

 

Robert Rose, hoje ex-funcionário da SpaceX, ao ser entrevistado na Embedded Linux Conference (Conferência de Linux Embarcado) em 2013, falou sobre “Lições aprendidas desenvolvendo software para veículos espaciais”. Em seu discurso, ele mostrou como a SpaceX desenvolve seu software baseado em Linux para uma ampla variedade de tarefas necessárias para colocar uma espaçonave em órbita – e, eventualmente, além. O Linux roda em todos os lugares na SpaceX; em tudo desde desktops até espaçonaves.

Rose era o líder da equipe de software de voo da SpaceX. Ele é um ex-programador de vídeo games e disse que algumas lições daquele trabalho foram valiosas em seu emprego na companhia.

 

Sobre a SpaceX

A SpaceX, como empresa, acredita fortemente em transformar os humanos em uma espécie multiplanetária. Uma colônia em Marte é o objetivo, mas para chegar lá, você precisa de foguetes e espaçonaves. Atualmente é caro lançar veículos espaciais, então existe a necessidade de fazer os preços caírem para alcançar esse objetivo.

A empresa segue uma filosofia de reutilização, o que ajuda na redução de preços. Isso já foi testado até certo ponto com o programa dos ônibus espaciais, mas a SpaceX vai além. Não apenas os componentes de hardware são reutilizados entre espaçonaves diferentes; o software é compartilhado também. A empresa constrói seus foguetes do zero em sua fábrica, em vez de terceirizar diversas peças. Isso permite um olhar mais atento e uma frequente integração hardware-software.

Uma coisa que Rose achou difícil de se acostumar no começo na SpaceX foi o foco da empresa no “objetivo final”. Quando decisões são tomadas, as pessoas frequentemente mencionam: “Isso vai funcionar para uma missão à Marte?” Essa pergunta era sempre considerada quando decisões eram tomadas; Marte nem sempre ganha, mas essa preocupação era sempre examinada, segundo ele.

 

Desafios

Alguns dos desafios enfrentados pela empresa são extremos, porque a segurança das pessoas e propriedades está envolvida. As espaçonaves são veículos perigosos que podem causar danos sérios se seu combustível explodisse, por exemplo. Não há como desfazer, não há segunda chance para fazer as coisas certo; uma vez que o foguete é lançado não há como parar. Outro problema que ele não encontrava até ele começar a trabalhar na indústria espacial é o efeito da radiação, que pode aleatoriamente mudar bits – algo que o projeto do sistema precisa considerar.

A SpaceX começou com o foguete Falcon e posteriormente passou o código de aviônica para a espaçonave Dragon. A vantagem óbvia de compartilhar código é que falhas corrigidas em uma plataforma são automaticamente consertadas na outra. Mas há diferenças nos requisitos de software para os veículos lançadores e para as espaçonaves, a grande maioria tem a ver com os diferentes tempos de reação disponíveis. Antes que a espaçonave se aproxime da Estação Espacial Internacional (ISS, sigla em inglês), ela pode tirar um tempo para reagir a qualquer problema. Para um foguete, esse luxo não está disponível; ele deve reagir em pouco tempo.

 

Falsos positivos são uns dos problemas que precisam ser considerados. Rose mencionou o medidor do escudo de calor na missão Mercury 6 (o primeiro voo orbital tripulado dos Estados Unidos) que mostrou que o escudo de calor havia se separado. A NASA tentou arranjar uma maneira de fazer a reentrada sem nenhum escudo de calor, mas resolveu ir em frente. Acabou por ser um falso positivo. Mais uma vez, a quantidade de tempo disponível para reagir é diferente para veículos lançadores e espaçonaves.

 

Coletando dados

Citando Fred Brooks (The Mythical Man-Month), Rose disse que software é invisível. Para tornar o software mais visível, você precisa saber o que ele está fazendo, o que significa criar métricas em tudo o que você conseguir pensar. Estas métricas devem cobrir áreas como desempenho, utilização de rede, carregamento de CPU, dentre outras.

Quando um programa falha, ele deve falhar aos berros com um monitor que começa a piscar em vermelho e mandar um e-mail para todos na equipe. Quando isso acontece, alguém deve responder imediatamente para resolver o problema. Em seu time, eles têm um Justin Bieber em tamanho real recortado que fica posicionado encarando o membro da equipe que quebrou o código. Eles pensam que 100% dos engenheiros de software não gostam de Justin Bieber, e vai funcionar rapidamente para consertar o problema do programa.

 

Alguns detalhes técnicos

Linux é usado para tudo na SpaceX. O Falcon, a Dragon e os veículos Grasshopper usam-no para controle de voo, as estações terrestres usam Linux, bem como os desktops dos desenvolvedores. SpaceX é “Linux, Linux, Linux”, ele disse. Hoje em dia, porém, a empresa também usa o LabView, uma ferramenta gráfica de programação que roda no Windows. Ele é usado para visualizar a telemetria que chega do foguete Falcon 9 e da cápsula Dragon durante o voo.

Rose falou brevemente sobre o sistema de voo da Dragon, embora ele dissesse que não poderia dar detalhes demais. É um sistema tolerante a falhas para satisfazer requisitos da NASA para quando ela chega perto da ISS. Há regras sobre quantas falhas uma aeronave precisa ser capaz de tolerar e ainda ser permitida a aproximação da Estação. Ela usa computadores com redundância tripla para alcançar o nível necessário de tolerância a falhas.

Para navegação, a Dragon usa informação posicional que ela recebe da ISS, com dados de GPS que ela própria calcula. Conforme ela se aproxima da estação, ela usa imagens da ISS e o tamanho relativo da estação para computar a distância para a estação. Pelo fato de às vezes ter que operar na escuridão da sombra da Terra, a Dragon usa imagens térmicas já que a estação é levemente mais quente que no fundo (oposto ao sol).

 

Seu time não usa kernels de distribuições disponíveis no mercado. Em vez disso, eles passam muito tempo avaliando kernels para suas necessidades. Uma vez que um kernel é escolhido, eles tentam não mudá-lo.

 

Artigo original: https://sempreupdate.com.br/como-a-spacex-usa-o-linux-para-controlar-seus-foguetes-e-espaconaves/

Publicado em Tecnologia

 

O objetivo principal deste tutorial é para complementar o artigo que descreve a configuração de rede em um servidor AD com SAMBA4. O artigo pode ser visto em: http://comdesk.com.br/blog/item/7-active-directory-com-samba-4-parte-1

 

REFERÊNCIAS

<ethX>: Interface IP nativa (ex: ens18) <DNS3>: IP de um DNS público (ex: 8.8.8.8)
<MascaraRede>: Máscara de rede utilizada (ex: 255.255.255.0 ou /24) <DNS4>: IP de um DNS público (8.8.4.4)
<DominioLocal>: Nome de seu domínio (ex: comdesk.local) <UUID>: UUID da interface de rede
<Gateway>: Endereço IP do seu gateway (ex: 192.168.9.1) <MACAddress>: Endereço MAC da interface de rede
<DNS1>: Endereço IP do Servidor AD (192.168.9.3) <Hostname>: Nome do Servidor AD (ex: srvArquivos)
<DNS2>: Endereço IP do DNS principal da rede (ex: 192.168.9.1)  

 


Configuração de Rede

O Guia de administração RHEL7 indica que o NetworkManager (Gerenciador de Rede) não suporta redes bridging, recurso que é utilizado em máquinas virtuais. Caso então, esteja fazendo esta configuração em uma máquina virtual, desinstale o NetworkManager.

  • Logado como usuário root, pare e desative o NetworkManager da inicialização padrão do Redhat/CentOS:

systemctl stop NetworkManager

chkconfig NetworkManager off

  • Agora remova o NetworkManager:

yum remove NetworkManager

  • Instale o pacote net-tools, a fim de termos os comandos tradicionais de configuração de rede. Caso precise configurar as interfaces antes de instalar o “net-tools” ou não tenha internet disponível nessa máquina, confira a última seção deste guia.

yum install net-tools

  • Faça uma cópia do arquivo de configurações da respectiva interface de rede (ex: ens18):

cp /etc/sysconfig/network-scripts/ifcfg-<ethX> /etc/sysconfig/network-scripts/ifcfg-<ethX>.ORI

  • Edite o arquivo de configurações da respectiva interface de rede (ex: eth1):

vi /etc/sysconfig/network-scripts/ifcfg-<ethX>

  •  Altere o arquivo para que fique com as configurações desejadas. Segue abaixo um exemplo:

    TYPE="Ethernet"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="<ethX>
    UUID="c0dd071c-8b47-47d3-8c1d-99a18a92ad9b" #ID variável de acordo com a interface
    DEVICE="<ethX>"
    ONBOOT="yes"
    IPADDR="<EnderecoIP>"
    PREFIX="24"
    GATEWAY="<Gateway>"
    DNS1="<DNS1>" #Se a rede possuir SAMBA4 e DNS no mesmo servidor, coloque o endereço IP do SAMBA4
    DNS2="<DNS2>"
    DNS3="<DNS3>"
    DNS4="<DNS4>"
    DOMAIN="<DominioLocal>" # Domínio da Rede
    IPV6_PEERDNS="yes"
    IPV6_PEERROUTES="yes"
    IPV6_PRIVACY="no"

  • Reinicie o serviço de rede:

systemctl restart network

  • Para iniciar a rede automaticamente na inicialização:

chkconfig network on

  • Para listar inicialização dos daemons do Redhat/CentOS faça:

chkconfig --list

 

Configuração de Hostname

  • Faça uma cópia do arquivo de configurações do hostname:
    cp /etc/hostname /etc/hostname.ORI

  • Edite o arquivo de configurações do hostname:
    vi /etc/hostname

  • Altere o arquivo para que fique com as configurações desejadas (ex: srvarquivos.comdesk.local):
    <Hostname>.<DominioLocal>

  • Faça uma cópia do arquivo “/etc/hosts”:
    cp /etc/hosts /etc/hosts.ORI

  • Edite o arquivo “/etc/hosts”:
    vi /etc/hosts

  • Adicione a seguinte linha no final do arquivo “/etc/hosts”:
    <EnderecoIP> <Hostname>.<DominioLocal> <Hostname>

 

 

Configuração de DNS

  • Faça uma cópia do arquivo de configurações do DNS:
    cp /etc/resolv.conf /etc/resolv.conf.ORI

  • Edite o arquivo de configurações do DNS:
    vi /etc/resolv.conf

  • Deixe o arquivo com o seguinte conteúdo:
    search <DominioLocal>
    domain <DominioLocal>
    nameserver <DNS1> #Se a rede possuir SAMBA4 e DNS no mesmo servidor, coloque o endereço IP do SAMBA4
    nameserver <DNS2>
    nameserver <DNS3>
    nameserver <DNS4>

  • Caso seja uma VM, o melhor é desativar o serviço de firewall, bem como, desabilitar da inicialização:
    systemctl stop firewalld
    systemctl disable firewalld

 

 

Servidor NTP (Chrony)

Sincronização de tempo é essencial para o bom funcionamento muitos serviços e aplicativos. O CentOS 7 utiliza como padrão o Chrony, que é uma implementação do protocolo NTP e que atualiza mesmo estando com problemas de rede (caso consiga fazer algumas conexões periódicas).

  • Caso não esteja instalado, instale o Chrony:
    yum install chrony

  • Edite o arquivo de configuração do Chrony:
    vi /etc/chrony.conf

  • Comente as linhas que se referem ao pool CentOS (centos.pool.ntp.org) e adicione os servidores NTP do registro.br:
    # These servers were defined in the installation:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server a.ntp.br iburst
    server b.ntp.br iburst
    server c.ntp.br iburst
    # Use public servers from the pool.ntp.org project.
    ...

    # Allow NTP client access from local network.
    #allow 192.168/16
    ...


  • Após os ajustes, reinicie o serviço:
    systemctl restart chronyd

  • Para monitorar a correção do tempo, os comandos a seguir podem ser utilizados:
    chronyc tracking
    chronyc sources

 


Configuração de Rede nativo do CentOS 7 (ipaddr)

Os comandos mostrados nesta seção são para o caso de precisar configurar alguma Interface de rede antes de instalar o pacote "net-tools", que não é mais nativo do CentOS.

  • Ver status das Interfaces:
    ip addr show

  • Adicionar o endereço IP e máscara à interface (ex: ip addr add 192.168.9.3/24 dev eth1):
    ip addr add <EnderecoIP>/<Mascara> dev <ethX>

  • Adicionar o gateway (ex: 192.168.9.1) como rota padrão:
    ip route add default via <Gateway> dev <ethX>

  • Mostrar as rotas:
    ip r

  • Adicionar Alias de rede:
    ip address add dev <ethX> <EnderecoIP>/<Mascara> label <ethX>:0

 

 

 

Publicado em Tutoriais
Proxmox VE
Proxmox VE
Plataforma completa para virtualização a nível empresarial.
www.proxmox.com
pfSense
pfSense
Sistema que possui recursos avançados para controle e segurança de redes.
www.pfsense.org
FreeNAS
FreeNAS
Sistema operacional para NAS (Network Attached Storage).
www.freenas.org
Zabbix
Zabbix
Ferramenta para monitoramento de redes, servidores e serviços.
www.zabbix.org
XenServer
XenServer
Plataforma de virtualização abrangente, com recursos de classe empresarial.
www.xenserver.org
GLPI
GLPI
Ferramenta completa para gestão de ativos e service desk.
www.glpi-project.org
redhat
redhat
Líder no fornecimento de soluções open source para TI corporativa
www.redhat.com.br
Suse
Suse
Sistema Operacional Linux e soluções de código aberto para serviços corporativos.
www.suse.com
Samba
Samba
Software que implementa solução semelhante ao Active Directory da Microsoft.
www.samba.org

Somos especialistas em Open Source

Conforme as empresas, de todos os portes, passam a seguir o filosofia do open source, começa a ficar claro que as vantagens de adotar esse conceito não se restringem somente aos preços.

Diferente do que pensa o senso comum, o open source é uma filosofia alternativa de negócios e não apenas a disponibilização de softwares gratuitos.


O software de código aberto, proporciona maior liberdade, flexibilidade, agilidade e segurança.