/usr/sbin/arc-setuparc-setup handles setup/teardown of ARC container or upgrading container. For example, mount point creation, directory creation, setting permissions uids and gids, selinux label setting, config file creation.
Often, script language is used for such stuff in general, but ARC uses native executable just for performance and better testability.
/usr/share/arc-setup/config.jsonconfig.json is the configuration file for arc-setup. Currently, the following configurations are in the file:
USE_ESDFSSetting this value to true will switch the implementation of the sdcard mount from a FUSE to esdfs.
ANDROID_DEBUGGABLESetting this value to true will make Android boot with ro.debuggable. This should make Android behave mostly like an -userdebug image.
A non-comprehensive list of caveats:
adb root will still be unavailable.su will be missing.strace won't work.WRITABLE_MOUNTSetting this value to true will make the Android root, and images for sdcard etc. filesystems read-write. Note that the images themselves need to be in a format that supports being mounted this way (e.g. ext4), which is not true of the default format (squashfs).
config.json and build/debug scriptsSeveral scripts modify the variables in config.json:
arc-setup-9999.ebuild rewrites USE_ESDFS at package build time depending on the type of the BOARD.board_specific_setup.sh rewrites ANDROID_DEBUGGABLE at image build time.setup_writable_android_mount.sh which is a debug script in Android repository rewrites WRITABLE_MOUNT.Be careful when adding, removing, or renaming the entries.