Instalando um novo sistema usando um disco particionado GPT dedicado a uma única partição, formatada ext4 , extlinux (versão 4.05) como carregador de inicialização, Ubuntu Core versão 13.10 amd64 como rootfs e Ubuntu linux-image-3.11.0-18-generic como kernel, e extlinux-update para gerar a configuração do gerenciador de inicialização.
O resultado após a reinicialização (ainda dentro de uma máquina virtual baseada em KVM) é um prompt (initramfs) e estas 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.
O BusyBox é a v1.20.2.
Regressão:
- o sistema de arquivos foi verificado com
fsck.ext4
Verifique a existência da 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 no prompt padrão esperado do bash?
Respostas:
Modifique seu parâmetro de inicialização do kernel, definindo a
root=/dev/sdaX
opçãosdaX
seria seu/
ouroot
partição. Ao inicializar na próxima vez, você verá queinitramfs
tenta montar a partição antes de tentar acessar/etc/fstab
e montar os sistemas de arquivos.Veja a pergunta " O initramfs usa / etc / fstab? " Para mais detalhes.
fonte
root=/dev/sdaX
melhora a situação, não há mais um(initramfs)
, mas umbash
prompt de login em seu lugar.root=/dev/sdaX
à inicialização do kernel, preciso atualizar/mnt/etc/default/extlinux
e mudarEXTLINUX_ROOT=""
para o sugeridoEXTLINUX_ROOT="/dev/sdaX"
e executarextlinux-update
novamente.O que você precisa entender
initramfs
é que é um sistema de arquivos. Desde kernel 2.6 que é, basicamente, o sistema de arquivos único kernel-imposto (deixando de lado VFS, que é sem dúvida também um sistema de arquivos) em sua máquina. Vocêinitramfs image
é uma imagem de disco.Dentro do seu
initramfs image
, existem os arquivos que sua distribuição decidiu serem cruciais o suficiente para exigir antes que seu disco raiz seja encontrado. Geralmente é o Busybox e quaisquer módulos do kernel que você precisa para encontrar e montar seu dispositivo raiz. Isso não está funcionando para você.Não há nenhum mistério real aqui, considerando todas as coisas. Se você encontrar o caminho de um prompt de terminal, poderá navegar no menu
initramfs.
Mas primeiro você precisa desmistificá-lo.Antes de mais nada e mais uma vez - isto é apenas
/.
a raiz do Linux fazendo coisas do tipo raiz do Linux. De fato, se ele estiver em um arquivo separado do seu kernel, na verdade já é o seu segundo dispositivo raiz. Todo kernel Linux contém basicamente um vazio/
próprio, que é montado antes de puxar o seuinitramfs.
O que é mais
initramfs
é a verdadeira raiz. É onde o kernel do Linux inicializa o espaço do usuário executandoinit
e renunciando posteriormente a toda a responsabilidade por qualquer problema que você possa encontrar posteriormente. Seuinit
parece ser o Busybox, como muitos, o que significa que o controle de suas ações deve ser tão simples quanto editar os scripts de shell que o acompanham.Então, por que o erro de não encontrar
init?
quase definitivamente isso se refere a um programa chamado noinit
qual o seu realinit
foi instruído via shell script a executar-se.O mais impressionante para mim é que os pseudo sistemas de arquivos do kernel -
dev sys proc
- não são montados. Isso é muito preocupante ou uma pista muito boa. Você mencionou o KVM, o que me leva a questionar os recursos do kernel, mas antes de seguirmos por esse caminho escuro e irregular, podemos primeiro tentar outra coisa?Parece-me que a mensagem de erro é repetidamente:
Na falta de reconstrução da sua
initramfs
imagem. Inicialize em um disco ao vivo para fazer isso e execute qualquer ferramenta que sua distribuição for fornecida para atingir esse objetivo. Ah, e verifique se este disco ativo está 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 espaço do usuário inicial e à movimentação do
initramfs
seu dispositivo de disco raiz. Ele funciona primeiro montando seu disco raiz em um ponto de montageminitramfs
e, em seguida, girando o sistema de arquivos raiz para ele. Presumo que seuinitramfs's
ponto de montagem alvo sejaroot
baseado na maneira como ele continua gemendo. Por que não ter certeza de que está lá?Para uma investigação mais aprofundada, você precisará ficar um pouco mais corajoso. Ajuste o seu carregador de inicialização para passar ...
... como um parâmetro do kernel.
fonte
efibootmgr
na sua solicitação na sua máquina virtual.Eu tive o mesmo problema. O que Alex disse está correto. Primeiro eu ajustei meu fstab, mas isso não ajudou. Então, eu verifiquei meu grub. Se você tiver a possibilidade de acessar o menu grub.
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 novamente.
Espero poder ajudá-lo.
Saudações
fonte