Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision fd384d6ced77609e6ad611854814f0fac2b27b41)
+++ uspace/app/init/init.c	(revision 73d86001885df3211d108f3c08860260f1c2b38f)
@@ -49,4 +49,5 @@
 #include <loc.h>
 #include <str_error.h>
+#include <config.h>
 #include "init.h"
 
@@ -306,4 +307,6 @@
 int main(int argc, char *argv[])
 {
+	int rc;
+
 	info_print();
 	
@@ -356,9 +359,11 @@
 	srv_start("/srv/hound");
 	
-	int rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER);
-	if (rc == EOK) {
-		gui_start("/app/barber", HID_COMPOSITOR_SERVER);
-		gui_start("/app/vlaunch", HID_COMPOSITOR_SERVER);
-		gui_start("/app/vterm", HID_COMPOSITOR_SERVER);
+	if (!config_key_exists("console")) {
+		rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER);
+		if (rc == EOK) {
+			gui_start("/app/barber", HID_COMPOSITOR_SERVER);
+			gui_start("/app/vlaunch", HID_COMPOSITOR_SERVER);
+			gui_start("/app/vterm", HID_COMPOSITOR_SERVER);
+		}
 	}
 	
Index: uspace/srv/hid/input/input.c
===================================================================
--- uspace/srv/hid/input/input.c	(revision fd384d6ced77609e6ad611854814f0fac2b27b41)
+++ uspace/srv/hid/input/input.c	(revision 73d86001885df3211d108f3c08860260f1c2b38f)
@@ -827,20 +827,22 @@
 	fibril_mutex_lock(&discovery_lock);
 	
-	rc = dev_check_new_kbdevs();
-	if (rc != EOK) {
-		fibril_mutex_unlock(&discovery_lock);
-		return rc;
-	}
-	
-	rc = dev_check_new_mousedevs();
-	if (rc != EOK) {
-		fibril_mutex_unlock(&discovery_lock);
-		return rc;
-	}
-
-	rc = dev_check_new_serialdevs();
-	if (rc != EOK) {
-		fibril_mutex_unlock(&discovery_lock);
-		return rc;
+	if (!serial_console) {
+		rc = dev_check_new_kbdevs();
+		if (rc != EOK) {
+			fibril_mutex_unlock(&discovery_lock);
+			return rc;
+		}
+	
+		rc = dev_check_new_mousedevs();
+		if (rc != EOK) {
+			fibril_mutex_unlock(&discovery_lock);
+			return rc;
+		}
+	} else {
+		rc = dev_check_new_serialdevs();
+		if (rc != EOK) {
+			fibril_mutex_unlock(&discovery_lock);
+			return rc;
+		}
 	}
 	
Index: uspace/srv/hid/output/output.c
===================================================================
--- uspace/srv/hid/output/output.c	(revision fd384d6ced77609e6ad611854814f0fac2b27b41)
+++ uspace/srv/hid/output/output.c	(revision 73d86001885df3211d108f3c08860260f1c2b38f)
@@ -34,4 +34,5 @@
 #include <task.h>
 #include <ipc/output.h>
+#include <config.h>
 #include "port/ega.h"
 #include "port/kchar.h"
@@ -476,9 +477,12 @@
 	}
 	
-	ega_init();
-	kchar_init();
-	niagara_init();
-	ski_init();
-	chardev_init();
+	if (!config_key_exists("console")) {
+		ega_init();
+		kchar_init();
+		niagara_init();
+		ski_init();
+	} else {
+		chardev_init();
+	}
 	
 	printf("%s: Accepting connections\n", NAME);
