Chrome OS arc-setup.

Warning: This document is old & has moved. Please update any links:


arc-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.


config.json is the configuration file for arc-setup. Currently, the following configurations are in the file:


Setting this value to true will switch the implementation of the sdcard mount from a FUSE to esdfs.


Setting 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:

  • Anything that detects the build type at compile-time will be unaffected, in particular SELinux rules that are relaxed, or the conditional compilation of some system tools.
  • adb root will still be unavailable.
  • su will be missing.
  • strace won't work.
  • The build type will still be -user.


Setting 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 scripts

Several 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.
  • rewrites ANDROID_DEBUGGABLE at image build time.
  • which is a debug script in Android repository rewrites WRITABLE_MOUNT.

Be careful when adding, removing, or renaming the entries.