# Debian e o kernel.

## Posso instalar e compilar um kernel sem alguma configuração específica para o Debian?

Sim. Mas você terá que entender a política do Debian em relação aos cabeçalhos.

As bibliotecas C do Debian são construídas com as versões estáveis mais recentes dos cabeçalhos do kernel.

Por exemplo, a versão Debian-1.2 usava a versão 5.4.13 dos cabeçalhos. Esta prática contrasta com os pacotes fonte do kernel Linux, distribuídos em todos os sites de FTP, que usam até mesmo as mais recentes versões dos cabeçalhos. Os cabeçalhos do kernel, distribuídos com os fontes do kernel, estão localizados em `/usr/include/linux/include/`.

Se você precisa compilar um programa com os cabeçalhos do kernel que são mais atuais do que aqueles providos por `libc6-dev`, então você terá que adicionar `-I/usr/src/linux/include/` na sua linha de comando quando estiver compilando. Isto veio em um ponto, por exemplo, com o empacotamento do "automounter daemon" (`amd`). Quando novos kernels mudaram algo em relação ao tratamento interno a NFS, o `amd` precisou saber sobre eles. Isto necessitou a inclusão dos mais recentes cabeçalhos do kernel.

## Que ferramentas o Debian oferece para a construção de kernels personalizados?

Usuários que desejarem (ou precisarem) construir um kernel personalizado são incentivados a baixar o pacote `kernel-package`. Este pacote contém os scripts para construir o pacote do kernel, e oferece a capacidade de criar um pacote imagem do kernel somente rodando o comando

    make-kpkg kernel_image

no diretório de mais alto nível dos fontes do kernel. Ajuda é obtida executando o comando

    make-kpkg --help

e através da página de manual

make-kpkg

1.

Usuários devem baixar separadamente o código fonte do kernel mais recente (ou de seu kernel preferido) do seu repositório Linux favorito, a menos que um pacote kernel-source-versão esteja disponível (onde "version" significa a versão do kernel).

Instruções detalhadas sobre o uso do pacote `kernel-package` são dadas no arquivo `/usr/share/doc/kernel-package/README.gz`. Resumidamente, a pessoa deve:

- Desempacotar os fontes do kernel, e dar `cd` para o diretório recém-criado.

- Modificar a configuração do kernel usando um destes comandos:

  - `make config` (para uma interface tty uma-linha-de-cada-vez).

  - `make menuconfig` (para uma interface de menus baseada em ncurses). Observe que, para usar esta opção, o pacote `libncurses5-dev` deve estar instalado.

  - `make xconfig` (para uma interface X11). Usar esta opção requer que os pacotes relevantes ao X e ao Tcl/Tk sejam instalados.

  Qualquer dos passos acima gera um novo `.config` no diretório do fonte do kernel.

- Execute o comando: `make-kpkg -rev Custom.N kernel_image`, onde N é um número de revisão designado pelo usuário. O novo arquivo Debian assim formado teria revisão Custom.1, por exemplo, `kernel-image-2.2.14_Custom.1_i386.deb` para o kernel Linux 2.2.14.

- Instale o pacote criado.

  - Rode `dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb` para instalar o kernel propriamente dito. O script de instalação irá:

    - executar o boot loader, LILO (se estiver instalado),

    - instalar o kernel personalizado em /boot/vmlinuz_VVV-Custom.N, e configurar as ligações simbólicas apropriadas ao kernel mais recente.

    - sugerir ao usuário que crie um disquete de inicialização. Este disquete conterá apenas o kernel. Veja custombootdisk.

  - Para usar um boot loader secundário como o `grub` ou `loadlin`, copie essa imagem para outros lugares (por exemplo, para /boot/grub ou para uma partição `MS-DOS`).

## Como faço um disquete de inicialização personalizado?

Essa tarefa é muito facilitada pelo pacote Debian `boot-floppies`, normalmente encontrado na seção `admin` do repositório FTP do Debian. Scripts de shell desse pacote produzem disquetes de inicialização no formato `SYSLINUX`. Esses disquetes são formatados como `MS-DOS` cujos MBRs foram alterados para inicializarem o Linux diretamente (ou qualquer outro sistema operacional que tenha sido definido no arquivo syslinux.cfg do disquete). Outros scripts desse pacote produzem discos root de emergência e podem até reproduzir os "base disks" (os discos do sistema básico).

Você achará mais informações sobre isto no arquivo `/usr/doc/boot-floppies/README` após instalar o pacote `boot-floppies`.

## Que ferramentas especiais o Debian oferece para lidar com módulos?

O pacote Debian `modconf` fornece um script shell (`/usr/sbin/modconf`) que pode ser usado para personalizar a configuração dos módulos. Este script apresenta uma interface baseada em menus, requisitando ao usuário detalhes sobre os drivers de dispositivos carregáveis de seu sistema. As respostas são usadas para personalizar o arquivo `/etc/modules.conf` que lista "aliases" (apelidos), e outros argumentos (que devem ser usados em conjunto com vários módulos) através de arquivos em `/etc/modules` (que lista os módulos que devem ser carregados na hora do boot).

Como os (novos) arquivos Configure.help, que agora estão disponíveis para auxiliar a construção de kernels personalizados, o pacote `modconf` vem com uma série de arquivos de ajuda (em `/usr/lib/modules_help/`) que fornecem informações detalhadas sobre os argumentos apropriados para cada um dos módulos.

## Posso desinstalar um kernel antigo de forma segura? Como?

Sim. O script `kernel-image-NNN.prerm` verifica se o kernel que você está usando atualmente é o mesmo que você está querendo desinstalar. Portanto, você pode remover pacotes de kernel indesejáveis usando este comando:

    dpkg --purge --force-remove-essential kernel-image-NNN

(claro, substitua "NNN" com sua versão de kernel e número de revisão)