编译linux内核错误:./scripts/gen_initramfs_list.sh: Cannot open '/usr/share/v86d

本文介绍了解决Linux内核编译过程中遇到的与initramfs相关错误的方法,包括配置内核选项和安装缺失的软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/scatterlist.h
  CHK     include/generated/uapi/linux/version.h
  UPD     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
  CC      kernel/bounds.s
  CHK     include/generated/bounds.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  CHK     include/generated/asm-offsets.h
  UPD     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  HOSTCC  scripts/genksyms/genksyms.o
  SHIPPED scripts/genksyms/parse.tab.c
  HOSTCC  scripts/genksyms/parse.tab.o
  SHIPPED scripts/genksyms/lex.lex.c
  SHIPPED scripts/genksyms/keywords.hash.c
  SHIPPED scripts/genksyms/parse.tab.h
  HOSTCC  scripts/genksyms/lex.lex.o
  HOSTLD  scripts/genksyms/genksyms
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  CC      scripts/mod/devicetable-offsets.s
  GEN     scripts/mod/devicetable-offsets.h
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/recordmcount
  HOSTCC  scripts/sortextable
  HOSTCC  scripts/asn1_compiler
  CC      init/main.o
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  CC      init/do_mounts.o
  CC      init/do_mounts_rd.o
  CC      init/do_mounts_initrd.o
  CC      init/do_mounts_md.o
  LD      init/mounts.o
  CC      init/initramfs.o
  CC      init/calibrate.o
  CC      init/init_task.o
  LD      init/built-in.o
  HOSTCC  usr/gen_init_cpio
  ./scripts/gen_initramfs_list.sh: Cannot open '/usr/share/v86d/initramfs'
make[1]: *** [usr/initramfs_data.cpio.gz] 错误 1
make: *** [usr] 错误 2

这个问题有两个解决办法:

1.这个选项在内核中位置Location:

                                                -->General setup

                                                    -->Initial RAM filesystem and RAM disk (initramfs/initrd) support

下面是默认的路径时/usr/share/v86d...默认时选择编译进内核的,可以把路径改为空  “” (不建议)

2.另外安装一下v86d就可以了,sudo apt-get install v86d

之后在编译就可以了




出现这个错误,原因时没有安装v86d这个软件,所以有两个解决办法,sudo apt-get install v86d1

<think>好的,我现在需要帮助用户解决脚本运行时出现的“mx6ull_alientek_emmc.sh script error 'not found' on lines”问题。用户使用的是Ubuntu 16的shell环境。首先,我得分析可能的原因,然后一步步给出解决方案。 首先,用户提到错误是关于“not found”的行号错误。这可能与脚本的语法错误或路径问题有关。常见的shell脚本错误包括缺少shebang行、权限问题、换行符不正确(比如Windows的CRLF)、变量未正确引用或命令不存在等。 根据提供的引用内容,用户可能在处理uboot的移植,涉及到mx6ull_alientek_emmc相关的配置文件。用户之前修改了imximage.cfg文件,并检查了头文件的引用情况。因此,脚本可能涉及到这些配置文件的路径或处理步骤。 接下来,我需要考虑用户可能遇到的问题: 1. **脚本执行权限**:用户可能没有给脚本添加执行权限,导致无法运行,出现“not found”的错误。但实际上,如果权限不足,通常会提示“Permission denied”,而“not found”更可能是路径或解释器问题。 2. **Shebang行问题**:如果脚本缺少正确的shebang行(如#!/bin/bash),或者指定的解释器路径不正确,系统可能找不到解释器,从而报错。例如,如果脚本使用bash语法,但shebang指向了不存在的路径,就会出现“not found”。 3. **换行符问题**:在Windows下编辑的脚本可能在Linux中因CRLF换行符导致问题,尤其是/bin/sh可能对此敏感。Ubuntu 16默认的dash shell对语法要求严格,不兼容的换行符可能引发错误。 4. **路径错误**:脚本中引用的文件路径不正确,比如头文件或配置文件的路径与用户当前目录不匹配。用户之前修改的imximage.cfg和头文件的位置可能需要检查。 5. **语法错误**:脚本中存在语法错误,如变量未正确引用,或命令拼写错误。例如,使用未定义的变量或缺少空格等。 结合用户提供的引用,特别是引用[2]和[4],用户可能在处理编译和配置时涉及文件路径的修改。例如,imximage.cfg中的PLUGIN路径是否正确?编译后检查头文件是否被正确引用,可能影响脚本中的路径设置。 接下来,我需要按照常见的排查步骤来组织回答: - 检查脚本权限:使用chmod +x添加执行权限。 - 检查shebang行是否正确,并确保解释器存在。 - 使用dos2unix转换换行符。 - 逐行检查脚本语法,使用shellcheck工具。 - 确认文件路径是否正确,特别是引用到的配置文件路径是否存在于当前环境中。 - 查看具体报错的行号,定位问题代码。 此外,用户可能在执行脚本时,当前工作目录不正确,导致相对路径失效。需要确认脚本中的路径是否基于正确的目录。 根据引用[3]和[4],用户使用grep命令检查头文件是否被引用,可能脚本中涉及编译步骤,而编译时的环境变量或路径设置错误,导致某些文件找不到,从而引发行号错误。 可能的解决方案步骤: 1. **添加执行权限**:`chmod +x mx6ull_alientek_emmc.sh` 2. **检查Shebang行**:确保首行是`#!/bin/bash`或正确的shell路径。 3. **转换换行符**:安装dos2unix,运行`dos2unix mx6ull_alientek_emmc.sh` 4. **使用ShellCheck检查语法**:`shellcheck mx6ull_alientek_emmc.sh` 5. **验证文件路径**:确保脚本中引用的文件(如imximage.cfg、头文件)路径正确,特别是相对路径是否基于脚本的执行目录。 6. **检查环境变量**:确保编译所需的工具链和路径已正确设置。 7. **查看具体错误行号**:根据报错的行号,检查该行命令是否存在拼写错误或未安装的命令。 如果用户的问题与路径相关,可能需要调整脚本中的目录引用,比如使用绝对路径或正确相对路径。例如,引用[2]中的PLUGIN路径是否正确,或者是否在脚本中正确设置了uboot的根目录。 此外,Ubuntu 16的默认shell是dash,而脚本如果是为bash编写的,可能需要明确使用bash执行脚本,或者修改shebang行。 总结,用户需要按照这些步骤逐一排查,重点关注脚本的语法、权限、换行符以及路径设置是否正确,特别是涉及uboot配置文件的部分。</think>针对脚本运行时出现的行号错误问题,请按照以下步骤排查: ### 一、基础检查 1. **添加执行权限** ```bash chmod +x mx6ull_alientek_emmc.sh ``` 2. **检查首行shebang声明** ```bash #!/bin/bash # 必须为第一行 ``` 3. **修正换行符(关键步骤)** ```bash sudo apt-get install dos2unix # 安装工具 dos2unix mx6ull_alientek_emmc.sh # 转换格式 ``` ### 二、路径验证 1. **检查配置文件路径** 根据引用[2]的配置: ```bash PLUGIN board/freescale/mx6ull_alientek_emmc/plugin.bin 0x00907000 ``` 需确认: - 当前工作目录是否为uboot根目录 - `board/freescale/...`路径是否真实存在 2. **验证头文件包含** 使用引用[3][4]的方法检查头文件: ```bash grep -nR "mx6ull_alientek_emmc.h" uboot目录 ``` ### 三、语法调试 1. **使用shellcheck检查** ```bash sudo apt-get install shellcheck shellcheck mx6ull_alientek_emmc.sh ``` 2. **重点检查报错行号** ```bash # 示例:若报错在第15行 sed -n '15p' mx6ull_alientek_emmc.sh # 查看具体代码 ``` ### 四、环境验证 1. **检查工具链配置** ```bash echo $PATH | grep arm-linux-gnueabihf # 验证交叉编译器路径 ``` 2. **确认uboot版本匹配** 根据引用[5],mx6ull_alientek系列配置为特定开发板定制,需确认: - 使用的uboot版本是否与配置文件兼容 - 是否遗漏了板级配置移植步骤 ### 五、典型错误案例 ```bash # 错误示例:Windows路径格式 cp board/freescale\mx6ull... # 反斜杠转义错误 # 正确写法: cp board/freescale/mx6ull... ``` [^1]: mx6ull_alientek_nand.h文件所在目录:uboot根目录下的/include/configs [^2]: imximage.cfg文件中的PLUGIN路径配置需与实际存储位置一致 [^4]: 使用grep命令验证头文件是否被正确引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值