kernel e drivers ????? [RESOLVIDO]

13. Re: kernel e drivers ????? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 01/09/2013 - 14:33h

jhonyjhous escreveu:

entao voce esta dizendo que todos esses drivers nao ficam em codigo fonte quando o kernel é compilado? vamos supor eu pego o kernel no site kernel.org compilo para a minha maquina e todos os drivers sao compilados tambem .. so que só é carregado de acordo com o hardware da minha maquina .. porque uma vez eu ja fui na pasta aonde fica um monte de drivers mais tudo em codigo fonte so acho que em .txt aquilo seria o que ? os drivers que nao foram carregados ?


na verdade só é compilado(transformar código em c em programas de verdade), o que vc marcar no arquivo de configuração para ser compilado(seja como módulo seja como outra coisa), o que é marcado para iniciar com o kernel, já ira fazer parte automáticamente do vmlinuz ou inirtrd(depende da distro), e o que foi marcado como módulo é compilado ao mesmo tempo, porém, são movidos para outra pasta(/lib/modules) e so são carregados quando chamados via modprobe, ou por algum arquivo de configuração.

Depois disso o vmlinuz é movido para a pasta de boot, gera-se uma initramfs(o que inicia e memória e chama o kernel de fato), vc atualiza o grub e o kernel inicia, porém os arquivos *.c, ainda continuam lá na /usr/src/(versão), se vc não deletar eles vão ficar la e vc pode inclusive compilar novamente se quiser.


  


14. Re: kernel e drivers ????? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 01/09/2013 - 14:39h

vou dar um exemplo para vc entender o que eu estou falando, vc sabe programar em c?
para vc entender faça o seguinte teste, digite isso em um editor de texto e salve em .c:



#include <stdio.h>

void main()
{
printf("olá mundo !");
}

depois compila:

gcc nome.c -o nome  


e execute:
./nome 


note que o arquivo *.c é um texto qualquer, e o programa de fato é o que foi gerado, depois de compilado eu posso até excluir o *.c que o programa irá funcionar do mesmo jeito, o mesmo conceito se aplica ao kernel, só que ao invés de 1 são milhares de programas em c e outras linguagens.


15. Re: kernel e drivers ????? [RESOLVIDO]

crashPh4nton
jhonyjhous

(usa Debian)

Enviado em 02/09/2013 - 21:15h

se nao for encomodo.. rs gerou outras duvidas ... todos os .C sao compilados ou só é compilado os que vao ser usado de acordo com a maquina ? e essa compilação é feita toda vez que inicio , ou é feito uma vez só ?


16. Re: kernel e drivers ????? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 03/09/2013 - 00:36h

jhonyjhous escreveu:

se nao for encomodo.. rs gerou outras duvidas ... todos os .C sao compilados ou só é compilado os que vao ser usado de acordo com a maquina ? e essa compilação é feita toda vez que inicio , ou é feito uma vez só ?


só é compilado o que vc escolher no menuconfig, antes de compilar o kernel, e isso é feito somente uma vez( a não ser que vc queira fazer a cada versão de kernel nova que sair), cada distro compila os drivers que acha necesário( por padrão muitos, pq não se sabe em qual computador ela vai rodar), agora se vc quer algo do seu jeito ou só com o necesário, vc baixa o kernel no kernel.org, descompacta, move para /usr/src, escolhe o que vc quer que seja compilado, e manda compilar, só vai ser compilado o que vc (ou quem estiver o fazendo) escolher, o que foi compilado como parte do kernel, vai parar em um único arquivo, a imagem de kernel(vmlinuz), que deve ser copiada para a pasta /boot, e o que foi marcado como módulo vai para a pasta /lib/modules, depois disso vc atualiza seu grub ou lilo ou burg..e pronto, os arquivos .c agora podem ser excluidos, o que interessa já foi gerado, os programas.


vamos a explicação, a teoria é simples, o arquivo de texto escrito em alguma linguagem de programação, faz sentido para vc(humano) mas para a máquina isso não representa nada, a partir do momento que você 'compila' aquilo que vc escreveu é transformado em linguagem de máquina(0 e 1 isso sim faz sentido para o computador), é isso que nós conhecemos como programas.


17. Re: kernel e drivers ????? [RESOLVIDO]

crashPh4nton
jhonyjhous

(usa Debian)

Enviado em 03/09/2013 - 00:52h

ata entendi ... todos os drivers vem em codigos fonte em linguagem C e sao compilados .. mais só é carregado os drivers do meu hardware ... entao quer dizer que posso verificar quais drivers eu preciso e excluir todos os outros ... e so compilo os drivers do meu hardware .. assim irei diminuir ainda mais o kernel .. e ele ficara mais leve ?


18. Re: kernel e drivers ????? [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 03/09/2013 - 08:33h

jhonyjhous escreveu:

ata entendi ... todos os drivers vem em codigos fonte em linguagem C e sao compilados .. mais só é carregado os drivers do meu hardware ... entao quer dizer que posso verificar quais drivers eu preciso e excluir todos os outros ... e so compilo os drivers do meu hardware .. assim irei diminuir ainda mais o kernel .. e ele ficara mais leve ?


Não. Quando você compila o kernel, ele é compilado por inteiro e transformado em uma imagem compactada, imagem esta que é descompactada cada vez que inicia o sistema operacional. Aliás, os 71,6 MB do .tar.xz que você baixa do Kernel.org logicamente estão compactados também.

No menuconfig você pode configurar as opções como M (Módulo) ou * (built-in - embutido), ou seja, as opções que você colocar como M serão compiladas junto com o kernel, mas não farão parte do Kernel Space (espaço do Kernel) e as opções que você compilar como * (built-in) farão parte do Kernel Space. E se você deixar a opção sem marcar, ela não será compilada.

Entende-se por módulos as funções, os processos, os drivers, etc, ou seja, tudo aquilo que não faz parte do código do kernel, mas faz parte da imagem total que compõe o que chamamos de Kernel.

As funções, quando mantidas em módulos, somente serão carregadas para a memória quando forem necessárias. Por exemplo, o kernel está configurado para trabalhar com dispositivos USB, mas somente irá carregar essas funções para a memória quando o dispositivo USB for conectado.

Quanto ao Kernel ficar "mais leve", somente se ele deixar de ser Kernel.

Basicamente o que chamamos de Kernel é formado pelo Kernel Space (espaço do Kernel) e pelo User Space (espaço do usuário).
O Kernel Space é um espaço da memória (RAM) e um acesso completo para o hardware (geralmente através dos drivers). São os drivers que fazem o "meio de campo" entre o hardware e o sistema.
As aplicações do usuário são executadas no espaço do usuário, esse "espaço", grosso modo, são endereços na memória RAM.

Os drivers compilados como Built-in são carregados junto com o Kernel na inicialização do sistema e isso dá maior agilidade ao sistema, porém, ocupam mais espaço do Kernel na memória RAM e os endereços destinados ao espaço do Kernel na memória RAM somente são "limpos" quando você reinicia ou desliga o computador.
Os endereços do espaço do usuário são "limpos" pelo sistema quando você fecha o programa, o dispositivo, etc, após terminar de usá-lo. É claro que nem sempre isso acontece, às vezes o endereço fica alocado na memória para uso futuro. Isso depende do programa e de sua utilidade para o sistema.

E quanto à compilar somente os drivers do teu hardware, você só tem como saber quais os drivers especificamente que o teu hardware irá ocupar se você fizer um estudo profundo da tua placa-mãe, do teu processador, da placa de rede, etc; e da distribuição Linux que estará usando.
Mudando a distribuição, basicamente muda tudo de novo, mesmo compilando a mesma versão do Kernel que tinha antes.

O que você pode fazer é usar as opções padrões e alterar uma opção ou outra que você tenha certeza.

http://www.vivaolinux.com.br/artigo/O-Kernel-Linux?pagina=1


19. Re: kernel e drivers ????? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 03/09/2013 - 10:31h

jhonyjhous escreveu:

ata entendi ... todos os drivers vem em codigos fonte em linguagem C e sao compilados .. mais só é carregado os drivers do meu hardware ... entao quer dizer que posso verificar quais drivers eu preciso e excluir todos os outros ... e so compilo os drivers do meu hardware .. assim irei diminuir ainda mais o kernel .. e ele ficara mais leve ?


resumindo o que o colega falou, todos os drivers que fazem parte da imagem de kernel são carregados por padrão no início do sistema( no kernel padrão da distro são muitos), mas só são utilizados quando requisitados, tipo quando vc conecta o cabo de rede ele executa o driver de rede acabou de usar volta a ficar "adormecido" porém gastando memória, e os que foram compilados como módulo só são carregados se vc chamar via modeprobe ou outra coisa.

A maioria dos drivers do linux vem em c dentro de um arquivo compactado, tem alguns em outras linguagens também, eles são compilados de acordo com o que vc escolher no seu arquivo de configuração,e sim vc pode descobrir quais são os drivers necessários ao seu computador e compilar o kernel do seu jeito, porém é um trabalho muito desgastante, vc tem que conhecer a fundo seu micro, desde o mais mínimo dos circuitos, tanto é que eu já tentei compilar kernel pra mais de 10 vezes, nenhuma bem sucedida, e o [*****] é que são ,milhares de opções para vc marcar, se vc já sabe quais são vc marca rapidinho, mas quando vc não sabe, pode ficar dias lendo e relendo para saber se põe ou não aquilo no seu kernel, agora a parte do compilar de fato é rápido, de 15 a 30 minutos.


20. Re: kernel e drivers ????? [RESOLVIDO]

crashPh4nton
jhonyjhous

(usa Debian)

Enviado em 04/09/2013 - 01:53h

to conseguindo entender aos poucos .... e brigado pelo artigo muito bom ...



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts