Kernel panic após a instalação do Gentoo - não é possível abrir o dispositivo root

1

Eu tenho um sistema Debian em /dev/sda1 ( / ) e /dev/sda2 (estendido, /dev/sda5 é /home , /dev/sda6 é swap). Eu quero instalar o Gentoo em paralelo, então eu reduzi o sda2 e criei o /dev/sda3 , no qual eu instalei o Gentoo, e /dev/sda4 , para servir como /home do Gentoo:

Disk /dev/sda: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeb362e8f

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048   29296639   29294592    14G 83 Linux
/dev/sda2         29298686 1673951231 1644652546 784.2G  5 Extended
/dev/sda3       1673951232 1735391231   61440000  29.3G 83 Linux
/dev/sda4       1735391232 1953523711  218132480   104G 83 Linux
/dev/sda5         29298688   35547135    6248448     3G 82 Linux swap / Solaris
/dev/sda6         35549184 1673949183 1638400000 781.3G 83 Linux

Partition table entries are not in disk order.

Eu pulei a seção "bootloader" do Gentoo's Handbook como eu queria usar minha instalação atual do grub2 em /dev/sda1 , então após terminar a instalação eu inicializei para o Debian e executei update-grub , que adicionou o Gentoo ao menu. No entanto, ao inicializar, recebo um kernel panic e uma mensagem sobre ele não ser capaz de abrir o dispositivo root:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  1c46e4aa-e486-48ba-8f61-1484ed899e1e
        else
          search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
        fi
        linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
}
submenu 'Advanced options for Gentoo Base System release 2.2 (on /dev/sda3)' $menuentry_id_option 'osprober-gnulinux-advanced-1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
        menuentry 'Gentoo Base System release 2.2 (on /dev/sda3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.1.12-gentoo--1c46e4aa-e486-48ba-8f61-1484ed899e1e' {
                insmod part_msdos
                insmod ext2
                set root='hd0,msdos3'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  1c46e4aa-e486-48ba-8f61-1484ed899e1e
                else
                  search --no-floppy --fs-uuid --set=root 1c46e4aa-e486-48ba-8f61-1484ed899e1e
                fi
                linux /boot/vmlinuz-4.1.12-gentoo root=/dev/sda3
        }
}

### END /etc/grub.d/30_os-prober ###

Eu tentei usar set root="/dev/sda3" e set root="sda3" , mas honestamente eu não tenho ideia do que isso significa, apenas parecia relacionado à mensagem de pânico. Então, o que está acontecendo aqui e como devo proceder? Vale a pena mencionar que estou inicializando de um disco rígido externo ( /dev/sda ) plugado via USB (o meu interno foi kaput). A instalação do Gentoo foi feita sem nenhum erro / aviso, e acho que não me esqueci de compilar nada no kernel, mas acho que é possível ... Suporte a ext4, SCSI e USB Tenho certeza que foi incluído (não como módulo).

    
por Alex 30.12.2015 / 14:38

4 respostas

1

Parece que você não tem seus drivers SATA compilados no seu kernel do Gentoo (ou compilado como um módulo). A linha que me interessa é sobre a metade da captura de tela que você anexou onde está escrito:

Please append a correct "root=" option; here are the available partitions:

mas não lista partições disponíveis. Para mim, os gritos do Gentoo não conseguem se comunicar com o disco físico. Se você não sabe que tipo de controlador SATA você encontra executando lshw no Debian. Isso lhe dirá não apenas o que a placa é, mas também o driver do kernel (procure por "configuration: driver=" na seção SATA) para que você possa adicioná-la ao seu kernel do Gentoo.

    
por 30.12.2015 / 17:31
1

Como David King sugere, o culpado é provavelmente um driver de kernel ausente. Aqui está uma lista de opções do kernel necessárias para fazer o trabalho de armazenamento em massa usb. Tente chroot no sistema gentoo a partir de um gentoo livecd (como você provavelmente sabe, isso é descrito em detalhes em Manual do Gentoo) . Lá você pode reconfigurar e recompilar o kernel (novamente descrito muito bem no manual do Gentoo) . Se você criou um initramfs, não esqueça de recriá-lo, porque senão o kernel e os drivers recém-compilados não estarão disponíveis no momento da inicialização.

    
por 05.01.2016 / 14:12
1

A descoberta de dispositivos USB é um processo assíncrono há alguns anos. Embora você possa ter todos os drivers compilados e sua captura de tela mostrar seu dispositivo de armazenamento USB sendo enumerado, suspeito que o kernel esteja tentando montar o sistema de arquivos raiz antes que o driver de armazenamento em massa USB termine de inicializar.

Sua configuração do grub não parece especificar o carregamento de um initramfs.

Apesar de eu não poder te aconselhar sobre especificidades do gentoo, eu espero que o sistema Debian que eu uso possa ser similar o suficiente para ajudá-lo a encontrar a resposta correta. No Debian, os scripts initramfs bloqueiam o processo de inicialização até que o dispositivo de bloco necessário esteja disponível para ser montado.

Para o melhor do meu conhecimento, no Debian, um dos principais scripts initramfs, / scripts / local, possui a lógica necessária para iniciar o udev e esperar que o dispositivo raiz seja enumerado. Especificamente, refiro-me à função local_device_setup ().

Veja aqui, na linha 68: link

Eu imagino que o gentoo tem algum sistema análogo?

Boa sorte!

    
por 05.01.2016 / 23:25
1

Olhando a configuração do seu kernel, parece que você ativou tudo que um sistema moderno precisaria para inicializar sem um initrd, mas você está usando um computador mais antigo; Eu notei que na sua saída lshw você tem uma ponte ISA e uma CPU Pentium M 1.4.

Meu palpite é que você está sentindo falta de uma opção PATA como CONFIG_PATA_MPIIX ou ATA_GENERIC ou PATA_LEGACY, mas, em vez de jogar o jogo de adivinhação, aqui está o que eu faria:

inicialize seu sistema debian com seu drive USB conectado.
lsmod
Veja o que você ainda precisa adicionar à sua configuração de kernel (= y) para colocá-lo em execução ou postar a saída e talvez possamos lhe dar algumas dicas.

Alternativamente, use este site, link e cole os resultados de:% lspci -n

Veja como eu normalmente configuro os kernels no Gentoo:

  1. inicialize um ArchLinux USB e lsmod
  2. copie a última configuração do kernel do Slackware, como http://mirrors4.kernel.org/slackware/slackware64-current/source/k/config-x86_64/config-generic-4.1.15.x64

    O Slackware é similar ao Gentoo em que nenhum dos dois usa o systemd (o Gentoo não faz por padrão), eles usam versões do kernel de versões de longo prazo, e eu tive boa sorte com suas configurações. Genérico é aquele que constrói tudo o que eles acham que você vai precisar como = y e coisas opcionais como = m, enorme constrói tudo como = y (o que é quase garantido que funciona, mas dá a você um kernel muito inchado).
  3. crie o oldconfig
  4. Defina EXT4 = y e quaisquer outros módulos do sistema de arquivos (por algum motivo, o Slackware nem sempre o ativa).
  5. Assegure-se de ter os módulos configurados para = y no Guia de Configuração do Kernel do Gentoo
  6. Defina os módulos de lsmod = y, exceto os módulos ALSA e Wifi.
  7. Selecione o tipo de processador correto em Tipo de processador e Recursos- > Família de processadores
  8. Conclua a instalação.

Se ainda não funcionar, meu palpite é que o drive está pegando o / dev / sda no Debian, mas outra coisa (/ dev / sdb talvez) no Gentoo. A maneira mais fácil de corrigir isso é usar UUID = em / etc / fstab e PARTUUID = nos argumentos do gerenciador de inicialização que você está passando para o kernel. Você pode encontrar o PARTUID da saída blkid.

    
por 08.01.2016 / 03:47