【Android A/B】init: [libfs_mgr]Skipping '/dev/block/bootdevice/by-name/xxxxxx' during mount_all


高通プラットフォーム、Android Pプロジェクトは、A/Bパーティションを使用してvendorパーティションを使用し、プライベートパーティション「xxx」を追加したが、このパーティションはマウントされていない.dmesg logをキャプチャし、次のように表示します.
init: [libfs_mgr]Skipping '/dev/block/bootdevice/by-name/xxxxxx' during mount_all

上のロゴはsystem/core/fs_mgr/fs_mgr.cppファイルのfs_mgr_mount_all関数は次のコードで印刷されます.
if (fstab->recs[i].fs_mgr_flags & MF_WAIT &&
            !fs_mgr_wait_for_file(fstab->recs[i].blk_device, 20s)) {
            LERROR << "Skipping '" << fstab->recs[i].blk_device << "' during mount_all";
            continue;
        }

このセクションのコードは、recs[i]のflagsが「wait」であり、recs[i]のblk_が見つからないことを示しています.デバイスの場合、if文を入力してERROR logを印刷します.
logから「xxxxx」パーティションのblk_がわかるデバイスは「/dev/block/bootdevice/by-name/xxxxx」で、adbモードに入り、/dev/block/bootdevice/by-name/パスを見てみると、確かに「xxxxx_a」と「xxxxx_b」は存在しないことがわかります.
説明「xxxxx」パーティションはA/Bパーティションとして構成されているが、fstabではA/Bパーティションとして構成されていない.
ソリューション:
デバイス/qcom/sdm 845/fstabを修正する.qcomファイルは「xxxxx」パーティションの構成について、flagsを「slotselect」に追加します.
-/dev/block/bootdevice/by-name/xxxxxx                /vendor/bt_firmware  vfat    ro,shortname=lower,uid=1002,gid=3002,dmask=227,fmask=337,context=u:object_r:bt_firmware_file:s0   wait
+/dev/block/bootdevice/by-name/xxxxxx                /vendor/bt_firmware  vfat    ro,shortname=lower,uid=1002,gid=3002,dmask=227,fmask=337,context=u:object_r:bt_firmware_file:s0   wait,slotselect

コンパイル後のfstab.qcomはvendor/etc/パスの下に置いて、vendorパーティションを再ブラシして、再起動した後にadb modeに入って、/vendor/bt_に入りますfirmware/はすべてのファイルを表示できます.