Você está tentando inicializar sem um initramfs. Você precisa criar um com update-initramfs -c -k 3.11.1
e, em seguida, update-grub
.
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
}
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.
Tags linux linux-kernel