Dear singularity developers,
I wondered if there is a way of getting singularity to work in the Windows Subsystem for Linux? Installing is fine, but when trying to run something I get:
singularity -d shell CAIsr-qsm-v1.2.3-latest.simg
Enabling debugging
Ending argument loop
Singularity version: 2.4.5-dist
Exec'ing: /usr/lib/x86_64-linux-gnu/singularity/cli/shell.exec
Evaluating args: 'CAIsr-qsm-v1.2.3-latest.simg'
VERBOSE [U=0,P=45] message_init() Set messagelevel to: 5
DEBUG [U=0,P=45] fd_cleanup() Cleanup file descriptor table
VERBOSE [U=0,P=45] singularity_config_parse() Initialize configuration file: /etc/singularity/singularity.conf
DEBUG [U=0,P=45] singularity_config_parse() Starting parse of configuration file /etc/singularity/singularity.conf
VERBOSE [U=0,P=45] singularity_config_parse() Got config key allow setuid = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key max loop devices = '256'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key allow pid ns = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key config passwd = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key config group = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key config resolv_conf = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount proc = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount sys = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount dev = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount devpts = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount home = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount tmp = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount hostfs = 'no'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key bind path = '/etc/localtime'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key bind path = '/etc/hosts'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key user bind control = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key enable overlay = 'try'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key mount slave = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key sessiondir max size = '16'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key allow container squashfs = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key allow container extfs = 'yes'
VERBOSE [U=0,P=45] singularity_config_parse() Got config key allow container dir = 'yes'
DEBUG [U=0,P=45] singularity_config_parse() Finished parsing configuration file '/etc/singularity/singularity.conf'
VERBOSE [U=0,P=45] singularity_registry_init() Initializing Singularity Registry
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'LIBEXECDIR' = '/usr/lib/x86_64-linux-gnu'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(libexecdir, /usr/lib/x86_64-linux-gnu) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'COMMAND' = 'shell'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(COMMAND, shell) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'MESSAGELEVEL' = '5'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(MESSAGELEVEL, 5) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'VERSION' = '2.4.5-dist'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(version, 2.4.5-dist) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'LOCALSTATEDIR' = '/var/lib'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(localstatedir, /var/lib) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'SYSCONFDIR' = '/etc'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(sysconfdir, /etc) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'BINDIR' = '/usr/bin'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(bindir, /usr/bin) = 0
VERBOSE [U=0,P=45] singularity_registry_set() Adding value to registry: 'IMAGE' = 'CAIsr-qsm-v1.2.3-latest.simg'
DEBUG [U=0,P=45] singularity_registry_set() Returning singularity_registry_set(IMAGE, CAIsr-qsm-v1.2.3-latest.simg) = 0
DEBUG [U=0,P=45] singularity_registry_get() Returning NULL on 'HOME'
DEBUG [U=0,P=45] singularity_registry_get() Returning NULL on 'TARGET_UID'
DEBUG [U=0,P=45] singularity_registry_get() Returning NULL on 'TARGET_GID'
DEBUG [U=0,P=45] singularity_priv_init() Initializing user info
DEBUG [U=0,P=45] singularity_priv_init() Set the calling user's username to: uqsbollm
DEBUG [U=0,P=45] singularity_priv_init() Marking uinfo structure as ready
DEBUG [U=0,P=45] singularity_priv_init() Obtaining home directory
VERBOSE [U=0,P=45] singularity_priv_init() Set home (via getpwuid()) to: /home/uqsbollm
VERBOSE [U=0,P=45] singularity_suid_init() Running SUID program workflow
VERBOSE [U=0,P=45] singularity_suid_init() Checking program has appropriate permissions
VERBOSE [U=0,P=45] singularity_suid_init() Checking configuration file is properly owned by root
VERBOSE [U=0,P=45] singularity_suid_init() Checking if singularity.conf allows us to run as suid
DEBUG [U=0,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(allow setuid, yes)
DEBUG [U=0,P=45] singularity_config_get_value_impl() Returning configuration value allow setuid='yes'
DEBUG [U=0,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(allow setuid, yes) = 1
DEBUG [U=0,P=45] singularity_registry_get() Returning NULL on 'NOSUID'
VERBOSE [U=0,P=45] singularity_priv_userns() Invoking the user namespace
DEBUG [U=0,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(allow user ns, yes)
DEBUG [U=0,P=45] singularity_config_get_value_impl() No configuration entry found for 'allow user ns'; returning default value 'yes'
DEBUG [U=0,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(allow user ns, yes) = 1
VERBOSE [U=0,P=45] singularity_priv_userns() Not virtualizing USER namespace: running as SUID
DEBUG [U=0,P=45] singularity_priv_userns() Returning singularity_priv_init(void)
DEBUG [U=0,P=45] singularity_priv_drop() Dropping privileges to UID=1000, GID=1000 (12 supplementary GIDs)
DEBUG [U=0,P=45] singularity_priv_drop() Restoring supplementary groups
DEBUG [U=1000,P=45] singularity_priv_drop() Confirming we have correct UID/GID
DEBUG [U=1000,P=45] singularity_config_get_value_multi_impl() No configuration entry found for 'autofs bug path'; returning default value ''
VERBOSE [U=1000,P=45] singularity_runtime_autofs() No autofs bug path in configuration, skipping
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'DAEMON_START'
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'DAEMON_JOIN'
DEBUG [U=1000,P=45] singularity_daemon_init() Not joining a daemon, daemon join not set
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'WRITABLE'
VERBOSE [U=1000,P=45] main() Instantiating read only container image object
DEBUG [U=1000,P=45] singularity_registry_get() Returning value from registry: 'IMAGE' = 'CAIsr-qsm-v1.2.3-latest.simg'
DEBUG [U=1000,P=45] singularity_image_init() Calling image_init for each file system module
DEBUG [U=1000,P=45] singularity_image_dir_init() Opening file descriptor to directory: /home/uqsbollm/CAIsr-qsm-v1.2.3-latest.simg
DEBUG [U=1000,P=45] singularity_image_dir_init() This is not a directory based image
DEBUG [U=1000,P=45] singularity_image_squashfs_init() Checking if writable image requested
DEBUG [U=1000,P=45] singularity_image_squashfs_init() Opening file descriptor to image: /home/uqsbollm/CAIsr-qsm-v1.2.3-latest.simg
VERBOSE [U=1000,P=45] singularity_image_squashfs_init() Checking that file pointer is a Singularity image
DEBUG [U=1000,P=45] singularity_image_squashfs_init() Checking for magic in the top of the file
VERBOSE [U=1000,P=45] singularity_image_squashfs_init() File is a valid SquashFS image
DEBUG [U=1000,P=45] singularity_image_init() got image_init type for squashfs
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(allow container squashfs, yes)
DEBUG [U=1000,P=45] singularity_config_get_value_impl() Returning configuration value allow container squashfs='yes'
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(allow container squashfs, yes) = 1
DEBUG [U=1000,P=45] singularity_config_get_value_impl() No configuration entry found for 'limit container paths'; returning default value 'NULL'
DEBUG [U=1000,P=45] singularity_config_get_value_impl() No configuration entry found for 'limit container owners'; returning default value 'NULL'
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'DAEMON_JOIN'
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'CLEANUPDIR'
VERBOSE [U=1000,P=45] singularity_registry_set() Adding value to registry: 'CLEANUPD_FD' = '-1'
DEBUG [U=1000,P=45] singularity_registry_set() Returning singularity_registry_set(CLEANUPD_FD, -1) = 0
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'DAEMON_JOIN'
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'NOSESSIONCLEANUP'
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'NOCLEANUP'
DEBUG [U=1000,P=45] singularity_cleanupd() Not running a cleanup thread, no 'SINGULARITY_CLEANUPDIR' defined
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'DAEMON_JOIN'
DEBUG [U=1000,P=45] singularity_runtime_ns() Calling: _singularity_runtime_ns_ipc()
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(allow ipc ns, yes)
DEBUG [U=1000,P=45] singularity_config_get_value_impl() No configuration entry found for 'allow ipc ns'; returning default value 'yes'
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(allow ipc ns, yes) = 1
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'UNSHARE_IPC'
VERBOSE [U=1000,P=45] singularity_runtime_ns_ipc() Not virtualizing IPC namespace on user request
DEBUG [U=1000,P=45] singularity_runtime_ns() Calling: _singularity_runtime_ns_pid()
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(allow pid ns, yes)
DEBUG [U=1000,P=45] singularity_config_get_value_impl() Returning configuration value allow pid ns='yes'
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(allow pid ns, yes) = 1
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'UNSHARE_PID'
VERBOSE [U=1000,P=45] singularity_runtime_ns_pid() Not virtualizing PID namespace on user request
DEBUG [U=1000,P=45] singularity_runtime_ns() Calling: _singularity_runtime_ns_net()
DEBUG [U=1000,P=45] singularity_registry_get() Returning NULL on 'UNSHARE_NET'
VERBOSE [U=1000,P=45] singularity_runtime_ns_net() Not virtualizing network namespace on user request
DEBUG [U=1000,P=45] singularity_runtime_ns() Calling: _singularity_runtime_ns_mnt()
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Called singularity_config_get_bool(mount slave, yes)
DEBUG [U=1000,P=45] singularity_config_get_value_impl() Returning configuration value mount slave='yes'
DEBUG [U=1000,P=45] singularity_config_get_bool_char_impl() Return singularity_config_get_bool(mount slave, yes) = 1
DEBUG [U=1000,P=45] singularity_priv_escalate() Temporarily escalating privileges (U=1000)
DEBUG [U=0,P=45] singularity_priv_escalate() Clearing supplementary GIDs.
DEBUG [U=0,P=45] singularity_runtime_ns_mnt() Virtualizing FS namespace
DEBUG [U=0,P=45] singularity_runtime_ns_mnt() Virtualizing mount namespace
DEBUG [U=0,P=45] singularity_priv_drop() Dropping privileges to UID=1000, GID=1000 (12 supplementary GIDs)
DEBUG [U=0,P=45] singularity_priv_drop() Restoring supplementary groups
DEBUG [U=1000,P=45] singularity_priv_drop() Confirming we have correct UID/GID
DEBUG [U=1000,P=45] singularity_runtime_ns_mnt() Making mounts slave
ERROR [U=1000,P=45] singularity_runtime_ns_mnt() Could not make mountspaces slave: Invalid argument
ABORT [U=1000,P=45] singularity_runtime_ns_mnt() Retval = 255
Thank you for your thoughts on this
Best
Steffen