Formação de Administradores de Redes Linux LPI – level 1 Aula 6 SENAC TI Fernando Costa Agenda • Objetivo 101.2 – Início (boot) do sistema (/var/log/messages, dmesg, BIOS, bootloader, kernel, init) • Objetivo 101.3 – Alternar runlevels, desligar e reiniciar o sistema (/etc/inittab, shutdown, init, /etc/init.d, telinit) • Objetivo 102.2 – Instalar o gerenciador de inicialização (/boot/grub/menu.lst, grub-install, MBR, superblock, /etc/lilo.conf, lilo) • Objetivo 108.2 – Configurar e recorrer a arquivos de log (syslog.conf, syslogd, klogd, logger) Agenda • Objetivo 101.2 – Início (boot) do sistema /var/log/messages dmesg, BIOS, bootloader, kernel, init /var/log/messages • Syslogd dmesg Ciclo de vida do sistema: Ligamento & Desligamento Power on Power off Boot Kernel Init OS Init RUN! Shut down Terminologia de boot • Loader: – Programa que move bits do disco (comumente) para memória e transfere o controle da CPU para os bits carregados na memória (executado). • Bootloader / Bootstrap: – Programa que carrega o “primeiro programa” (o kernel). • Boot PROM / PROM Monitor / BIOS: – Código persistente de já está carregado ao ligar o computador. • Boot Manager: – Programa que você escolheu como primeiro programa a ser carregado. LILO: LInux LOader • Um boot manager versátil que suporta: – – – – Seleção do Kernel do Linux. Seleção dos parâmetros do kernel durante o Boot. Bootar kernel não-linux (ex: Windows). Uma variedade de configurações. • Características: – Armazenado na MBR ou na partição marcada para boot. – Tem conhecimento da estrutura do sistema de arquivo… – Criar um setor que “mapeia arquivos” (mapeia blocos) para localizar o kernel. • /sbin/lilo – “map installer”. – /etc/lilo.conf é o arquivo de configuração do lilo. Exemplo do lilo.conf boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux image=/boot/vmlinuz-2.2.12-20 label=linux initrd=/boot/initrd-2.2.12-20.img read-only root=/dev/hda1 LILO x GRUB • LILO – Roda o LILO para modificar o mini-bootloader na MBR – Não pode ler o sistema de arquivo sozinho • GRUB – Loader multi-estágio – Pode ler o sistema de arquivo sozinho Processo Init (1) Questão de prova: Qual é o PID do processo INIT? init Quando o kernel inicia (é carregado na memória, começou a rodar, e está iniciando todos os drivers de dispositivos e estruturas de dados e tal), termina a sua parte do processo de boot ao iniciar um programa em nível de usuário, init. init Assim, o init é sempre o primeiro processo (o seu número do processo é sempre 1). O kernel procura init em alguns locais que têm sido historicamente utilizado por ele, mas o local adequado para ele (em um sistema Linux) é /sbin/init. Se o kernel não consegue encontrar init, ele tenta executar /bin/sh, e se isso também falhar, a inicialização do sistema vai falhar. Quando o init é iniciado, ele termina o processo de boot, fazendo uma série de tarefas administrativas, tais como verificação de disco, limpeza de / tmp, começando diversos serviços, e iniciar um getty para cada terminal e console virtual, onde os usuários devem ser capazes de logar. Hierarquia de processos *nix [0] /etc/inittab init [1] Daemon e.g. httpd Login shell Filho Filho Neto Filho Neto pstree Kernel threads, não são processos reais Fork de processos para conexões de rede Sequencia de inicialização Power-on Power-on Boot Boot loader loader LILO LILO Initialisation Scripts Create Create init init process process Linux hardware rc.sysinit Load Load Kernel Kernel runlevel 0-6 rc.local Ready Arquivos de inicialização • Como são iniciados os serviços? – /etc/rc.local – Inicialização dos runlevels • processo init e o arquivo /etc/inittab – Níveis do init no linux: # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) Scripts de inicialização • /etc/inittab informa ao init onde os scripts estão • /etc/init.d diretórios dos script • /etc/rc*.d link para o diretórios dos scripts Arquivos de inicialização • Endetendendo o /etc/inittab – Nome : runlevel : Ação : Processo id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 Algumas ações do inittab Ação Descrição Boot Executa quando o sistema boota Bootwait Aguarda o Init carregar Ctrlaltdel Initdefault Configura o nível padrão do runlevel Off Desabilita a linha Once Para todos os runlevels especificados Powerfail Quando o init receber o sinal SIGPWR Powerokwait SIGPWR e /etc/powerstatus estão ok Respawn Reinicia o processo quando ele for terminado Sysinit Antes de qualquer boot Wait Esperar todos runlevels carregarem Inicialização do Linux rc.sysinit script • /etc/rc.d/rc.sysinit – uma lista de tarefas básicas incluindo: – Configura a rede – Configura o host name – Verifica o sistema de arquivos / – Verifica a quota do sistema de arquivo / – Monta os outros sistemas de arquivos fazendo a verificação e reparação – Habilita o Swap (Subsistema de memória virtual) – Verifica e carrega os módulos (drivers) • (veja o /var/log/messages) Linux Run Levels – O Linux define 7 run levels – Cada run level define uma lista de programas/comandos que serão iniciados ou parados. – Este comandos estão no diretório /etc/init.d – E os diretórios dos níveis de runlevel (rc0.d, rc2.d…rc6.d) contém links para os diretórios de inicialização – Os comandos possuem o prefíxo S ou K e são numerados de 00 a 99 • S é um prefixo para os processos que serão iniciados (started) S10network • K é um prefixo para os processos que serão parados/mortos (killed) K70syslog • Os número determinam a ordem que os comandos serão executados, do menor para o maior Shutdown • shutdown permite... – Aos usuários o recebimento de um aviso – Que os arquivos sejam sincronizados com o disco evitando quebras – Marcar o sistema de arquivos como finalizado/desmontado ( liberando o disco de um verificação na inicialização) • O acesso ao comando é restrito (está localizado no /sbin) • exemplo shutdown -h now h = halt r = reboot Internet Daemon • O Daemon inetd iniciar no momento do boot • A configuração dele é feita no arquivo /etc/inetd.conf Nome, Tipo, Protocolo, wait-status, uid, Servidor, Argumentos # ftp stream tcp6 nowait root /usr/sbin/tcpd in.ftpd telnet stream tcp6 nowait root /usr/sbin/tcpd in.telnetd # # Mail is a useful thing... pop3 stream tcp nowait root /etc/mail/popper popper -s imap stream tcp nowait root /etc/mail/imapd imapd Internet Daemon • Quando modificamos o inetd.conf – Para disabilitar um serviço • Adicionamos “#” no início da linha • Enviamos um sinal de hang-up para o processo inetd kill –HUP [processid] – Habilitar um serviço – Mudar uma pasta – Mudar os argumentos Extensão do Internet Daemon • Daemon xinetd • Arquivo de configuração /etc/xinetd.conf e o diretório /etc/xinetd.d – Atributo/valor par – Disable = yes/no Agendamento de tarefas - cron – Muitos aspéctos da administração de um sistema necessitam de algumas rotinas básicas • • • • Rotatividade de históricos (log rotate) Criação de arquivos de ajuda Verificação de espaço em disco Verificação de permissão – Lembrar destas tarefas é um ação muito difícil – O Linux provê um mecanismo de agendamento chamado de cron ou anacron. – O cron tem duas partes • Daemon - crond • Tabela de ações /etc/crontab Cron • O agendador crond Daemon é iniciado no momento do boot • O daemon ‘acorda’ a cada minuto para verificar a tabela de ações/atividades – Se tiver alguma atividade -> ele executa – Se não --> ele volta depois de “dormir” por 1 min • A tabela Cron é uma lista de tempos e comandos. O formato dela é: minuto hora dia mês dia_da_semana comando Crontab • Os comandos podem ser agendados por: • • • • • minuto (0 59) hora ( 0 a 23) dia do mês (1 - 31) mês ( 1 a 12) Dia da semana (0=Domingo 6 = Sábado, ou use mon, tues, wed) • Exemplo 01 * * * * * 1 * * * 04 1 * * * * Todos os meses commnd2 commnd2 commands # todas as horas no primeiro minutos # diariamente todaily at 1 am # Roda todo 4º minuto da 1ª hora do dia Cron • Sistemas baseados no Redhat Linux usam a tabela de cron em diretórios especiais: – /etc/cron.hourly – /etc/cron.daily • Contém o logrotate, makewhatis, slocate, tmpwatch – /etc/cron.weekly – /etc/cron.monthly • Você pode adicionar um comando no diretório apropriado mas lembrese que ele tem que ser executável e rodará automaticamente! Comandos da crontab • crontab • crontab • crontab • crontab • crontab Replace ^C exit –l Lista –e Edita –l > cronfile cronfile – cron.allow – cron.deny Usos comuns para o CRON • Limpeza o sistema de arquivos • Rotatividade dos logs • Backups Conceitos avançados de boot • Disco RAM inicial (initrd) – dois estágios para flexibilidade (utilizados nos live-cds): – – – – – Monta primeiro a ram com o / Executa o LinuxRC para fazer uma configuração adicional. Finalmente monta o / real e continua Veja a documentação initrd.txt para mais detalhes. Depois veja o “man initrd”. • Boot de rede (Net booting): – Remote root (Diskless-root-HOWTO). – Diskless boot (Diskless-HOWTO). Inicialização do sistema • Visão geral do processo de boot de um PC – Quando um PC é ligado, a BIOS (Basic InputOutput System) roda primeiro, seguida pelo boot loader e finalmente pelo rotina de inicialização do sistema operacional. Inicialização do sistema • o BIOS – Quando a energia é inicialmente aplicada ao computador este aciona o pino RESET do processador. Isso faz o processador ler endereço de memória 0xFFFFFFF0 e começar a executar do código deste endereço. Este endereço é mapeado para o Read-Only Memory (ROM) que contém a BIOS. O BIOS deve consultar o hardware e criar um ambiente capaz de inicializar o sistema operacional. As funcionalidades de BIOS podem ser dividida em três áreas: • Power On Self Test (POST), • a instalação e • inicialização. – A última ação da BIOS é para executar a 19ª interrupção, que carrega o primeiro setor do primeiro dispositivo de inicialização. Uma vez que esta é a localização do boot loader, a execução do controle de transferências da 19ª interrupção para o boot loader. Inicialização do sistema • O Boot Loader – Uma vez que o BIOS carrega o primeiro setor do dispositivo de boot para a RAM, o Loader inicia a execução. No caso de um disco rígido, este primeiro setor é conhecido como o Master Boot Record (MBR). O MBR contém a tabela de partição descrevendo as partições definidas no disco rígido. Ele também poder conter um programa, o bootloader, que carrega o primeiro setor da partição marcada como ativa para a RAM e executa. – O tamanho da MBR é limitada a um sector em disco ou 512 bytes, uma vez que está localizado no primeiro setor do disco no cilindro 0, cabeça 0, setor 1. – Normalmente, bootloaders são altamente integrados com o sistema operacional que suportam. Essa integração reduz as operações que um gerenciador de boot deve executar, tornando possível possuir só 512 bytes. Quando mais funcionalidade é necessária, um loader multi-estágio pode ser utilizado. – Um loader multi-estágio oferece mais funções e flexibilidade de trabalho em torno da limitação do tamanho de 512 bytes. Não se tratava de um único programa que carrega o sistema operacional diretamente, gestores de boot multi-estágio dividem sua funcionalidade em uma série de pequenos programas que cada cargam sucessivamente uns aos outros. Inicialização do Sistema • Inicialização do Sistema Operacional – Quando o bootloader é carregado, uma imagem do S.O. é carregada na memória e o controle da CPU é transferido para o S.O. – Um grande aspécto da inicialização é o estabelecimento do gerenciamento da memória virtual. – Tarefas adicionais incluem a inicialização de drivers de dispositivos e a criação da tabela de interrupções Interrupt Descriptor Table (IDT). – Outra tarefa da inicialização é estabelecer suporte a outros tipos de sistema e montar o sistema de arquivos / Inicialização do Sistema • Inicialização do Sistema Operacional – O processo de inicialização deve, explicitamente, trazer para si todas as tarefas realizadas por uma chamada de fork(). – 0 processo deve ser capaz de se auto-gerir o seu contexto próprio processo. Uma vez que este contexto foi criado, o sistema tem a capacidade de suspender e retomar a execução do Processo e subprocesso(fork). – Processo 1, comumente referido como o processo de inicialização, é o primeiro processo, é um fork do processo 0. Inicialização do Sistema Inicialização do Sistema Inicialização do Sistema Inicialização do Sistema Inicialização do Sistema • O Kernel inicia o / em modo somente leitura(read only – ro) e roda o processo init • E o resultado disso é: – Um sistema em R.O. – Processo init • O próximo passo da inicialização é carregar o ambiente do usuário baseado na configuração do arquivo /etc/inittab Agenda • Objetivo 101.2 – Início (boot) do sistema (/var/log/messages, dmesg, BIOS, bootloader, kernel, init) • Objetivo 101.3 – Alternar runlevels, desligar e reiniciar o sistema (/etc/inittab, shutdown, init, /etc/init.d, telinit) • Objetivo 102.2 – Instalar o gerenciador de inicialização (/boot/grub/menu.lst, grub-install, MBR, superblock, /etc/lilo.conf, lilo) • Objetivo 108.2 – Configurar e recorrer a arquivos de log (syslog.conf, syslogd, klogd, logger) Fernando Costa www.fernandocosta.com.br [email protected]