Cihaz yapılandırması

Harici depolama alanı, vold başlangıcının bir kombinasyonuyla yönetilir hizmet ve StorageManagerService sistem hizmeti. Montaj teçhizatı fiziksel harici depolama birimleri vold tarafından işlenir. medyayı uygulamalara sunmadan önce hazırlamak için hazırlık işlemleri gerçekleştirir.

Not: Android 8.0'da, MountService sınıfın adı şu şekilde değiştirildi: StorageManagerService.

Dosya eşlemeleri

Android 4.2.2 ve önceki sürümlerde cihaza özel vold.fstab yapılandırma dosyası, sysfs cihazlarından dosya sistemi ekleme işlemine eşlemeleri tanımlar noktalarından oluşur ve her satır şu biçimdedir:

dev_mount <label> <mount_point> <partition> <sysfs_path> [flags]
  • label: Cildin etiketi.
  • mount_point: Birimin eklenmesi gereken dosya sistemi yolu.
  • partition: Bölüm numarası (1 tabanlı) veya "otomatik" bölümüne ekleyin.
  • sysfs_path: Bu bağlantı noktasını sağlayabilecek cihazlara giden bir veya daha fazla sysfs yolu puan. Boşluklarla ayrılır ve her biri / ile başlamalıdır.
  • flags: İsteğe bağlı olarak virgülle ayrılmış işaret listesi, / içermemelidir. Olası değerler arasında nonremovable ve encryptable bulunur.

Android 4.3 ve sonraki sürümleri için init, vold ve kurtarma /fstab.<device> dosyasında birleştirildi. Harici vold tarafından yönetilen depolama birimleri için girişlerde, şu biçimdedir:

<src> <mnt_point> <type> <mnt_flags> <fs_mgr_flags>
  • src: Syfs altındaki yol (genellikle /sys konumuna eklenir) sağlayabilir. Yol, / ile başlamalıdır.
  • mount_point: Birimin eklenmesi gereken dosya sistemi yolu.
  • type: Birimdeki dosya sisteminin türü. Harici kartlarda bu genellikle vfat.
  • mnt_flags: Vold, bu alanı yoksayar ve ayarlanmalıdır varış noktası: defaults
  • fs_mgr_flags: Vold, birleştirilmiş fstab'deki tüm satırları yoksayar bu alanda voldmanaged= işaretini içermeyen uygulamalar. Bu işaret, ardından kartı açıklayan bir etiket ve bölüm numarası veya sözcüğün ardından auto Örnek: voldmanaged=sdcard:auto. Olası diğer işaretler: nonremovable, encryptable=sdcard, noemulatedsd ve encryptable=userdata.

Yapılandırma ayrıntıları

Çerçeve düzeyindeki ve bu düzeyin üzerindeki harici depolama etkileşimleri işlenir StorageManagerService tarihine kadar geçerlidir. Şuradaki yapılandırma değişiklikleri nedeniyle: Android 6.0 (depo_list.xml kaynak yer paylaşımının kaldırılması gibi), yapılandırma ayrıntıları iki kategoriye ayrılır.

Android 5.x ve önceki sürümler

Cihaza özel storage_list.xml yapılandırması dosyası, genellikle bir frameworks/base yer paylaşımı üzerinden sağlanan özellikleri ve kısıtlamaları hakkında daha fazla bilgi edinin. <StorageList> öğesi bir veya daha fazla <storage> öğesi içeriyor ve bunlardan tam olarak biri işaretlenmelidir birincil. <storage> özellikleri şunlardır:

  • mountPoint: Bu eklemenin dosya sistemi yolu.
  • storageDescription: Bu ekleme işlemini açıklayan dize kaynağı.
  • primary: Bu ekleme, birincil harici depolamaysa true.
  • removable: bu ekleme noktasında fiziksel SD gibi çıkarılabilir medya varsa doğru kartını inceleyebilirsiniz.
  • emulated: Bu ekleme emülasyonluysa ve dahili depolama alanı tarafından destekleniyorsa true, bir FUSE arka plan programı kullanıyor olabilirsiniz.
  • mtp-reserve: MTP'nin ücretsiz olarak ayırması gereken depolama alanı sayısı depolama alanına sahip olursunuz. Yalnızca ekleme işlemi emülasyonlu olarak işaretlendiğinde kullanılır.
  • allowMassStorage: Bu bağlantı birimi, USB yığın depolama birimi üzerinden paylaşılabiliyorsa true.
  • maxFileSize: MB cinsinden maksimum dosya boyutu.

Cihazlar, büyük/küçük harfe duyarlı olmayan bir emülasyon yaparak harici depolama alanı sağlayabilir. dahili depolama destekli izinsiz dosya sistemi. Bir olası uygulama, system/core/sdcard içindeki FUSE arka plan programı tarafından sağlanmaktadır. Cihaza özel bir init.rc hizmeti olarak eklenmelidir:

# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard <source_path> <dest_path> 1023 1023
    class late_start

Burada source_path yedek dahili depolama, dest_path ise yedek depolama alanıdır hedef ekleme noktası.

Cihaza özel bir init.rc komut dosyası yapılandırılırken EXTERNAL_STORAGE ortam değişkeni, birincil harici ortama giden yol olarak tanımlanmalıdır. depolama alanına sahip olursunuz. /sdcard yolu da aynı konuma çözümlenmelidir, muhtemelen sembolik bağlantılardan gelir. Bir cihaz, harici depolamanın konumunu ayarlar eski yolların çalışmaya devam etmesi için sembolik bağlantılar oluşturulmalıdır.

Android 6.0

Depolama alt sisteminin yapılandırması artık cihaza özel fstab dosyası ve bazı geçmiş statik yapılandırma dosyaları/değişkenleri daha dinamik bir davranışı desteklemek için kaldırıldı:

  • storage_list.xml kaynak yer paylaşımı kaldırıldı ve artık çerçeve tarafından kullanılmıyor. Depolama cihazları artık vold tarafından algılandığında dinamik olarak yapılandırılıyor.
  • EMULATED_STORAGE_SOURCE/TARGET ortam değişkeni kaldırıldı ve artık Zygote tarafından şu işlemler için kullanılmıyor: kullanıcıya özel ekleme noktalarını yapılandırın. Bunun yerine kullanıcı ayırma zorunlu kılındı kullanıcıya özel GID'lerle çalışır ve birincil paylaşılan depolama alanı, çalışma zamanında vold tarafından yerine eklenir.
    • Geliştiriciler modellere bağlı olarak, yolları dinamik veya statik olarak oluşturmaya devam edebilir. en iyi yöntemin ne olduğunu öğreneceğiz. Yola UUID'nin eklenmesi, yapılacak her kartı tanımlar geliştiriciler için konum netleştirmesidir. (Örneğin, /storage/ABCD-1234/report.txt açıkça /storage/DCBA-4321/report.txt ile farklı bir dosyadır.)
  • Sabit kodlu FUSE hizmetleri, cihaza özel init.rc dosyalarından kaldırıldı. Bunun yerine, gerektiğinde vold hizmetinden dinamik olarak çatallanmaya başlandı.

Android 6.0, bu yapılandırma değişikliklerine ek olarak dahili hale getirebilirsiniz. Android 6.0 cihazlarda gibi görünüyor.

Kabul edilebilir depolama alanı

fstab içinde uyarlanabilir bir depolama cihazını belirtmek için fs_mgr_flags alanında encryptable=userdata özelliğini kullanın. Tipik bir tanımı aşağıda bulabilirsiniz:

/devices/platform/mtk-msdc.1/mmc_host*           auto      auto     defaults
voldmanaged=sdcard1:auto,encryptable=userdata

Bir depolama cihazı kullanıldığında platform, cihazdaki içerikleri siler ve İki bölümü tanımlayan GUID bölümü tablosu:

  • gelecekte kullanım için ayrılmış küçük, boş bir android_meta bölümü. Bölüm türü GUID'si: 19A710A2-B3CA-11E4-B026-10604B889DCF.
  • dm-crypt kullanılarak şifrelenmiş ve çekirdek özelliklerine bağlı olarak ext4 veya f2fs kullanılarak biçimlendirilmiş büyük bir android_ext bölümü. Bölüm türü GUID'si: 193D1EA4-B3CA-11E4-B075-10604B889DCF.

Taşınabilir depolama birimi

fstab sisteminde, voldmanaged özelliğine sahip depolama cihazları, başka bir özellik olmadıkça varsayılan olarak taşınabilir kabul edilir. örneğin encryptable=userdata tanımlanır. Örneğin, USB OTG cihazların tipik bir tanımı aşağıda verilmiştir:

/devices/*/xhci-hcd.0.auto/usb*             auto            auto    defaults
                                                    voldmanaged=usb:auto

Platform, ekleme işleminden önce dosya sistemi türlerini algılamak için blkid kullanır ve kullanıcılar medya dosyası oluşturabilirsiniz.