Linux编译 |入口点无效

2023-12-04

我正在编译一个linux内核使用 mipsel 工具链。

一切工作正常,除了最后一点指出无效的入口点:

sh: 0: Can't open /arch/mips/boot/tools/entry
rm -f arch/mips/boot/vmlinux.bin.gz
gzip -9 arch/mips/boot/vmlinux.bin
mkimage -A mips -O linux -T kernel -C gzip \
    -a 0x80010000 -e  \
    -n 'Linux-2.6.31.3-g29b45174-dirty' \
    -d arch/mips/boot/vmlinux.bin.gz arch/mips/boot/uImage
mkimage: invalid entry point -n

现在提到了sh: 0: Can't open /arch/mips/boot/tools/entry

所以我检查了该文件,它有以下内容:

#!/bin/sh

# grab the kernel_entry address from the vmlinux elf image
entry=`$1 $2  | grep kernel_entry`

fs=`echo $entry | grep ffffffff`  # check toolchain output

if [ -n "$fs" ]; then
    echo "0x"`$1 $2  | grep kernel_entry | cut -c9- | awk '{print $1}'`
else
    echo "0x"`$1 $2  | grep kernel_entry | cut -c1- | awk '{print $1}'`
fi

现在我知道有些东西正在生成内核入口点,但生成的入口点无效。

Question:到底是什么生成了内核入口点以及可以采取哪些措施来解决该问题?

可以通过以下步骤重现该问题:


编译说明:

$ cd
$ wget https://github.com/steward-fu/a320/releases/download/v1.0/mipsel-4.1.2-nopic.tar.bz2
$ tar xvf mipsel-4.1.2-nopic.tar.bz2
$ sudo mv mipsel-4.1.2-nopic /opt/rg300
$ export PATH=$PATH:/opt/rg300/bin
$ git clone https://github.com/rs-97-cfw/rs97-linux-kernel-NoNDA rg300_kernel
$ cd rg300_kernel
$ ARCH=mips make uImage

这看起来像是由环境变量值不正确引起的路径问题。
错误信息sh: 0: Can't open /arch/mips/boot/tools/entry是相对于的完整路径/,即根目录,而不是正确指定内核源代码的实际存储位置,例如/home/your_username/rg300_kernel/arch/mips/boot/tools/entry.

问题:到底是什么生成了内核入口点以及可以采取哪些措施来解决该问题?

问题不在于脚本本身,而在于如何调用脚本。
内核源代码所在的目录路径指定不正确。
由于从未找到并执行该脚本,因此没有为-e用于指定入口点的选项。
因此mkimage实用程序(错误地)抱怨“无效的入口点”,但实际问题是无法获取任何值,因为脚本从未被定位和执行。


用于指定脚本路径的显着文本是:

$(KBUILD_SRC)/$(obj)/tools/entry

您的构建输出表明obj环境变量正确设置为arch/mips/boot.
But KBUILD_SRC似乎被错误地设置为/(根目录)或为空(???!!!)或未定义,而不是类似的东西/home/your_username/rg300_kernel或者任何正确的路径是什么。

对于解决方法,您可以尝试替换变量KBUILD_SRC with srctree in 拱门/mips/启动/Makefile:

 uImage: $(VMLINUX) vmlinux.bin
     rm -f $(obj)/vmlinux.bin.gz
     gzip -9 $(obj)/vmlinux.bin
     mkimage -A mips -O linux -T kernel -C gzip \
-        -a $(LOADADDR) -e $(shell sh $(KBUILD_SRC)/$(obj)/tools/entry $(NM) $(VMLINUX) ) \
+        -a $(LOADADDR) -e $(shell sh $(srctree)/$(obj)/tools/entry $(NM) $(VMLINUX) ) \
         -n 'Linux-$(KERNELRELEASE)' \
         -d $(obj)/vmlinux.bin.gz $(obj)/uImage
     @echo '  Kernel: arch/mips/boot/$@ is ready' 

多变的srctree似乎源自KBUILD_SRC(在顶级内核 Makefile 中),并使用它作为替代实际上是一个解决方法的 WAG。
也许在某个地方KBUILD_SRC被破坏或未导出,但 makefile(和脚本)不是我的专业知识,因此我无法解释根本原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux编译 |入口点无效 的相关文章

  • 调试严重的 SIGILL 崩溃:文本段损坏

    我们的系统是基于 PowerPC 的运行 Linux 的嵌入式系统 我们遇到了随机的 SIGILL 崩溃 这种情况在各种应用程序中都会出现 崩溃的根本原因是将要执行的指令归零 这表明内存中的文本段已损坏 由于文本段是以只读方式加载的 因此应
  • 如何编写需要内核源头文件的 BitBake 驱动程序配方?

    介绍 我有一个do install我为驱动程序编写的 BitBake 配方中的任务 我在其中执行自定义install脚本 任务失败 因为安装脚本无法在其中找到内核源头文件
  • u-boot:搬迁

    这是一个与u boot相关的基本问题 为什么 u boot 代码会自行重新定位 好吧 如果 u boot 是从 NOR flash 或启动 ROM 空间执行 那么这是有道理的 但如果它已经从 SDRAM 运行 为什么它必须再次重新定位自己呢
  • 尝试映射大页面 (1GB) 时 mmap 失败

    我做了什么 使用 root 启用大页 我的系统支持 1MB 大页 echo 20 gt proc sys vm nr hugepages 将大页文件系统挂载到 mnt hugepages mount t hugetlbfs nodev mn
  • 无法访问打开的/arch/x86/syscalls/syscall_32.tbl

    当我在切换到内核后编写此命令时 当我编译它时 它没有显示任何列表 是否有其他命令可以打开列表 open arch x86 syscalls syscall 32 tbl Bug 先删除 文件路径中的字符 应该是relative http e
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 内存调试:如何获取 Linux 用户空间/内核空间中的锁定页面信息

    有什么方法可以获取Linux用户空间 内核空间中的锁定页面 虚拟内存页面 信息 我想了解详细信息 例如 谁锁定了页面 有多少页被锁定 进程名称 谁锁定了页面 还让我了解内核空间和用户空间的内存调试技术 对于内存中的每个页面 都会为其分配标志
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 当安装的包使用 conda 虚拟环境时,如何使 Python 控制台脚本入口点工作?

    问题 从非虚拟环境转移到 conda 虚拟环境会导致控制台脚本入口点无法识别 背景 我最近尝试在我的 Python 项目中使用虚拟环境 在更新 macOS Catalina 导致我的所有 PyCharm 项目显示无效解释器错误后 我决定执行
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr
  • .ko 文件是如何构建的

    我正在尝试将我自己的驱动程序移植到Beagle 板 xm arm cortex A8 在移植时我试图弄清楚如何 ko文件实际构建 在我们的Makefile我们只有一个命令来构建 o file 怎样是一个 ko文件已建立 使用Linux 2
  • 为什么 call_usermodehelper 大多数时候都会失败?

    从内核模块中 我尝试使用 call usermodehelper 函数来执行可执行文件 sha1 该可执行文件将文件作为参数并将文件的 SHA1 哈希和写入另一个文件 名为输出 可执行文件完美运行 int result 1 name hom
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是
  • 如何通过jiffies实现经过时间

    我想了解如何在 C 中使用 jiffies 实现经过时间 假设我有一系列指令 include
  • 编译Linux内核模块时出现错误:“CONFIG_X86_X32已启用,但没有binutils支持”和不需要的“n”字符

    我想得到Rasta Ring0 调试器 http rr0d droids corp org 在我的 x86 64 Linux 中编译的 0 3 版本 它是一个 Linux 内核模块 我已将 32 位内联汇编替换为 64 位汇编 如我的问题中
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt

随机推荐

  • Cassandra 示例触发器获取已删除的行和列值

    当列族中有更新时 会调用 ITrigger 扩充方法 我们如何知道更新操作是插入还是删除呢 另外 是否可以在触发器实现中的同一键空间中的其他表中执行任何 DML 语句 假设有两个表test1和test2 为 test1 创建触发器 如果te
  • Selenium 中的execute_script() 是做什么的

    browser execute script window open about blank tab2 browser switch to window tab2 browser get http bing com I was search
  • Kendo UI grid rowTemplate - 调用函数来影响 td 单元格的 CSS

    我的 Kendo UI 网格是动态的 其中的列可以定义为field0 field1通过field n 我不知道number提前的字段 我想使用rowTemplate为了应用CSSbackground color to the td cell
  • 如何检索 Struts 2 操作类中的复选框值?

    我在 jsp 页面中有动态数量的复选框 如下所示
  • 在matlab中重命名图像文件名

    我从互联网站点加载 10 000 个图像文件 并将其保存在文件夹中以在我的项目 图像检索系统 中使用它 现在我需要按顺序名称重命名图像文件 例如 image1 image2 image3 image10000 任何人都可以帮助我 我想告诉你
  • 循环遍历列,将每列复制六次

    我有这个数据框 其中列名称从 v1 到 v292 有 17 个观察结果 我需要迭代这些列并将获取的每列复制 6 次 例如 v1 v2 v3 v4 1 3 4 6 3 4 3 1 输出应该是什么 x 1 3 1 3 1 3 1 3 1 3 1
  • 如何在 Kivy 中处理同时按下的多个键?

    我本来打算用 kivy 做一个小跨平台游戏 当我测试从电脑上的键盘获取输入的方式时 我有点惊讶 Kivy似乎无法处理同时按下的多个按键及其on keyboard down事件 当您在kivy中同时按下多个按键时 官方文档中使用的键盘类会传递
  • javascript eval 在上下文中不使用 this 关键字

    我正在尝试在特定上下文中执行 eval 我已经找到答案了here有用 但是 我在 Chrome 版本 53 0 2785 143 m 中遇到以下行为 其他浏览器没试过 我正在使用的代码如下 function evalInContext js
  • IE9 MVC、IMG 标签、Url.Action 和 TempData 的意外行为

    当我第一次遇到这个问题时 我把这个作为题外话提出来上一个问题 我无法在我的应用程序中确定它 因为有太多的 javascript css 和图像 这可能会加剧问题 现在我已经做了一个非常简单的 MVC 应用程序 没有 javascript 没
  • 有没有办法捕获管道命令中的失败? [复制]

    这个问题在这里已经有答案了 这是我想要实现的目标的示例 bin bash set e abort if error command1 2 gt 1 command2 我注意到有时command1失败 但 command2 没有失败 shel
  • 如何在Windows批处理文件中嵌入文本文件[重复]

    这个问题在这里已经有答案了 我需要创建一个写入文本文件 可能包括变量 的批处理文件 在带有 bash 的 Unix 中 这是微不足道的 bin bash ver 1 2 3 cat gt file txt lt
  • VueJS 两路过滤器

    是否可以在 VueJS 中使用双向过滤器 我尝试过 但在新文档中找不到它 I tried
  • 将以 @ 开头的文本替换为锚标记

    我有一个 html 页面 现在我显示一个包含以 开头的文本的字符串 我需要做的是使用 javascript 替换以 开头的字符串中的所有文本与锚标记 E g 我的字符串 与 sarah333 和 kevin0955 在海滩度过了愉快的时光
  • 如何反转灰度图像并将其转换为二值图像?

    I want to create an image like this From an image like this alt text http internationalpropertiesregistry com Server sho
  • MySQL 中加载数据文件的访问被拒绝

    我在 PHP 中一直使用 MySQL 查询 但是当我尝试时 LOAD DATA INFILE 我收到以下错误 1045 用户 user localhost 的访问被拒绝 使用密码 YES 有谁知道这意味着什么 我也刚刚遇到这个问题 我必须添
  • OpenCv 3d 拼接全景图

    我有 7 张来自 gopro 的图像 装备中有 5 个摄像头 一个用于顶部 一个用于底部 它们都是 gopro 相机 我想将所有这些图像拼接在一起以创建 3D 全景图 我已经能够使用 opencv stitching detailed cp
  • JavaScript 删除合并的表格单元格

    过去几周我一直在开发一个日程安排网站 我将时间表显示为 PHP 生成的 html 表格 我使用合并单元格来显示事件 我在尝试使用 JS 删除事件时遇到了问题 由于这些是合并单元格 使用行跨度 当我删除一个单元格时 我必须遍历表格并在需要时重
  • 第谷无法从不同的 Reactor 构建中解析从产品到 Eclipse 功能的引用

    我有两个反应堆构建 第一个构建了一些捆绑包和相应的功能 成功后clean install该功能位于我本地的 Maven 存储库中 第谷还生成了 p2 元信息 p2artifacts xml and p2metadata xml 第二个版本包
  • 如何在 Powershell 消息框中获取计时器?

    我试图在我用 PS Forms 创建的消息框中显示一个计时器 我想要这样的东西 1 秒后显示 您的电脑将在 10 秒后关闭 您的电脑将在 9 秒后关闭 您的电脑将在 8 秒后关闭 等等 希望你能帮我 我没有看到刷新消息框中文本的方法 如果我
  • Linux编译 |入口点无效

    我正在编译一个linux内核使用 mipsel 工具链 一切工作正常 除了最后一点指出无效的入口点 sh 0 Can t open arch mips boot tools entry rm f arch mips boot vmlinux