アプリ版:「スタンプのみでお礼する」機能のリリースについて

TurboLinux10Desktopでカーネルの再構築を実行してみました。
結論から言うと、
kernel (hd0,0)/vmlinuz_usb root=0303
Error 13 :Invalid or unsupported executable format
というエラーが出て起動できませんでした。
このエラーが出そうな要因を教えてください。

インストール時の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
と記述しました。
vmlinuz_usb、initrd_usbは、
日付から見て今回の再構築の過程でできたであろうファイルへのシンボリックリンクです。
grub.confに書かれたもともとのvmlinuz、initrdのリンク先を見て作りました。

再構築時のパラメータの設定はmake xconfigで行い、USB関連の1項目にチェックを入れただけです。
その後のmakeのコマンドは、
http://www.atmarkit.co.jp/flinux/rensai/linuxtip …
を参考にしました。

今回のエラーは、単純に「今回のxconfigによるパラメータではOSは起動できない」という意味なのでしょうか?
make dep ~ make installの間、特にエラーは出ませんでしたが。
make xconfigを開いた時に既に多くのパラメータが設定済みに見えたので、
参考サイトにあるようにxconfigの前に./SetupKernelSource.sh i386を実行しなかったのですが、
これがまずかったのでしょうか?

今回の再構築の手順は以下の通りです。
cd /usr/src/linux
make xconfig
→設定後保存し、.configができた
make dep
make clean
make bzImage
make modules
make modules_install
make install
→/usr/src/linuxにvmlinuxができた
cp vmlinux /boot
/bootを見ると、
initrd-2.6.0.img、System.mapが今日の日付になっていた
ln -fs vmlinux vmlinuz_usb
ln -fs initrd-2.6.0.img initrd_usb
前述したようにgrub.confを書き換えて再起動→Error13

この再構築手順で間違った部分があればそれも教えてください。

A 回答 (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 を読んでください。

この回答への補足

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~、でリンクを張る意味はいまいちわからないのですが、
そういうものなんだろう、程度の意識で行いました。

補足日時:2007/04/27 16:55
    • good
    • 0

起動するカーネルイメージが違うのでしょう。



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
になると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

起動しました!
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ということでしょうか。

お礼日時:2007/04/27 10:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!