制作 isoimage 失败,出现 160 错误

制作 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$

更多信息..我在错误的论坛上发布了问题...链接到我为什么要尝试构建内核 我从实时 Clonezilla iso 开始。 pxe 启动时不会使用 dhcp。有人建议内核可能是问题所在。这就是我现在的处境。在制作 make .config 时,我找到了在 IP: 内核级自动配置下启用 dhcp 支持的参数,这样可能会让我克服困难。因此,当我开始使用 make isoimage 构建 iso 时,它失败了,这就是我当前所在的位置。

更新:我在脚本中添加了一些回显以进行一些诊断。看起来好像没有找到 isolinux.bin 或 ldlinux.c32。如果我有更多的经验,我可能会看到发生了什么,我想自从我看到完成后,那部分就完成了。现在我明白了逻辑,通过点击最后,那就抛出了 exit 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 会做这样的事情......

相关内容