Compilação do kernel Linux: SO independente

2

Oi pessoal Eu sou novo na compilação do kernel do Linux, então eu tenho uma pergunta: Ao compilar o kernel do Linux, estamos construindo um sistema operacional totalmente autônomo que não depende de nenhuma destruição do Linux?

Se sim ... Bem, quando eu quero criar o arquivo initrd usando o comando initramfs, por que ele está adicionando algumas informações sobre a minha execução do Linux (estou executando o Ubuntu 10.4)?

Como devo compilar e adicionar módulos ao meu linux compilado e onde devo colocá-los?

Este é um verão do que tenho feito:

1.procurando o código fonte do kernel (3.4.1) e compilando-o usando o comando "make all" (eu uso meu linux atual .config)

  1. Instalando o grub no meu memory stick

  2. Colocando o bzImage compilado no diretório / boot do meu memory stick

  3. Usando o comando "initramfs" para criar o arquivo initrd e colocá-lo no / boot também.

  4. Iniciando meu PC usando o cartão de memória e entrando no grub > terminal

  5. Usando "root (hd0,0)"; "kernel / boot / bzImage"; "initrd / boot / initrd.img" e, em seguida, "boot" comandos para arrancar.

  6. Entrando no terminal (initramfs) após um erro afirmando que não foi possível encontrar o arquivo "/lib/modules/3.4.1/modules.dep" !!!

O que estou fazendo de errado?

    
por morTie 01.01.2013 / 15:41

2 respostas

10

By compiling linux kernel are we building a totally standalone OS which doesn't depend on any linux destributions?

Não. O Linux por si só não é um sistema operacional. É apenas um kernel. Uma userland , compreendendo uma coleção de bibliotecas de sistema e software básico, é necessária para facilitar sua interação com o computador. No que comumente nos referimos quando nos referimos ao "Linux", isso é fornecido por um projeto separado chamado Projeto GNU. Tecnicamente, deveríamos (e alguns o chamamos) "GNU / Linux".

Well when I want to create the initrd file using initramfs commmand why is it adding some info about my running linux destrubution ( I'm running Ubuntu 10.4) ?

Como seu initrd contém a coleção de programas que inicialmente configuram seu sistema na inicialização, carrega os drivers e daemons necessários, localiza e monta a (s) partição (ões) exigida (s) em seu (s) disco (s) rígido (s), etc. somente para sua distribuição, mas para sua instalação, configuração e computador específicos. Não é geralmente intercambiável com o initrd de outra pessoa. É por isso que tem que ser gerado pelo seu sistema.

How should I compile and add modules to my compiled linux and where should I put them?

Se você está compilando seu próprio kernel, presumivelmente você está fazendo make menuconfig no diretório fonte do kernel antes de compilar, o que permite selecionar quais recursos serão compilados, e se eles serão integrados no binário do kernel ou feitos disponível como módulos.

This is a summery of what I've been doing:

Existem vários motivos pelos quais isso não funcionará do jeito que você deseja.

getting the kernel source (3.4.1) and compiling it using "make all" command ( I use my current linux .config )

Se você estiver executando o Ubuntu 10.04, que antecede um pouco a ramificação 3.x do kernel Linux, muito menos 3.4. Provavelmente não funcionará corretamente, pelo menos não sem uma enorme quantidade de trabalho extra. Os arquivos de configuração também mudaram um pouco, e estou francamente surpreso que ele não esteja jogando fora os erros de esquerda e direita sobre as coisas no seu (supostamente para o Linux 2.6) arquivo de configuração não correspondendo com como as coisas são feitas no 3.4. Além disso, você provavelmente quer estar baixando o pacote fonte do kernel do Ubuntu e não o kernel do kernel kernel, já que o Ubuntu corrige o kernel para incluir os recursos necessários e torná-lo compatível com tudo o mais no sistema. Finalmente, você está perdendo uma série de etapas, para as quais eu irei depois.

Putting the compiled bzImage to the /boot directory of my memory stick

Eu não tenho certeza qual é a sua intenção com isso, mas se é para ter uma instalação Linux inicializável completa no seu memory stick, há um pouco mais do que isso - você não tem nenhuma coisa de usuário final nesse memory stick, por exemplo. O que isso realmente fará, se configurado corretamente, é (tente) executar a instalação do Ubuntu no seu disco rígido com o kernel no seu memory stick. Eu acredito que isso deve funcionar, mas por que fazer isso em vez de simplesmente instalar o kernel no seu disco rígido? Você pode instalá-lo lado a lado com o existente para alternar livremente entre eles.

Getting into (initramfs) terminal after an error stating that could not find the "/lib/modules/3.4.1/modules.dep" file !!!

Isso remonta aos passos perdidos que mencionei anteriormente. Você precisa make modules_install do seu novo kernel para colocar seus módulos em /lib/modules .

CONTUDO ...

Nada disso importa, porque idealmente você não deve compilar um kernel de maneira "tradicional", a menos que você tenha uma necessidade muito específica. Hoje em dia, caso você realmente precise compilar seu próprio kernel, a maioria das distribuições tem uma maneira de fazer isso que usa sua versão de kernel personalizada (se aplicável), automatiza o processo de compilação, instala o kernel como um pacote para que você possa instalar e remover conforme necessário, e configura o seu gerenciador de inicialização para lhe dar uma escolha do (s) kernel (s) novo (s) ou antigo (s). No Ubuntu, você deve seguir estas instruções: Kernel / Compile - Ubuntu Wiki

O que não quer dizer que você não pode compilar um kernel da maneira "antiga" apenas para pontapés / para propósitos educacionais - eu compilei meu primeiro kernel dessa forma, mas isso foi antes que houvesse maneiras melhores de fazer isso . Se o seu sistema não estiver quebrado, é importante para você, use o método recomendado para sua distro, use sua origem e use o gerenciamento de pacotes.

    
por 01.01.2013 / 16:34
1

Quando você recompila ou compila o kernel do Linux, você NÃO está criando uma nova distribuição. Você está criando apenas uma versão nova ou diferente do kernel. O kernel é um único arquivo que é carregado e depois executado pelo gerenciador de inicialização após o PC concluir o processo de POST.

Uma distribuição consiste em muitos, muitos outros arquivos, incluindo os utilitários padrão do UNIX, geralmente um gerenciador de pacotes e outros. Nada disso é tocado se você (re) compilar seu próprio kernel.

Já faz algum tempo desde que eu compilei meu próprio kernel, mas eu acho que você precisa executar depmod -a após o comando make .

    
por 01.01.2013 / 16:32