summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoretaIneLp <33374857+etaIneLp@users.noreply.github.com>2020-05-27 10:36:14 -0400
committerAndreas Kling <kling@serenityos.org>2020-05-28 00:50:55 +0200
commit7bc871ca8dd851605bfd67cb5be1538d009aa56b (patch)
tree26e7af8afdfd69ef1a7c6e1aad1927fa25349783
parenteae4843712a87fdbfe2c5aba94c3f3e304935277 (diff)
downloadserenity-7bc871ca8dd851605bfd67cb5be1538d009aa56b.zip
Kernel: Stop bootloader from setting video mode with Multiboot
Meta: Update INSTALL.md and grub configs for new boot_mode option
-rw-r--r--INSTALL.md2
-rw-r--r--Kernel/Arch/i386/Boot/boot.S9
-rw-r--r--Meta/grub-ebr.cfg5
-rw-r--r--Meta/grub-gpt.cfg5
-rw-r--r--Meta/grub-mbr.cfg7
5 files changed, 18 insertions, 10 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 0998786377..07345f3e2a 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -47,4 +47,4 @@ $ cu -s 57600 -l /dev/ttyUSB0
## Troubleshooting boot issues without a serial port
-Serenity is a graphical OS and thus boots directly to the desktop. If your computer doesn't have a serial port and it fails to boot, you can force Serenity to boot into text mode by editing **Kernel/Arch/i386/Boot/boot.S** and removing **| MULTIBOOT_VIDEO_MODE** from the end of the **multiboot_flags** line before (re)running **make** and **make install**.
+Serenity is a graphical OS and thus boots directly to the desktop. If your computer doesn't have a serial port and it fails to boot, you can force Serenity to boot into text mode by selecting the **SerenityOS (text mode)** option in GRUB.
diff --git a/Kernel/Arch/i386/Boot/boot.S b/Kernel/Arch/i386/Boot/boot.S
index 601a50a7ac..f52db9d726 100644
--- a/Kernel/Arch/i386/Boot/boot.S
+++ b/Kernel/Arch/i386/Boot/boot.S
@@ -1,8 +1,7 @@
.set MULTIBOOT_MAGIC, 0x1badb002
.set MULTIBOOT_PAGE_ALIGN, 0x1
.set MULTIBOOT_MEMORY_INFO, 0x2
-.set MULTIBOOT_VIDEO_MODE, 0x4
-.set multiboot_flags, MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_VIDEO_MODE
+.set multiboot_flags, MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO
.set multiboot_checksum, -(MULTIBOOT_MAGIC + multiboot_flags)
.section .multiboot
@@ -20,12 +19,6 @@
.long 0x00000000 /* bss_end_addr */
.long 0x00000000 /* entry_addr */
-/* for MULTIBOOT_VIDEO_MODE */
-.long 0x00000000 /* mode_type */
-.long 1280 /* width */
-.long 1024 /* height */
-.long 32 /* depth */
-
.section .stack, "aw", @nobits
stack_bottom:
.skip 32768
diff --git a/Meta/grub-ebr.cfg b/Meta/grub-ebr.cfg
index 2b351ce72f..f865bb9162 100644
--- a/Meta/grub-ebr.cfg
+++ b/Meta/grub-ebr.cfg
@@ -5,6 +5,11 @@ menuentry 'SerenityOS (normal)' {
multiboot /boot/Kernel root=/dev/hda5
}
+menuentry 'SerenityOS (text mode)' {
+ root=hd0,5
+ multiboot /boot/Kernel boot_mode=text root=/dev/hda5
+}
+
menuentry 'SerenityOS (No ACPI)' {
root=hd0,5
multiboot /boot/Kernel root=/dev/hda5 acpi=off
diff --git a/Meta/grub-gpt.cfg b/Meta/grub-gpt.cfg
index 9de1494daa..13addb2ab8 100644
--- a/Meta/grub-gpt.cfg
+++ b/Meta/grub-gpt.cfg
@@ -5,6 +5,11 @@ menuentry 'SerenityOS (normal)' {
multiboot /boot/Kernel root=/dev/hda2
}
+menuentry 'SerenityOS (text mode)' {
+ root=hd0,2
+ multiboot /boot/Kernel boot_mode=text root=/dev/hda2
+}
+
menuentry 'SerenityOS (No ACPI)' {
root=hd0,2
multiboot /boot/Kernel root=/dev/hda2 acpi=off
diff --git a/Meta/grub-mbr.cfg b/Meta/grub-mbr.cfg
index bbb37ffc66..f5cbf252bc 100644
--- a/Meta/grub-mbr.cfg
+++ b/Meta/grub-mbr.cfg
@@ -5,12 +5,17 @@ menuentry 'SerenityOS (normal)' {
multiboot /boot/Kernel root=/dev/hda1
}
+menuentry 'SerenityOS (text mode)' {
+ root=hd0,1
+ multiboot /boot/Kernel boot_mode=text root=/dev/hda1
+}
+
menuentry 'SerenityOS (No ACPI)' {
root=hd0,1
multiboot /boot/Kernel root=/dev/hda1 acpi=off
}
menuentry 'SerenityOS (with serial debug)' {
- root=hd0,1
+ root=hd0,1
multiboot /boot/Kernel serial_debug root=/dev/hda1
}