Continue" />

Conhecendo um pouco mais sobre Configurações de hardware, Inicialização do sistema e Níveis de execução

17/04/2018 Carlos Jefferson Artigos Boot Configurações Inicialização Linux Sistema Utilitários

No post de hoje iremos abordar temas que em primeira vista podem parecer complexos mas que nós usuários deste maravilhoso sistema observamos seus usos diariamente, ou pelo menos uma vez na vida.

O primeiro dos temas está logo abaixo.

CONFIGURAÇÕES DE HARDWARE

Configurações de hardware são, logicamente, estados de sistema que definem como proceder em conformidade com as opções de configurações.

No que diz respeito a estado de sistema temos as informações de sistema.

INFORMAÇÕES DE SISTEMA

São informações diversas sobre determinados componentes de sistema, como estado, arquitetura, dispositivos, entre outros.

É possível, a partir destes dados, manipular diversos comandos e extrair aquilo que quisermos do nosso sistema.

A seguir, teremos alguns comandos que são bastante utilizados para deter informações do sistema:

  •    ls* Family;
  •    dmicode
  •    proc files

Iremos nos ater por instante apenas a família ls*, que é uma série de comandos importantes.

A série de comandos ls* é um conjunto de comandos de sistema que mostram determinado estado de um componente. Os que julgo principais são os que seguem abaixo:

  • lscpu: Mostra informações sobre a arquitetura e dos componentes da CPU e processadores;
  • lsscsi: Mostra atributos de sistema de hosts da máquina(como infos básicas de hd, etc);
  • lsusb: Mostra informações sobre dispositivos USB conectados ao sistema;
  • lspci: Retorna configurações e estados dos componentes presentes na arquitetura PCI;
  • lshw: Fornece informações detalhadas das configurações da máquina, como memória, etc;
  • lshal(hardware abstraction layer): Traz ao usuário detalhes sobre a camada de hardware abstrato, que é uma espécie de driver que permite instruções de um nível mais alto se comunicar com componentes de baixo nível, prevenindo acesso direto ao hardware;
  • lsmod: Mostra ao usuário informações sobre os drivers ativos na máquina;

Mostrados estes comandos, seguiremos para nossa próxima definição.

Em sistemas Linux, um assunto deveras importante e que sempre é preciso atenção e pelo menos razoável entendimento este tema é sobre sistema de aquivos. Estes dados geralmente são arquivos especiais localizados em uma pasta específica e contém metadados(dados sobre dados) assim como também nos permitem manipular configurações a nível de kernel.

Discutiremos quatro termos que remetem a sistemas de aquivos, são eles: sysfs, udev, dbus, modprobe.

Sysfs – sistema de arquivos para exportar objetos do kernel

O sistema de arquivos sysfs é um pseudo sistema de arquivos que fornece uma interface para as estruturas de dados do kernel

Os arquivos sob o sysfs fornecem informações sobre dispositivos, módulos do kernel, sistemas de arquivos e outros componentes do kernel

O sistema de arquivos sysfs é comumente montado em / sys. Normalmente, ele é montado automaticamente pelo sistema, mas também pode ser montado manualmente usando um comando como:

Muitos dos arquivos no sistema de arquivos sysfs são somente leitura, mas alguns arquivos são graváveis permitindo que as variáveis do kernel sejam alteradas. Para evitar a redundância, os links simbólicos são muito usados para conectar entradas na árvore do sistema de arquivos

Udev

O udev fornece o software do sistema com eventos de dispositivo, gerencia permissões de nós de dispositivos e pode criar links simbólicos adicionais no diretório /dev ou renomeia as interfaces de rede

Links simbólicos significativos ou nomes de dispositivos de rede fornecem uma maneira de identificar com segurança dispositivos baseados em suas propriedades ou configurações atuais.

dbus

O dbus é um sistema de bus de mensagens, uma forma simples de as aplicações se comunicarem entre si

Além da comunicação entre processos, o dbus ajuda a coordenar o ciclo de vida do processo; Isso torna simples e confiável o código de um aplicativo ou daemon de “instância única” e o lançamento de aplicativos e daemons sob demanda quando seus serviços são necessários.

   E por último mas não menos importante.

modprobe

O modprobe adiciona e remove módulos do kernel do Linux. Módulos são pedaços de código que estendem a funcionalidade do kernel do sistema operacional sem a necessidade de reinicialização. O modprobe usa as listas de dependências e mapas de hardware gerados pelo depmod para carregar ou descarregar módulos de forma inteligente no kernel. Ele realiza a inserção e remoção reais usando os programas de nível inferior insmod e rmmod, respectivamente.

Dando continuidade ao nosso artigo, iremos comentar agora sobre inicialização do sistema, que abordará basicamente o desencadear das sequências de comandos iniciais.

INICIALIZAÇÃO DO SISTEMA

Todo sistema tem um start, um começo, um desencadear de comandos. É neste contexto que nossa discussão será continuada.

Em primeiro lugar, falaremos sobre o bootloader. Bootloader é o responsável por carregar o sistema operacional, ele direciona a máquina a acessar a trilha do sistema de arquivos em que está o SO. A BIOS lê os primeiros 512 bytes da mídia bootável e então a partir dali o sistema inicia. A mídia sustenta o boot loader e tabela de partição para o hardware enteder o que será processado e onde estão estocadas as informações necessárias para o funcionamento do sistema.

Disponível em ttps://opensource.com/article/18/1/analyzing-linux-boot-process

Acima está um resumo de como funciona a inicialização de sistema e algumas bibliotecas que são chamadas no processo.

Para tais ações, é necessário um controle do que é ou não executado, e é nesse momento que temos o SysVinit. O programa de inicialização do SysVinit lê o arquivo /etc/inittab para identificar a coleção de serviços que devem estar disponíveis quando o sistema atingir seu estado padrão (conhecido como o nível de execução padrão do sistema) e o comando que deve executar para atingir esse estado.

Outra opção de programa de inicialização que temos é o Systemd. Foi Desenvolvido por Leonard Poettering que é um programador alemão. O systemd é a mãe de todos os processos e é responsável por levar o host Linux a um estado no qual o trabalho produtivo pode ser feito.

O systemd monta os sistemas de arquivos conforme definido pelo /etc/fstab, incluindo quaisquer arquivos de swap ou partições. O processo faz uso de links simbólicos para facilitar ou pelo menos deixar mais direta as manipulações de comandos nesta etapa.

 Adicionando mais uma possibilidade de programa de inicialização ao nosso universo, eis aqui o Upstart. Introduzido no Fedora 9. Em contraste com o conjunto estático de scripts de inicialização usados em sistemas anteriores, o upstart system é acionado por eventos. Eventos podem ser acionados por alterações de hardware, iniciando ou parando ou tarefas, ou por qualquer outro processo no sistema.

Com tudo isso em mente, é bastante comum buscarmos o entendimento de cada passo de inicialização. Seja por curiosidade ou necessidade, podemos obter informações sobre acontecimentos nos logs de processos. Obtemos estas informações com o comando dmsg.

Outro tópico bastante importante quando se trata de sequência de boot são os níveis de execução. Níveis de execução definem quais tarefas podem ser realizadas no estado (ou nível de execução) atual de um sistema Linux. Cada sistema Linux suporta três níveis de execução básicos, mais um ou mais níveis para operação normal. Quando um sistema Linux é iniciado, o nível de execução padrão é determinado a partir da entrada id em /etc/inittab.

 Nível Propósito
0 Encerrar (ou parar) o sistema
1 Modo de usuário único; geralmente com os alias s ou S
6 Reinicializar o sistema

Tabela 1-Runlevels básicos do sistema Linux

 Nível Propósito
2 e 4 Definido pelo usuário
3 Usuários podem logar por múltiplos consoles ou via rede
5 Pode ter o mesmo propósito do nível 3, adicionado de interface gráfica

Tabela 2-Runlevels específicos de exemplos(Caso do Arch Linux)

É possível ainda alterarmos os níveis de execução. Há várias maneiras de alterar níveis de execução.

Para fazer uma alteração permanente, é possível editar /etc/inittab e alterar o nível padrão.

Se é necessário apenas iniciar o sistema em um nível de execução diferente para um único boot, é possível fazer isso também, mas depende da distribuição que se está utilizando, mas é descrito na documentação.

MODO DE USUÁRIO ÚNICO

Ao contrário de sistemas operacionais de computadores pessoais, como DOS ou Windows, o Linux é inerentemente um sistema de multiusuário.

Pode haver momentos nos quais isso é uma boa opção:

  • quando é necessário recuperar um importante sistema de arquivos de banco de dados
  • instalar e testar novo hardware

O nível de execução 1, ou modo de usuário único, é sua resposta para essas situações. A implementação real varia de acordo com a distribuição, mas geralmente se inicia em um shell com apenas um sistema mínimo.

Em alguns sistemas, é preciso autenticar fazendo login, mas em outros se vai direto para a linha de comando do shell como usuário raiz.

E com este tópico, encerro mais um artigo, espero que tenham ficado esclarecidos quanto aos temas abordados aqui e espero ter sido o mais incisivo possível na apresentação dos tópicos. Estarei aguardando vocês no próximo artigo.

Keep on Linux!

REFERÊNCIAS

https://github.com/torvalds/linux/blob/master/Documentation/filesystems/sysfs.txt
https://www.ibm.com/developerworks/linux/library/l-bootload/index.html
https://www.ibm.com/developerworks/library/l-lpic1-101-3/
https://www.ibm.com/developerworks/br/library/l-lpic1-v3-101-3/index.html
https://www.ibm.com/developerworks/library/l-customize-monitor-linux/index.html
http://man7.org/linux/man-pages/man5/sysfs.5.html
https://poweruphosting.com/blog/linux-hardware-info/
https://www.cyberciti.biz/faq/linux-list-hardware-information/
http://docs.ansible.com/ansible/latest/modprobe_module.html
https://www.linux.com/learn/sysadmin/viewing-linux-logs-command-line
https://wiki.archlinux.org/index.php/Systemd
https://github.com/gelec-ufc-sobral
https://www.computerhope.com/unix/modprobe.htm
https://www.freedesktop.org/wiki/Software/dbus/
https://www.computerhope.com/unix/modprobe.htm
http://processors.wiki.ti.com/images/a/a5/Sitara-linux-training-boot-delay.png
https://opensource.com/article/17/2/linux-boot-and-startup
https://opensource.com/article/18/1/analyzing-linux-boot-process

Compartilhe nas suas redes sociais

Carlos Jefferson

Aluno de engenharia de computação que curte uma boa leitura, uma boa série (mesmo sem tempo), uma tonelada de mangás lidos, mais outra de quadrinhos, enfim. Viajo pelo universo de vez em quando, mas muitas vezes Gotham needs me.

Eventos


Oficina .NetCore

26/09/2018 Laboratório de Simulações Numéricas, UFC Sobral, Sobral, CE


Oficina — Montagem de Ambientes de Desenvolvimento no Linux

19/09/2018 Laboratório de Simulações Numéricas, UFC Sobral, Sobral, CE


[Oficina] – Scilab

05/09/2018 Sobral, CE


2 º Encontro Presencial

26/03/2018 Sobral, CE


Outros Projetos