修改KConfig后编译镜像出错

        起初在image/kernel下make menuconfig修改配置后保存,编译内核后发现修改未生效,再用make menuconfig查看修改,发现修改被重置。

        请教同事后得知,make menuconfig修改了.config文件,而编译脚本中编译内核执行的是make arch/arm/configs/***defconfig,因此需要make menuconfig后make savedefconfig生成defconfig文件,再cp defconfig arch/arm/configs/***defconfig覆盖编译所用的defconfig文件。

        编译内核发现大量报错,查看日志基本为缺少.ko文件,编译所需驱动没有编译,之前编译并没有出现过这种现象,猜测是以前同事提交的是defconfig文件而不是修改后的所有文件,导致make menuconfig后缺少应选选项,因此make defconfig将defconfig文件展开为.config文件,再重复修改KConfig步骤,没有报错。

头歌课后3.2:进程的创建第2关:构建一个最小的可用操作系统本关任务:修改版本 0 内核和硬盘达到以下目标。 硬盘中的文件越少越好,且所有的文件都在根目录下; 用该内核和硬盘能够正常启动系统,没有错误提示,且依然能够运行ls、cat、rm 和 sync 命令。 系统启动后,自动执行命令set和ls -l /。 相关知识 为了完成本关任务,你需要掌握: 1.如何修改硬盘镜像文件中的内容; 2.在修改了硬盘后,启动时报错怎么办; 3.系统启动时会执行哪些可执行文件。 如何修改硬盘镜像文件中的内容 bochs 虚拟机的硬盘镜像文件默认是images/rootimage-0.11,可以对其中的内容进行修改。首先,用版本 0 内核启动 bochs 虚拟机: 然后在 bochs 虚拟机中通过命令行(如 mv、rm、rmdir)来操作文件和目录,例如: 上图中,将文件 hello.c 移到了根目录下,同时删除了文件 a.out ,用命令 rmdir 可以删除一个空目录。在修改完后,需要使用 sync 命令进行同步,确保数据真正写入硬盘镜像文件。 需要注意的是,最好对硬盘镜像文件作一个备份,便于出错时恢复。 由于实验环境还不够完善,在硬盘中修改暂时无法实现,只能启动虚拟机之后在虚拟机里面修改硬盘内容。 例如向文件中写入数据可以使用到echo命令。 echo用法: echo 1 > 1.txt //将 1 写入 1.txt 中,并且覆盖原本数据 echo 1 >> 1.txt //将 1 追加到 1.txt 中,不改变原来的数据 在修改了硬盘后,启动时报错怎么办 在硬盘上的文件位置变动后,内核启动时会找不到文件而报错,所以需要对内核源码进行相应的调整。 版本 0 内核启动时,会执行函数 main.c::init(),在这个函数中会首先打开 0 号终端 /dev/tty0 ,是的进程的输入、输出和错误输出都操作在控制台终端上: 然后启动命令解释器/bin/sh去批量执行文件/etc/rc中的一组命令: 之后会以交互方式启动命令解释器`/bin/sh`,来处理用户输入的命令: 在参数 envp 中存放了进程的一组环境变量,目前只有一个环境变量HOME: 可以增加一个环境变量PATH,用来告诉命令解释器去哪些目录下寻找外部命令的可执行文件。如果文件都在根目录下,可以将HOME设为/,将PATH设为.。 系统启动时会执行哪些可执行文件 请分析第 1 关的结论。 编程要求 根据相关知识,修改版本 0 内核和硬盘达到目标: 硬盘中的文件越少越好,且所有的文件都在根目录下; 用该内核和硬盘能够正常启动系统,没有错误提示,且依然能够运行ls、cat、rm和sync命令。 系统启动后,自动执行命令set和ls -l /。 测试说明 平台会对你的操作进行检测,同时会对文档的内容进行检测。请完成操作并且填写文档内容之后再点击评测。
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值