Index: kernel/generic/src/console/cmd.c
===================================================================
--- kernel/generic/src/console/cmd.c	(revision 81df0ce1a52271cd6aa1c12bf28a8cbc62bb4f61)
+++ kernel/generic/src/console/cmd.c	(revision b4d108544225400348d135e88a825aa8efd1d5c9)
@@ -977,5 +977,5 @@
 {
 	printf("The kernel will now relinquish the console.\n");
-	arch_release_console();
+	release_console();
 	
 	if ((kconsole_notify) && (kconsole_irq.notif_cfg.notify))
Index: kernel/generic/src/console/console.c
===================================================================
--- kernel/generic/src/console/console.c	(revision 81df0ce1a52271cd6aa1c12bf28a8cbc62bb4f61)
+++ kernel/generic/src/console/console.c	(revision b4d108544225400348d135e88a825aa8efd1d5c9)
@@ -66,4 +66,7 @@
 static size_t klog_uspace = 0;
 
+/**< Silent output */
+static bool silent = false;
+
 /**< Kernel log spinlock */
 SPINLOCK_INITIALIZE(klog_lock);
@@ -71,5 +74,5 @@
 /** Physical memory area used for klog buffer */
 static parea_t klog_parea;
-	
+
 /*
  * For now, we use 0 as INR.
@@ -143,4 +146,16 @@
 	klog_inited = true;
 	spinlock_unlock(&klog_lock);
+}
+
+void grab_console(void)
+{
+	silent = false;
+	arch_grab_console();
+}
+
+void release_console(void)
+{
+	silent = true;
+	arch_release_console();
 }
 
@@ -200,5 +215,5 @@
 	index_t index = 0;
 	char ch;
-
+	
 	while (index < buflen) {
 		ch = _getc(chardev);
@@ -214,5 +229,5 @@
 		} 
 		putchar(ch);
-
+		
 		if (ch == '\n') { /* end of string => write 0, return */
 			buf[index] = '\0';
@@ -254,5 +269,5 @@
 		index_t i;
 		for (i = klog_len - klog_stored; i < klog_len; i++)
-			stdout->op->write(stdout, klog[(klog_start + i) % KLOG_SIZE]);
+			stdout->op->write(stdout, klog[(klog_start + i) % KLOG_SIZE], silent);
 		klog_stored = 0;
 	}
@@ -266,5 +281,5 @@
 	
 	if (stdout->op->write)
-		stdout->op->write(stdout, c);
+		stdout->op->write(stdout, c, silent);
 	else {
 		/* The character is just in the kernel log */
Index: kernel/generic/src/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision 81df0ce1a52271cd6aa1c12bf28a8cbc62bb4f61)
+++ kernel/generic/src/syscall/syscall.c	(revision b4d108544225400348d135e88a825aa8efd1d5c9)
@@ -93,9 +93,16 @@
 {
 #ifdef CONFIG_KCONSOLE
-	arch_grab_console();
+	grab_console();
 	return true;
 #else
 	return false;
 #endif
+}
+
+/** Tell kernel to relinquish keyboard/console access */
+static unative_t sys_debug_disable_console(void)
+{
+	release_console();
+	return true;
 }
 
@@ -185,5 +192,6 @@
 	/* Debug calls */
 	(syshandler_t) sys_debug_enable_console,
-
+	(syshandler_t) sys_debug_disable_console,
+	
 	(syshandler_t) sys_ipc_connect_kbox
 };
