- ベストアンサー
カーネル再構築でのエラーの要因と対処方法
- TurboLinux10Desktopでカーネルの再構築を実行したところ、起動時に「Error 13 :Invalid or unsupported executable format」というエラーが出ました。このエラーの原因として、今回のxconfigによるパラメータではOSが起動できない可能性があります。また、再構築手順にはいくつかの間違いが見受けられます。具体的には、xconfigの前に./SetupKernelSource.sh i386を実行せずに設定を行ったため、必要なパラメータが正しく設定されていなかった可能性があります。上記の要点を踏まえ、再構築手順を改めて実施することをお勧めします。
- カーネル再構築時にTurboLinux10Desktopで「Error 13 :Invalid or unsupported executable format」というエラーが発生しました。このエラーの原因として、xconfigによるパラメータの設定が正しく行われていない可能性が考えられます。具体的には、USB関連の項目にチェックを入れるだけでなく、他の必要なパラメータも設定する必要があります。また、再構築手順には誤りがあります。例えば、xconfigの前に./SetupKernelSource.sh i386を実行することが必要です。これらの要点を修正し、再度再構築を行うことをおすすめします。
- TurboLinux10Desktopでカーネルの再構築を行ったところ、起動時に「Error 13 :Invalid or unsupported executable format」というエラーが発生しました。このエラーは、xconfigによるパラメータの設定が正しく行われていないことが原因と考えられます。具体的には、USB関連の項目にチェックを入れるだけではなく、他の必要なパラメータも設定する必要があります。また、再構築手順にはいくつかの間違いがあります。例えば、xconfigの前に./SetupKernelSource.sh i386を実行することが必要です。これらの問題に対処するため、再構築手順を改めて行うことをおすすめします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
カーネルの再構築では起動できなくなる場合が多々あるので 旧カーネルイメージで起動できるようにしておく必要があります。 kernel-2.6系ならば、 # make xconfig # make bzImage && make modules && make modules_install 現在のイメージを保存する # cp -i /boot/vmlinuz /boot/vmlinuz.old # cp -i /boot/System.map /boot/System.map.old 新しいカーネルを配置 # cp -i arch/i386/boot/bzImage /boot/vmlinuz # cp -i System.map /boot/System.map とし、vmlinuz と vmlinuz.old で起動するエントリを grub.conf に記述する。 cpの行の部分はmake installで同じことを行っていますが、 何回か再構築を繰り返すと起動できないイメージをvmlinuz.oldにコピーしてしまう可能性があります。 新しいカーネルを vmlinuz にコピーしたあとvmlinuz_usb にリンクして、 vmlinuzとvmlinuz_usbを記述する意味が全くわかりません。 どちらも同じものが起動するのではないでしょうか??? /usr/src/linux/vmlinux については、 /usr/src/linux/REAMDE を読んでください。
その他の回答 (1)
- masa19
- ベストアンサー率75% (22/29)
起動するカーネルイメージが違うのでしょう。 make bzImage で作成されるカーネルイメージは、 /usr/src/linux/arch/i386/boot/bzImage にできているはずので、 # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz とするか、 # make install を実行したのならば、すでに /boot/vmlinuz にコピーされていると思います。 make -n install でインストール先を確認してみてください あとは、/dev/hda1 は /boot にマウントされているのでしょうか? /dev/hda1 が / にマウントされている場合は、 grub.conf は、 kernel (hd0,0)/boot/vmlinuz_usb になると思います。
お礼
回答ありがとうございます。 起動しました! cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz後、 vmlinuzへリンクを張り、それをgrub.confに書き込んだところ、起動しました。 いじった箇所はほんの一部なので変化はわかりませんが。 make -n installの意味はわかりませんでした。 man make で調べたところ「make を実行せずに内容を表示」などと書かれており、 実行したら色々表示されていましたが、多すぎて何がなんだか…。 /usr/src/linuxにてmake install後、 同ディレクトリにできたvmlinuxを使って起動できなかったのですが、 これは全く関係ないのでしょうか? 再構築の手順としては、 cd /usr/src/linux make xconfig → .config作成 make dep make clean make bzImage make modules make modules_install make install cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz cd /boot ln -fs vmlinuz vmlinuz_usb ln -fs initrd-2.6.0.img initrd_usb grub.conf修正、でOKということでしょうか。
補足
System.mapも必要なんですね、これは上書きされてしまいました。 たまたま今回は起動したから助かりましたが、以降気をつけます。 >vmlinuzとvmlinuz_usbを記述する意味が全くわかりません。 申し訳ありません、記述ミスです。 実際に行った操作は、 make install cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz_sisaku cd /boot ln -fs vmlinuz_sisaku vmlinuz_usb ln -fs initrd-2.6.0.img initrd_usb で、bzImageは/bootのvmlinuzに上書きしていません。 ls -l で見ると、 vmlinuz -> vmlinuz-2.6.0 vmlinuz_usb -> vmlinuz_sisaku と表示されます。 この後grub.confを修正しました。 インストール時に書かれていた(=起動することが確認されている) title turbolinux kernel (hd0,0)/vmlinuz root=0303 initrd (hd0,0)/initrd の下に、今回作ったモノ(カーネル?)を、 title turbolinux_usb kernel (hd0,0)/vmlinuz_usb root=0303 initrd (hd0,0)/initrd_usb と追記しました。 ln -fs~、でリンクを張る意味はいまいちわからないのですが、 そういうものなんだろう、程度の意識で行いました。