Pânico no kernel final não sincronizando memória e sem processos elimináveis

1

Eu tenho em VMWARE um jeito virtual, Lubuntu17-32bit , ele pode rodar facilmente em 500mb RAM (até 300mb é suficiente ). Eu compilei um kernel "linux-4.12.3.tar" e instalei-o dentro da VM, ou seja, Lubuntu. Quando eu reiniciei com o novo kernel estou recebendo:

End kernel panic not syncing out of memory and no killable processes

Eu tive que aumentar a memória RAM para a VM até 1500mb para evitar esse erro e quando o sistema dispara e atinge a área de trabalho, verifiquei o uso de memória é igual ao anterior em torno de 300mb .

Nota: o disco rígido atribuído a essa máquina virtual é sata 40GB .

Então por que toda essa RAM é necessária !! e mais importante, como posso reduzir isso?

Atualização:

Por favor, note pessoal: Eu sou nem dizendo que enfrentei problemas na compilação, problemas na instalação, ou problemas em trabalhar no novo kernel. O único problema está na inicialização do novo kernel que precisa de apenas 1500mb para inicialização e quando a inicialização é concluída e atinge a tela de login e desktop o sistema operacional (Lubuntu) todos juntos precisa de menos de 300MB. Então, por que esse 1500mb e como reduzi-lo?

Resposta:

O arquivo /boot/initrd.img foi o problema, ele tem um tamanho enorme. Para reduzir seu tamanho:

cd /lib/modules/<version>
sudo find . -name *.ko -exec strip --strip-unneeded {} +
sudo update-initramfs -c -k <version>

Reinicie

Obrigado pelos caras que apontaram isso.

    
por Mosab Shaheen 17.09.2017 / 16:51

1 resposta

1

Eu acho que o kernel panic ocorreu devido a uma das seguintes razões ou pode ser mais

1. Compilar o kernel é basicamente instalar o kernel, então ao invés de substituir o kernel antigo, ele fica preso em um impasse onde nenhum dos kernels são capazes de usar a memória, portanto, o pânico.

  1. O novo kernel entrou em algum tipo de loop, pense assim: "ele tentou se chamar" ou simplesmente se tornou um tipo de fork fork, assim, o erro de falta de memória e o pânico.

  2. A partição alocada para o novo kernel não foi suficiente. Tente fazer uma partição diferente, monte-a, associe-a para que outros programas possam executá-la. Agora compilar novamente usando o gcc e chains (linker)

  3. Em vez de substituir o kernel, ele se matou.

  4. Se você extrair um tarball do kernel que tenha inicialmente 300 mb de tamanho, após a extração, ou seja, "tar -xvf kernel.zip", ele se tornará um gigante de 900 mb de tamanho. Após a instalação de pacotes como o gcc, g ++, gnu-make, etc e compilando-o, o kernel compilado pode se tornar um espaço de 2 GB de espaço. Portanto, se a partição não tiver muito espaço livre de memória, poderá ocorrer.

  5. Você não forneceu uma área de troca. Como construir um kernel é um recurso intensivo, ele precisa de uma boa quantidade de espaço, uma troca e uma ram.

  6. Durante a instalação, ele cria subpasta como / mount, / proc, / boot, / dev etc. Para que cada parte receba a respetiva localização, a qual algumas falhou devido a falta de memória.

  7. Normalmente, um kernel é compilado no ambiente chroot like, mas se o chroot não estiver configurado corretamente, ele pode falhar em obter um recurso como proc, mnt, dev e, assim, o pânico.

    Se você ainda precisar de ajuda, dê uma olhada nesses dois lugares # 1 equipe do kernel para o ubuntu , # 2 equipe de depuração do kernel para o Ubuntu

Nova atualização:

Como sua atualização parece implicar em compilar o kernel funcionou.

Isso só poderia significar que você compilou todo o kernel.

Normalmente, um kernel tem tudo o que pode ser importante para um, mas um desperdício de espaço e tempo para outro.

Então, você pode usar os novos kernels do kernel do ubuntu . No meu caso, sua v4.14-rc1.Download do kernel que corresponde ao seu arco.  Eu tenho x86_64, então eu escolheria 64 bits um. Eu faria o download desses

  • linux-headers-4.14.0-041400rc1_4.14.0-041400rc1.201709162031_all.deb
  • linux-headers-4.14.0-041400rc1-generic_4.14.0-041400rc1.201709162031_amd64.deb
    • linux-image-4.14.0-041400rc1-generic_4.14.0-041400rc1.201709162031_amd64.deb

e, em seguida, emitiria "sudo dpkg -i * .deb" para compilar tudo.

Agora parece que o kernel que você compilou é de mais de 1GB, portanto, está usando mais recursos.

O kernel do ubuntu tem muitas partes separadas por seu tamanho reduzido e usa compressão pesada.

Seu kernel pode ter tudo nele e pode ser usado por IOT, servidores, desktop e pode ser compatível com o braço 64, amd64, etc, pois ele pode ter todos os módulos presentes para executá-los.

Para reduzi-lo, você precisa remover todas as partes inúteis do seu caso, como drivers de hardware de que nunca ouviu falar. Removendo as partes do servidor sempre que possível.

Ótimo trabalho, já que a compilação do kernel é uma dor de cabeça, pois usa recursos intensivos, tempo e paciência

Atualização 2:

Como você mencionou que o seu arquivo initrd.img era enorme. Você poderia pelo menos postar uma captura de tela do seu / boot / ou no terminal usar "ls -l" para listar o tamanho de tudo.

O kernel é o coração de qualquer distribuição Linux. É muito complexo, então, sem saber de nada, é possível adivinhar qual é o problema.

Eu ainda sugiro que você remova os módulos indesejados do seu kernel e compile-o.

    
por SIDDHARTH 17.09.2017 / 17:39