Por que a inicialização do kernel está falhando?

2

Estou tentando inicializar a partir da imagem do kernel 3.11.1 no meu sistema com o Ubuntu 12.04 (kernel 3.2.0-53)

Eu usei make defconfig e, em seguida, compilei, coloquei a imagem em /boot , atualizei o GRUB e, em seguida, reinicializei.

Na reinicialização, recebo as seguintes mensagens:

EXT4-fs (sda1) : couldnt mount as ext3 due to feature incompatibilities
EXT4-fs (sda1) : couldnt mount as ext2 due to feature incompatibilities
init : unable to create device: /dev/kmsg
Root filesystem check failed

O que deu errado?

Se o kernel souber que o sistema de arquivos é ext4, o que eu acho que é devido ao EXT4-fs (sda1) , por que ele está sendo montado como ext3 / 2?

/etc/fstab :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=7be51edc-99ae-4e6e-b863-2bef9e4adb22 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sda4 during installation
UUID=e4b936e5-e1c5-4146-9710-03b0d6dfdea2 /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=10d012d1-bbba-43f4-8e8a-8aa493435acb none            swap    sw              0       0

# Move /tmp to RAM
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0

grub.cfg entrada para imagem:

menuentry 'Ubuntu, with Linux 3.11.1' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 7be51edc-99ae-4e6e-b863-2bef9e4adb22
    linux   /boot/vmlinuz-3.11.1 root=/dev/sda1 ro   quiet splash $vt_handoff
}
menuentry 'Ubuntu, with Linux 3.11.1 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 7be51edc-99ae-4e6e-b863-2bef9e4adb22
    echo    'Loading Linux 3.11.1 ...'
    linux   /boot/vmlinuz-3.11.1 root=/dev/sda1 ro recovery nomodeset 
}
    
por asheeshr 17.09.2013 / 16:26

2 respostas

4

Você está tentando inicializar sem um initramfs. Você precisa criar um com update-initramfs -c -k 3.11.1 e, em seguida, update-grub .

    
por 18.09.2013 / 15:58
1

Parece-me que você baixou as fontes do kernel Linux do kernel.org ou em algum lugar e compilou você mesmo, sem tirar proveito de nenhum dos recursos da sua distribuição (como empacotamento).

É certamente possível fazer isso, mas é muito mais trabalhoso do que fazê-lo da maneira mais fácil.

Infelizmente, o kernel-ppa do launchpad do ubuntu não parece mais ser mantido, caso contrário eu o encaminho para as respostas em .

Em vez disso, vou encaminhá-lo para link que contém instruções para baixar e instalar pacotes pré-compilados do kernel 3.11.1 para o Ubuntu. Eu executo o debian ao invés do ubuntu, então eu não testei isso sozinho, mas a página afirma que isso funcionará para o Ubuntu 12.04, 12.10 e 13.10, e as instruções parecem corretas.

Note que o kernel-ppa em ubuntu.com é um repositório não oficial ou semi-oficial. O domínio é de propriedade da Canonical, mas pacotes não oficiais do kernel podem não ser suportados. Nem os kernels auto-compilados.

Para resumir:

ARCH=$(dpkg --print-architecture)
wget "http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.1-saucy/linux-headers-3.11.1-031101-generic_3.11.1-031101.201309141102_$ARCH.deb"

wget "http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.1-saucy/linux-headers-3.11.1-031101_3.11.1-031101.201309141102_all.deb"

wget "http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.1-saucy/linux-image-3.11.1-031101-generic_3.11.1-031101.201309141102_$ARCH.deb"

sudo dpkg -iBE linux-headers-3.11.1*.deb linux-image-3.11.1*.deb

Se você preferir compilar seu próprio kernel ao invés de baixar um pacote pré-compilado, sugiro strongmente que você procure pelos pacotes fonte do ubuntu para 3.11.1, descompacte as fontes com dpkg-source , instale as dependências de compilação, faça seja qual for o ajuste de configuração do kernel que você precisar, e construa os seus próprios pacotes com dpkg-builpackage ou similar.

Assim como com outros softwares, um kernel compilado em pacotes provavelmente causará muito menos problemas e perdas do que os não-empacotados ... quase sempre é melhor instalar um pacote que make && make install , e até mesmo quando você quer compilar da fonte é melhor compilar a fonte empacotada.

    
por 18.09.2013 / 13:51