Curso de extensão em Administração de redes com GNU/Linux Eduardo Júnior - ihtraum@dcc.ufba.br Gestores da Rede Acadêmica de Computação Departamento de Ciência da Computação Universidade Federal da Bahia Eduardo Júnior Administração de redes com GNU/Linux
Assuntos abordados Inicialização do Sistema Processo Init Boot Loaders Estrutura de Diretórios e Arquivos
Inicialização do Sistema
Inicialização do Sistema Pré Boot Runlevels Scripts de Inicialização
Pré Boot POST Power On Self Test BIOS passa para a MBR (Setor de Boot) a continuidade do processo de boot primeiros 512 bytes do disco que estamos zbootando Setor de boot sempre se localiza no mesmo local: track 0, cylinder 0 e head 0 No setor de boot temos os carregadores (loaders) de boot: GRUB ou LILO, que carregam o Sistema Operacional
Pré Boot Controle do processo de boot é passado para o Kernel No linux, ele ficam armazenado no /boot e é chamado de vmlinuz; /boot/vmlinuz Kernel inicia tabelas internas, cria estrutura de dados apropriadas para o sistema na memória, termina de diagnosticar o hardware... Kernel cria o init
O Processo Init :: Onde tudo começa!
INIT Após o kernel ter sido carregado Processo pai de todos os outros processos (PID 1) Ler o arquivo /etc/inittab Seta path, inicia swapping, checa file system... Seta runlevel default Inicia processos olhando no rc?.d adequado Getty para cada console virtual
/etc/inittab Sintaxe: id:runlevel:action:process Id identificador único; limitações de tamanho Runlevel indica o runleve para esta linha (uau!); pode ser null ou um valor númerico Action atividade Process o processo específico ou o programa a ser executado
/etc/inittab id:2:initdefault: ~~:S:wait:/sbin/sulogin si::sysinit:/etc/init.d/rcs l0:0:wait:/etc/init.d/rc 0 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now 3:23:respawn:/sbin/getty 38400 tty3
Inicialização do Sistema BSD vs. System V
Inicialização do Sistema BSD Style - Poucos scripts de inicialização - rc.k e rc.m - rc.init e rc.init2 - Apenas 2 modos de inicialização - single user - multi user - Scripts dependentes e executados sequencialmente - Semelhante ao processo de boot do DOS: config.sys e autoexec.bat
Inicialização do Sistema System V Style - Vários scripts de inicialização - 6 modos de inicialização (mais outros não usados, mas disponíveis) - Scripts de inicialização independentes por runlevel e por processo
Runlevels 0 halt 1 single user 2 multi-user 3 multi-user 4 multi-user 5 multi-user 6 restart S Inicialização do sistema
/etc/rc?.d - Diretórios separados por runlevel - Links simbólicos para scripts em /etc/init.d - Ordem de execução (S/KNN) - /etc/rc.local
rc?.d /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcs.d
Mudar de runlevel Nível atual /etc/rc?.d/knn* Exceto os que aparecem tanto no atual quanto no antigo runlvel Nível que se deseja /etc/rc?.d/snn* Perigoso, pois caso não tenha total conhecimento das dependências de processos, pode travar a máquina NUNCA setar os runlevels 0 e 6 para default
Adicionando coisas ao Boot Adicionando links simbólicos update-rc.d rcconf file-rc
Links Simbólicos Processo manual Colocar o script em /etc/init.d ln -s /etc/init.d/script /etc/rc3.d/s22script ln -s /etc/init.d/script /etc/rc3.d/s23script
uptade-rc.d Sintaxe: update-rc.d [-n] [-f] name remove udpate-rc.d [-n] name defaults [NN NN-start NN-stop] updat-rc.d [-n] name start stop NN runlevel runlevel start stop NN runlevel runlevel
rcconf
file-rc Arquivo de configuração centralizado
Boot Loaders
Boot Loaders - Bootstrap, bootstrap loader ou boot loader - Multi boot - diferentes Sistemas Operacionais - diferentes versões de kernel - programas independentes de SO - Carrega o Sistema Operacional (carrega o kernel e passa o controle do boot para o mesmo) - Pode modificar o modo o Sistema Operacional será carregado, através de opções de linha de comando
GRUB /boot/grub/menu.lst Rótulos, delays, default acpi=off Noapic Nolapic Vga=771 init=/bin/bash...
LILO /boot/lilo.conf Linux single Linux <runlevel>...
Boot Loaders Parâmetro de boot de emergência: -b Diz ao init ler o arquivo /etc/inittab, mas não executar os comandos lá listados, pulando para o modo de manutenção
Exercícios 1 1. Inserir o script blah na inicialização do runlevel 4, com número de sequência 44, usando o comando ln 2. Insert links using the defaults 3. Equivalent command using explicit argument sets 4. More typical command using explicit argument sets 5. Desabilitar o apache e festival (se ativos) da inicialização do sistema usando o rcconf 6. Insert links at default runlevels when B requires A 7. Insert a link to a service that (presumably) will not be needed by any other daemon 8. Remover o script blih da iniciazalição de qualquer runlevel do sistema através do comando unlink 9. Insert links for a script that requires services that start/stop at sequence number 20 10. Disabling a service 11. Habilitar a desativação do script dccbar do runlevel 3 usando o comando unlink
Estrutura de Diretórios e Arquivos
Estrutura de Diretórios e Arquivos - Padronização para a estrutura de diretórios e arquivos para Sistemas UNIX-like FHS: Filesystem Hierarchy Standard - Começou a ser escrito em 1994 e atualmente se encontra na versão 2.3 - Mantido pela Free Standards Group
Estrutura de Diretórios e Arquivos Obetivos do FHS: - Softwares possam dizer onde estão instalados os arquivos e diretórios - Usuários saibam a localização de arquivos e diretórios instalados
Estrutura de Diretórios e Arquivos O objetivos do FHS são alcançados: - Com a especificação de princípios para cada área do sistema de arquivos - Com a especificação do mínimo de arquivos e diretórios requeridos - Com a enumeração de exceções para os princípios - Com a enumeração de casos específicos, como por exemplo, por conflitos históricos ou por evoluções dos softwares
Root FileSystem O diretório raíz - / Segundo o FHS, o root filesystem ou diretório raíz contém conteúdo que deve ser adequado para boot, recuperação e reparação do sistema. O objetivo primário é de se manter o root filesystem o menor possível, pelas seguintes razões: - pode estar acessível de uma partição pequena (dispositivo com pouco espaço de armazenado disponível) - por existir muitos arquivos específicos do sistema, evitando-se o uso excessivo para áreas não compartilháveis - menor pré-disposição a falhas, e mais disposta a usabilidade e a operações de manutenção
Root FileSystem Diretórios Requeridos para o / : bin binários essenciais bootarquivos estáticos do gerenciador de boot dev arquivos de dispositivos etc configurações do sistema lib bibliotecas compartilhadas essencias e módulos do kernel media ponto de montagem para dispositivos removíveis media mnt ponto de montagem para sistemas de arquivos temporários opt aplicações extras sbin binários essencias do sistema, utilizados pelo uruário root srv dados para serviços tmp arquivos temporários usr segunda hierarquia var dados variáveis Opcionais: home lib<qual> root diretório pessoal dos usuários bibliotecas compartilhadas para arquiteturas específicas diretório pessoal do usuário root
Hierarquia /usr - Segunda maior hierarquia do filesystem - Diretório compartilhável e somente leitura Diretórios ou links simbólicos requeridos para o /usr: bin include lib local sbin share maioria dos comandos dos usuários arquivos cabeçalhos de programas C bibliotecas hierarquia local binários não vitais ao sistema dados independentes de arquitetura Opcionais: X11R6 hierarquia do Sistema Xwindows, versão 11 release 6 games games e binários educativos) lib<qual> bibliotecas específicos para alguma arquitetura ou de foramato alternativo src códigos fontes
Hierarquia /var - Contém arquivos e dados variáveis, como diretórios e arquivos de spool, informações administrativas e de logs e arquivos temporários. - Algumas partes do /var não são compartilháveis, como /var/log, /var/lock e /var/run. Outras devem ser, como /var/mail, /var/cache/man /var/spool/news. Diretórios ou links simbólicos requeridos no /var: cache lib local lock log opt run spool tmp dados cacheados de aplicações informações de estado variável dados variáveis do /usr/local arquivos de lock arquivos e diretórios de logs dados variáveis do /opt informações relevantes de processos em execuação dados de spool de aplicações arquivos temporários preservados entre reboots do sistema Reservados e não devem ser usados por aplicações por conflitos históricos: /var/backups /var/cron /var/msgs /var/preserve Opcionais: account crash games mail yp logs do processo de contas dumps de crashs do sistema dados variáveis de games arquivos mailbox de usuários Informações do Serviço de Rede e arquivos de base de dados
FHS Mais sobre o FHS... Ver referências.
Partições e Sistemas de Arquivos - Particionar um disco significa dividir o dispositivo em vários, podendo-se alocar mais de um sistema de arquivos em apenas um disco e, consequentemente, mais de um Sistema Operacional - Uma partição possui os seguintes dados: - ponto de início e de término - se a partição está ativa - tipo da partição
Sistemas de Arquivos O sistema de arquivo é criado quando da formatação da partição. Toda a estrutura pra leitura e gravação de arquivos e diretórios é criada. Tipos da partição para Sistemas de arquivos: Linux nativo tipo 83 Linux swap tipo 82 FAT32 tip OB NTFS tipo 7
Partições e Sistemas de Arquivos No GNU/Linux, os dispositivos existentes em seu computador são identificados por um arquivo no diretório /dev A identificação de um disco rígido no GNU/Linux é feita da seguinte forma: /dev/hda1 /dev/sdb2
Partições e Sistemas de Arquivos Tipos de Sistemas de Arquivos: ext2 ext3 reisefs fat32 ntfs iso9660 jfs...
Partições e Sistemas de Arquivos parte prática - Particionamento: - cfdisk - fdisk - Formatação: - mkswap e swapon - mkfs.ext2 - mkfs.ext3 - mkfs.reiserfs - mkfs.vfat
Acesso as partições e discos Processo de montagem de disco/partição
Acesso as partições e discos Comando mount: mount <dispositivo> <ponto de montagem> <tipo> <opções> Montagem dos dispositivos durante a inicialização do sistema: /etc/fstab <dispositivo> <ponto de montagem> <tipo> <opções> <dump> <ordem> proc /proc proc defaults 0 0 /dev/hda1 / reiserfs notail 0 1
Exercício 2 1. Criar uma partição com tamanho 150 mb, sistema de arquivos reiserfs e montagem e disponibilizá-lo momentaneamente 2. Criar uma partição com 30 mb, FAT32, para armazenamento de códigos-fonte da disciplina Teoria dos Grafos, com ponto de montagem /mnt/grafos. Montagem deve ficar disponível após o reinício do sistema 3. Criar uma partição de 40 mb para área de troca com a memória principal. Mantê-la ativa após o reboot do sistema 4. Acesso a partição de 75 mb, somente leitura, tipo de sistema de arquivo ext2 e que fique disponível através do ponto de montagem /mnt/leitura. Deixá-la apenas disponível momentaneamente.
Referências http://tldp.org/howto/lilo.html http://www.gnu.org/software/grub/ Man pages Man init Man update-rc.d Man telinit Man grub Man lilo
Referências Booting man telinit Man telinit http://pt.wikipedia.org/wiki/parti%c3%a7%c3%a3o ttp://web.mit.edu/rhel-doc/4/rh-docs/rhel-ig-ppc-multi-pt_br-4/ap-partitions.html man inittab man update-rc.d man rcconf man file-rc http://www.linuxjournal.com/article/3016 http://www.freeos.com/articles/3243/ http://www.debian-administration.org/articles/28 http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html http://www.debianadmin.com/manpages/runlevelconfmanpage.htm
Referências Man cfdisk Man fdisk Man fsck Man mount Curso Extensão 2007.1 Amadeu Barbosa http://www.pathname.com/fhs/pub/fhs-2.3.html http://www.linux-usb.org