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.