8. Problemas de enumeração e nomeação de dispositivos podem ocorrer devido a esta atualização. A versão lenny do
Debian Linux apresenta um mecanismo de descoberta e reconhecimento de hardware mais robusto que as versões anteriores. Porém, esta funcionalidade pode causar problemas ao rebootar o sistema após a atualização.
Isto ocorre devido a possibilidade de certas mudanças ocorrerem na ordem ou na nomenclatura de alguns dispositivos, especialmente placas de rede e discos. Se sua máquina possui duas placas de rede, por exemplo, as interfaces eth0 e eth1 poderão aparecer invertidas após o reboot. Isto também pode acontecer em um sistema já atualizado, executando o lenny, se você substituir uma das placas de rede, por exemplo.
Para evitar que isto ocorra com as interfaces de rede, você pode usar as regras do udev para fixar a ligação entre os dispositivos físicos e lógicos. O arquivo
/etc/udev/rules.d/70-persistent-net.rules possui as regras de enumeração dos dispositivos de rede. E você pode alterar o nome do dispositivo lógico (/dev/eth?) vinculado a cada dispositivo físico (através do MAC address da interface).
Também é possível fazer isso com o utilitário
ifrename. Instale o pacote antes de atualizar e consulte sua manpage para decidir qual método usar, mas nunca use ambos ao mesmo tempo.
Outra mudança significativa pode ocorrer nos discos, principalmente se você usa HDs do tipo SATA. Neste caso você pode ser surpreendido ao ver que seus devices que antes atendiam pelo nome de /dev/hd* agora se chamarem /dev/sda*. Se isto acontecer, o kernel não encontrará a raiz do sistema de arquivos e não conseguirá montar suas partições após o reboot. E, você verá uma mensagem parecida com:
Waiting for root file system (esperando pela raiz do sistema de arquivos)
Este problema ocorre quando o upgrade não atualiza o
/boot/grub/menu.lst para a nova convenção de nomes destes dispositivos. Assim, durante o boot, o grub passa um endereço de partição errado para o kernel.
Para evitar esta situação você pode alterar seu processo de boot para que ele use identificadores ao se referir aos seus discos, ao invés de usar nomes dos dispositivos. Há duas maneiras de se fazer isso: usando labels ou as UUID, que são suportadas pelo Debian desde o "etch". Ambas possuem vantagens e desvantagens.
Usar labels é mais fácil, mas se tem o risco de ter 2 discos com o mesmo label na mesma máquina. Já as UUID são mais feias e difíceis de referenciar, especialmente por usarem um padrão de nomeação que deixa os discos com identificação parecida com isto: 66b99075-76e2-4d92-aedc-5a375aef9e1e.
Por outro lado, é altamente improvável que você tenha dois discos com a mesma UUID na mesma máquina.
Não abordaremos o método que usa labels, mas, se você se interessa por eles, pode procurar por aqui:
a. Troque a identificação dos discos pelas UUID, antes de reiniciar (e após a atualização), por ser a abordagem mais segura.
Para isso descubra as UUID de suas partições com o comando:
# ls -l /dev/disk/by-uuid
Você terá algo parecido com isto:
lrwxrwxrwx 1 root root 1 2009-03-26 17:26 dc8073ce-d274-429d-8e49-7cb759b2e5c4 -> ../../sda1
lrwxrwxrwx 1 root root 1 2009-03-26 17:26 66b99075-76e2-4d92-aedc-5a375aef9e1e -> ../../sda6
que nada mais é do que um symlink que aponta para o dispositivo que identifica a partição.
Edite o arquivo
/boot/grub/menu.lst e localize a linha que se parece com a linha abaixo:
# kopt=root=/dev/hda6 ro
E a substitua por:
# kopt=root=UUID=66b99075-76e2-4d92-aedc-5a375aef9e1e ro
(!) O sinal # é necessário, obrigatório e deve ser mantido.
(!!) Note que a UUID usada acima (66b99075-76e2-4d92-aedc-5a375aef9e1e) é apenas um exemplo e não corresponde a uma constante. Você deverá identificar a UUID que corresponde à sua partição raiz e substituí-la por ela. Do mesmo modo, hda6, sda6 são exemplos hipotéticos.
Atualize as linhas do kernel no menu.lst através do comando:
# update-grub
Edite o arquivo
/etc/fstab e altere a linha que monta a partição raiz (/). Por exemplo, troque:
/dev/hda6 / ext3 defaults,errors=remount-ro 0 1
Por:
UUID=66b99075-76e2-4d92-aedc-5a375aef9e1e / ext3 defaults,errors=remount-ro 0 1 #tudo na mesma linha
b. Se você não atualizou a identificação dos discos antes do reboot e está tendo problemas, pode efetuar estas mudanças diretamente pelo menu do grub, antes de entregar o boot para o kernel.
Na splash screen do grub, ou seja, a tela do grub onde você seleciona por qual imagem irá bootar o sistema, tecle ESC antes que o carregamento do kernel se inicie.
Selecione a linha que representa a imagem pela qual você pretende iniciar o boot e pressione a tecla "e" para editá-la. Você verá algo parecido com:
root (hd0,0)
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
initrd /initrd.img-2.6.26-1-686
Selecione a linha que se inicia pela palavra "kernel" e pressione a tecla "e" novamente para que o grub permita que você edite o conteúdo desta linha.
Substitua então a identificação do disco de /dev/hda6 por /dev/sda6, lembrando que hda6 e sda6 são nomes hipotéticos para identificar sua partição raiz. Não modifique a entrada root (hd0,0).
Pressione a tecla "Enter" para confirmar a modificação e a tecla "b" para confirmar o boot.
(!) Note que estas alterações não são permanentes e servem somente para o processo boot em que foram executadas. Quando a máquina for reiniciada novamente, o problema persistirá e, para torná-la permanente, execute a etapa "a" deste passo, após concluir o boot.
c. Outras 2 maneiras de corrigir o problema da nomenclatura dos discos são possíveis utilizando o modo de recuperação do próprio CD/DVD de instalação do Debian ou um LiveCD de qualquer distro Linux, que lhe permita montar a partição que contem o diretório /boot e editar manualmente os arquivos /boot/grub/menu.lst e /etc/fstab. Lembre-se apenas que atualização das linhas "kernel" no menu.lst, nestes casos, tem que ser feita manualmente.
9. Não se esqueça de reconfigurar o bootloader antes do reboot, conforme descrito no passo anterior, e, se você usa o LILO, execute o comando:
# /sbin/lilo
Depois disso, reveja o conteúdo do arquivo
/etc/kernel-img.conf e certifique-se que a entrada do_bootloader = Yes existe nele.
Observe que esta atualização é necessária mesmo que você não tenha atualizado o kernel.
----
Este tutorial foi inteiramente baseado no capítulo 4 das release notes do Debian 5.0:
Alguns trechos foram traduzidos literalmente, outros adaptados livremente.