Criando um initrd

From Pruonckk.org

Conteúdo

Prefacio

Uma initrd, pode ser usada, para que voce faça um kernel bootar, porque derrepente você compilou ele sem suporte built-in para sua ide ou seu filesystem

Dependencias

Para criar sua própria imagem initrd no Debian GNU/Linux, você precisa instalar o initrd-tools, você pode customizar como preferir editando as configurações em /etc/mkinitrd/.

apt-get install initrd-tools

O arquivo mais importante é o /etc/mkinitrd/modules, neste arquivo você tera a lista de módulos que será incluída quando você criar a imagem, é importante lembrar que estes módulos precisam estar em sequência de boot, ou seja, carregue o discos depois sistema de arquivos e etc...

Configurando o mkinitrd.conf

No arquivo mkinitrd.conf você pode alterar a opção MODULES para dep para que ele use uma pequena quantidade de modules do kernel em sua imagem, pode ser interessante também alterar a opção DELAY para um valor como 3 ou 4 ( ele interpreta como segundos ), assim em caso de erro você pode verificar qual foi o erro.

Configurando o modules

O arquivo modules é o o arquivo, onde você defini os módulos que você quer carregar Abaixo temos um exemplo de configuração!

    # /etc/mkinitrd/modules: Kernel modules to load for initrd.
    #
    # This file should contain the names of kernel modules and their arguments
    # (if any) that are needed to mount the root file system, one per line.
    # Comments begin with a `#', and everything on the line after them are ignored.
    #
    # You must run mkinitrd(8) to effect this change.
    #
    # Examples:
    #
    #  ext2
    #  wd io=0x300
    ide-core
    ide-disk
    xfs
    ide-generic
    sg
    ide-scsi
    ext3


Criando a Imagem

Para criar sua imagem initrd, voce precisa usar o mkinitrd, especifique o arquivo para escrever a imagem, voce pode permitir que o mkinitrd procure por seu dispositivo root (principal), mas isso nem sempre é bom. Por exemplo, se voce tem um dispositivo scsi instalado e o seu dispositivo principal é um hd ide, ele pode achar que o scsi é o principal então seu kernel nao irá carregar.

Entao o comando para criar será o seguinte:

mkinitrd -k -o /boot/initrd.img -r /dev/hda3 2.6.10-pruonckk

Explicando

	     -k ==> para apagar o arquivo temporario
             -r ==> dispositivo root ( / )
             2.6.10-pruonckk ==> versao do kernel

Sua nova imagem tem um sistema de arquivo cramfs, que pode ser montado usando esquema de dispositivo de loopback, importante de lembrar que este sistema de arquivos é oficial apartir do kernel 2.6.3, bom, neste caso se você quiser montar o arquivo basta usar o seguinte comando

mount -t cramfs /boot/initrd.img /mnt/ -o loop

Pronto! agora você precisa colocar a sua linha no grub e mandar ver!

Configurando o GRUB

Seu grub deve ficar semelhante a esta configuração

    title           Debian GNU/Linux, kernel 2.6.10-pruonckk 
    root            (hd0,0)
    kernel          /vmlinuz-2.6.10-pruonckk root=/dev/hda3 ro 
    initrd          /initrd.img
    savedefault
    boot

E pronto, basta dar um reboot !

Fontes:

http://www.edseek.com/archives/2004/03/22/creating-an-initrd-image-on-debian-gnulinux/


Voltar

Ferramentas pessoais
Inutilidades