make isoimage завершается с ошибкой 160

Я пытаюсь собрать новое ядро ​​(подробнее позже) для использования в загрузке 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$

Более подробная информация .. Я задаю вопрос не на том форуме ... Ссылка на то, почему я пытаюсь собрать ядро ​​ Я начал с живого ISO-образа Clonezilla. Это не dhcp при загрузке pxe. Кто-то предположил, что проблема в ядре. Так вот где я нахожусь. При создании make .config я обнаружил параметры, позволяющие включить поддержку dhcp в автоконфигурации IP: ядра, так что это может меня сбить с толку. Итак, когда я начал создавать iso с помощью make isoimage, именно тогда он потерпел неудачу, и вот где я сейчас нахожусь.

Обновление: Я добавил несколько эхо в скрипт для диагностики. Похоже, что он не находит 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$

0
19.07.2017, 23:00
1 ответ

Думаю, это сработает, если вы загрузите и используете syslinux вместо make изообраз. См. «Как создать загрузочный компакт-диск с помощью ISOLINUX?» для получения дополнительной информации. Также, в зависимости от вашего дистрибутива, вы можете использовать genisoimageвместо mkisofs(хотя варианты практически такие же).

В вашем дистрибутиве может быть настроенный syslinux, который отличается от ожидаемого. Известно, например, что Ubuntu делает такие вещи...

0
28.01.2020, 04:43

Теги

Похожие вопросы