Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade do Grande Rio “ Professor José de Souza Herdy” Sistemas Operacionais Abertos Inicialização de um Sistema LINUX Quando um computador inicializa, a BIOS procura no hardware existente, dispositivos de onde pode carregar o sistema operacional. Após identificar o dispositivo de boot, carrega o loader, que é o programa encarregado de carregar o sistema operacional própriamente dito. Os loaders (ou bootstrap programs) mais comuns no LINUX são o LILO (/etc/lilo.conf) e o GRUB (/boot/grub/menu.lst ou grub.conf). Após a inicialização do kernel, este inicia os dispositivos de hardware, e seguidamente inicia o processo swapper (0) e o init (1). O swapper é, na verdade, uma parte do kernel e não um processo "normal". O init é o pai de todos os processos que vão executar numa máquina LINUX. Fonte:http://www.ibm.com/developerworks/br/library/l-linuxboot/ A partir de então, o init é o responsável pela inicialização, lendo o arquivo /etc/inittab (sistemas SysVinit) ou o diretório /etc/init (sistemas com Upstart). É também o responsável em colocar o sistema num dos vários níveis de execução, inclusive o nível de encerramento (shutdown). A tabela que se segue apresenta os vários níveis, estando uma máquina LINUX num determinado momento, num destes níveis: Nível (Run Level) Significado 0 Parar a máquina 1 Modo de "single user". Todos os filesystems são montados, e só um pequeno número de processos do kernel estão em execução. Só o root pode faser login 2 Modo de "multi-user" sem utilização arquivos remotos 3 Modo de "multi-user" com utilização de arquivos remotos, processos e deamons 4 Estado nào utilizado 5 Estado usado para iniciar o X11 ( Interface Gráfica) 6 Encerramento, e Reinicialização (Shutdown e reboot) a b c Níveis (on-demand) S ou S O mesmo que o modo de "single user" mas somente é utilizado pelos scripts Visão Geral do Linux O Kernel É o núcleo do sistema operacional, a parte mais próxima do hardware. É composta de chamadas ao sistema, de acessos aos dispositivos de I/O e de gerência dos recursos da máquina. Programas Shell São programas interpretadores de comandos, atuam como linguagem de programação (os shell scripts) no Unix e Linux, são uma interface entre o usuário e o kernel, porém não faz parte do Sistema Operacional. Os mais populares são bash, csh, ksh, sh, e tsh. O usuário pode escolher qual shell vai utilizar e o shell-padrão do Linux é o bash. Figura SHELL: Copyleft Julio Cesar Neves O que é um Shell Script É um arquivo que contém comandos de shell, mas que em uma situação normal poderiam ser executados a partir do prompt de comandos. linux-rrv:/ # for i in a b c d e f > do > echo "Criando o arquivo $i." > sleep 2 > touch $i > echo "Arquivo $i criado com codigo $?." > done Criando o arquivo a. Arquivo a criado com codigo 0. Criando o arquivo b. Arquivo b criado com codigo 0. Criando o arquivo c. Arquivo c criado com codigo 0. Criando o arquivo d. Arquivo d criado com codigo 0. Criando o arquivo e. Arquivo e criado com codigo 0. Criando o arquivo f. Arquivo f criado com codigo 0. linux-rrv:/ # O Linux como sistema operacional multitarefa e multiusuário. Em um ambiente multitarefa os processos (programas em execução) são escalonados pelo kernel e a estes são reservados recursos do sistema. O Linux é um sistema operacional de multitarefa preemptiva, onde o kernel reserva um intervalo de tempo para cada processo ser executado (time slice). Quando este intervalo termina, o kernel suspende a execução do processo, salva o seu contexto para que este possa ser executado posteriormente. Este também determina quando cada processo será executado, a duração de sua execução e a sua prioridade sobre os outros. Como ambiente multiusuário, este permite que mais de um usuário acesse o computador simultaneamente. Que pode ser por meio de terminais virtuais ou remotamente. Os tipos de usuários no Linux/Unix são: o usuário “root” (ou superusuário/administrador), que pode manipular todos os recursos do sistema operacional, os usuários “comuns”, que possuem restrições se comparados com o root e os usuários do sistema, que diferente dos usuários comuns e root, não se conectam e são utilizadas para uso específico de serviços no sistema (Ex. oracle, lp, nobody, mysql, postfix, etc). linux-rrv: # prompt do usuário root robson@linux-rrv:$ prompt do usuário comum Sistema de Arquivos Sistema de arquivos é a forma que o sistema operacional usa para organizar os dados em um espaço de armazenamento que pode ser mídia: disquetes, discos rígidos, drives em memória, cd´s, etc. Desta forma o sistema operacional pode ler e gravar os dados no dispositivo de armazenamento de massa. Quando se prepara um disco para o trabalho através do processo de formatação física, criam-se os meios magnéticos necessários para armazenar os dados. Este processo faz uma preparação do dispositivo de armazenamento para que ele possa receber um sistema de arquivos e futuramente os dados do usuário. Um sistema de arquivos, portanto, é necessário para manter padrões, para controlar o tamanho das partições, permissões de arquivos, tamanho dos arquivos e sua organização, entre muitas outras funções. A estrutura do sistema de arquivos é semelhante à descrita abaixo. boot block super block i-nodes bloco de dados Estrutura Descrição boot block se utilizado serve para carga do sistema (boot) super block possui informações sobre a estrutura do sistema de arquivos. Contém informações como seu tamanho em blocos, o nome do sistema de arquivos, número de blocos reservados para i-nodes, a lista de i-nodes livres e o começo da cadeia de blocos livres. Sempre reside em um bloco de 512 bytes. i-node descreve um único arquivo, como seus atributos (dono, grupo, proteção, permissão de acesso, tipo e localização dos blocos de dados no disco). bloco de dados dados propriamente ditos de arquivos e diretórios. Os conceitos de partição e sistema de arquivos são normalmente confundidos, quando na verdade são conceitos totalmente diferentes. As partições são áreas de armazenamento criadas durante o processo de particionamento, sendo que cada partição funciona como se fosse um disco rígido (ou dispositivo avulso). O utilitário que cria as partições é chamado particionador e, os mais comuns são o cfdisk e o fdisk. Abaixo temos a exibição do comando fdisk. # fdisk –l Disk /dev/sda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x2e222e21 Device Boot Start End Blocks Id System /dev/sda1 1 1275 10241406 7 HPFS/NTFS /dev/sda2 * 1276 6658 43238947+ f W95 Ext'd (LBA) /dev/sda3 6659 9728 24659775 7 HPFS/NTFS /dev/sda5 1276 2550 10241406 7 HPFS/NTFS /dev/sda6 2551 3825 10241406 83 Linux /dev/sda7 3826 3960 1084356 82 Linux swap / Solaris /dev/sda8 3961 6658 21671653+ 7 HPFS/NTFS Disk /dev/sdb: 80.0 GB, 80060424192 bytes 255 heads, 63 sectors/track, 9733 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x8042a603 Device Boot Start End Blocks Id System /dev/sdb1 1 974 7823654+ 83 Linux Para se utilizar uma partição, entretanto, deve-se criar um sistema de arquivos, ou seja, um sistema que organize e controle os arquivos e diretórios desta partição. Observações: Uma partição só pode ter apenas um único sistema de arquivo. Podemos teraté 4 partições primárias. Apenas uma partição estendida pode existir em um mesmo disco físico. As partições lógicas existem dentro da partição estendida e são numeradas a partir de 5. O Linux possui um sistema de arquivos hierárquico. Os arquivos não estão armazenados em um nível, mas em níveis múltiplos e o sistema de arquivos apoia a ilusão de "lugares" dentro do sistema, considera todos os dispositivos, discos, arquivos e diretórios como um todo, alocando-os na mesma árvore do sistema de arquivos. Assim, o usuário não precisa especificar o disco ou dispositivo onde está um arquivo, somente o diretório onde ele está armazenado. O próprio sistema operacional se encarrega de mapear o acesso ao disco ou dispositivo correspondente. O sistema de arquivo do Linux, igualmente ao do UNIX, é baseado em uma estrutura de diretórios em árvore, sendo o diretório raiz (root) representado pela “/”. Entretanto, os diretórios são apenas arquivos que podem ser lidos por qualquer programa, e embora o diretório seja a estrutura visível do sistema de arquivos, eles não são o depósito de todas as informações sobre os arquivos. Os diretórios contêm apenas duas partes de informações para cada arquivo: o nome do arquivo e um número (inode=index-node) usado pelo kernel para acessar as estruturas ocultas do sistema de arquivos. O inode é uma estrutura de dados em disco que descreve e armazena os atributos do arquivo, que são informações sobre: a localização no disco, o tamanho, o modo de acesso, as datas relevantes (criação, último acesso, etc.), tipo do arquivo (ou 0 se inode não usado), número de links, o proprietário e similares. Existe um inode para cada arquivo. Quando uma partição de disco é inicializada, ou seja, formatada e nela definida um sistema de arquivos, um número específico de inodes é criado. Este número de inodes se torna o número máximo de arquivos de todos os tipos, incluindo diretórios, arquivos especiais e links que podem existir na partição que foi inicializada. Entendendo a estrutura de diretórios do Linux Fonte: http://www.thegeekstuff.com/2010/09/linux-file-system-structure/ Descrição da Estrutura de Diretórios 1. / – Root Todos os arquivos e diretórios começam a partir da raiz. Somente o usuário root tem permissão de gravar neste diretório. O diretório /root é o diretório de trabalho do usuário root e não é o mesmo que /. 2. /bin – User Binaries Contém arquivos executáveis (programas). Comandos utilizados no modo monousuário estão nesse diretório. Comandos usados por todos os usuários estão nesse diretório. Exemplos: ps, ls, ping, grep, cp. 3. /sbin – System Binaries Assim como o /bin, /sbin também contém binários executáveis. Os comandos localizados aqui geralmente são utilizados pelo Administrador para manutenção do sistema. Exemplos: iptables, reboot, fdisk, ifconfig, swapon 4. /etc – Configuration Files Contem arquivos de configuração exigidos por todos os programas. Isso também inclui os scripts de inicialização e término para programas (serviços) individuais. Exemplo: /etc/resolv.conf, /etc/logrotate.conf 5. /dev – Device Files Contém arquivos para dispositivos. Que inclui: dispositivos de terminal, usb, ou qualquer dispositivo conectado ao sistema. Exemplo: /dev/tty1, /dev/usbmon0 6. /proc – Process Information Contém informações sobre processo do sistema.. É um pseudo sistema de arquivos e contém informações sobre processos executando. Exemplo: /proc/{pid}, esse diretório contém informações sobre o processo com o PID em referência. 7. /var – Variable Files Padrão para arquivos/diretórios variáveis. Isso inclui: arquivos de log do sistema (/var/log); arquivos de pacotes e base de dados (/var/lib); correio (/var/mail); filas de impressão (/var/spool); 8. /tmp – Temporary Files Esse diretórios contém arquivos temporário criados por usuários e pelo sistema. Em alguns sistemas esses arquivos são removidos durante o boot do sistema. 9. /usr – User Programs Contém binários, bibliotecas, documentação e etc. /usr/bin contém arquivos binários para usuários. Se você não encontra o binário em /bin, verifique se está em /usr/bin. Exemplo: at, awk, cc, less, scp /usr/sbin contém arquivos binários para o adminsitrador. Se não encontrar em /sbin, olhe para /usr/sbin. Exemplo: atd, cron, sshd, useradd, userdel /usr/lib contém as bibliotecas para os comandos em /usr/bin e /usr/sbin /usr/local contém programas instalados do fontes. Por exemplo, quando você instala o apache do fonte, os arquivos dele irão para /usr/local/apache2 10. /home – Home Directories Local para armazenamento de arquivos de todos os usuários. Possui um sub-diretório para cada usuário (não para usuário de serviço) criado no sistema. Exemplo: /home/robson, /home/suporte 11. /boot – Boot Loader Files Contém arquivos relacionados ao carregador de boot do sistema. Kernel initrd, vmlinux, arquivos do grub estão localizados em /boot. Por exemplo: initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic 12. /lib – System Libraries Contém as bibliotecas para os executáveis em /bin e /sbin. Nomes de bibliotecas são ld* ou lib*.so.* Por exemplo: ld-2.11.1.so, libncurses.so.5.7 13. /opt – Optional add-on Applications opt significa opcional. Contém aplicações de fornecedores. 14. /mnt – Mount Directory Diretório utilizado para montagem temporária de sistemas de arquivos. 15. /media – Removable Media Devices Diretório para montagem temporária de dispositivos removíveis. Exemplos: /media/cdrom para CD-ROM; /media/floppy para disquetes. 16. /srv – Service Data srv significa serviço. Diretório para dados de serviços fornecidos pelo sistema e, cuja aplicação é de alcance geral, ou seja, os dados não são específicos de um usuário. For example, /srv/www (servidor web), srv/ftp (servidor ftp) Fonte: http://www.thegeekstuff.com/2010/09/linux-file-system-structure/ Principais tipos de sistemas de arquivos que existem e que são criados em um processo de formatação: Ext: sistema de arquivos estendido (extended filesystem). Era o sistema de arquivos mais utilizado no Linux. Existem ramificações (ext2, ext3 e ext4). VFAt/NTFS: Virtual File Allocation Table, este é o sistema de arquivos FAT16/32, incluída a partir do Win95 e suportado pelo Linux. O NTFS, New Technology File System, foi desenvolvido pela Microsoft a partir da criação do Windows NT e atende às diversas plataformas MS Windows (2000, XP, 2003, Vista, Windows 7 e Windows 2008, etc), superando as limitações do FAT. NFS: sistema de arquivos de rede, utilizado para acessar diretórios de máquinas remotas, que permite o compartilhamento de dados na rede. Reiserfs: sistema de arquivos com suporte a características mais avançadas, como por exemplo melhor performance para diretórios muito grandes e suporte a transações (journalling). iso9660: sistema de arquivos do CD-ROM. HPFS: sistema de arquivos do OS/2 da IBM. Tabela de identificação de discos rígidos feita pelo Linux: /dev/sda1 | | | | | |_Número que identifica o número da partição no disco rígido. | | | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc). | | | |_Diretório onde são armazenados os dispositivos existentes no sistema. Abaixo algumas identificações de discos e partições em sistemas Linux: /dev/fd0 - Primeira unidade de disquetes. /dev/fd1 - Segunda unidade de disquetes. /dev/sda - Primeiro disco rígido na primeira controladora IDE do micro (primary master) ou primeiro disco na primeira controladora SCSI, SATA. /dev/sr0 – Primeira unidadede CD-ROM. /dev/sr1 – Segunda unidade de CD-ROM. Obs.: Este novo padrão de identificação de disco se deu a partir da versão 2.6.19 do kernel linux. Formatando disquetes no LINUX. Para formatar disquetes para serem usados no LINUX utilize o comando abaixo. # mkfs.ext2 -c /dev/fd0 Em alguns sistemas deverá ser usado mke2fs ao invés de mkfs.ext2 e, a opção –c faz com que o mkfs.ext2 procure por blocos danificados no disquete. Apenas como lembrete, /dev/fd0, faz referência à primeira unidade de disquete a ser formatada, ou seja, equivale a “A: no MS Windows”. Obs.: O disquete NÃO pode ser lido pelo DOS/Windows Formatando disquetes compatíveis com o MS Windows. Você pode usar os comandos do pacote mtools para simular os comandos usados pelo DOS no GNU/Linux, a diferença básica é que eles terão a letra “m” no inicio do nome. O comando mformat formata um disquete em formato MS-DOS, apagando qualquer informação que lá estiver. Ex.: mformat a: Montagem de Partições O GNU/Linux acessa as partições existentes em seus discos rígidos e disquetes através de diretórios. Os diretórios que são usados para acessar (montar) partições são chamados de Pontos de Montagem. Para acessar uma partição de disco use o comando mount. mount [dispositivo] [ponto de montagem] [opções] Onde: dispositivo Identificação da unidade de disco/partição que deseja acessar (como /dev/hda1 (disco rígido) ou /dev/fd0 (primeira unidade de disquetes). ponto de montagem (caminho) Diretório de onde a unidade de disco/partição será acessado. O diretório deve estar vazio para montagem de um sistema de arquivo. Normalmente é usado o diretório /mnt para armazenamento de pontos de montagem temporários. -t [tipo] Tipo do sistema de arquivos usado pelo dispositivo. São aceitos os sistemas de arquivos: ext2, ext3, reiserfs, vfat, msdos, iso9660, ntfs. Veja mais detalhes de utilização sobre cada opção do mount, utilizando as páginas de “manual mount”. -r Caso seja especificada, monta a partição somente para leitura. -w Caso seja especificada, monta a partição como leitura/gravação. É o padrão. Obs.: É necessário ter permissões de usuário root para montar partições, a não ser que se tenha especificado a opção “user” na tabela /etc/fstab. Exemplo de Montagem: Montar uma partição Windows (vfat) definida em /dev/sda1 no caminho /mnt somente para leitura: # mount /dev/sda1 /mnt -r -t vfat Montar a primeira unidade de disquetes /dev/fd0 em /floppy: # mount /dev/fd0 /floppy -t vfat Montar uma partição DOS localizada em um segundo disco rígido /dev/sdb1 em /mnt: # mount /dev/sdb1 /mnt -t msdos. O arquivo /etc/fstab O arquivo /etc/fstab permite que as partições do sistema sejam montadas facilmente especificando somente o dispositivo ou o ponto de montagem. Este arquivo contém parâmetros sobre as partições que são lidas pelo comando mount. Cada linha deste arquivo contém a partição que desejamos montar, o ponto de montagem, o sistema de arquivos usado pela partição e outras opções. O arquivo /etc/fstab tem uma visão parecida com a imagem abaixo: Arquivo Especial (bloco) Ponto_de_Montagem Tipo Opções dump ordem /dev/sda1 / ext2 defaults 0 1 /dev/sda2 /boot ext2 defaults 0 2 /dev/sda3 /dos msdos defaults,noauto,rw 0 0 /dev/cd0 /cdrom iso9660 defaults,noauto 0 0 Onde: Arquivo Especial: partição que deseja montar. Ponto de montagem: diretório (vazio) do GNU/Linux onde a partição montada será acessada. Tipo: Tipo de sistema de arquivos usado na partição que será montada. Para partições GNU/Linux use ext2/ext3, para partições DOS (sem nomes extensos de arquivos) use msdos, para partições Win 95 (com suporte a nomes extensos de arquivos) use vfat, para unidades de CD-ROM use iso9660. Opções: Especifica as opções usadas com o sistema de arquivos: defaults - utiliza valores padrões de montagem (rw, suid, dev, exec, auto, nouser e async). noauto - não monta os sistemas de arquivos durante a inicialização (útil para CD-ROMS e disquetes). dev – interpreta dispositivos especiais de caracteres ou bloco no sistema de arquivos. Suid – habilita bit de suid e sgid. ro - monta como somente leitura. user - permite que usuários montem o sistema de arquivos (não recomendado por motivos de segurança). sync é recomendado para uso com discos removíveis (disquetes, zip drives, etc) para que os dados sejam gravados imediatamente na unidade (caso não seja usada, deve-se usar o comando sync antes de retirar o disquete da unidade). Dump: Define se o sistema fará um dump (backup) do sistema. Ordem: Define a ordem que os sistemas de arquivos serão verificados na inicialização do sistema. Se usar 0, o sistema de arquivos não é verificado. O sistema de arquivos raíz que deverá ser verificado primeiro é o raíz "/" . Após configurar o /etc/fstab, basta digitar o comando mount /dev/cd0 ou mount /cdrom para que a unidade de CD-ROM seja montada. Neste caso não é necessário especificar o sistema de arquivos da partição pois o mount verificará se ele já existe no /etc/fstab e caso exista, usará as opções especificadas neste arquivo. Para maiores detalhes veja as páginas de manual fstab. Desmontagem de Partições Para desmontar um sistema de arquivos montado com o comando “mount”, use o comando umount. Você deve ter permissões de root para desmontar uma partição. umount [dispositivo/ponto de montagem] Você pode usar tanto umount /dev/hda1 como umount /mnt para desmontar um sistema de arquivos /dev/hda1 montado em /mnt. Observação: O comando umount executa o sync automaticamente. Desse modo, no momento da desmontagem, garante que todos os dados ainda não gravados sejam salvos. �Versão 2014-1
Compartilhar