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

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

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

(0)
上一篇 2026年4月16日 下午1:40
下一篇 2026年4月16日 下午1:46


相关推荐

  • sd0100 软件解惑

    sd0100 软件解惑今天用迅雷下点东西,发现速度最快的软件名为sd0100,当时觉得相当怪异,到google中国找了半天,也没查出是什么软件。后来进英文google,用英文找了下,发现蛛丝马迹,指向的竟然是5.9版的迅雷

    2022年7月2日
    25
  • js保留两位小数的方法_jquery 保留两位小数

    js保留两位小数的方法_jquery 保留两位小数一、我们首先从经典的“四舍五入”算法讲起1、四舍五入的情况?12varnum=2.446242342;num=num.toFixed(2);//输出结果为2.452、不四舍五入第一种,先把小数边整数:?1Math.floor(15.7784514000*100)/100//输出结果为15.77第二种,当作字符串,使用正则匹配:?1Number(…

    2022年8月10日
    9
  • DNS负载均衡

    DNS负载均衡1)DNS负载均衡的介绍对于负载均衡的一个典型应用就是DNS负载均衡。庞大的网络地址和网络域名绝对是负载均衡体现优势的地方。那么它的具体原理是如何的呢?本文就将为大家详细介绍一下相关内容。DNS负载均

    2022年7月1日
    22
  • 任推邦即梦AI拉新:锚点挂载躺赚收益,限时加价活动开启

    任推邦即梦AI拉新:锚点挂载躺赚收益,限时加价活动开启

    2026年3月12日
    5
  • 零阶矩、一阶矩、二阶矩、三阶矩

    参考:Moment(mathematics)-Wikipedia此处截取其中的一段:Inmathematics,amomentisaspecificquantitativemeasure,usedinbothmechanicsandstatistics,oftheshapeofasetofpoints.Ifthepointsrepre

    2022年4月3日
    99
  • 描述编程语言的BNF

    描述编程语言的BNF转 来自维基百科 BNF 规定是推导规则 产生式 的集合 写为 lt 符号 gt lt 使用符号的表达式 gt 这里的 lt 符号 gt 是非终结符 而表达式由一个符号序列 或用指示选择的竖杠 分隔的多个符号序列构成 每个符号序列整体都是左端的符号的一种可能的替代 从未在左端出现的符号叫做终结符 基本原理 nbsp nbsp nbsp nbsp nbsp BNF 类似一种数学游戏 从一个符号开始 叫做起始标志 实例

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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