07070100000000000081B400000000000000000000000163863434000005F7000000000000000000000000000000000000002700000000uefi_mbr-0+git20221129.53aad69/LICENSE    BSD 3-Clause License

Copyright (c) 2022, Steffen Winterfeldt
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 07070100000001000081B400000000000000000000000163863434000000A6000000000000000000000000000000000000002800000000uefi_mbr-0+git20221129.53aad69/Makefile   all: uefi_mbr.bin

uefi_mbr.bin: uefi_mbr.asm
	nasm -O99 -f bin -l $@.lst -o $@ $<

test: all
	./test_setup test.img

clean:
	rm -f *.bin *.lst *.o *.img *~ uefi_mbr
  07070100000002000081B400000000000000000000000163863434000000D6000000000000000000000000000000000000002900000000uefi_mbr-0+git20221129.53aad69/README.md  MBR loader that just prints a message.

To be used on disks intended for UEFI bootable systems to print a warning
when legacy-booted accidentally.

Here is what it looks like in qemu:

![screenshot](screenshot.jpg)  07070100000003000081B400000000000000000000000163863434000047C0000000000000000000000000000000000000002E00000000uefi_mbr-0+git20221129.53aad69/screenshot.jpg  JFIF       C 	!"$"$ X                  A   !"1A2#$%34&5FQaeBd'CESVb   ? ﶭa	m).4O}F'K6[G7bPz;Y-}eL	鵈ֹ:$j.UWePKW"%IQ`lߡȲHTEX ԋ\%EiWGY&i+f.zQW/Le)zn߻oY6..l߳v~9ۍ"}њVYXeO:KpmDU$̊LbTrȨ܊ڴW7KM%$U=
Ja؝.DUl{U݋C*.w{%Un稦X|jPO"1Z5p=W*e{ U oߧ 7oGuu_WP%#6=gD=Eʵ*])WGs춭(!#cUskS~*QqueGpm=*,R9˅_r7r*fz;m-{]VکNwV$xގU":.>hѺjhK}7;X."r5U*+}3MU,W+US61>T}E
s;7֢&Ek;_i5jvZջE3z$ljbmjrcV?j.<]e}]BS,>tk\I@5*Hv2qMhиumvPTY3,<&r9TL'*Z/XRKUU/AIe+XƢe\""*bX}vȫdw"~,qVO%TUL.-.B*/(**>tlk/U|"RG V[,W[ql":%Q"Z#QEU2w[kW;:^w{>6n2j)iҗ $ncQ2UVUT~wzsgφͿo<E
Zij!b,[kLUDDEUU&nmTykVek(\gʍq=sjs|fj=	MkTW_蛨(CQmnͷd++s6Jˢ.7A-7Ob+fQ9"tHG$lD܍oMjGEdj{=DJƢ^c\5vrÉ~SdMg\-:{Y7*
ʻQ\G"}jOaYi)VVRd=GʱW{ǵW)W~IL%MTQj>UJcܾV=L6Jˢ.7A-7Ob+fQ9"tHG$lD܍o
VUiKBŒYdJ1W*pOW[|M]WڷhwDVvMNLa\EǞlJeGTΛXk3HZ~.UR4%7h_4zr4Ϛ4~ErH֮
D]=7Y}U[gX|odLGaMy/}+U74I®t*ďʿ$OD֋KPWhouKe2aW+3D"xj~rӬu鞛kkV^ԨR2VFbe]jpL"gKVn֊Wc|õrX'+[#UQ_2;RrU>So1GP73|mj"nTVZ [+d0$s#ZLVE_C;RrU>So1GP73|mj"nTVZ ueGpm=*,R9˅_r7rMA~ mtg^N83;'AU)5{_,/DTXs
#nLoGuu_WP%#6=gD=Eʵ*]wgyF땪[./40c4Tk_m5tw;-^jݢ=65Y1691r|mTykVek(\gʍq=sjs|gd}*^M$J$V#^.*e"[L              ?T_+:R;mj[mCakhklHULȸW*6֖]Oq_+WGuzXdkŖ8ƿ8bᮑȊ(`^{ԍI66ztgjǖ-v9\ی(eNTU.M9&iz1VLe3>vkYSܻ[7o.<qnݝs;u>
ˎG`+jur:s#c\hUHfGaW P-PI|H+թmk#ⁱ#U3"\9bn*.ٟ%3dv{p#\g5*k]wl;e78zOqwS6{<}G֖]Oq_+WGuzXdkŖ8ƿ8bᮑȊ(`UPjm(|F;˲eLyv*?m5L1T=\񹜑Ud\r/";T?K=jyrzǎ><q'nYqE|Zm\GRdl{㋍*<W kUPjm(|F;˲eLy:˩7+~ht/KcX\59]~YSܻ[7o.<qnݝsT.~4oa Y:xxvmtYz#f8xOolM=n?w3,_fs%nYqE|Zm\GRdl{㋍*)]]h+swَ/[ ;׻{'ˣUM}GO_ngwvOG>xf988ǟV-Kv,ژv6jtkZo9j/tڑ	#RSS6&N|MXe+r{qK;mƫGVP%+yߵlMU\|s[Mx}KA[v:6KdF$73v]wUPi(҆"@(677˕L"߭,kZ^J
۵ٷ\ZX"1$|qU7J+(ie^bPVݭNͺ#E]Wa]DӫwۍVIJ:Vk(U+<_TvNSoVlG6a]/"cf֖]Oq_+WGuzXdkŖ8ƿ8bᮑȊ(`>Z*{ܽ6W#X<n#Go_82Z/tڑ	#RSS6&N|MXe+r{qUenܺޱyv㏏;vx|G~{/w.˷|y۳7gwz?XT3sOkeK-]Sd<1{om]ߒeǘ9Rl_- weP_#IjrJֹ.4z*~3#wرkWA͢ܪ\V
.7ەhޟF|#L:˩7+~ht/KcX\59]S? ? zwk~iږTEK=NOVE**;zx;5^#j,G>m{M]W*0+WoU~;RjcHg:z:)ڹYs9#rȸT^EGoO֖]Oq_+WGuzXdkŖ8ƿ8bᮑȊ(`vmtYz#f8xOo+.:HWmV̍|qqU#_;TvNSoVlG6a]/"cΑuDkjRݵ-(Š6*Er֮qSZL[hw\dZȵ-ۡ$mj|J                                                                                                                                                                    |*fz;m-{]VکNwV$xގU"/zLzM7eUgefM,W)]TmWb_p2]BtR:o䟟q#? r|vg#lZJɥ(//6ܬ4I)5SOpgҪ,(s_1wZޕX.zjwT#cWsrvQ0ȱkO]t-ԂYBڹ##rG3ÜQ؊z:gMtU5tjTb+#kaGDj12ߵU\W&GXnJU#%dml(蚍F&U
'5ow)j|6c'ʏTngfDܨr agk z;3WgvtWSB7*XDqxcrx*æXW꺘֚9LUVO'ˌ;dfS3uihKJMp
#Ǆ~r[
jbZ(Uپ67*+\jsgUn]YyٿËo&q䑻z;Y-}eL	鵈ֹ:$j.UWeP˽;Z7\Rݭ	pykܱNVF^eOZ Koɫj[VY葱ֹɌ?kXwj]rF-4S\G>To+݄V+Ws>v%UnfY'drWEQ"9p1S(
a-ٝ?rn/W~=~y7u{3^åpoǳo&-~^tFr7_ s/V~{7ٷq.q7Ei}3tS$SU{cmR/j""S*1-ٝ?rn/W~=~y7Azm:Bqu9*kRL}cIZ5wE$jͪn]]鴳G,zQh6ZZ	"ԭ}TN(ΓlQ]j-)5U6jh-vedt"L*WvXE[:>wzsgφͿo< ڵNn:ʫ]#ΚXRn/T!|rĿeUb3Le+t\t]EJԼGS#jXV]đejoW}e?߿v޳m\\ۿfsGch"{xt)ik+ 'DrFMb.Q"ҊHƹ[>rQW*5. Km~gcܽ[K߳gf߷MmZLzM7eUgefM,W)]TmWb_p2L0SUKTmMOQB񵨉QZkW㛞:MYUkYYaKWU-bd/X쪬\&~i*mZLzM7eUgefM,W)]TmWb_p2 O;y_~ܜ|/G?S oW߿w' A=>wk9qqruێלdZY=O|4V--[jVYVHIEOTH(euIY4F[%=ơji0ޑUE||+ZشJP^_mͥXiޒSjSύTXQa<¿kzOmź+%%k=O:mUqVhVUڊz9cWVb.Q"ҊHƹ[>rQW*5:GeKdLK_YXͨ:$Tw#6"nF֠;X:TnM)\xV7n}Tr5[kW;:^w{>6n3?u=6>^^..NqÏkK4}ǩ&e+mJK*\6ȿ<i+&HۛKrӽ$-M=¦7JÏyυ~4k[iJ􍹴+;J{B*a#t
,8'WsFi+&HۛKrӽ$-M=¦7JÏyυ~4,Z]j;dU^;QVTT|?`8+v'_*EFCh"{xt)ik+ 'DrFM2t2@*-թ%<K
ﻝʎF7Km~gcܽ[K߳gf߷Mit\t]EJԼGS#jXV]đejoW}m,Th+H+_U,qsS$s"$DWxڋCijUA*]+hkY#n#ȳ,Uݺ#QsΏu{3^åpoǳo&         T?K=jyrzǎ><qjQ:;MM[cEv/هyvW03?SpOoGg߳<&|nWXimS%Mо#k'V$)FUg"*"vX5?[)ʋugjdkLh*H*"_ʧĳUzeu-H]"f&I\{[+4G.1&>3N7=?dTU>6C#6{ڭv܍&Zy?XT3sOkeK-]Sd<1{om]ߒeǛ޾t~j+ʯE`}ZF~j;j7uvNnx?z83Z}ASqGnбaarT|_._+eg0G4vMm*KW{ܾ^05<˹ucvv8}4W;^QQrbτv*> 7qs76 W6vlluSnW/#]r^1e&kr";+=]]h+swَ/[ u>
ˎG`+jur:s#c\hUHfGaW&U;kyk?$Qbwe~kEjںԷmBJ1h.a\cfF&3g..)%֩-KcvccpZw9(hS{l>_t1<~^.}W96>rq|q?-][޿F.L /.S{l>_t1<~+~iiy(+n֧[frYiclđr"T+`vmtYz#f8xOo^.}W96>rq|q?-;.qnSwi%MI5l_xoR<"aȏF~Ei7p>G&ݸs|A|$Wu+ZFǾ8誑̎¯cwvOG>xf988ǟQ5Uڭ[X";lü+_DǞ渷^䩻ݴuzJ}GOĩ0GQPUenܺޱyv㏏;vx|I]]jujO%Q·mXFZTݱ]UCkznԻ1WXciqu]џgg ;3 #;׻{'ˣUM}GO_ng_TvNSoVlG6a]/"cOw ? "MUC;'Gilv6~H0.1ZDT:tvjmo-cg<_|af~W~ _  =W6?3=WYpq6oݍߧ3$oڟh5.~ߗw?< ӄ۷UPjm(|F;˲eLyzuGd56mZyؾ#f_&<:ǧvMM=F555FQ\Vaw4oa Y:xxK;mƫGVP%+yߵlMU\|z\}N}gl[8:|ǝOkݽeϪ&>َN/7qS;^꿅uwf|c8 BFZo}Wwsȏ8MqQ5Uڭ[X";lü+_DǙWXimS%Mо#k'V$)FUg"*"7TvNSoVlG6a]/"cGlM=n?w3,_fs;uv[qթ<	GC
ub67E!j5SvvW;ǟSk5d<=>g&,qn>odt}?saɷcylwkuJLW*h:Idt|J؎Dz5+Mi_"?6>,_Sସv	"_]WW#Z26=ƏETdv|S{l>_t1<~                                                                                                                                                                                                                                          EiWGY&i+f.zQW/Le(wL4R]hrKvP%¾srƑ9ZzqL4R]hrKvP%¾srƑ9Zzq:u3w;Mm{+ڕFJQ5LUW.ɄHTvDZ)gҺSsD*BHD <tVgyXVjm8b|FvoDMʊ+_vmTykVek(\gʍq=sjs|fii5tZ=5tW.V^hb9Xrl{2OJ)WGs춭(!#cUskS~*QqKVn֊Wc|õrX'+[#UQ_2WzQj*5עrT#9Gr4EDnʹ(μ:
$tVvCPbr=Ѥ.7+|Zgu_itBX䷱I*,9X*~˓5jvZջE3z$ljbmjrcV?j.<ǡ)~ju(j MQ2y읙Esz#v2Lگ3J:{};Ejh:UAQ4&H=Ȭr+p|pQ&S3uihKJMp
#Ǆ~r*E3Y~Fk芋bC2Wr;;\ܩFjԖ:+]=IYPfc]{DEۜ5*"r                            rFJ)mӕ4KNG%EɳFl^lLULDϝ_+V\u;_/֮W+ԭkGG2;
w}+.:HWmV̍|qqU#_;3N7=?dTU>6C#6{ڭv܍&ZyUenܺޱyv㏏;vx|Il U E\+U^ujZQAtmLUN
d;5:5]7q8akUPjm(|F;˲eLyzuGd56mZyؾ#f_&<}O/$~vڹ]\k\=R?UO}t?} ;p 8 v?4K^՚lKgUtqvϖ8	=5^#j,G>m{M]W*0+&U;kyk?$Qbwe~;OMQ`9%53krll'Տ-fZrW)\/ާShl	-ds%B7+HQ^7U5<˹ucvv85z%[ӵ-4{737*UETvv_OhS$+u-$"S䊱FZj5qJGWkA?ǩw6c uvmtYz#f8xOoWkA?ǩw6c                                                                                                        ٳ鏳^=§go&;~?2;^z}E)m-Visj9܈fk3=Q6YmT'
Ы<xGG*?ނS=՗kAkPX^H$3.|G#ʘ*M+tML67UD۲vgnn]Q+X:R%u[j8UX?z9Wx^]X[XZEEG1!p9FTb#BSChjKU.tLY.rz"˕rqoLGaMy/}+U74I®t*ďʿ$OueGpm=*,R9˅_r7r
wgyF땪[./40c4Tk󌨭5T\UOpQ*ZV5~9MhиumvPTY3,<&r9TL'*u)uFU[m}ʩoc2ĉQ9S4?Ymikbxl0v]\9U<i+&HۛKrӽ$-M=¦7JÏyυ~4k[iJ􍹴+;J{B*a#t
,8'WsJl}rͻ;wݟvowȡZ^]=Is[`gK}C["V$TkWUor".典gyF땪[./40c4Tk󌨸gyF땪[./40c4TkӬu鞛kkV^ԨR2VFbe]jpL"GWy}cA$TB6oYcc$L"nE.KZ^]=Is[`gK}C["V$TkWUor".党ipۣlfXxL9frDOOU{nގe)K}YSG:mb5z$Ή {k$UT3                         -~YSܻ[7o.<qnݝs;U|Զ	"t阙%r=n|LHZ 4^YSܻ[7o.<qnݝs#WoU~;RjcHg:z:)ڹYs9#rȸT^EGoO5^#j,G>m{M]W*0+5<˹ucvv85z%[ӵ-4{737*UETvv_OhS$+u-$"S䊱FZj5qLܵgMO7r]oXݼxǝ<cvwy>$^IV4Kia"jgʫ"Qy<3HeP_#IjrJֹ.4z*~3#w_ G?C{gMO7r]oXݼxǝ<cvwy>&_nշ訩oW"ڒ*5s'H̆$WD>EpSa]}O/$~vڹ]\k\=R?UyuNhڙ*h=V(sY:!M7z>QQ!DT:tvjmo-cg<_|a^YSܻ[7o.<qnݝsT4Su"IkQ%r>84v)qu>
ˎG`+jur:s#c\hUHfGaWﰺeP_#IjrJֹ.4z*~3#w؆~4f㬞ʖ[ycF/{Uڻ$]3:/tڑ	#RSS6&N|MXe+r{qTz	=H^nZ+7Iđ|O0^YSܻ[7o.<qnݝs٬uSnW/#]r^1e&kr";+=]]h+swَ/[ 8                                                                                                    mZLzM7eUgefM,W)]TmWb_p2 Koɫj[VY葱ֹɌ?kXvwW[-u	L[ʘ9ks&tI\Y"ʡ{Uvgamch#6j)Će¯vvSueGpm=*,R9˅_r7r
oKW"%IQ`lߡȲHTEX ԋ\Q#BSChjKU.tLY.rz"˕rWoGuu_WP%#6=gD=Eʵ*]վ)uFU[m}ʩoc2ĉQ9SY=7{T׾ҽQdQʻ~Ur\DgyF땪[./40c4TkH-Wd~veEEdG59ލz.=ʸ]gyF땪[./40c4Tk󌨭5T\UOpQ*ZV5~9z:gMtU5tjTb+#kaGDj12ߵU\W&#S3uihKJMp
#Ǆ~r[
jbZ(Uپ67*+\js=7Y}U[gX|odz;Y-}eL	鵈ֹ:$j.UWePGԍ	M-W/GE.ܭM3%߾\*5*¹r}3Iuu-@
lov]Dkdj5T\}3Iuu-@
lov]Dkdj5Tz:gMtU5tjTb+#kaGDj12ߵU\W&3{Uvgamch#6j)Će¯vvS]lW%2o*`HMFD$sQrdc*;ͪ-uMs+LQ0#vXbm]oM_sUVk8zu8ǖ&q9$nގe)K}YSG:mb5z$Ή {k$UT8}3MU,W+US61>T}E
s;7֢&Ek;_y
%uaCLʊkɚk]s']{pw)+vwW[-u	L[ʘ9ks&tI\Y"ʡ                      MUC;'Gilv6~H0.1&U;kyk?$Qbwe~٬uSnW/#]r^1e&kr";=jݭJOj[MSi,GOGE;W+=<ng$nUYȨU[nNԶ*YvVzxHܪ.9UQC4E|mHڋϩ)^cgFq>&yk2ncʹL=~>O`K,VHԴ$L[*zF=jrxU#{_u8+K#X,5tDWyGcS[_oQRޯ6E$TjO4HŹ|7*0cESh4OY=,UuOǹ^]w#~IfnYqE|Zm\GRdl{㋍*3ruSnW/#]r^1e&kr";$nYqE|Zm\GRdl{㋍*<W O4U:LuRuWT<{jWr7kT?K=jyrzǎ><q&~W /tڑ	#RSS6&N|MXe+r{q:˩7+~ht/KcX\59]H>Z*{ܽ6W#X<n#Go_82W_Sସv	"_]WW#Z26=ƏETdv|V\u;_/֮W+ԭkGG2;
w}g*Anz~:le|lF=tmZLP/z%[ӵ-4{737*UETvykieK}4q:W\FYck.^ޝvVՖ	nТTZXar5Djg
ܫ*E|mHڋϩ)^cgFq>&yk2ncʹL=kieK}4q:W\FYck.ߩl U G֖]Oq_+WGuzXdkŖ8ƿ8bᮑȊ(`kieK}4q:W\FYck.
WkA?ǩw6c ; 7 g`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              07070100000004000081FD00000000000000000000000163863434000000F6000000000000000000000000000000000000002A00000000uefi_mbr-0+git20221129.53aad69/test_setup #! /bin/bash

file=$1
disk_size=8G

dd if=/dev/zero of="$file" bs="$disk_size" count=0 seek=1 status=none
parted --script "$file" mklabel gpt
parted --script "$file" mkpart foo fat32 0% 10%

dd if=uefi_mbr.bin of="$file" conv=notrunc status=none
  07070100000005000081B4000000000000000000000001638634340000028F000000000000000000000000000000000000002C00000000uefi_mbr-0+git20221129.53aad69/uefi_mbr.asm   ;
; Copyright 2022 Steffen Winterfeldt
;
; See LICENSE for details.
;

			bits 16

			section .text

			org 7c00h

			jmp 0:main_10
main_10:
			mov ax,cs
			mov ss,ax
			xor sp,sp
			mov ds,ax
			mov es,ax
			cld
			sti

			mov si,msg
final_msg:
			call print
			mov si,msg_next
			call print
			mov ah,0
			int 16h
			mov si,msg_nl
			call print
			int 18h
final_msg_10:
			hlt
			jmp final_msg_10

print:
			lodsb
			or al,al
			jz print_90
			mov bx,7
			mov ah,14
			int 10h
			jmp print
print_90:
			ret

msg_next                db 10, "Press a key to continue boot sequence.", 0
msg			db 10, "This disk is only UEFI bootable."
msg_nl			db 13, 10, 0
 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!                                                                                                                                                                                                                                                                                                                44 blocks
