comumente observadas em sistemas operacionais convencionais.O intuito deste artigo e apresentar os componentes de um sistema operacional Linux embarcado e mostrar brevemente as dificuldades encontradas pelos profissionais especializados em Linux embarcado em suas atividades.De um modo geral, os tres principais componentes de um sistema operacional Linux sao os seguintes:Boot LoaderKernelRoot FilesystemCada um destes componentes sera descrito separadamente.Boot LoaderO objetivo preliminar do boot loader e carregar o kernel do Linux e iniciar o procedimento de boot. Na pratica, trata-se do software responsavel pela inicializacao da placa na qual o Linux sera executado.Dentre suas atividades, podemos citar:Deteccao e ativacao dos perifericos presentes no hardwareCarregar o kernel do Linux localizado em seus mais diversos lugares possiveis (memoria Flash, disco rigido, servidor de arquivos na rede, cartao de memoria externa, outro computador comunicado pela porta serial, entre outros)Executar o kernel do Linux - procedimento de boot - enviando os parametros iniciais de boot que apresentam os comportamentos iniciais do sistema.O kernel do Linux e executado a partir da memoria RAM do sistema. Uma vez iniciado o sistema operacional, este realiza uma comunicacao inicial de boot, na qual o bootloader informa alguns parametros ao Linux de forma que ele execute o boot de forma apropriada. Entre alguns parametros, pode-se destacar: console na tela ou na porta serial, endereco IP inicial do equipamento, localizacao do root filesystem, entre outros.O boot loader, da mesma forma que o kernel, deve ser especifico para a placa. O boot loader deve reconhecer a memoria RAM, ROM e interfaces de comunicacao presentes na placa, alem, claro, do proprio processador onde e executado. Geralmente para cada hardware existe um boot loader especifico com os respectivos drivers funcionando perfeitamente. Caso o sistema possua uma memoria na qual o bootloader nao possua suporte, e necessario que este suporte seja implementado. Este trabalho e geralmente realizado na forma de drivers para boot-loaders.Exemplos de boot-loaders para Linux:U-BootRedbootGRUBLiloKernelTrata-se do nucleo do Linux propriamente dito. E onde se encontra o nucleo do sistema operacional (escalonador), o gerenciamento de memoria, de perifericos. E onde se encontram as intrucoes de gerenciamento de processos e dispositivos em si.Dentro do universo de sistemas embarcados, e no kernel onde se encontram os drivers - os codigos que realizam a comunicacao entre os diversos mecanismos que o hardware se liga com o "mundo" e o sistema operacional bem como as aplicacoes que sao executadas neste sistema operacional.Da mesma forma que o boot-loader, existe um kernel para cada hardware. E para cada hardware, existe um conjunto de drivers responsaveis pela realizacao da comunicacao do dispositivo. Quando um projetista de software se depara com um novo trabalho de personalizacao de linux para uma determinada placa, o primeiro passo e identificar os perifericos e checar a disponibilidade de drivers para os componentes escolhidos pelo projetista de hardware. Caso existam drivers disponiveis, eles podem ser aproveitados. Caso contrario, novos drivers devem ser implementados. E cada driver possui uma complexidade diferente.Root FilesystemTrata-se do componente que "da a cara' do Linux instalado no hardware. Trata-se do sistema de arquivos raiz. E o local onde sao armazenados os aplicativos, as bibliotecas e os