Index: uspace/app/sysinst/sysinst.c
===================================================================
--- uspace/app/sysinst/sysinst.c	(revision e2b47b3c379b8e487a57912a8439271121e2d00b)
+++ uspace/app/sysinst/sysinst.c	(revision 2c21595177dad513b280fbcbee0a17db199ad2c2)
@@ -423,8 +423,18 @@
 {
 	sysinst_t *sysinst = (sysinst_t *)arg;
+
 	(void)sysinst;
 	(void)exists->fname;
-	// XXX Do not overwrite configuration files.
-	return fmgt_exr_overwrite;
+
+	sysinst_action(sysinst, exists->fname);
+
+	/*
+	 * Before starting fmgt operation, the caller would specify
+	 * whether to overwrite existing files.
+	 */
+	if (sysinst->overwrite)
+		return fmgt_exr_overwrite;
+	else
+		return fmgt_exr_skip;
 }
 
@@ -841,4 +851,6 @@
 		goto error;
 
+	/* Do not overwrite configuration files. */
+	sysinst->overwrite = false;
 	rc = fmgt_copy(sysinst->fmgt, flist, CFG_FILES_DEST);
 	if (rc != EOK) {
@@ -879,4 +891,6 @@
 		goto error;
 
+	/* Overwrite boot files with new ones during upgrade. */
+	sysinst->overwrite = true;
 	rc = fmgt_copy(sysinst->fmgt, flist, MOUNT_POINT);
 	if (rc != EOK) {
Index: uspace/app/sysinst/sysinst.h
===================================================================
--- uspace/app/sysinst/sysinst.h	(revision e2b47b3c379b8e487a57912a8439271121e2d00b)
+++ uspace/app/sysinst/sysinst.h	(revision 2c21595177dad513b280fbcbee0a17db199ad2c2)
@@ -86,4 +86,6 @@
 	bool quit;
 	char errmsg[128];
+	/** Allow overwriting files in current copy operation. */
+	bool overwrite;
 } sysinst_t;
 
