Portál AbcLinuxu, 13. května 2025 21:39
iRed.team zveřejnil článek, jak si napsat vlastní bootloader. Autor k tomu používá NASM (Netwide Assembler).
Tiskni
Sdílej:
V prvním bloku (512B) je kód, který se načte do paměti a spustí. To je celé.Nj, ale protože se do 512B (ve skutečnosti 446) nic rozumného nevejde, tak se to hackuje tak, že se buď něco zapisuje náhodně před první partition, nebo se hardcodují pozice bloků na disku (což se rozbije když nespustíte po změně
lilo
).
EFI je v podstatě MS-DOS dodaný jako firmware, který má k dispozici key-value úložiště, kam se zapíše seznam bootovacích souborů a pár dalších věcí.Já doufám, že když se napíše
grub-install --removable
, tak to bude fungovat i bez toho zápisu do firmware, ale zatím jsem to dělal jednou.
dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/sdaHotovo! Ťažká práca, naozaj... a oddiely si na disku spravím ako chcem, nemusím tam mať žiaden patentovaný MS-DOS oddiel a do neho nič nahrávať. Taktiež sa nemusím báť, že som nejak zmrvil podpis jadra, alebo niekam zabudol zaviesť vlastné kľúče a EFI mi preto odmietne nabootovať server tisíc kilometrov ďaleko.
Taktiež sa nemusím báť, že som nejak zmrvil podpis jadra, alebo niekam zabudol zaviesť vlastné kľúčeNepleteš si EFI a SecureBoot?
A v těch 440B je co přesně? Jak to zjistí odkud to má brát třeba jádro?Je tam právě napsáno, kde (a jak) to má brát jádro (a případně zbytek bootloaderu).
The task of the MBR (Master Boot Record) is to load boot code from an active partition of a drive.Tím jsme problém jenom odsunuli o jeden bootsektor dál…
Čo získam tým, že sa nechám obmedzovať pri delení disku?Fun fact: BIOSy jsou tak zabugované, že bez partition table s označenou jednou partition jako bootovací taky nenajedou. Takže ani v případě „ancient“ booting si nemůžeš disk rozdělit libovolně.
Čo získam tým, že si pridám ďalšiu vrstvu zložitosti do deploymentu a bootovania?Jak jsem psal výše, mně to naopak přijde jednodušší.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.