“Kernel panic - não sincronizando” depois de construir o kernel Centos-6 / elrepo 3.10.19 a partir da fonte

2

Eu preciso reconstruir o kernel Centos-6 / elrepo 3.10.19 da fonte.

Histórico: os drivers da tela de toque GVision são incompatíveis com os kernels > 3.8 e exigir patches de código-fonte para adicionar código para evitar conflitos com seus drivers de tela sensível ao toque. Meu primeiro passo é criar um driver não modificado a partir da fonte que funcione antes de tentar aplicar os patches do GVision.

Quando eu construo o kernel como mencionado abaixo, o kernel falha ao inicializar apropriadamente com (mão digitada!):

Kernel panic - not syncing: Attempted to kill init! exitcode=0x000000100
<some register dumps>
dump_stack
panic
remote_function+0x38/0x40
find_new_reaper_0x512/0x160
forget_original_parent+0x34/0x250
perf_cgroup_switch+0x160/0x160
exit_notify+0x16/0x120
do_exit+0x1b4/0x400
do_group_exit_0x3e/0xb0
SyS_exit_group_0x3e/0xb0
sysenter_do_call+0x12/0x28
drm_kms_helper: panic occurred, swithcing back to text console

Veja como eu construí o kernel, guiado pelo link

Get config file elrepo used:
- First, get the config files that were used to build the elrepo kernel
- - wget http://elrepo.org/linux/kernel/el6/SRPMS/kernel-t-3.10.19-1.el6.elrepo.nosrc.rpm
- - rpm -i kernel-lt-3.10.19-1.el6.elrepo.nosrc.rpm
The key thing that you want from here is rpmbuild/SOURCES/config-3.10.19-i686
Next, get the kernel source
- wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.19.tar.xz
Change perms on /usr/src/kernels
- chmod o+w /usr/src/kernels

Then, as non-root
- cd /usr/src/kernels
- tar xJf ~/linux-3-10-19.tar.xz
- cd linux-3-10-19
- copy the config file from the rpmbuild/SOURCES/config-3.10.19-i686 to ./.config
- edit the Makefile to make a unique kernel name with an extesion in the variable "EXTRAVERSION"
- make bzImage && make modules

As root
- make modules_install
- make install

Tudo isso é concluído com perfeição

Em / boot, o original e o recém-construído vmlinuz e System.map são o mesmo tamanho de arquivo (mas md5sum diferente) e o initramfs recém-construído é muito menor.

drwxr-xr-x 3 root root     1024 Nov 11 18:23 boot
-rw-r--r-- 1 root root   142933 Nov 12 23:22 config-3.10.19-1.el6.elrepo.i686
drwxr-xr-x 3 root root     1024 Aug  5  2011 efi
drwxr-xr-x 2 root root     1024 Nov 14 20:07 grub
-rw-r--r-- 1 root root 16589977 Nov 14 14:16 initramfs-3.10.19-1.el6.elrepo.i686.img
-rw-r--r-- 1 root root  4645843 Nov 14 20:07 initramfs-3.10.19-MDV1.img
drwx------ 2 root root    12288 Aug  5  2011 lost+found
-rw-r--r-- 1 root root   254858 Nov 12 23:23 symvers-3.10.19-1.el6.elrepo.i686.gz
lrwxrwxrwx 1 root root       29 Nov 14 20:06 System.map -> /boot/System.map-3.10.19-MDV1
-rw-r--r-- 1 root root  2342208 Nov 12 23:22 System.map-3.10.19-1.el6.elrepo.i686
-rw-r--r-- 1 root root  2342208 Nov 14 20:06 System.map-3.10.19-MDV1
lrwxrwxrwx 1 root root       26 Nov 14 20:06 vmlinuz -> /boot/vmlinuz-3.10.19-MDV1
-rwxr-xr-x 1 root root  4868224 Nov 12 23:22 vmlinuz-3.10.19-1.el6.elrepo.i686
-rw-r--r-- 1 root root  4868224 Nov 14 20:06 vmlinuz-3.10.19-MDV1

Qual passo estou faltando?

==== Solucionado ====

O principal problema aqui foi que o initramfs que eu gerava estava faltando muito material que estava no initramfs original elrepo. Como @terdon apontou algo está faltando lá que é obviamente essencial para uma inicialização bem-sucedida.

Eu não sei por que os initramfs criados por "make install" não funcionaram - eu não entrei nisso.

Para recriar o initramfs:

cd /boot
dracut -f initramfs-3.10.19.el6.elrepo.i686-MDV1.img 3.10.19.el6.elrepo.i686-MDV1

Com o novo initramfs, este kernel inicializa de forma limpa.

Enquanto investigava isto descobri que o arquivo de configuração em / boot era exatamente o mesmo que eu tinha extraído do arquivo elrepo, então o wget para o arquivo de configuração do elrepo pode ser eliminado.

Com um processo limpo para criar a partir do código-fonte, pude aplicar os patches de código-fonte para fazer a tela de toque do GVision funcionar. As instruções do GVision são um pouco confusas e, em alguns lugares, incorretas, e eu forneci feedback ao fornecedor para atualizar sua documentação.

    
por MikeV 15.11.2013 / 03:41

0 respostas