mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[core] display a notice about Legacy in the protective MBR for GPT
* This should help Windows users who create a GPT/UEFI drive and try to use it in BIOS/Legacy * Also make sure that we take into account the split space for both "SELECT" and "DOWNLOAD"
This commit is contained in:
parent
789373ed59
commit
28c1d6eb31
11 changed files with 200 additions and 10 deletions
100
res/mbr/gpt.S
Normal file
100
res/mbr/gpt.S
Normal file
|
@ -0,0 +1,100 @@
|
|||
/********************************************************************************/
|
||||
/* GPT - A protective MBR that displays a notice if a user attempts to boot a */
|
||||
/* GPT drive in BIOS/Legacy mode. */
|
||||
/* */
|
||||
/* Copyright (c) 2019 Pete Batard <pete@akeo.ie> */
|
||||
/* */
|
||||
/* This program is free software; you can redistribute it and/or modify it */
|
||||
/* under the terms of the GNU General Public License as published by the Free */
|
||||
/* Software Foundation, either version 3 of the License, or (at your option) */
|
||||
/* any later version. */
|
||||
/* */
|
||||
/* This program is distributed in the hope that it will be useful, but WITHOUT */
|
||||
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
|
||||
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */
|
||||
/* more details. */
|
||||
/* */
|
||||
/* You should have received a copy of the GNU General Public License along with */
|
||||
/* this program; if not, see <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/********************************************************************************/
|
||||
|
||||
/********************************************************************************/
|
||||
/* GNU Assembler Settings: */
|
||||
/********************************************************************************/
|
||||
.intel_syntax noprefix
|
||||
.code16
|
||||
/********************************************************************************/
|
||||
|
||||
/********************************************************************************/
|
||||
/* Constants: */
|
||||
/********************************************************************************/
|
||||
MBR_ADDR = 0x7c00
|
||||
MBR_SIZE = 0x200
|
||||
MBR_RESERVED = 0x1b8 # Start of the reserved section (partition table, etc.)
|
||||
PT_MAX = 0x04 # Number of partition entries in the partition table
|
||||
PT_ENTRY_SIZE = 0x10 # Size of a partition entry in the partition table
|
||||
|
||||
/********************************************************************************/
|
||||
/* MBR: This section resides at 0x00007c00 and is exactly 512 bytes */
|
||||
/********************************************************************************/
|
||||
.section main, "ax"
|
||||
.globl mbr
|
||||
mbr:
|
||||
inc cx
|
||||
dec bx
|
||||
inc bp
|
||||
dec di
|
||||
cld
|
||||
xor ax, ax
|
||||
mov ds, ax
|
||||
mov si, offset sep
|
||||
call print_string
|
||||
mov si, offset hdr
|
||||
call print_string
|
||||
mov si, offset sep
|
||||
call print_string
|
||||
mov si, offset txt
|
||||
call print_string
|
||||
hlt
|
||||
|
||||
print_string:
|
||||
lodsb
|
||||
cmp al, 0x00
|
||||
jz 0f
|
||||
mov ah, 0x0e
|
||||
mov bx, 0x0007
|
||||
int 0x10
|
||||
jmp print_string
|
||||
0: ret
|
||||
|
||||
/********************************************************************************/
|
||||
/* Data section */
|
||||
/********************************************************************************/
|
||||
sep:
|
||||
.string "****************************************\r\n"
|
||||
hdr:
|
||||
.string "*** ERROR: LEGACY BOOT OF UEFI MEDIA ***\r\n"
|
||||
txt:
|
||||
.ascii "\r\n" \
|
||||
"This drive can only boot in UEFI mode.\r\n" \
|
||||
"It can not boot in BIOS/Legacy mode.\r\n" \
|
||||
"\r\n" \
|
||||
"If you want to boot this drive in BIOS/Legacy mode, you\r\n" \
|
||||
"should recreate it in Rufus using the following settings:\r\n" \
|
||||
"* Partition scheme -> MBR\r\n" \
|
||||
"* Target system -> BIOS...\r\n" \
|
||||
"\0"
|
||||
|
||||
/********************************************************************************/
|
||||
/* From offset 0x1b8, the MBR contains the partition table and signature data */
|
||||
/********************************************************************************/
|
||||
.org MBR_RESERVED
|
||||
disk_signature:
|
||||
.space 0x04
|
||||
filler:
|
||||
.space 0x02
|
||||
partition_table:
|
||||
.space PT_ENTRY_SIZE * PT_MAX
|
||||
mbr_signature:
|
||||
.word 0xAA55
|
BIN
res/mbr/gpt.bin
Normal file
BIN
res/mbr/gpt.bin
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue