Dinamik Sistem Güncellemesi

Dynamic System Updates (DSU) işleviyle Android sistem görüntüsü oluşturabilirsiniz: kullanıcılar İnternet'ten indirebilir ve bozulma riski olmadan deneyebilirler. güncel sistem görüntüsü ekleyin. Bu dokümanda DSU'nun nasıl destekleneceği açıklanmaktadır.

Çekirdek gereksinimleri

Görüntüleyin Dinamik Bölümleri uygulama izin verir.

Buna ek olarak, DSU, cihaz eşleme etkinliği (dm-verity) çekirdek özelliğini kullanır. Android sistem görüntüsünü doğrulayın. Bu nedenle, aşağıdaki çekirdeği etkinleştirmeniz gerekir yapılandırmalar:

  • CONFIG_DM_VERITY=y
  • CONFIG_DM_VERITY_FEC=y

Bölüm şartları

Android 11'den itibaren DSU, /data kullanılmasını gerektirir bölümü için F2FS veya ext4 dosya sistemini kullanın. F2FS daha iyi performans ve önerilir ancak aradaki fark önemsiz olacaktır.

Pixel ile dinamik sistem güncellemesinin ne kadar süreceğine dair bazı örnekleri burada bulabilirsiniz cihaz:

  • F2FS'yi kullanarak:
    • 109 sn., 8G kullanıcısı, 867M sistemi, dosya sistemi türü: F2FS: şifreleme=aes-256-xts:aes-256-cts
    • 104 sn., 8G kullanıcısı, 867M sistemi, dosya sistemi türü: F2FS: şifreleme=buz
  • ext4 kullanarak:
    • 135 sn., 8G kullanıcısı, 867M sistemi, dosya sistemi türü: ext4: şifreleme=aes-256-xts:aes-256-cts

Platformunuzda bu işlem çok daha uzun sürüyorsa montaj düzeneğinin uygun olup olmadığını kontrol etmek isteyebilirsiniz. flag, "sync" yazma işlemini yapan herhangi bir işareti içerir veya bir “eş zamansız” açıkça işaretleyin.

metadata bölümü (16 MB veya daha büyük) ilgili verileri depolamak için gereklidir kaldırın. İlk aşama montajına monte edilmelidir.

userdata bölümü, F2FS veya ext4 dosya sistemini kullanmalıdır. F2FS kullanırken Android ortak çekirdeği.

DSU, çekirdek/yaygın 4.9 ile geliştirilmiş ve test edilmiştir. Optimum kampanya performansı için deneyebilirsiniz.

Satıcı HAL davranışı

Weaver HAL'si

Dokumacı HAL, kullanıcı anahtarlarını depolamak için sabit sayıda yuva sağlar. DSU kullanıldığında, iki ek anahtar yuvası kullanılır. Bir OEM'nin dokumacı HAL'si varsa, OEM'in genel bir sistem görüntüsü (GSI) ve ana makine görüntüsü için yeterli alan.

Kapı görevlisi HAL'si

Gatekeeper HAL, büyük USER_ID değerlerini destekler, çünkü GSI, UID'leri HAL ile +1000000.

Başlatmayı doğrula

Geliştirici GSI Görüntüleri'nin başlatılmasını desteklemek istiyorsanız KİLİTLİ durumda (devre dışı bırakmadan) doğrulanmış önyükleme, aşağıdaki satırı ekleyerek Geliştirici GSI anahtarlarını dahil edin device/<device_name>/device.mk dosyasına ekleyin:

$(call inherit-product, $(SRC_TARGET_DIR)/product/developer_gsi_keys.mk)

Geri alma koruması

DSU kullanılırken indirilen Android sistem görüntüsü cihazdaki mevcut sistem görüntüsü. Bu, güvenlik yamasını karşılaştırarak yapılır seviyeleri Android Doğrulanmış Başlatma (AVB) AVB özelliği tanımlayıcısı iki sistem görüntüsü: Prop: com.android.build.system.security_patch -> '2019-04-05'.

AVB kullanmayan cihazlar için mevcut sistemin güvenlik yaması düzeyini ekleyin görüntüsünü bootloader'la çekirdek cmdline veya bootconfig öğesine ekleyin: androidboot.system.security_patch=2019-04-05

Donanım gereksinimleri

Bir DSU örneğini başlattığınızda iki geçici dosya ayrılır:

  • GSI.img (1~1,5 G) depolamak için mantıksal bir bölüm
  • GSI'yı çalıştırmak için korumalı alan olarak 8 GB'lık boş bir /data bölümü

DSU'yu başlatmadan önce en az 10 GB boş alan ayırmanızı öneririz örneğidir. DSU, SD karttan ayırmayı da destekler. SD kart ayırma için en yüksek önceliğe sahiptir. SD kart desteği: Bu durum, yeterli dahili depolama alanına sahip olmayabilecek düşük güçlü cihazlar için kritik öneme sahiptir. Mevcut bir SD kart varsa bu kartın kullanılmadığından emin olun. DSU desteklemiyor SD kartlar.

Kullanılabilir ön uçlar

DSU'yu adb, bir OEM uygulamasını veya tek tıklamayla DSU yükleyicisini ( Android 11 veya sonraki sürümler).

DSU'yu adb kullanarak başlatın

DSU'yu adb kullanarak başlatmak için şu komutları girin:

$ simg2img out/target/product/.../system.img system.raw
$ gzip -c system.raw > system.raw.gz
$ adb push system.raw.gz /storage/emulated/0/Download
$ adb shell am start-activity \
-n com.android.dynsystem/com.android.dynsystem.VerificationActivity  \
-a android.os.image.action.START_INSTALL    \
-d file:///storage/emulated/0/Download/system.raw.gz  \
--el KEY_SYSTEM_SIZE $(du -b system.raw|cut -f1)  \
--el KEY_USERDATA_SIZE 8589934592

DSU'yu bir uygulama kullanarak başlatma

DSU'ya ana giriş noktası android.os.image.DynamicSystemClient.java API:

public class DynamicSystemClient {


...
...

     /**
     * Start installing DynamicSystem from URL with default userdata size.
     *
     * @param systemUrl A network URL or a file URL to system image.
     * @param systemSize size of system image.
     */
    public void start(String systemUrl, long systemSize) {
        start(systemUrl, systemSize, DEFAULT_USERDATA_SIZE);
    }

Bu uygulamayı cihaza paket haline getirmeniz/önceden yüklemeniz gerekir. Çünkü DynamicSystemClient bir sistem API'sidir; uygulamayı normal ve Google Play'de yayınlayamazsınız. Bu uygulamanın amacı:

  1. Bir resim listesi ve tedarikçi firma tarafından tanımlanan şemaya sahip karşılık gelen URL'yi getirin.
  2. Listedeki resimleri cihazla eşleştirin ve uyumlu resimleri gösterin. kullanıcının seçmesi için bir fırsattır.
  3. DynamicSystemClient.start kodunu şu şekilde çağırın:

    DynamicSystemClient aot = new DynamicSystemClient(...)
       aot.start(
            ...URL of the selected image...,
            ...uncompressed size of the selected image...);
    

URL, gzip biçiminde, ayrılmaz bir sistem resmi dosyasına işaret eder. Bu dosyayı aşağıdaki komutlarla değiştirin:

$ simg2img ${OUT}/system.img ${OUT}/system.raw
$ gzip ${OUT}/system.raw
$ ls ${OUT}/system.raw.gz

Dosya adı şu biçimde olmalıdır:

<android version>.<lunch name>.<user defined title>.raw.gz

Örnekler:

  • o.aosp_taimen-userdebug.2018dev.raw.gz
  • p.aosp_taimen-userdebug.2018dev.raw.gz

Tek tıklamayla DSU yükleyici

Android 11, tek tıklamayla DSU yükleyiciyi kullanıma sunuyor. geliştirici ayarlarındaki bir ön uçtur.

DSU yükleyicisini başlatma

Şekil 1. DSU yükleyicisini başlatma

Geliştirici DSU Yükleyici düğmesini tıkladığında, önceden yapılandırılmış bir DSU JSON tanımlayıcısını içerir ve geçerli tüm resimleri kayan menü. DSU yüklemesini başlatmak için bir görüntü seçin ve işlemin ilerleme durumunu bildirim çubuğunda görünür.

DSU görüntü yükleme ilerleme durumu

Şekil 2. DSU görüntü yükleme ilerleme durumu

Varsayılan olarak DSU yükleyici, GSI görüntülerini içeren bir JSON tanımlayıcısı yükler. Aşağıdaki bölümlerde, OEM imzalı DSU paketlerinin nasıl oluşturulacağını ve bunları DSU yükleyicisinden alabilirsiniz.

Özellik bayrağı

DSU özelliği, settings_dynamic_android özellik bayrağı altındadır. Şu tarihten önce: DSU kullanıyorsanız ilgili özellik bayrağının etkinleştirildiğinden emin olun.

Özellik bayrağını etkinleştirme.

Şekil 3. Özellik bayrağını etkinleştirme

Özellik bayrağı kullanıcı arayüzü, kullanıcı derlemesi çalıştıran cihazlarda kullanılamayabilir. İçinde Bu durumda, bunun yerine adb komutunu kullanın:

$ adb shell setprop persist.sys.fflag.override.settings_dynamic_system 1

GCE'de tedarikçi ana makine sistem görüntüleri (isteğe bağlı)

Sistem görüntüleri için olası depolama konumlarından biri Google Compute Engine (GCE) paketi. Sürüm yöneticisi, GCP depolama konsolunu yayınlanan sistem görüntüsünü ekleyin/silin/değiştirin.

Resimler, aşağıda gösterildiği gibi herkese açık olmalıdır:

GCE&#39;de herkese açık erişim

4.Şekil GCE'de herkese açık erişim

Bir öğeyi herkese açık hale getirme prosedürü Google Cloud belgeleri.

ZIP dosyasında çok bölümlü DSU

Android 11'den itibaren DSU'da birden fazla bölüm. Örneğin, şunlara ek olarak bir product.img içerebilir: system.img. Cihaz başlatıldığında init ilk aşamayı algılar: yeni yüklenen DSU bölümlerini kullanır ve cihaz üzerindeki bölümlendirmeyi geçici olarak etkinleştirildiğinden emin olun. DSU paketi, olması gerekir.

Birden fazla bölümlendirmeli DSU işlemi

5. Şekil. Birden fazla bölümlendirmeli DSU işlemi

OEM imzalı DSU

Cihazda çalışan tüm resimlerin cihaz tarafından yetkilendirildiğinden emin olmak bir DSU paketindeki tüm resimler imzalanmalıdır. Örneğin, Aşağıdaki gibi iki bölüm görüntüsü içeren bir DSU paketi olduğunu varsayalım:

dsu.zip {
    - system.img
    - product.img
}

Hem system.img hem de product.img, kullanılmadan önce OEM anahtarıyla imzalanmalıdır daha sonra ZIP dosyasına yerleştirilir. Yaygın uygulama, bir tablodaki asimetrik paketi imzalamak için kullanıldığı bir RSA'dır. bunu doğrulamak için ortak anahtarın kullanılması gerekir. İlk aşama ramdisk, eşleştirmeyi içermelidir ortak anahtar, örneğin, /avb/*.avbpubkey. Cihazda AVB zaten kullanılıyorsa olması yeterlidir. Aşağıdaki bölümlerde, imzalamak için kullanılan AVB yayıncı anahtarının yerleşimini DSU paketindeki görüntüleri doğrular.

DSU JSON açıklayıcı

DSU JSON açıklayıcısı, DSU paketlerini açıklar. İki temel öğeyi destekler. İlk olarak, include temel öğesi ek JSON tanımlayıcıları veya yönlendirmeleri içerir DSU yükleyicisini yeni bir konuma taşıyın. Örnek:

{
    "include": ["https://.../gsi-release/gsi-src.json"]
}

İkinci olarak, yayınlanan DSU paketlerini açıklamak için image temel öğesi kullanılır. İç mekan birkaç özellik vardır:

  • name ve details özellikleri, kullanıcının seçmesi için iletişim kutusu.

  • cpu_api, vndk ve os_version özellikleri şunun için kullanılır: uyumluluk kontrollerini kontrol edin.

  • İsteğe bağlı pubkey özelliği, kamuoyunu tanımlar anahtarı ile eşlenen gizli anahtarla eşlenir. Bu parametre belirtildiğinde DSU hizmeti, cihazda anahtarın olup olmadığını kontrol edebilir DSU paketini doğrulamak için kullanılır. Bu işlem, tanınmayan bir DSU yüklenmesini engeller paketi yükleme gibi, örneğin OEM-A tarafından imzalanmış bir DSU, OEM-B.

  • İsteğe bağlı tos özelliği, ilgili DSU paketinin hizmet şartlarına tabidir. Bir geliştirici hizmet şartları özelliğinin belirtildiği bir DSU paketi seçtiğinde, Şekil 6'da gösterilen iletişim kutusu açılarak geliştiriciden şartları kabul etmesi istenir gerekir.

    Hizmet Şartları iletişim kutusu

    6. Şekil. Hizmet Şartları iletişim kutusu

Referans olarak, GSI'nın DSU JSON tanımlayıcısını burada bulabilirsiniz:

{
   "images":[
      {
         "name":"GSI+GMS x86",
         "os_version":"10",
         "cpu_abi": "x86",
         "details":"exp-QP1A.190711.020.C4-5928301",
         "vndk":[
            27,
            28,
            29
         ],
         "pubkey":"",
         "tos": "https://dl.google.com/developers/android/gsi/gsi-tos.txt",
         "uri":"https://.../gsi/gsi_gms_x86-exp-QP1A.190711.020.C4-5928301.zip"
      },
      {
         "name":"GSI+GMS ARM64",
         "os_version":"10",
         "cpu_abi": "arm64-v8a",
         "details":"exp-QP1A.190711.020.C4-5928301",
         "vndk":[
            27,
            28,
            29
         ],
         "pubkey":"",
         "tos": "https://dl.google.com/developers/android/gsi/gsi-tos.txt",
         "uri":"https://.../gsi/gsi_gms_arm64-exp-QP1A.190711.020.C4-5928301.zip"
      },
      {
         "name":"GSI ARM64",
         "os_version":"10",
         "cpu_abi": "arm64-v8a",
         "details":"exp-QP1A.190711.020.C4-5928301",
         "vndk":[
            27,
            28,
            29
         ],
         "pubkey":"",
         "uri":"https://.../gsi/aosp_arm64-exp-QP1A.190711.020.C4-5928301.zip"
      },
      {
         "name":"GSI x86_64",
         "os_version":"10",
         "cpu_abi": "x86_64",
         "details":"exp-QP1A.190711.020.C4-5928301",
         "vndk":[
            27,
            28,
            29
         ],
         "pubkey":"",
         "uri":"https://.../gsi/aosp_x86_64-exp-QP1A.190711.020.C4-5928301.zip"
      }
   ]
}

Uyumluluk yönetimi

DSU paketleri arasındaki uyumluluğu belirtmek için çeşitli özellikler kullanılır ve yerel cihaz:

  • cpu_api, cihaz mimarisini açıklayan bir dizedir. Bu özellik zorunludur ve ro.product.cpu.abi sistem özelliğiyle karşılaştırılır. Gösterilen değerler tam olarak eşleşmelidir.

  • os_version, Android sürümünü belirten isteğe bağlı bir tam sayıdır. Örneğin, örneğin, Android 10 için os_version değeri 10, Android 11 için os_version, 11. Bu özelliği belirtildiğinde, ro.system.build.version.release değerine eşit veya bundan daha büyük olmalıdır sistem özelliğini etkinleştirmelisiniz. Bu kontrol, Android 11'de Android 10 GSI görüntüsünün başlatılmasını önlemek için kullanılır şu anda desteklenmeyen tedarikçi firma cihazı. Android 10 cihazda Android 11 GSI görüntüsünün önyüklenmesine izin verilir.

  • vndk, DSU paketidir. Bu belirtildiğinde, DSU yükleyicisi bu sayının ro.vndk.version sistem özelliğinden ayıklanan veriler dahil edilir.

Güvenlik için DSU anahtarlarını iptal edin

DSU görüntülerini imzalamak için kullanılan RSA anahtar çiftinin güvenliği ihlal edilmişse ramdisk, güvenliği ihlal edilmiş anahtar. Önyükleme bölümünü güncellemenin yanı sıra aşağıdakileri de engelleyebilirsiniz: HTTPS'den DSU anahtar iptal listesi (anahtar kara listesi) kullanarak güvenliği ihlal edilmiş anahtarlar URL'yi tıklayın.

DSU anahtarı iptal listesi, iptal edilen AVB ortak anahtarlarının listesini içerir. DSU yüklemesi sırasında, DSU görüntülerinin içindeki ortak anahtarlar doğrulanır iptal listesiyle karşılaştırabilirsiniz. Resimlerin iptal edilmiş herkese açık bir resim içerdiği tespit edilirse DSU yükleme işlemi durur.

Güvenliği sağlamak amacıyla anahtar iptal listesinin URL'si bir HTTPS URL'si olmalıdır. değerini alır ve bir kaynak dizesinde belirtilir:

frameworks/base/packages/DynamicSystemInstallationService/res/values/strings.xml@key_revocation_list_url

Dizenin değeri: https://dl.google.com/developers/android/gsi/gsi-keyblacklist.json, bir iptal listesi oluşturun. Bu kaynak dizesi Böylece, DSU özelliğini benimseyen OEM'ler, ürünleri ve hizmetleri sağlamak için kendi anahtar kara listesini tutmalıdır. Bu sayede OEM, ürünleri cihazın ramdisk resmini güncellemeden belirli ortak anahtarları kullanabilirsiniz.

İptal listesinin biçimi:

{
   "entries":[
      {
         "public_key":"bf14e439d1acf231095c4109f94f00fc473148e6",
         "status":"REVOKED",
         "reason":"Key revocation test key"
      },
      {
         "public_key":"d199b2f29f3dc224cca778a7544ea89470cbef46",
         "status":"REVOKED",
         "reason":"Key revocation test key"
      }
   ]
}
  • public_key, iptal edilen anahtarın açıklanan biçimde SHA-1 özetidir. AVB yayıncı anahtarı oluşturma bölümüne bakın.
  • status, anahtarın iptal durumunu gösterir. Şu an için desteklenen değer: REVOKED.
  • reason, iptal nedenini açıklayan isteğe bağlı bir dizedir.

DSU prosedürleri

Bu bölümde, çeşitli DSU yapılandırma prosedürlerinin nasıl gerçekleştirileceği açıklanmaktadır.

Yeni bir anahtar çifti oluştur

.pem ürününde RSA özel/ortak anahtar çifti oluşturmak için openssl komutunu kullanın biçimde (örneğin, 2048 bit boyutunda):

$ openssl genrsa -out oem_cert_pri.pem 2048
$ openssl rsa -in oem_cert_pri.pem -pubout -out oem_cert_pub.pem

Özel anahtar erişilebilir olmayabilir ve yalnızca donanım güvenlik modülü (HSM) hakkında daha fazla bilgi edinin. Bu durumda, anahtardan sonra mevcut bir x509 ortak anahtar sertifikası olabilir oluşturuyor. Eşleme pubkey'i ramdisk ekleme konusuna bakın bölümüne bakın.

Bir x509 sertifikasını PEM biçimine dönüştürmek için:

$ openssl x509 -pubkey -noout -in oem_cert_pub.x509.pem > oem_cert_pub.pem

Sertifika zaten bir PEM dosyasıysa bu adımı atlayın.

Eşleme yayıncı anahtarını RAM'e ekle

Şunu doğrulamak için oem_cert.avbpubkey, /avb/*.avbpubkey altına yerleştirilmelidir: bir DSU paketi hazırladı. Öncelikle PEM biçimindeki ortak anahtarı AVB herkese açık değerine dönüştürün anahtar biçimi:

$ avbtool extract_public_key --key oem_cert_pub.pem --output oem_cert.avbpubkey

Ardından, aşağıdaki adımları uygulayarak ortak anahtarı ilk aşama ramdisk'e ekleyin.

  1. avbpubkey öğesini kopyalamak için önceden oluşturulmuş bir modül ekleyin. Örneğin, device/<company>/<board>/oem_cert.avbpubkey ve Şuna benzer içeriğe sahip device/<company>/<board>/avb/Android.mk:

    include $(CLEAR_VARS)
    
    LOCAL_MODULE := oem_cert.avbpubkey
    LOCAL_MODULE_CLASS := ETC
    LOCAL_SRC_FILES := $(LOCAL_MODULE)
    ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/first_stage_ramdisk/avb
    else
    LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT)/avb
    endif
    
    include $(BUILD_PREBUILT)
    
  2. Dridcore hedefini, eklenen oem_cert.avbpubkey öğesine bağlı hale getirin:

    droidcore: oem_cert.avbpubkey
    

JSON açıklayıcıda AVB pubkey özelliğini oluşturun

oem_cert.avbpubkey, AVB ortak anahtar ikili biçimindedir. SHA-1 kullanarak şunu okunabilir hale getirin:

$ sha1sum oem_cert.avbpubkey | cut -f1 -d ' '
3e62f2be9d9d813ef5........866ac72a51fd20

Bu, JSON açıklayıcının pubkey özelliğinin içeriği olacaktır.

   "images":[
      {
         ...
         "pubkey":"3e62f2be9d9d813ef5........866ac72a51fd20",
         ...
      },

DSU paketi imzalayın

DSU paketini imzalamak için aşağıdaki yöntemlerden birini kullanın:

  • 1. Yöntem: Orijinal AVB imzalama işlemi tarafından oluşturulan yapıyı şu amaçlarla yeniden kullanın: DSU paketi oluşturabilirsiniz. Alternatif bir yaklaşım, önceden imzalanmış yayın paketindeki görüntüleri alıp ayıklanan görüntüleri kullanarak ZIP dosyasını dosyası oluşturabilirsiniz.

  • 2. Yöntem: Gizli anahtarı kullanılabilir. DSU paketindeki (ZIP dosyası) her img ayrı ayrı:

    $ key_len=$(openssl rsa -in oem_cert_pri.pem -text | grep Private-Key | sed -e 's/.*(\(.*\) bit.*/\1/')
    $ for partition in system product; do
        avbtool add_hashtree_footer \
            --image ${OUT}/${partition}.img \
            --partition_name ${partition} \
            --algorithm SHA256_RSA${key_len} \
            --key oem_cert_pri.pem
    done
    

avbtool kullanarak add_hashtree_footer ekleme hakkında daha fazla bilgi için bkz. Avbtool'u kullanma.

DSU paketini yerel olarak doğrulama

Tüm yerel resimlerin eşlenen ortak anahtarla karşılaştırılarak doğrulanması önerilir. şu komutları kullanın:


for partition in system product; do
    avbtool verify_image --image ${OUT}/${partition}.img  --key oem_cert_pub.pem
done

Beklenen çıkış aşağıdaki gibi görünür:

Verifying image dsu/system.img using key at oem_cert_pub.pem
vbmeta: Successfully verified footer and SHA256_RSA2048 vbmeta struct in dsu/system.img
: Successfully verified sha1 hashtree of dsu/system.img for image of 898494464 bytes

Verifying image dsu/product.img using key at oem_cert_pub.pem
vbmeta: Successfully verified footer and SHA256_RSA2048 vbmeta struct in dsu/product.img
: Successfully verified sha1 hashtree of dsu/product.img for image of 905830400 bytes

DSU paketi oluşturma

Aşağıdaki örnek, bir system.img ve bir product.img:

dsu.zip {
    - system.img
    - product.img
}

Her iki görüntü de imzalandıktan sonra, ZIP dosyasını oluşturmak için aşağıdaki komutu kullanın:

$ mkdir -p dsu
$ cp ${OUT}/system.img dsu
$ cp ${OUT}/product.img dsu
$ cd dsu && zip ../dsu.zip *.img && cd -

Tek tıklamayla DSU'yu özelleştirme

DSU yükleyicisi, varsayılan olarak, https://...google.com/.../gsi-src.json

OEM'ler, persist.sys.fflag.override.settings_dynamic_system.list tanımlayarak listenin üzerine yazabilir özelliğini kullanabilirsiniz. Örneğin, bir OEM Aşağıdaki gibi GSI'yı ve OEM'e ait görüntüleri içeren JSON meta verileri sağlar:

{
    "include": ["https://dl.google.com/.../gsi-src.JSON"]
    "images":[
      {
         "name":"OEM image",
         "os_version":"10",
         "cpu_abi": "arm64-v8a",
         "details":"...",
         "vndk":[
            27,
            28,
            29
         ],
         "spl":"...",
         "pubkey":"",
         "uri":"https://.../....zip"
      },

}

Bir OEM, Şekil 7'de gösterildiği gibi, yayınlanmış DSU meta verilerini zincir halinde bağlayabilir.

Yayınlanan DSU meta verilerini zincirleme

7.Şekil Yayınlanan DSU meta verilerini zincirleme