Index: uspace/app/sysinst/sysinst.c
===================================================================
--- uspace/app/sysinst/sysinst.c	(revision 6e569bf0a1ed0572a905d116f5a08b3ebd525710)
+++ uspace/app/sysinst/sysinst.c	(revision 5f36841fc8b62edea915fd8ce6977576d3f6520f)
@@ -69,12 +69,9 @@
 #define MOUNT_POINT "/inst"
 
-/** Device containing HelenOS live CD */
-#define CD_DEV "devices/\\hw\\pci0\\00:01.0\\ata-c2\\d0"
-
-#define CD_FS_TYPE "cdfs"
-#define CD_FS_SRV "/srv/cdfs"
-#define CD_MOUNT_POINT "/cdrom"
-
-#define BOOT_FILES_SRC "/cdrom"
+/** HelenOS live CD volume label */
+#define CD_VOL_LABEL "HelenOS-CD"
+#define CD_MOUNT_POINT "/vol/" CD_VOL_LABEL
+
+#define BOOT_FILES_SRC CD_MOUNT_POINT
 #define BOOT_BLOCK_IDX 0 /* MBR */
 
@@ -196,33 +193,5 @@
 static errno_t sysinst_copy_boot_files(void)
 {
-	task_wait_t twait;
-	task_exit_t texit;
-	errno_t rc;
-	int trc;
-
-	printf("sysinst_copy_boot_files(): start filesystem server\n");
-	rc = task_spawnl(NULL, &twait, CD_FS_SRV, CD_FS_SRV, NULL);
-	if (rc != EOK)
-		return rc;
-
-	printf("sysinst_copy_boot_files(): wait for filesystem server\n");
-	rc = task_wait(&twait, &texit, &trc);
-	if (rc != EOK)
-		return rc;
-
-	printf("sysinst_copy_boot_files(): verify filesystem server result\n");
-	if (texit != TASK_EXIT_NORMAL || trc != 0) {
-		printf("sysinst_fs_mount(): not successful, but could be already loaded.\n");
-	}
-
-	printf("sysinst_copy_boot_files(): create CD mount point\n");
-	rc = vfs_link_path(CD_MOUNT_POINT, KIND_DIRECTORY, NULL);
-	if (rc != EOK)
-		return rc;
-
-	printf("sysinst_copy_boot_files(): mount CD filesystem\n");
-	rc = vfs_mount_path(CD_MOUNT_POINT, CD_FS_TYPE, CD_DEV, "", 0, 0);
-	if (rc != EOK)
-		return rc;
+	errno_t rc;
 
 	printf("sysinst_copy_boot_files(): copy bootloader files\n");
Index: uspace/srv/volsrv/part.c
===================================================================
--- uspace/srv/volsrv/part.c	(revision 6e569bf0a1ed0572a905d116f5a08b3ebd525710)
+++ uspace/srv/volsrv/part.c	(revision 5f36841fc8b62edea915fd8ce6977576d3f6520f)
@@ -68,4 +68,19 @@
 };
 
+static const char *fstype_str(vol_fstype_t fstype)
+{
+	struct fsname_type *fst;
+
+	fst = &fstab[0];
+	while (fst->name != NULL) {
+		if (fst->fstype == fstype)
+			return fst->name;
+		++fst;
+	}
+
+	assert(false);
+	return NULL;
+}
+
 /** Check for new partitions */
 static errno_t vol_part_check_new(void)
@@ -204,4 +219,45 @@
 }
 
+static int vol_part_mount(vol_part_t *part)
+{
+	char *mp;
+	int rc;
+
+	if (str_size(part->label) < 1) {
+		/* Don't mount nameless volumes */
+		log_msg(LOG_DEFAULT, LVL_NOTE, "Not mounting nameless partition.");
+		return EOK;
+	}
+
+	log_msg(LOG_DEFAULT, LVL_NOTE, "Determine MP label='%s'", part->label);
+	rc = asprintf(&mp, "/vol/%s", part->label);
+	if (rc < 0) {
+		log_msg(LOG_DEFAULT, LVL_NOTE, "rc -> %d", rc);
+		return ENOMEM;
+	}
+
+	log_msg(LOG_DEFAULT, LVL_NOTE, "Create mount point '%s'", mp);
+	rc = vfs_link_path(mp, KIND_DIRECTORY, NULL);
+	if (rc != EOK) {
+		log_msg(LOG_DEFAULT, LVL_ERROR, "Error creating mount point '%s'",
+		    mp);
+		free(mp);
+		return EIO;
+	}
+
+	log_msg(LOG_DEFAULT, LVL_NOTE, "Call vfs_mount_path mp='%s' fstype='%s' svc_name='%s'",
+	    mp, fstype_str(part->fstype), part->svc_name);
+	rc = vfs_mount_path(mp, fstype_str(part->fstype),
+	    part->svc_name, "", 0, 0);
+	if (rc != EOK) {
+		log_msg(LOG_DEFAULT, LVL_NOTE, "Failed mounting to %s", mp);
+	}
+	log_msg(LOG_DEFAULT, LVL_NOTE, "Mount to %s -> %d\n", mp, rc);
+
+	free(mp);
+	return rc;
+}
+
+
 static errno_t vol_part_add_locked(service_id_t sid)
 {
@@ -210,4 +266,5 @@
 
 	assert(fibril_mutex_is_locked(&vol_parts_lock));
+	log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_add_locked(%zu)", sid);
 
 	/* Check for duplicates */
@@ -216,5 +273,6 @@
 		return EEXIST;
 
-	log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_add_locked()");
+	log_msg(LOG_DEFAULT, LVL_NOTE, "partition %zu is new", sid);
+
 	part = vol_part_new();
 	if (part == NULL)
@@ -230,4 +288,8 @@
 
 	rc = vol_part_probe(part);
+	if (rc != EOK)
+		goto error;
+
+	rc = vol_part_mount(part);
 	if (rc != EOK)
 		goto error;
@@ -366,4 +428,10 @@
 	}
 
+	rc = vol_part_mount(part);
+	if (rc != EOK) {
+		fibril_mutex_unlock(&vol_parts_lock);
+		return rc;
+	}
+
 	fibril_mutex_unlock(&vol_parts_lock);
 	return EOK;
Index: uspace/srv/volsrv/volsrv.c
===================================================================
--- uspace/srv/volsrv/volsrv.c	(revision 6e569bf0a1ed0572a905d116f5a08b3ebd525710)
+++ uspace/srv/volsrv/volsrv.c	(revision 5f36841fc8b62edea915fd8ce6977576d3f6520f)
@@ -251,4 +251,6 @@
 	errno_t rc;
 
+	log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_mkfs_srv()");
+
 	sid = IPC_GET_ARG1(*icall);
 	fstype = IPC_GET_ARG2(*icall);
@@ -261,7 +263,8 @@
 	}
 
-	printf("vol_part_mkfs_srv: label=%p\n", label);
-	if (label != NULL)
-		printf("vol_part_mkfs_srv: label='%s'\n", label);
+	if (label != NULL) {
+		log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_mkfs_srv: label='%s'",
+		    label);
+	}
 
 	rc = vol_part_find_by_id(sid, &part);
