|
[21/11]
:. Resumo do dia [21/11] :. Um passeio no laboratório de testes da Nokia [21/11] :. Ulteo lança Open Virtual Desktop [21/11] :. Apple atualiza firmware do iPhone para versão 2.2 [21/11] :. Internet Explorer 8 terá versão RC no início de 2009 [21/11] :. AMD demonstra Phenom II sob overclock a 5 GHz [20/11] :. Resumo do dia [20/11] :. YouTube começa a disponibilizar alta resolução em vídeos [20/11] :. Drivers ForceWare 180 'Big Bang II' são disponibilizados [20/11] :. GMail agora possui suporte a temas [19/11] :. Alchemy, compilador C/C++ em AS3 para Flash [19/11] :. Resumo do dia [19/11] :. Trabalhando com o Diff graficamente [19/11] :. Microsoft terá antivírus gratuito para Windows em 2009 [19/11] :. Um dos maiores servidores de spam do mundo é desconectado :. Mais noticias » |
Quando você liga o micro, o primeiro software que é carregado é o BIOS da placa mãe, que faz a contagem da memória RAM, uma detecção rápida dos dispositivos instalados e por fim carrega o sistema operacional principal a partir do HD, CDROM, disquete, rede, ou o que seja. Este procedimento inicial é chamado de POST (Power-on self test). Seria bom se a função do BIOS se limitasse a isso, mas na verdade ele continua residente, mesmo depois que o sistema operacional é carregado. Na época do MS-DOS era bem conhecida a divisão entre memória real (os primeiros 640 KB da memória RAM) e memória extendida (do primeiro MB em diante, englobando quase toda a memória instalada). O MS-DOS rodava em modo real, onde o processador trabalha simulando um 8088 (o processador usado no XT) que era capaz de acessar apenas 640 KB de memória. Mesmo os processadores modernos conservam este modo de operação, mas os sistemas operacionais modernos rodam inteiramente em modo protegido, onde são usados todos os recursos da máquina. O espaço entre os primeiros 640 KB, onde termina a memória real e os 1024 KB onde começa a memória extendida é justamente reservado para o BIOS da placa mãe. Ele é originalmente gravado de forma compactada num chip de memória flash instalado na placa mãe e fica descompactado neste espaço reservado (chamado de shadow RAM) durante o uso. O BIOS oferece funções prontas para acessar o HD, acionar recursos de gerenciamento de energia e muitas outras coisas. Mas, os sistemas operacionais quase não utilizam estas funções, pois existem muitas diferenças na forma como BIOS de diferentes placas mãe trabalham, e em muitos casos as funções simplesmente não funcionam ou produzem erros inesperados. Os fabricantes de placas mãe disponibilizam upgrades de BIOS freqüentemente para corrigir estes problemas, mas a maior parte dos usuários nem chega a procura-los. Fazendo com que exista um enorme contingente de placas bugadas por aí, com problemas no ACPI, DMA e outros outros recursos básicos. Existe até mesmo um projeto para substituir o BIOS da placa mãe por uma versão compacta do Kernel do Linux, que executa as mesmas funções, mas de uma forma mais confiável e flexível: http://www.linuxbios.org/ De qualquer forma, depois de fazer seu trabalho, o BIOS carrega o sistema operacional, lendo o primeiro setor do disco rígido o "Master Boot Record" (MBR), também conhecido como trilha zero ou trilha MBR. No MBR vai o gerenciador de boot. Os dois mais usados no Linux são o lilo e o grub. Na verdade, no MBR mesmo vai apenas um bootstrap, um pequeno software que instrui o BIOS a carregar o executável do lilo ou grub em um ponto específico do HD. Lembre-se que o MBR propriamente dito ocupa um único setor do HD, apenas 512 bytes. Não é possível armazenar muita coisa diretamente nele. O gerenciador de boot utiliza os primeiros 446 bytes do MBR. Os 66 bytes restantes são usados para armazenar a tabela de partições, que guarda informações sobre onde cada partição começa e termina. Alguns vírus e acidentes em geral podem danificar os dados armazenados na tabela de partição, fazendo com que pareça que o HD foi formatado, mas na maioria dos casos os dados continuam lá. Voltando ao tema inicial, o gerenciador de boot tem a função de carregar o kernel e, a partir dele todo o restante do sistema. O lilo e o grub podem ser configurados ainda para carregar o Windows ou outros sistema instalados em dual boot. Muitas distribuições configuram isso automaticamente durante a instalação. Inicialmente, o kernel é um arquivo compactado e somente-leitura, o arquivo /boot/vmlinuz. Ele é descompactado em uma área reservada da memória RAM e roda a partir dalí, aproveitando o fato de que a memória RAM é muito mais rápida que o HD. Este executável principal do kernel nunca é alterado durante o uso normal do sistema, ele muda apenas quando você recompila o kernel manualmente ou instala uma nova versão. Se você prestou atenção quando citei a necessidade de usar um initrd quando a partição raiz do sistema está formatada num sistema de arquivos que não está compilado diretamente no kernel, deve ter notado uma contradição aqui. Afinal é o que está sendo feito até agora. Nem o BIOS, nem o lilo possuem suporte a reiserfs e o Kernel precisa ser carregado antes que ele tenha a chance de carregar o initrd. E além do mais, para carregar o initrd, o próprio Kernel precisa ler o arquivo dentro da partição. Isto tudo funciona por que tanto o BIOS quanto o lilo não procuram entender o sistema de arquivos em que o HD está formatado. Pode ser EXT2, ReiserFS, XFS, ou o que seja, para eles não faz diferença. Eles simplesmente leêm os uns e zeros gravados numa área específica do HD e assim carregam o kernel e o initrd. Eles não fazem alterações nos dados gravados, por isso este "acesso direto" não traz possibilidade de danos às estruturas do sistema de arquivos. Depois de carregado, a primeira coisa que o kernel faz é montar a partição raiz, onde o sistema está instalado, inicialmente como somente leitura. Neste estágio ele carrega o init, o software que inicia o boot normal do sistema, lendo os scripts de inicialização e carregando os módulos e softwares especificados neles. O arquivo de configuração do init é o /etc/inittab. Ele é geralmente o primeiro arquivo de configuração lido durante o boot. A principal tarefa dele é carregar os demais scripts de inicialização, usados para carregar os demais componentes do sistema e fazer todas as operações de checagem, necessárias durante o boot. No /etc/inittab do Debian por exemplo, você verá a linha:
Esta linha executa o script /etc/init.d/rcS. Se você examiná-lo também, vai encontrar o seguinte:
Os "..." indicam partes dos script que removi para deixar apenas as partes que interessam aqui. Estas linhas são um shell script, que vai executar os scripts dentro da pasta /etc/rcS.d. Esta pasta contém scripts que devem ser executados sempre, a cada boot e são responsáveis por etapas fundamentais do boot. Alguns exemplos de scripts e programas que são executados nesta etapa são: De acordo com a distribuição usada, são carregados neste ponto outros serviços, para ativar suporte a placas PCMCIA, placas ISA, ou outros tipos de hardware, ativar o suporte a compartilhamentos de rede e assim por diante. É possível executar praticamente qualquer tipo de comando ou programa nesta etapa, justamente por isso os passos executados durante o boot mudam de distribuição para distribuição, de acordo com o que os desenvolvedores consideram mais adequado. A idéia aqui é apenas dar uma base, mostrando alguns passos essenciais que são sempre executados. Depois desta rodada inicial, são executados os scripts correspondentes ao runlevel padrão do sistema, que é configurado no /etc/inittab, na linha:
O número (5 no exemplo) indica o runlevel que será usado, que pode ser um número de 1 a 5. Cada runlevel corresponde a uma pasta, com um conjunto diferente de scripts de inicialização. É uma forma de ter vários "profiles", para uso do sistema em diferentes situações. A configuração mais comum é a seguinte: Por exemplo, usando o runlevel 5, são carregados os scripts dentro da pasta /etc/rc5.d, enquanto que usando o runlevel 3, são carregados os scripts dentro da pasta /etc/rc3.d. Nada impede que você modifique a organização dos arquivos manualmente, de forma a fazer o X carregar também no runlevel 3, ou qualquer outra coisa que quiser. São apenas pastas com scripts e links simbólicos dentro, nenhuma caixa preta.
|
||||||||