Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
MÓDULO 02
1 Gerência de boot
O processo de inicialização (boot) do Linux é o procedimento para inici-
alizar o sistema (descrito na figura 1). Consiste em tudo o que acontece
desde quando o computador é ligado até que a interface do usuário esteja
operacional.
1.1 BIOS
A inicialização de um sistema Linux baseado em x86 envolve várias eta-
pas. Assim que o computador é ligado, oBasic Input/Output System (BIOS)
inicializa o hardware, incluindo a tela e o teclado, e testa a memória prin-
cipal. Esse processo também é chamado POST (Power On Self Test).
O software do BIOS é armazenado em um chip ROM na placa-mãe.
Depois disso, o restante do processo de inicialização é controlado pelo
sistema operacional (SO).
1.2 Registro Mestre de incialização
Depois que o POST é concluído, o controle do sistema passa do BIOS para
o carregador de inicialização. O carregador de inicialização (boot loader)
é normalmente armazenado em um dos discos rígidos do sistema. Seja
no setor de inicialização (BIOS/MBR) ou na partição EFI em sistemas mais
recentes (Extensible Firmware Interface ou EFI/UEFI).
Posteriormente, informações importantes são carregados dos valores
CMOS. Uma memória movida a bateria, que permite que o sistema man-
tenha a data e hora, mesmo quando está desligado.
Após esta etapa, o boot loader é carregado. Existem vários carre-
gadores de inicialização para o Linux: O mais comum é o GRUB (GRe
Unified Boot loader). Existindo também o ISOLINUX (inicializar a partir de
Ciência da Computação/Sistemas da Informação Página 1 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Figura 1: Processo de inicialização Linux.
mídia removível) e o DAS U-Boot (para inicializar em dispositivos embar-
cados/aparelhos).
A maioria dos carregadores de boot pode apresentar uma interface de
usuário para escolher opções alternativas para inicializar o Linux. E até
mesmo outros sistemas operacionais que possam estar instalados.
1.3 Carregador de boot
Ao inicializar o Linux, o gerenciador de inicialização é responsável por
carregar a imagem do kernel e o sistema de arquivos (que contém alguns
arquivos críticos e drivers de dispositivo necessários para iniciar o sistema)
na memória. O carregador de boot (do inglês: Boot Loader) tem dois
Ciência da Computação/Sistemas da Informação Página 2 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Figura 2: Processo de inicialização de hardware pela BIOS.
Figura 3: Registro mestre de incialização (do inglês: Master Boot Record–
MBR).
Ciência da Computação/Sistemas da Informação Página 3 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
estágios distintos:
1.3.1 Primeiro estágio
Em sistemas usando o método BIOS/MBR, o carregador de boot reside
no primeiro setor do disco rígido, também conhecido como o Master Boot
Record (MBR). Nesse estágio, o carregador de boot examina a tabela
de partições e encontra uma partição inicializável. Após encontrar uma
partição inicializável, ele procura o carregador de inicialização do segundo
estágio, por exemplo, GRUB, e o carrega na memória RAM.
Para sistemas que usam o método EFI/UEFI, o firmware UEFI lê seus
dados do gerenciador de boot para determinar qual aplicativo UEFI deve
ser lançado e de onde (ou seja, de qual disco e partição a partição EFI
pode ser localizada).
O firmware então inicia o aplicativo UEFI, por exemplo, GRUB, con-
forme definido na entrada de inicialização no gerenciador de inicialização
do firmware. Este procedimento é mais complicado, mas mais versátil que
os métodos MBR que são mais antigos.
1.3.2 Segundo estágio
O carregador de inicialização do segundo estágio, no caso o GRUB reside
em /boot. Uma tela inicial é exibida, o que nos permite escolher qual SO
será inicializado. Após escolher o sistema operacional, o carregador de
boot carrega o kernel do sistema operacional selecionado na RAM e passa
o controle para ele.
Os kernels são quase sempre compactados, então seu primeiro traba-
lho é descomprimir-se. Depois disso, ele verificará e analisará o hardware
do sistema e inicializa-rá todos os drivers de dispositivo de hardware em-
butidos no kernel.
1.4 Disco inicial
A imagem do sistema de arquivos initramfs contém programas e arquivos
binários que realizam todas as ações necessárias para montar o sistema
de arquivos raiz adequado, fornecer a funcionalidade de kernel para os dri-
Ciência da Computação/Sistemas da Informação Página 4 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
vers do sistema de arquivos e dispositivos necessários para controladores
de armazenamento em massa.
Assim sendo, esta etapa utiliza um mecanismo chamado udev (User
Device), responsável por descobrir quais dispositivos estão presentes, lo-
calizar os drivers (módulos) de que precisam para funcionar corretamente
e carregá-los. Depois que o sistema de arquivos raiz foi encontrado, ele é
verificado quanto a erros e montado.
O programa de montagem instrui o sistema operacional de que um sis-
tema de arquivos está pronto para uso e o associa a um ponto específico
na hierarquia geral do sistema de arquivos (o ponto de montagem). Se
isso for bem-sucedido, o initramfs será limpo da RAM e o programa init,
no sistema de arquivos raiz (/sbin/init) será executado.
O init manipula a montagem e faz o manejo para o sistema de arquivos
raiz final. Se drivers de hardware especiais forem necessários antes que
o armazenamento em massa possa ser acessado, eles devem estar na
imagem initramfs.
2 Níveis de operação
Níveis de operação (do inglês: Runlevels) servem basicamente para es-
pecificar como o sistema deve se comportar durante o boot, execução e
desligamento. Existem 7 níveis de operação (runlevels) que podem ser
utilizadas no Linux, descritos na tabela 1.
Runlevel Descrição
0 Desligamento do sistema.
1 Modo monousuário.
2-5 Modo multiusuário (tem diferentes utilizações variando de
acordo com a distribuição utilizada).
6 Reinicialização do sistema.
Tabela 1: Detalhamento dos níveis de operação.
Como exemplo: para que a máquina seja desligada com segurança,
todos os dados pendentes devem ser escritos em disco, todos os servi-
ços devem ser parados, o kernel deve instruir o hardware a interromper
quaisquer envios de instruções à CPU de forma ordenada e tudo deve
Ciência da Computação/Sistemas da Informação Página 5 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
ser escrito em log para que o administrador tenha rastreabilidade do que
está acontecendo durante estas etapas. Estas tarefas são executadas no
runlevel 0, que significa “Desligamento do Sistema Operacional.”
O processo init (primeiro processo invocado pelo kernel após o boot e
processo pai de todos os processos ativos no sistema) é quem invoca e
aplica esse runlevel, executando todos os scripts necessários para que o
sistema entre nesse nível de execução.
Podemos encontrar os scripts de inicialização em /etc/rc*.d, onde ”*”re-
presenta o número de identificação do runlevel.
Figura 4: Diretórios com os scripts de cada runlevel.
Dentro de cada diretório, estão alocados os scripts que serão execu-
tados naquele runlevel, como ilustrado na figura 5.
Figura 5: Lista de scripts de runlevel0.
Nos arquivos demonstrados na figura 5, existe um prefixo comum en-
volvendo a letra ”k”. Esse prefixo, indica que estes scripts realizam uma
operação com o Kill, enviando o sinal 15 (SIGTERM) para o processo, in-
dicando que ele deve encerrar por si só as suas atividades, mas enviando
o sinal 9 (SIGKILL) novamente, caso este não responda.
Esse prefixoainda pode variar para S, caso o runlevel seja 2 (ilustrado
na figura 6). Neste caso, o prefixo ”S”é de Start, para iniciar o processo.
Figura 6: Lista de scripts de runlevel 2.
O número seguido da letra indica a ordem de execução de cada script.
Caso existam dois com a mesma numeração, eles serão executados si-
Ciência da Computação/Sistemas da Informação Página 6 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
multaneamente, uma vez que não exista dependência entre eles. Seguida
do número, vem o nome do processo a ser executado pelo script.
Todos os scripts nestes diretórios são apenas links simbólicos para os
arquivos em /etc/init.d/. Estes não devem ser alterados, exceto se o usuá-
rio saiba muito bem o que está fazendo.
Figura 7: Conteúdo do diretório /etc/init.d/.
Para alternar entre runlevels, basta executar init .
A figura 8 exibe a entrada no runlevel 1, utilizado para manutenção do
sistema, desconectando todos os usuários (menos o root).
Figura 8: Ubuntu Server 22.04 entrando em runlevel 1.
Outros comandos podem forçar o sistema a entrar em runlevels especí-
ficos, como o halt, que desliga o sistema. O que o halt faz é simplesmente,
invocar o init 0. O comando shutdown, que desliga/reinicia o sistema, pode
receber parâmetros que invocam tanto o init 0 quanto o init 6. A figura 9
exibe o sistema entrando no runlevel 6, ou seja, sendo reiniciado.
Para verificar em qual runlevel o sistema se encontra, podemos utilizar
o comando runlevel (veja figura 10).
Neste exemplo, o primeiro caractere (N) exibirá o penúltimo runlevel
ao qual o sistema se encontrava. Neste caso, N representa que o sistema
não mudou de runlevel desde o boot. O n uemro 5 representa o runlevel
atual do sistema.
Ciência da Computação/Sistemas da Informação Página 7 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Figura 9: Ubuntu Server 22.04 entrando em runlevel 6.
Figura 10: Runlevel atual do sistema.
3 Agendamento de tarefas
OCrontab nos permite agendar as tarefas para que elas sejam executadas
automaticamente. O usuário pode, por exemplo, configurar o sistema para
que um lembrete seja impresso na tela com a frequência de dias e horários
que ele quiser. O mesmo pode ser feito para agendar scripts e comandos
do Linux.
O crontab trata-se de um programa do Linux executável em segundo
plano (ou seja, um daemon), capaz de executar tarefas automaticamente.
Ciência da Computação/Sistemas da Informação Página 8 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Quando iniciado, o Cron faz uma varredura (a cada minuto) pelos dire-
tórios que possam conter arquivos nos quais estão guardados os scripts
agendados pelo usuário.
O propósito da examinação não é somente o de encontrar tarefas no-
vas, mas, principalmente, de saber se há alguma atividade programada
para o momento.
Vale destacar, também, que o Cron é um programa de nível multiusuá-
rio. Isso significa que cada usuário pode agendar suas tarefas individu-
almente, graças ao próprio arquivo onde são armazenados os scripts: o
Crontab.
Portanto, o Crontab é uma ferramenta para gerar arquivos a serem
lidos pelo Cron. Como o próprio nome diz, a estrutura do Crontab con-
siste em tabelas. Nessas tabelas são preenchidas todas as informações
referentes à tarefa:
• minutos;
• horas;
• dias do mês;
• mês;
• dias da semana;
• usuário;
• comando.
Logo, quando o arquivo Crontab é gerado, o Cron faz a identificação
dele e, em seguida, interpreta os dados e parâmetros registrados na ta-
bela. Nitidamente, o Cron e o Crontab se baseiam na ideia de operador e
cronograma de trabalho.
A configuração padrão para arquivos do Cron está localizada no ar-
quivo /etc/crontab, a qual apresenta as informações mostradas na figura
11.
A primeira linha (SHELL) determina o sistema em que o ambiente Shell
será usado. A variável PATH é onde está definido o caminho usado para
executar comandos.
Ciência da Computação/Sistemas da Informação Página 9 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Figura 11: Arquivo de configuração do cron.
Cada uma das demais linhas representa uma tarefa. Para interpretá-la,
é necessário entender a sintaxe do Crontab, conforme veremos a seguir.
Primeiramente, dividimos as informações em seis partes (da esquerda
para a direita):
Minuto (0 a 59) | Hora (0 a 23) | Dia (1 a 31) | Mês (1 a 12)| Dia da
semana (0 a 7) | Comando (comando a ser executado).
Ou seja, para cada campo será digitado um valor correspondente às
regras acima. Detalhe: o dia da semana oferece oito possibilidades, sendo
que os valores 0 e 7 significam domingo.
Observação: na configuração mostrada no início do tópico, nas linhas
que representam as tarefas há um elemento chamado “run-parts”. Ele
serve para executar scripts naqueles diretórios.
1. Exibição das tabelas do cron: Usando a opção -l, o arquivo crontab
do usuário será listado no terminal:
2. Deletar todas as tarefas: Para remover todas as tarefas agendadas
no arquivo crontab do usuário, liste-as usando a opção -l e, depois,
use a -r.
Ciência da Computação/Sistemas da Informação Página 10 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
3. Editar o arquivo crontab: Utilize a opção -e. Automaticamente um
editor de texto será aberto com o arquivo crontab.
3.1 Exemplo crontab
1. Crie um script bash chamado example.sh para escrever a data se-
guido da mensagem ”Hello world” conforme ilustrado na figura 12:
Figura 12: Conteúdo do arquivo example.sh
2. Mude a permissão do arquivo para que ele se torne um arquivo exe-
cutável utilizando o comando: sudo chmod 764 example.sh.
3. Adicione a execução desse arquivo como uma tarefa agendada no
crontab utilizando o comando: crontab -e.
4. Adicione a linha: */2 * * * * /home/aluno/example.sh » /home/aluno/output.log
2>1. Desta forma o script example.sh será executado a cada 2 minu-
tos e sua saída será escrita em um arquivo de log, conforme ilustrado
na figura 13.
5. Após algum tempo de execução, pode-se conferir a escrita no ar-
quivo de log a cada dois minutos, conforme ilustrado na figura 14.
Ciência da Computação/Sistemas da Informação Página 11 de 12
ICET – Instituto de Ciência e Tecnologia
Laboratório Sistemas Operacionais Abertos e Mobile
Carlos Baltazar/Ricardo Piantola
Figura 13: Edição do arquivo crontab.
Figura 14: Saída do script example.sh executado no cron.
Ciência da Computação/Sistemas da Informação Página 12 de 12
	Gerência de boot
	BIOS
	Registro Mestre de incialização
	Carregador de boot
	Primeiro estágio
	Segundo estágio
	Disco inicial
	Níveis de operação
	Agendamento de tarefas
	Exemplo crontab

Mais conteúdos dessa disciplina