pxeブートに使用する新しいカーネル(後で詳しく説明する)を構築しようとしています。 makeを実行したので、必要なファイルを抽出できるようにmake isoimageを実行しようとしています。私の試みは次のとおりです。レシピで必要な事項のアイデアはありますか?
bradmin@LinuxDebianLive:/home/kernelbuild/linux-4.12.2$ sudo make isoimage
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CHK include/generated/bounds.h
CHK include/generated/timeconst.h
CHK include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CHK scripts/mod/devicetable-offsets.h
CHK include/generated/compile.h
SKIPPED include/generated/compile.h
LD arch/x86/boot/compressed/vmlinux
ZOFFSET arch/x86/boot/zoffset.h
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
OBJCOPY arch/x86/boot/vmlinux.bin
BUILD arch/x86/boot/bzImage
Setup is 17692 bytes (padded to 17920 bytes).
System is 4079 kB
CRC 55a16ccf
Kernel: arch/x86/boot/bzImage is ready (#2)
rm -rf arch/x86/boot/isoimage
mkdir arch/x86/boot/isoimage
for i in lib lib64 share end ; do \
if [ -f /usr/$i/syslinux/isolinux.bin ] ; then \
cp /usr/$i/syslinux/isolinux.bin arch/x86/boot/isoimage ; \
if [ -f /usr/$i/syslinux/ldlinux.c32 ]; then \
cp /usr/$i/syslinux/ldlinux.c32 arch/x86/boot/isoimage ; \
fi ; \
break ; \
fi ; \
if [ $i = end ] ; then exit 1 ; fi ; \
done
arch/x86/boot/Makefile:160: recipe for target 'isoimage' failed
make[1]: *** [isoimage] Error 1
arch/x86/Makefile:286: recipe for target 'isoimage' failed
make: *** [isoimage] Error 2
bradmin@LinuxDebianLive:/home/kernelbuild/linux-4.12.2$
詳細情報. 間違ったフォーラムに質問を投稿しました。カーネルを構築する理由へのリンク 私はライブClonezilla isoで始まりました。 pxeは起動時にdhcpを使用しません。何人かの人々はカーネルが問題であるかもしれないことを提案した。これが私が今いるところです。 make .configの作成中にIPでdhcpサポートを有効にするパラメータであるカーネルレベルの自動設定が見つかりました。これは困難を克服しました。そのため、make isoimageを使用してisoを作成し始めたときに失敗し、それが現在の状態です。
更新:いくつかの診断のためにスクリプトにいくつかのエコーを追加しました。 isolinux.bin または ldlinux.c32 が見つからないようです。経験が多かったら何が起きているのか見られたはずですが、完成したものを見て以来、その部分は完成したようです。最後をクリックすると、終了1(エラー)が発生するロジックがわかります。
スクリプトの変更
isoimage: $(obj)/bzImage
-rm -rf $(obj)/isoimage
mkdir $(obj)/isoimage
echo Start of loop
for i in lib lib64 share end ; do \
echo $$i; \
if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \
cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \
if [ -f /usr/$$i/syslinux/ldlinux.c32 ]; then \
cp /usr/$$i/syslinux/ldlinux.c32 $(obj)/isoimage ; \
fi ; \
break ; \
fi ; \
if [ $$i = end ] ; then echo "(isolinux.bin or ldlinux.c32) not found"; exit 1 ; fi ; \
done
echo start of copy
cp $(obj)/bzImage $(obj)/isoimage/linux
出力:
Kernel: arch/x86/boot/bzImage is ready (#2)
rm -rf arch/x86/boot/isoimage
mkdir arch/x86/boot/isoimage
echo Start of loop
Start of loop
for i in lib lib64 share end ; do \
echo $i; \
if [ -f /usr/$i/syslinux/isolinux.bin ] ; then \
cp /usr/$i/syslinux/isolinux.bin arch/x86/boot/isoimage ; \
if [ -f /usr/$i/syslinux/ldlinux.c32 ]; then \
cp /usr/$i/syslinux/ldlinux.c32 arch/x86/boot/isoimage ; \
fi ; \
break ; \
fi ; \
if [ $i = end ] ; then echo "(isolinux.bin or ldlinux.c32) not found"; exit 1 ; fi ; \
done
lib
lib64
share
end
(isolinux.bin or ldlinux.c32) not found
arch/x86/boot/Makefile:160: recipe for target 'isoimage' failed
make[1]: *** [isoimage] Error 1
arch/x86/Makefile:286: recipe for target 'isoimage' failed
make: *** [isoimage] Error 2
bradmin@LinuxDebianLive:/home/kernelbuild/linux-4.12.2$
答え1
代わりにsyslinuxをダウンロードしてmake isoimage
使用してください。「ISOLINUXを使って起動可能なCDを作成するには?」より多くの情報を知りたいです。また、ディストリビューションに応じてgenisoimage
代わりに使用することもできますmkisofs
(オプションはまったく同じですが)。
ディストリビューションに予想とは異なるカスタマイズされたsyslinuxがある可能性があります。 Ubuntuはこのようなことをすることが知られています...