精华内容
下载资源
问答
  • docker的overlay2目录

    2021-09-05 18:46:56
    本章分析 docker 的 overlay2 目录 docker的整体目录的分析见《docker的目录》一文 1. “l”目录 里边有一些软连接指向 /overlay2/CacheID 目录下的 diff目录。 这是为了避免挂载命令超出长度。 [root@pre-server01...

    前言:
    本章分析 docker 的 overlay2 目录
    docker的整体目录的分析见《docker的目录》一文

    1. “l”目录

    里边有一些软连接指向 /overlay2/CacheID 目录下的 diff目录。
    这是为了避免挂载命令超出长度。

    [root@pre-server01 l]# ll
    total 444
    lrwxrwxrwx 1 root root 72 Jan 21 08:48 2GJHC55KDLLSH725ATMROHMQHW -> ../3ef5f9868d2f72e7dcd3ff1047176d2c9f78ef06342552896badb97876427ba8/diff
    lrwxrwxrwx 1 root root 72 Jan 21 08:49 2Q4QW2CEWO47MDMGSDORECFGI2 -> ../99153898c52a78f3b7bbd4ed06c32b32facb00e471496ce55324dcae95442dff/diff
    lrwxrwxrwx 1 root root 72 Jan 21 08:49 2QWP34GCA3MW5YPGZJDB4U36VO -> ../9668210804fd9774d6be658253bb36afcf80808140da91fc6f07315984aa25e3/diff
    lrwxrwxrwx 1 root root 72 Jan 21 08:48 3V4AGOIEAL5XGQIGO66Y5UPHY3 -> ../8cf959aa82bf88454d10c467f3e33a897d19ab6a9ab7d0f3b6d669f1315ca56e/diff
    

    2. CacheID目录

    镜像各层存对应overlay2下边一个目录

    2.1 容器层存储和镜像层存储

    各层存储目录如下:

    [root@pre-server01 overlay2]# ll
    total 432
    drwx------ 4 root root 4096 Oct 29  2019 012de5e5bdb0562b4b60c50d235c9eb9fe17a9a5592ec3fbd9231dedf38afb2d
    drwx------ 4 root root 4096 Jan 21 08:48 03468b1e67108a1a2acade9b1f05e2e6fa5b5d282e9526af8628a48104102940
    drwx------ 4 root root 4096 Jan 21 08:49 0387aa8919e5fa943132c89ae93574807c77b15aa0cd7514a1f29c9287a87a5d
    drwx------ 5 root root 4096 Feb  2 10:45 08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa
    drwx------ 4 root root 4096 Jan 21 09:41 08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa-init
    ......
    

    2.1.1 容器层存储目录

    容器层对应两个目录:一个以CacheID命名。一个以CacheID-init 命名。

    • 带init的目录
      这个目录是只读的

    • 没有init的容器目录
      容器的读写目录,容器中写入时候会把文件拷贝进来(读操作直接在每层操作,不需拷贝)

    演示:
    比如我进入容器,在home下写一个hello.txt的文件,于是宿主机该目录下的diff目录中多了一个 home目录,下边多了一个hello.txt文件。

    2.1.2 镜像层存储目录

    对应一个以CacheID命名的目录

    说明:2.1 中内容我们暂且这么理解,具体原理会在以后的镜像层原理中说明。

    2.2 查看存储目录属于哪个容器

    • overlay2下有如下目录
    08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa
    08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa-init
    
    • 查找属于那个容器
    [root@pre-server01 overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa"
    3262, 6bf1cc99809501fe6c5133bbadd1a973b938425fd87a5ff98e3f4ab7d570589a, /das-db, /var/lib/docker/overlay2/08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa/work
    

    说明:
    如上可见,该存储对应 的容器名为 das-db

    2.3 查看指定容器的存储目录

    其实就是2.2反向查,测试如下

    [root@DoN02 overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep  gateway
    134626, bf6c6433bd2ed870daad08fd667ece93db2f8c5e05da786d0ca9838a2bcf72d4, /k8s_filebeat_gateway-854ff898c5-t7j49_crust-framework_d6e24bdc-8632-4691-b2ef-c112efdb6784_0, /data/docker/overlay2/72df0bfe3f322eeff69f43394e9bde50a786103f278c00a1dd8bde457889e077/work
    134565, d278f3488213a2396dda0a781dc5ea5d512ea11675ee30a0521817ad8a5a4b1e, /k8s_gateway_gateway-854ff898c5-t7j49_crust-framework_d6e24bdc-8632-4691-b2ef-c112efdb6784_0, /data/docker/overlay2/9e31372295296a2d83bd725214063f60114499582be4027e13c78b241e1cf16c/work
    134439, a16364fc28a7c67e35d1d2c0c73fdc18b5705dfe1b21d3c79a0a99618594a88a, /k8s_POD_gateway-854ff898c5-t7j49_crust-framework_d6e24bdc-8632-4691-b2ef-c112efdb6784_0, /data/docker/overlay2/0e362acb07459c9fd97f5b1bbe2431a33daf19e091da78c8abed459985fdff69/work
    28798, 1ce006e2a0ac90d7dc838d52d9b5865bc76e75a40f79bd4839ef818e46730197, /k8s_gateway_etcd-75d4485689-j4g2z_streaming_373adf06-d4b8-4aa7-a161-ba8424a0eefe_0, /data/docker/overlay2/80385eb061acce97c369fe1577775e8230ce7108cf0ac01dce0346e1622fad94/work
    

    说明:如上可见,查看 gataway 这个pod的目录,得到四条信息:

    • 第一条是该pod里 filebeat的容器信息
    • 第二条是该pod里gateway的容器,我们要找的是这个
    • 第三条是该pod里pause的容器
    • 第四条是k8s系统的,和该pod无关。
      综上:我们要找的目录是/data/docker/overlay2/9e31372295296a2d83bd725214063f60114499582be4027e13c78b241e1cf16c

    3. CacheID目录结构

    [root@pre-server01 ffd866bd6ece4908f3edd84da09df8f470680276c4acc6752066de8d359e972c]# ll
    total 16
    -rw------- 1 root root    0 Jan 21 08:49 committed
    drwxr-xr-x 3 root root 4096 Jan 21 08:49 diff
    -rw-r--r-- 1 root root   26 Jan 21 08:49 link
    -rw-r--r-- 1 root root   86 Jan 21 08:49 lower
    drwx------ 2 root root 4096 Jan 21 08:49 work
    
    • diff 目录
      文件目录,各层的目录都会放在下边
    [root@pre-server01 08b19b890cc0348eabca15b585820d91bd59d88e3fdd5c2f589fe5e69ecb5cfa]# ll diff/
    total 20
    drwxr-xr-x 2 root root 4096 Feb  2 14:06 home
    drwx------ 2 root root 4096 Feb  2 13:40 root
    drwxr-xr-x 3 root root 4096 Jan 28  2019 run
    drwxrwxrwt 2 root root 4096 Feb  2 13:40 tmp
    
    • link 文件
      写明该存储对应的镜像层
    [root@pre-server01 ffd866bd6ece4908f3edd84da09df8f470680276c4acc6752066de8d359e972c]# cat link
    RMGBSAZLRQKZLACS72PTSJPS62
    
    • lower 文件
      指名该镜像层对应的底层镜像层
    [root@pre-server01 ffd866bd6ece4908f3edd84da09df8f470680276c4acc6752066de8d359e972c]# cat lower
    l/OSSHOMMOPKF74F3MR2JHEA33MG:l/2Q4QW2CEWO47MDMGSDORECFGI2:l/IUFHPX4Z3A74KHLPEYAMGPM5DI
    
    • work 目录
      文件系统的工作基础目录,挂载后内容会被清空,且在使用过程中其内容用户不可见

    #【FAQ】

    1)overlay2 不支持NFS挂载

    【现象】

    /var/lib/docker 目录移动到NFS挂载的目录之后,docker启动不起来

    【查看】

    查看报错日志如下

    [root@crust-m02 data]# journalctl -xe
    ……
    7月 06 11:49:50 crust-m02 dockerd[10652]: time="2021-07-06T11:49:50.475328532+08:00" level=error msg="'overlay2' is not supported over nfs" storage-driver=overlay2
    7月 06 11:49:50 crust-m02 dockerd[10652]: time="2021-07-06T11:49:50.475349891+08:00" level=error msg="[graphdriver] prior storage driver overlay2 failed: backing file sys
    ……
    
    展开全文
  • 在使用overlay文件的过程中,发现有时拷贝一个超出overlay文件系统容量范围时却没有报错,可写的容量比overlay文件系统容量大很多,猜想与工作目录文件系统有关,现在准备探索一下。 准备 虚拟机环境 Linux ...

    在使用overlay文件的过程中,发现有时拷贝一个超出overlay文件系统容量范围时却没有报错,可写的容量比overlay文件系统容量大很多,猜想与工作目录文件系统有关,现在准备探索一下。

    准备

    虚拟机环境

    Linux localhost.localdomain 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    准备一张32G卡,分区和文件系统如下:

    第1分区容量32MB,文件系统ext4
    第2分区容量1MB,文件系统ext4
    第3分区容量32MB,文件系统ubifs(count of LEBs, minimum is 17=2.125MB)
    第5分区容量256MB,文件系统btrfs(Minimum size for each btrfs device is 41943040=40MB.)
    第6分区容量1MB,文件系统jffs2(TF卡不是MTD设备,所有不支持mkfs.jffs2格式化)
    磁盘 /dev/sdb:31.9 GB, 31914983424 字节,62333952 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x269a2bd6
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048       67583       32768   83  Linux
    /dev/sdb2           67584       69631        1024   83  Linux
    /dev/sdb3           69632      135167       32768   83  Linux
    /dev/sdb4          135168    62333951    31099392    5  Extended
    /dev/sdb5          137216      661503      262144   83  Linux
    /dev/sdb6          663552      665599        1024   83  Linux
    sudo mkfs.ext4 /dev/sdb1
    sudo mkfs.ext4 /dev/sdb2
    sudo mkfs.ubifs -m 512 -e 128KiB -c 256 /dev/sdb3
    sudo mkfs.btrfs -f /dev/sdb5

    创建目录

    mkdir merge rom rwdir

    挂载

    挂载只读ext4只读文件系统目录

    sudo mount -t ext4 -o ro /dev/sdb1 rom/

    挂载工作目录ext4文件系统

    sudo mount -t ext4 /dev/sdb2 rwdir/
    sudo mkdir rwdir/base rwdir/work

    挂载overlay

    sudo mount -t overlay overlay -o lowerdir=rom,upperdir=rwdir/base,workdir=rwdir/work merge
    /dev/sdb1 on /home/yubo.wang/overlay/rom type ext4 (ro,relatime,seclabel,data=ordered)
    /dev/sdb2 on /home/yubo.wang/overlay/rwdir type ext4 (rw,relatime,seclabel)
    overlay on /home/yubo.wang/overlay/merge type overlay (rw,relatime,seclabel,lowerdir=rom,upperdir=rwdir/base,workdir=rwdir/work)
    /dev/sdb1             27M  779K   24M    4% /home/yubo.wang/overlay/rom
    /dev/sdb2           1003K   25K  907K    3% /home/yubo.wang/overlay/rwdir
    overlay             1003K   25K  907K    3% /home/yubo.wang/overlay/merge
    

    写1MB的全0文件到merge目录下,提示空间不足,实际可写文件大小为956K,把预留空间也用掉了,可见ext4不带压缩。

    [yubo.wang@localhost overlay]$ sudo dd if=/dev/zero of=merge/1mb bs=1M count=1
    dd: 写入"merge/1mb" 出错: 设备上没有空间
    记录了1+0 的读入
    记录了0+0 的写出
    978944字节(979 kB)已复制,0.00321381 秒,305 MB/秒
    [yubo.wang@localhost overlay]$ ls merge/1mb -lh
    -rw-r--r--. 1 root root 956K 1月  16 16:12 merge/1mb

    挂载工作目录ubi文件系统

    卸载merge和rwdir目录挂载,挂载

    [yubo.wang@localhost overlay]$ sudo mount -t ubifs /dev/sdb3 rwdir/
    mount: 未知的文件系统类型“ubifs”

    虚拟机验证失败, 在板子上面验证

    ubi1:rootfs_data on /ubifs type ubifs (rw,relatime)
    overlay on / type overlay (rw,relatime,lowerdir=/,upperdir=/ubifs/base,workdir=/ubifs/work)
    overlay                   1.0M    232.0K    712.0K  25% /

    写10MB的全0文件到根目录下正常,超过21MB才提示空间不足,删除全0文件后拷贝一个1MB的zip压缩文件就提示空间不足,说明ubifs默认带压缩功能,且默认不压缩多媒体文件,比如MP4文件。

    挂载工作目录btrfs文件系统

    默认挂载方式

    sudo mount /dev/sdb5 rwdir/
    /dev/sdb5 on /home/yubo.wang/overlay/rwdir type btrfs (rw,relatime,seclabel,space_cache,subvolid=5,subvol=/)
    sudo mkdir rwdir/base rwdir/work
    sudo mount -t overlay overlay -o lowerdir=rom,upperdir=rwdir/base,workdir=rwdir/work merge
    /dev/sdb5            256M   17M  175M    9% /home/yubo.wang/overlay/rwdir
    /dev/sdb1             27M  779K   24M    4% /home/yubo.wang/overlay/rom
    overlay              256M   17M  175M    9% /home/yubo.wang/overlay/merge
    

    写300MB的全0文件到根目录提示空间不足,实际写入文件为剩余的175MB,看来btrfs默认不带压缩功能,但可支持。

    [yubo.wang@localhost overlay]$ sudo dd if=/dev/zero of=merge/300mb bs=1M count=300
    dd: 写入"merge/300mb" 出错: 设备上没有空间
    记录了176+0 的读入
    记录了175+0 的写出
    183500800字节(184 MB)已复制,17.0566 秒,10.8 MB/秒
    [yubo.wang@localhost overlay]$ ls merge/ -lh
    总用量 176M
    -rw-r--r--. 1 root root 175M 1月  16 17:49 300mb

    修改挂载支持压缩,目前btrfs支持lzo zlib两种算法,-o compress(-force)=lzo(zlib),-force强制压缩所有文件,lzo对性能提升最为明显

    sudo mount -o compress=lzo /dev/sdb5 rwdir/
    /dev/sdb5 on /home/yubo.wang/overlay/rwdir type btrfs (rw,relatime,seclabel,compress=lzo,space_cache,subvolid=5,subvol=/)
    /dev/sdb1             27M  779K   24M    4% /home/yubo.wang/overlay/rom
    /dev/sdb5            256M   17M  175M    9% /home/yubo.wang/overlay/rwdir
    overlay              256M   17M  175M    9% /home/yubo.wang/overlay/merge
    

    挂载支持lzo压缩后可以写300MB文件,实际占用41MB。

    [yubo.wang@localhost overlay]$ sudo dd if=/dev/zero of=merge/300mb bs=1M count=300
    记录了300+0 的读入
    记录了300+0 的写出
    314572800字节(315 MB)已复制,3.40944 秒,92.3 MB/秒
    [yubo.wang@localhost overlay]$ ls -lh merge/
    总用量 301M
    -rw-r--r--. 1 root root 300M 1月  16 17:59 300mb
    
    /dev/sdb1             27M  779K   24M    4% /home/yubo.wang/overlay/rom
    /dev/sdb5            256M   27M  134M   17% /home/yubo.wang/overlay/rwdir
    overlay              256M   27M  134M   17% /home/yubo.wang/overlay/merge
    

    挂载工作目录jffs2文件系统

    虚拟机里面挂载失败

    [yubo.wang@localhost overlay]$ sudo mount -t jffs2 /dev/sdb6 rwdir/
    mount: 未知的文件系统类型“jffs2”

    在开发板里面测试

    /dev/mtdblock4 on /rom/jffs type jffs2 (rw,relatime)
    overlay on / type overlay (rw,relatime,lowerdir=/,upperdir=/jffs/base,workdir=/jffs/work)
    overlay                   1.0M    988.0K     36.0K  96% /

    写10MB的全0文件到根目录下正常,超过26MB才提示空间不足,删除全0文件后拷贝一个1MB的zip压缩文件就提示空间不足,说明jffs2默认带压缩功能

    总结

    目前得知ext4不带压缩功能,ubifs和jffs2默认带压缩功能,btrfs默认不带压缩功能但可配置支持压缩。

     

    展开全文
  • OVERLAY

    2018-11-14 17:20:28
    本页目录 语法 入参 功能描述 示例 语法 VARCHAR OVERLAY ( (VARCHAR x PLACING VARCHAR y FROM INT start_position [ FOR INT length ]) ) 入参 x VARCHAR类型 y VARCHAR类型 start_positi.....

    语法

     
       
    1. VARCHAR OVERLAY ( (VARCHAR x PLACING VARCHAR y FROM INT start_position [ FOR INT length ]) )

    入参

    • x

      VARCHAR类型

    • y

      VARCHAR类型

    • start_position

      INT类型

    • length(可选)

      INT类型

      功能描述

      用y替换x的子串。下标从start_position开始,替换length+1个字符。

    示例

    • 测试案例
     
       
    1. OVERLAY('abcdefg' PLACING 'hij' FROM 2 FOR 2) as result
    2. FROM T1
    • 测试结果
    result(VARCHAR)
    ahijdefg
    本文转自实时计算—— OVERLAY
    展开全文
  • android overlay机制研究

    2017-11-13 18:10:56
    一.overlay 介绍 Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的...1.添加overlay 目录 1.1 Product Overlays与Device Overlays 有两种不同的overaly目录定义,来影响

    一.overlay 介绍

    Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。来达到显示不同的UI的目的.

    二.overlay编译流程分析

    1.添加overlay 目录

    1.1 Product Overlays与Device Overlays

    有两种不同的overaly目录定义,来影响最终的效果:
    PRODUCT_PACKAGE_OVERLAYS: used by a particular product
    DEVICE_PACKAGE_OVERLAYS: used several products that share a common device model
    如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS 中的。

    PRODUCT_PACKAGE_OVERLAYS 和 DEVICE_PACKAGE_OVERLAYS 功能是一样的,只是优先级不一样:PRODUCT_PACKAGE_OVERLAYS 优先于 DEVICE_PACKAGE_OVERLAYS。

    添加overlay目录,为了添加一个overlay目录, 需要修改产品的makefile:
    例:

     
    1. #/device/s3graphics/zx2000/zx2k_hdtv.mk
    2. 334 # overlay
    3. 335 DEVICE_PACKAGE_OVERLAYS := \
    4. 336 device/s3graphics/zx2000/overlay \
    5. 337 device/s3graphics/zx2000/overlay/location

    2.在overlay目录下创建资源文件

    想覆盖Android系统自带package中资源文件, 那么在overlay目录下必须包含和要替换package相同的路径, 该路径是Android源码目录的相对路径.
    例:如果我们想要替换以下目录的资源文件: /frameworks/base/core/res/res/values/ 那么在overlay目录下面必须创建一样的目录:/device/s3graphics/zx2000/overlay/frameworks/base/core/res/res/values/
    然后放入想要替换的资源(必须和系统package相同路径和文件名)。

    3. 编译流程

     
    1. #/frameworks/base/core/res/Android.mk
    2. 16 LOCAL_PATH := $(call my-dir)
     
    1. #/build/core/package_internal.mk
    2. 86 ifeq (,$(LOCAL_RESOURCE_DIR))
    3. 87 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
    4. 88 else
    5. 89 need_compile_res := true
    6. 90 endif
    7. 93 package_resource_overlays := $(strip \
    8. 94 $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \
    9. 95 $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) \
    10. 96 $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \
    11. 97 $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))))
    12. 101 LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR)

    为每一个$(LOCAL_RESOURCE_DIR)目录添加$(DEVICE_PACKAGE_OVERLAYS)前缀。
    编译执行结果:
    package_resource_overlays= device/s3graphics/zx2000/overlay/frameworks/base/core/res/res device/s3graphics/zx2000/overlay/location/frameworks/base/core/res/res

    然后将本地resource目录和overlay resource 目录加进 LOCAL_RESOURCE_DIR 中。
    编译执行结果:
    LOCAL_RESOURCE_DIR=device/s3graphics/zx2000/overlay/frameworks/base/core/res/res ,device/s3graphics/zx2000/overlay/location/frameworks/base/core/res/res , frameworks/base/core/res/res

    使用aapt 工具对资源文件进行打包:

     
    1. #/build/core/package_internal.mk
    2. $(resource_export_package): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT)
    3. $(create-empty-package)
    4. $(add-assets-to-package)
    5. endif
     
    1. #/build/core/definitions.mk
    2. define add-assets-to-package
    3. $(hide) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \
    4. $(addprefix -c , $(PRIVATE_PRODUCT_AAPT_CONFIG)) \
    5. $(addprefix --preferred-density , $(PRIVATE_PRODUCT_AAPT_PREF_CONFIG)) \
    6. $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \
    7. $(addprefix -S , $(PRIVATE_RESOURCE_DIR))\
    8. $(addprefix -A , $(PRIVATE_ASSET_DIR)) \
    9. $(addprefix -I , $(PRIVATE_AAPT_INCLUDES)) \
    10. $(addprefix --min-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \
    11. $(addprefix --target-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \
    12. $(if $(filter --product,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --product , $(TARGET_AAPT_CHARACTERISTICS))) \
    13. $(if $(filter --version-code,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-code , $(PLATFORM_SDK_VERSION))) \
    14. $(if $(filter --version-name,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-name , $(PLATFORM_VERSION)-$(BUILD_NUMBER))) \
    15. $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \
    16. $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) \
    17. -F $@
    18. endef

    通过以上代码分析最终通过最终通过 aapt -S $(PRIVATE_RESOURCE_DIR) 将res内容加入到 framework-res.apk 中。

     
    1. #/build/core/base_rules.mk
    2. 404 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
    3. 405 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR)
    4. 406 $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_STATIC_JAVA_LIBRARIES := $(full_static_java_libs)

    由于:PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
    因此最终执行的命令展开的结果为:
    aapt -S device/s3graphics/zx2000/overlay/frameworks/base/core/res/res device/s3graphics/zx2000/overlay/location/frameworks/base/core/res/res frameworks/base/core/res/res

     
    1. aapt :
    2. -S directory in which to find resources. Multiple directories will be scanned
    3. and the first match found (left to right) will take precedence.

    总结:如果DEVICE_PACKAGE_OVERLAYS 里面定义多个目录,如果只修改其中一个目录里的配置文件,那么无论改哪个目录修改都会生效。如果多个目录同时修改,那么最前面定义的那个目录将生效。

    展开全文
  • 有时候经常会有个别容器占用磁盘空间特别大,这个时候就需要通过docker overlay2 目录名查找对应容器名: 1、 首先进入到 /var/lib/docker/overlay2 目录下,查看谁占用的较多 [root@PPS-97-8-ALI-HD1H overlay2]# ...
  • Android overlay和预制apk

    2020-11-18 18:01:37
    在mk文件中通过定义PRODUCT_PACKAGE_OVERLAYS或DEVICE_PACKAGE_OVERLAYS变量,后面可以加上多个overlay目录路径,以此来实现多个overlay目录。但是这些目录是有优先级顺序的,PRODUCT_PACKAGE_OVERLAYS下的目录...
  • overlay

    2017-10-19 15:35:55
    第一:联合文件系统的制作 1.yum --installroot=base groups...2.moung -t overlay overlay -olowerdir=base,upperdir=gnome,workdir=work merger 3.yum --installroot=merger groups install "gnomeXXXGUI"
  • http://www.huilog.com/?p=1181
  • 将overlay apk push 到vendor/overlay目录下; 重启手机; 主题切换 此时若目标应用正在显示,Activity 会重新走生命周期,显示新的资源信息。 安装方式 生成overlay apk; 安装apk ...
  • Overlay FS

    2019-07-19 18:00:37
    某些场景下,数据由只读部分(如容器镜像)和可更改部分组成,Overlay FS可以很好的对其进行合并展示及管理,同时Overlay FS也可以在不修改底层架构情况下扩容当前文件系统。 架构 示例 cd /tmp mkdir lower ...
  • 描述 提供某些要在覆盖目录上运行的工具。...overlay目录位于/srv/overlay 。 要使用徽章生成自述文件,请创建框架模板(如模板)并运行: $ overlay_maintain_tools --overlay-dir /srv/overlay mkreadm
  • overlay机制

    千次阅读 2016-02-13 22:16:25
    overlay是为了让不同产品有不同定制的一种技术,例如,在EP820中有扩展键盘,在EP681中没有扩展键盘, ...frameworks/base/core/res/res/values/目录下编辑config.xml文件,在其中添加一项,config_hasE
  • Overlay — Overview

    千次阅读 2019-08-02 18:58:02
    文章目录目录前文列表SDNOverlay 网络Overlay 网络的优势参考文章 前文列表 《数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构》 《数据中心网络架构的问题与演进 — 网络虚拟化》 《数据中心网络...
  • Overlay — VxLAN

    2021-07-09 22:21:17
    文章目录目录VxLAN 诞生的背景VxLANVxLAN 的协议栈VTEP(VxLAN Tunnel Endpoint)软件实现的 VTEPVxLAN 的数据报文转发流程基于 VxLAN Overlay 和 Spine-Leaf 构建大二层网络架构 VxLAN 诞生的背景 随着云计算技术的...
  • Overlay机制

    千次阅读 2014-05-21 17:58:34
    Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。来达到显示不同的UI得目的(如MIUI)。   以下几类能够通过该机制定义: ...
  • 代码Overlay机制

    2018-03-06 09:22:52
    点击打开链接 代码overlay机制意思是,将我们在Android原生代码上修改过的文件,单独放在一个目录下,而在编译代码的时候就会去检测这个目录下的文件,如果这个目录下的文件与原生有相同的文件,那么就将这个文件放...
  • 接上一篇: 【Docker】以Overlay2存储驱动为例:分析Docker容器与镜像(底层只读镜像层+上层可读写容器层)在联合文件系统中的目录组织结构 分别依次打开Overlay2目录中的python镜像自底向上的每一层目录,如下所示...
  • ?????我不是设置记住了么,换了其他设备也一样。...经过耗时的查找,终于发现是挂载意外掉了,然后被Aria2继续写在挂载目录,于是overlay满了,可是overlay文件系统损坏变只读,坑啊。又花了时间才,把资料恢...
  • docker 存储驱动之overlay

    万次阅读 2018-01-31 12:51:07
    overlay OverlayFS是一个类似于AUFS 的现代联合文件系统,但更快,实现更简单。Docker为OverlayFS提供了一个存储驱动程序。 * 注:OverlayFS是内核提供的文件系统,overlayoverlay2是docker提供的存储驱动 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,849
精华内容 9,539
关键字:

overlay目录