Como corrigir o boot no prompt initramfs e “mount: não pode ler '/ etc / fstab': Nenhum arquivo ou diretório” e “No init found”?

23

Instalando um novo sistema usando um disco particionado GPT dedicado a uma única partição, ext4 formatado, extlinux (versão 4.05) como bootloader, Ubuntu Core versão 13.10 amd64 como rootfs, e Ubuntu linux-image-3.11.0-18-genérico como kernel, e extlinux-update para gerar a configuração do bootloader.

O resultado após a reinicialização (ainda dentro de uma máquina virtual baseada no KVM) é um prompt (initramfs) e essas mensagens:

mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

BusyBox é v1.20.2.

Regressão:

  • o sistema de arquivos foi verificado com fsck.ext4

Verificar existência de raiz

(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory

Argumento de inicialização raiz

(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic

Verifique os módulos carregados

(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000

/ conteúdo da pasta de inicialização

$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root  163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root    4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic

Como fazer esse sistema inicializar com o prompt bash padrão esperado?

    
por Pro Backup 18.03.2014 / 12:53

3 respostas

9

Modifique seu parâmetro de inicialização do kernel configurando a opção root=/dev/sdaX . sdaX seria sua partição / ou root . Ao inicializar da próxima vez, você verá que o initramfs tenta montar a partição antes de tentar acessar /etc/fstab e montar os sistemas de arquivos.

Veja a pergunta " O initramfs usa o / etc / fstab? " para mais detalhes.

    
por 21.03.2014 / 22:21
9

O que você precisa entender sobre initramfs é que é um sistema de arquivos. Já que o kernel 2.6 é, basicamente, o único sistema de arquivos imposto pelo kernel (deixando de lado o VFS, que é sem dúvida também um sistema de arquivos) em sua máquina. Seu initramfs image é uma imagem de disco.

Dentro do seu initramfs image estarão os arquivos que a sua distribuição tenha decidido que eram cruciais o suficiente para exigir antes que seu disco raiz fosse encontrado. Normalmente, é o Busybox e os módulos do kernel que você precisa para encontrar e montar o seu dispositivo root. Isso não está funcionando para você.

Não há mistério real aqui, considerando todas as coisas. Se você puder encontrar um caminho ao redor de um terminal, você pode navegar pelo initramfs. Mas primeiro você precisa desmistificá-lo.

Em primeiro lugar e mais uma vez - isso é apenas /. É raiz do Linux fazendo coisas do tipo raiz do Linux. Na verdade, se estiver em um arquivo separado do seu kernel, ele já é seu segundo dispositivo raiz. Todo kernel do Linux contém um basicamente vazio / próprio que primeiro monta antes de puxar seu initramfs.

O que é mais initramfs é a raiz real . É onde o kernel do Linux inicializa o espaço do usuário, executando init e, posteriormente, renunciando a toda a responsabilidade por qualquer problema que você possa encontrar a partir de então. O seu init parece ser o Busybox, assim como muitos, o que significa que controlar suas ações deve ser tão simples quanto editar os scripts de shell que os acompanham.

Então, por que o erro de não encontrar init? ? Quase definitivamente, isso está se referindo a um programa chamado init , que é o seu init foi instruído via shell script para se executar em.

O mais impressionante para mim é que os pseudo sistemas de arquivos do kernel - dev sys proc - não são montados. Isso é muito problemático ou uma pista muito boa. Você menciona o KVM que me leva a questionar as capacidades do kernel, mas antes de irmos por essa estrada escura e esburacada, podemos primeiro tentar algo diferente?

cd /root || mkdir /root

Parece-me que a mensagem de erro é repetida:

No such file or directory

Se você não precisar reconstruir sua imagem initramfs . Inicialize em um disco ao vivo para fazer isso e execute qualquer ferramenta que sua distribuição forneça para atingir esse objetivo. Ah, e por favor assegure que este disco é carregado no modo EFI .

Então aqui está a única coisa verdadeiramente fora do comum sobre initramfs - switchroot.

O kernel do Linux fornece um syscall muito especial destinado ao início do espaço do usuário e ao lidar com a mudança de initramfs para o seu dispositivo de disco raiz. Ele funciona primeiro montando seu disco raiz em um ponto de montagem em initramfs e, em seguida, dinamizando o sistema de arquivos raiz nele. Eu suponho que seu ponto de montagem de destino initramfs's é root baseado no modo como ele fica reclamando disso. Por que não ter certeza de que está lá?

Para uma investigação mais detalhada, você precisará se tornar um pouco mais impiedoso. Ajuste seu bootloader para passar ...

init=/bin/sh

... como um parâmetro do kernel.

    
por 22.03.2014 / 04:51
-1

Eu tive o mesmo problema. O que Alex disse está correto. Primeiro eu ajustei meu fstab, mas isso não ajudou. Então, eu chequei meu grub. Se você tem a possibilidade de acessar o menu do grub.

  • Selecione o Linux, o que você deseja iniciar e o que causa problemas.
  • Pressione 'e' e procure por 'boot_image' ou 'boot ... root'.
  • Verifique o ' uuid '.
  • No meu caso, estava errado. Eu faço uma imagem no initramfs digitando 'blkid' e pego o uuid em qual partição meu linux está instalado.
  • Passado o uuid correto de blkid para grub - > boot_image.

Isso resolveu meu problema. Após a reinicialização, meu linux precisou de mais tempo para começar a verificar o disco. Mas agora funciona de novo.

Espero poder ajudar você.

Atenciosamente

    
por 08.03.2018 / 23:10