ソースからCentos-6/elrepo 3.10.19カーネルをビルドした後、「カーネルパニック - 非同期」が発生する

ソースからCentos-6/elrepo 3.10.19カーネルをビルドした後、「カーネルパニック - 非同期」が発生する

ソースからCentos-6/elrepo 3.10.19カーネルを再構築する必要があります。

背景:GVisionタッチスクリーンドライバは3.8以降のカーネルと互換性がなく、タッチスクリーンドライバとの競合を避けるためにコードを追加するにはソースコードパッチが必要です。最初のステップは、GVisionパッチを適用する前に正しく動作するソースから修正されていないドライバを構築することでした。

次のようにビルドすると、カーネルが正しく起動しません(手動で入力しました!)。

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

これがカーネルを構築する方法です。https://fedoraproject.org/wiki/BuildingUpstreamKernel

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

すっきりと終わりました。

/bootでは、元のファイルと新しいvmlinuzファイルとSystem.mapファイルのサイズは同じですが(md5sumは異なります)、新しいinitramfsははるかに小さいです。

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

どのステップを見逃していますか?

====解決済み====

ここで重要な問題は、私が作成したinitramfsにもともとelrepo配布initramfsのデータが不足していることです。 @terdonが指摘したように、成功したリリースには明らかに重要なものがありません。

「make install」で生成されたinitramfsがなぜ機能しないのかわかりません。これについて詳しく調べていない。

initramfsを再生成します。

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

新しいinitramfsを使用すると、カーネルがきれいに起動します。

詳しくは、/boot の構成ファイルが elrepo アーカイブから抽出した構成ファイルと同じであることがわかったので、elrepo 構成ファイルの wget を削除できました。

ソースからビルドするきちんとしたプロセスにより、GVisionタッチスクリーンが正しく機能するようにソースコードパッチを適用できました。 GVisionの指示は少し混乱し、間違った部分があります。ベンダーにフィードバックを提供して文書を更新しました。

ベストアンサー1

おすすめ記事