Index: kernel/arch/ia32/src/boot/vesa_prot.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_prot.inc	(revision 421c8338127caee7f13ab5e70216f4ed042e8b22)
+++ kernel/arch/ia32/src/boot/vesa_prot.inc	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
@@ -1,3 +1,10 @@
 #ifdef CONFIG_FB
+
+#define MULTIBOOT_LOADER_MAGIC  0x2BADB002
+#define MBINFO_BIT_CMDLINE      2
+#define MBINFO_OFFSET_CMDLINE   16
+
+	# copy real mode VESA initialization code
+	
 	mov $vesa_init, %esi
 	mov $VESA_INIT_SEGMENT << 4, %edi
@@ -5,8 +12,66 @@
 	rep movsb
 	
+	# check for GRUB command line
+	
+	mov grub_eax, %eax
+	cmp $MULTIBOOT_LOADER_MAGIC, %eax
+	jne no_cmdline
+	
+	mov grub_ebx, %ebx
+	mov (%ebx), %eax
+	bt $MBINFO_BIT_CMDLINE, %eax
+	jnc no_cmdline
+	
+	# skip the kernel path in command line
+	
+	mov MBINFO_OFFSET_CMDLINE(%ebx), %esi
+	
+	skip_loop:
+		lodsb
+		
+		cmp $0, %al
+		je no_cmdline
+		
+		cmp $' ', %al
+		je skip_loop_done
+		
+		jmp skip_loop
+	skip_loop_done:
+	
+	mov (%esi), %al
+	cmp $0, %al
+	je no_cmdline
+	
+	# copy at most 23 characters from command line
+	
+	mov $VESA_INIT_SEGMENT << 4, %edi
+	add $default_mode - vesa_init, %edi
+	mov $23, %ecx
+	
+	cmd_loop:
+		lodsb
+		stosb
+		
+		cmp $0, %al
+		je cmd_loop_done
+		
+		loop cmd_loop
+	cmd_loop_done:
+	
+	# zero termination
+	
+	xor %eax, %eax
+	stosb
+	
+	no_cmdline:
+	
+	# jump to the real mode
+	
 	mov $VESA_INIT_SEGMENT << 4, %edi
 	jmpl *%edi
 	
 	vesa_meeting_point:
+		# returned back to protected mode
+		
 		mov %esi, KA2PA(vesa_ph_addr)
 		mov %di, KA2PA(vesa_height)
Index: kernel/arch/ia32/src/boot/vesa_real.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_real.inc	(revision 421c8338127caee7f13ab5e70216f4ed042e8b22)
+++ kernel/arch/ia32/src/boot/vesa_real.inc	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
@@ -327,4 +327,5 @@
 	.ascii "-"
 	.asciz STRING(CONFIG_VESA_BPP)
+	.fill 24
 
 #include "vesa_ret.inc"
