OpenWRT rootfs 的生成过程[通俗易懂]

OpenWRT rootfs 的生成过程[通俗易懂]在include目录中有一个rootfs.mk,里面主要是:1.定义了opkg=2.定义了prepare_rootfsopkg=省略TARGET_DIR_ORIG:=$(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)defineprepare_rootfs…省略…rootfs.mk被以下两个…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在include目录中有一个 rootfs.mk ,里面主要是:
1.定义了 opkg =
2.定义了 prepare_rootfs

opkg = 省略
TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
define prepare_rootfs
  ...省略...

rootfs.mk 被以下两个文件使用

root@localhost:/home2/lql/openwrt# grep "rootfs\.mk" include/  package/ scripts/ feeds/  -rn
include/image.mk:22:include $(INCLUDE_DIR)/rootfs.mk
package/Makefile:11:include $(INCLUDE_DIR)/rootfs.mk

这里我们看 package/Makefile,里面有这么一段:

$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index)
	- find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
	rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
	mkdir -p $(TARGET_DIR)/tmp
	$(call opkg,$(TARGET_DIR)) install \
		$(call opkg_package_files,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null))
	@for file in $(PACKAGE_INSTALL_FILES); do \
		[ -s $$file.flags ] || continue; \
		for flag in `cat $$file.flags`; do \
			$(call opkg,$(TARGET_DIR)) flag $$flag `cat $$file`; \
		done; \
	done || true

	$(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG)

	$(call prepare_rootfs,$(TARGET_DIR),$(TOPDIR)/files)

这里面关键的地方是

$(call opkg,$(TARGET_DIR)) install \
		$(call opkg_package_files,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null))

回头看rootfs.mk 里对 opkg 的定义

opkg = \
  IPKG_NO_SCRIPT=1 \
  IPKG_INSTROOT=$(1) \
  TMPDIR=$(1)/tmp \
  $(STAGING_DIR_HOST)/bin/opkg \
	--offline-root $(1) \
	--force-postinstall \
	--add-dest root:/ \
	--add-arch all:100 \
	--add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200

最终展开就是

//类似于
staging_dir/host/bin/opkg  --offline-root root-sunxi    install  *.ipk

这条命令作用就是将*.ipk 文件安装到 root-sunxi 目录下
在这里插入图片描述
最终root-sunxi 目录下会有这文件
在这里插入图片描述
TODO
:可继续研究一下OpenWRT 的 Makefile

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188505.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mac php开发集成环境,MAC OS X下php集成开发环境mamp

    mac php开发集成环境,MAC OS X下php集成开发环境mamp之前苦于mac上搭建本地服务器之艰辛,找寻好久都没找到一款类似windows上集成的本地服务器环境,诸如phpstudy,xampp,appserv,虽说xampp也有mac版,但不知为何不是Apache启动不了,这里小编为大家分享了MACOSX下php集成开发环境mamp教程,下面大家跟着学习啦小编一起来了解一下吧。MACOSX下php集成开发环境mamp教程打开【系统偏好设置】,选…

  • 全新企业发卡系统源码/带有代理功能发卡平台源码[通俗易懂]

    全新企业发卡系统源码/带有代理功能发卡平台源码[通俗易懂]☑️编号:ym286☑️品牌:无☑️语言:PHP☑️大小:105MB☑️类型:企业发卡系统☑️支持:pc+wap????欢迎免费领取(注明编号)????✨源码介绍全新企业发卡系统源码,带有代理功能的发卡平台源码,目前应该算是最完美的一款了,亲测可运营。并且多套模板可以切换,有需要的自取吧。更新说明:支付界面短链接二维码后台模板等修复及一些细节优化pc用户端后台稍微美化(颜色调整)安卓用户端后台界面UI美化重写,商户头像根据QQ获取Admin后台登录页面重写(

  • 人员能力提升方案_优秀的网站通过什么提供信息

    人员能力提升方案_优秀的网站通过什么提供信息在软件行当也混了有4个年头了,刚毕业那会,觉得百度好强大,工作过程中遇到的问题都能从中查到解决方案。随着能力的提升,对于百度的定位:“其就是用来找些低俗的内容而已”。毕业第一年刚进公司,师傅还总因为我用百度而责骂我,不过那个时候真的不懂他的意思,总觉得他很苛刻,用什么你都管。有的时候甚至觉得他很讨厌,跟了他一年只是学会了Google的入门而已,授人以鱼,不如授之以渔,时隔几年才真真的体会到,他真的…

  • C# 数组截取

    C# 数组截取这段时间常常需要对数据的数据进行截取,以方便解析。原来一直用的Array.ConstrainedCopy();以及 Array.Copy();来进行数组复制截取 先看Array.ConstrainedCopy():其说明如下 publicstaticvoidConstrainedCopy(ArraysourceArray,intsourceIndex,Arraydes…

  • No ‘Access-Control-Allow-Origin‘ header is present之 为什么会跨域及解决方案[通俗易懂]

    No ‘Access-Control-Allow-Origin‘ header is present之 为什么会跨域及解决方案[通俗易懂]1浏览器的限制2跨域3浏览器发送的是XHR(XMLHttpRequest)请求当以上三个条件都满足时浏览器会抛出跨域请求异常(记住是浏览器抛出的异常,和服务端没太大关系),在讲跨域请求解决方案前先了解几个问题。1http请求中,哪些是常见的简单请求,哪些是非简单请求常见的简单请求:请求方法为:GET,HEAD,POST,请求header里面无自定义头,Conten…

  • 如何配置android的adb环境变量(jre环境变量配置)

    一、安装完AndroidStudio后会默认在其下面安装SDK1.找到文件sdk下的tools和platform-tools,并复制其路径2.打开环境变量配置3.新建系统变量,命名为Android_ADB,并将上述两个路径分别导入,中间用;隔开4.打开path变量,输入%Android_ADB%5.打开终端,输入adbversion,出现帮助信息,完成配置。二

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号