bzt 31d20593cf More docs | 1 month ago | |
---|---|---|
.. | ||
ABI.md | 1 month ago | |
README.md | 1 month ago | |
debug.md | 1 month ago | |
menu.cfg | 1 month ago | |
plugins.md | 11 months ago | |
secureboot.md | 1 year ago | |
stivale.md | 1 year ago |
Az Easyboot egy minden-az-egyben rendszerbetöltő menedzser és indítható lemezkép készítő, ami különböző operációs rendszer kerneleket és különféle bináris formátumú, Multiboot2 kompatíbilis kerneleket tud betölteni.
[[TOC]]
easyboot [-v|-vv] [-s <mb>] [-b <mb>] [-u <guid>] [-p <t> <u> <i>] [-e] [-c] <indir> <outfile|device>
-v, -vv bőbeszédűség / ellenőrzés szintjének növelése
-s <mb> lemezkép méretének megadása (alapból 35M)
-b <mb> boot partíció méretének megadása (alapból 33M)
-u <guid> boot partíció egyedi azonosítójának megadása (alapból véletlen)
-p <t> <u> <i> további partitió hozzáadása (típus guid, egyedi guid, képfájl)
-e El Torito Boot Catalog hozzáadása (BIOS / EFI CDROM bootolás)
-c mindig új lemezkép létrehozása, ha létezik, akkor is
<indir> ennek a mappának a tartalmából csinálja a boot partíciót
<outfile> kimeneti lemezkép vagy eszközfájl neve
Az Easyboot eszköz egy (outfile)
nevű, indítható lemezképet hoz létre GUID Partíciós Táblával és egyetlen, FAT32-re formázott
partícióval, aminek a neve "EFI System Partition" (röviden ESP). A partíció tartalmát a felhasználó által megadott (indir)
könyvtárból veszi. Ebbe a könyvtárba el kell helyezni egy sima szöveges fájlt easyboot/menu.cfg
néven. Akár NL, akár CRLF
sorvégekkel ez könnyen szerkeszthető bármilyen szövegszerkesztő programmal. A konfigurációtól függően szükség lehet még
easyboot/*.plg
nevű beépülőkre is ebben a könyvtárban.
A lemezkép működik Raspberry Pi-n is, és el fog indulni qemu-n; de ahhoz, hogy igazi vason is fusson, szükség lesz további förmver
fájlokra, bootcode.bin
, fixup.dat
, start.elf
és egy .dtb fájlra az (indir)
könyvtárban, ezeket a Raspberry Pi
hivatalos repójából lehet letölteni.
A parancsnak van néhány opcionális parancssori kapcsolója: -s (mb)
beállítja a generálandó teljes lemezkép méretét Megabájtokban,
míg a -b (mb)
a boot partíció méretét állítja, szintén Megabájtokban. Nyilvánvalóan az előbbinek nagyobbnak kell lennie, mint az
utóbbinak. Ha nincs megadva, akkor a partíció mérete a megadott könyvtár méretéből számítódik (de legalább 33 Mb, ez a lehető
legkissebb FAT32-es fájlrendszer méret) és a lemezméret pedig ennél 2 Mb-al nagyobb (igazítások és a partíciós tábla által
elfoglalt hely miatt). Ha e két megadott méret között több, mint 2 Mb a különbség, akkor külsős programmal, például az fdisk
-el
szabadon, kedved szerint hozzáadhatsz további partíciókat a lemezképhez (vagy lásd a -p
kapcsolót alább). Ha kiszámítható
kimenetre van szükség, akkor a boot partíció egyedi azonosítója (UniquePartitionGUID) megadható a -u <guid>
kapcsolóval.
Opcionálisan hozzáadható további partíció is a -p
kapcsolóval. Ennek 3 paramétere van: (PartitionTypeGUID), (UniquePartitionGUID)
és annak a képfájlnak a neve, ami a partíció adatait tartalmazza. Ez a kapcsoló többször is megadható.
A -e
kapcsoló hatására El Torito Boot Catalog is generálódik a lemezképbe, így az nemcsak USB pendrájvon lesz használható, hanem
BIOS / EFI CDROM lemezképként is indítható lesz.
Amennyiben az (outfile)
egy eszközfájl (pl. /dev/sda
Linuxon, /dev/disk0
BSD-ken, vagy \\.\PhysicalDrive0
Windowson), akkor
nem hoz létre sem GPT-t, sem ESP-t, hanem megkeresi az eszközön már meglévőket, és azokat használja. Ilyenkor is minden fájlt
felmásol az (indir)
könyvtárból a boot partícióra és telepíti a betöltő programokat. Ez akkor is így működik, ha a megadott
lemezkép egy már létező fájl (ez esetben használható a -c
kapcsoló, ami először mindig egy új, üres lemezképet kreál).
Az easyboot/menu.cfg
fájlban a következő sorok szerepelhetnek (nagyon hasonló a grub.cfg szintaktikájához, példa konfigurációs
fájlt itt találsz):
Minden sor, ami a #
karakterrel kezdődik, kommentnek minősül és a sor végéig kihagyásra kerül.
A bőbeszédűség szintje a verbose
kezdetű sorral állítható.
verbose (0-3)
Ez megmondja a betöltőnek, hogy mennyi információt írjon ki az induló konzolra. A 0 teljesen csendes (alapértelmezett), míg a 3 kiírja a betöltött kernelszegmenseket és még a belépési pont gépikódját is dumpolja.
Kérhető egy bizonyos képernyő felbontás a framebuffer
kezdetű sorral. A formátuma a következő:
framebuffer (szélesség) (magasság) (pixelenkénti bitméret) [#(betűszín)] [#(háttérszín)] [#(foly.háttér)]
Az Easyboot mindenképp beállítja a framebuffert, még akkor is, ha ez a sor nem szerepel (alapból 800 x 600 x 32bpp). De ha szerepel, akkor megpróbálja az itt megadott felbontást beállítani. Palettás módokat nem támogat, ezért a pixelenkénti bitméretnek legalább 15-nek kell lennie.
Ha a negyedik opcionális szín paraméter meg van adva, akkor HTML formátumúnak kell lennie, egy kettőskereszttel indítva, amit
6 hexadecimális szám követ, PPZZKK. Például a #ff0000
egy teljes fényerejű piros és a #007f7f
egy sötétebb cián. Ez mondja
meg a betű színét. Hasonlóan, ha az ötödik opcionális szín paraméter meg van adva, annak is HTML formátumúnak kell lennie, ez
a háttér színét állítja. Az utolsó opcionális szín paraméter szintúgy, ez a folyamatjelző háttérszínét állítja.
Ha a szinek nincsenek megadva, akkor alapból fehér színnel ír fekete háttére, és a folyamatjelző sötétszürke.
A default
-al kezdődő sor adja meg, hogy melyik menüpontot kell elindítani adott idő után, ha a felhasználó addig nem választ.
default (menüpont sorszám) (időkeret msec)
A menüpont sorszám egy szám 1-től 9-ig. Az időkeret milliszekundumokban van megadva (egy ezred másodperc), tehát 1000 jelent egy másodpercet.
A menualign
kezdetű sor állítja, hogyan jelenjenek meg a boot opciók.
menualign ("vertical"|"horizontal")
Alapból a menü horizontal
(vízszintes), de ez átállítható vertical
-ra (függőleges).
Összesen 9 boot opciót lehet megadni a menuentry
kezdetű sorokkal. A formátuma a következő:
menuentry (ikon) [cimke]
Minden ikonhoz léteznie kell egy easyboot/(ikon).tga
fájlnak a boot partíción. A képnek run length encoded, color-mapped
Targa formátumúnak kell lennie, mert az a legjobban tömörített változat (az első három bájt a fájlban rendre
0
, 1
és 9
, lásd Data Type 9 a specifikációban). A dimenziója pontosan 64 pixel magas és 64 pixel széles.
GIMP alatt ebben a formátumban úgy kell menteni, hogy először kiválasztjuk az "Image > Mode > Indexed..." menüpontot, a felugró
ablakban beállítjuk a "Maximum number of colors"-t 256-ra. Aztán "File > Export As..." és a fájlnévnek olyant adunk meg, ami
.tga
-ra végződik, aztán a felugró ablakban bepipáljuk az "RLE compression" opciót. Parancssori megoldáshoz használható az
ImageMagick, convert (bármilyen formátumú kép) -colors 256 -compress RLE ikon.tga
.
Az opcionális cimke főleg arra való, hogy ASCII verzió vagy kiadás információt jelenítsünk meg a menüben, nem pedig tetszőleges
szövegekre, ezért helytakarékosságból az UTF-8 csak akkor van támogatva, ha létezik egy easyboot/font.sfn
fájl is. (Egy UNICODE
font rengeteg helyet foglal, még úgy is, hogy a Scalable Screen Font roppant hatékony,
kábé 820K. Összehasonlításképp a GRUB unicode.pf2-je még ennél is jóval több, 2392K, annak ellenére, hogy mindkét font kb. 55600
glifet tartalmaz 8x16-os és 16x16-os bitmapekben. A beépített ASCII fontban 8x16-os bitmap és 96 glif van csak.)
Minden sor, ami egy menuentry
sort követ, ahhoz a menüponthoz tartozik, kivéve, ha az is egy újabb menuentry sor.
Kényelmi okokból használhatók blokkok, mint a GRUB-ban, de ezek csak szemgyönyörködtetésre valók. Igazából ugyanúgy kezeli a
kapcsoszárójeleket, mint bármilyen más szóköz karaktert. Elhagyhatók, és tab használható helyettük, mint Pythonban vagy a
Makefileokban, ha valakinek az lenne a heppje.
Például
menuentry FreeBSD backup
{
kernel bsd.old/boot
}
Az olyan sor, ami partition
-al kezdődik, egy GPT partíciót választ ki. Meg kell előznie egy menuentry
sornak.
partition (partíció egyedi UUID)
Ezt a partíciót fogja root fájlrendszernek használni a boot opció. A kernel valamint a modulok erről a partícióról fognak betöltődni, és a boot protokolltól függően a kernelnek is ez adódik át. A megadott partíció lehet bármelyik lemezen, nem kell feltétlenül az indítólemezen lennie, az Easyboot induláskor végignézi az összes GPT partícionált lemezt, hogy megkeresse.
Kényelmi okokból a partíció megadható a kernel
sorral is (lásd alább). Ha az induló parancssor tartalmaz root=(UUID)
vagy
root=*=(UUID)
sztringet, akkor nincs szükség külön partition
sorra.
Ha a partíció nincs kifejezetten megadva, akkor a kernel és a modulok a boot partícióról töltődnek be.
A kernel
kezdetű sor mondja meg, hogy melyik fájlt kell bebootolni és hogy milyen paraméterekkel. Meg kell előznie egy menuentry
sornak.
kernel (kernel fájl elérési út) (opcionális induláskori parancssor)
Az UTF-8 elérési útnak abszolútnak kell lennie, és egy létező, futtatható kernel fájlra kell mutatnia a root (vagy boot) partíción.
Ha a kernel nem a partíció gyökérkönyvtárában található, akkor a könyvtárelvasztó mindig a /
, még UEFI rendszereken is. Ha a
névben szóköz található, akkor azt egy \
előtaggal kell ellátni. Az elérési út után egy szóközzel elválasztva jöhet az induló
parancssor. Multiboot2 kompatíbilis kernelek esetén ez a Induló parancssor (1-es típusú) tegben kerül átadásra. Ezt az
Easyboot nem módosítja, és nem is értelmezi, leszámítva, hogy root partíció specifikációt keres benne.
Alapból az Easyboot Multiboot2 kompatíbilis ELF64 és PE32+/COFF formátumú kerneleket kezel (valamint UEFI rendszereken UEFI applikációkat is). Alapesetben ez a boot protokoll nem támogatja a magas címtérbe töltést, de az Easyboot megszegi kicsit a protokollt úgy, hogy az a normál, alacsony címterű kerneleket ne zavarja. Bármilyen más fajta kernel bootolásához kernel betöltő beépülőre van szükség.
FONTOS: a GRUB-bal ellentétben, ahol külön "linux" meg "multiboot" parancsok vannak a boot protokoll kiválasztására, itt csak egyetlen parancs van, és a protokollt futás időben autodetektálja a kernelből.
Tetszőleges fájlok (induló memória lemezképek, kernel meghajtók, stb.) tölthetők be a kernellel együtt a module
kezdetű sorokkal.
Ezeket meg kell előznie egy menuentry
sornak. Fontos, hogy ilyen sorból több is lehet egy menuentry alatt. Ha a boot protokoll
támogat initrd-t, akkor a legelső module
sort veszi initrd-nek.
module (fájl elérési út) (opcionális modul paraméterek)
Az UTF-8 elérési útnak abszolútnak kell lennie, és egy létező fájlra kell mutatnia a root (vagy boot) partíción. Ezt követheti egy paraméterlista, szóközzel elválasztva. Ha a fájl tömörített, és van hozzá kitömörítő beépülő, akkor a modul transzparensen ki lesz csomagolva. A betöltött (és kitömörített) modulok listája a Multiboot2 kompatíbilis kerneleknek a Modulok (3-as típusú) tegekben adódik át.
Van egy speciális eset, amikor a modul a DSDT
, GUDT
vagy a 0xD00DFEED
bájtokkal kezdődik. Ebben az esetben a fájl nem kerül a
Modulok tegekbe, hanem az ACPI tábla kerül módosításra úgy, hogy a benne lévő DSDT mutató ennek a fájlnak a tartalmára mutasson.
Ezáltal könnyedén kicserélhető egy bugos BIOS ACPI táblája a felhasználó által megadottra.
A boot opció kiválasztásakor a képernyő közepén megjeleníthető egy logó, ha van egy bootsplash
kezdetű sor. Meg kell előznie
egy menuentry
sornak.
bootsplash [#(háttérszín)] (tga fájl elérési út)
A háttérszín opcionális, és ha meg van adva, akkor HTML formátumúnak kell lennie, egy kettőskereszttel indítva, amit 6 hexadecimális
szám követ, PPZZKK. Ha az első paraméter nem #
-el kezdődik, akkor azt elérési útnak veszi.
Az UTF-8 elérési útnak abszolútnak kell lennie, és egy létező fájlra kell mutatnia a boot (és NEM a root) partíción. A képnek run length encoded, color-mapped Targa formátumúnak kell lennie, akár csak az ikonoknak. A mérete bármi lehet, ami kifér a képernyőre.
Hogy a kernel minden processzormagon elinduljon egyszerre, a multicore
direktívát kell megadni (csak 64-bites kerneleknél
használható). Meg kell előznie egy menuentry
sornak.
multicore
Ha bármilyen probléma merülne fel, akkor csak az easyboot -vv
kapcsolókkal kell futtatni. Ez egyben ellenőriz is és részletes
kimenetet ír ki a létrehozáskor. Egyébként pedig hozzá kell adni a verbose 3
sort az easyboot/menu.cfg
-hoz, hogy megjelenjenek
az induláskori üzenetek.
Ha a bal felső sarokban piros háttérrel az látszik, hogy PMBR-ERR
, akkor az azt jelenti, hogy a processzorod túl régi, nem
támogatja a 64-bites long módot vagy az indulószektor nem találta a betöltőt. Ez csakis BIOS gépeken fordulhat elő, UEFI-n és
RaspberryPi-n soha.
Üzenet | Leírás |
---|---|
Booting [X]... |
jelzi, hogy melyik boot opció (menuentry sorszám) lett kiválasztva |
Loading 'X' (Y bytes)... |
az X nevű és Y hosszú fájlt készül betölteni |
Parsing kernel... |
a kernelt megtalálta, most meghatározza a formátumát |
Starting X boot... |
azt jelenti, hogy az X operációs rendszer betöltőjét találta meg |
Starting X kernel... |
azt jelenti, hogy az X operációs rendszer kernelét találta meg |
Transfering X control to Y |
jelzi, hogy átadja a vezérlést az X módú belépési pontra az Y címen |
Ha egy hiba azután jönne elő, hogy ez a legutolsó üzenet is megjelent, akkor a probléma az operációs rendszer indítási folyamatában keletkezett, és nem pedig az Easyboot betöltőben, ezért az adott operációs rendszer dokumentációjában található meg rá a válasz. Egyébként meg bátran nyiss egy gitlab hibajegyet a hibabejelentőben.
Szükséges beépülők: grubmb1
Ez a legrugalmasabb, többféle variáció is támogatott a beépülők által:
Fontos a kölönbség: az egyszerűsített Multiboot2 esetén nincsenek beágyazott tegek, felső címtér is támogatva van akárcsak a tisztán 64-bites belépési pont, a paraméterek pedig mind Multiboot2, SysV és fastcall ABI szerint is átadódnak.
Ezzel szemben a GRUB-kompatíbilis Multiboot2 esetén kellenek
a beágyazott tegek, nem támogatja a felső címteret sem a 64-bites kerneleket, a belépési pont csakis 32-bites lehet, a paraméterek
pedig csak az eax
, ebx
regiszterekben adódnak át.
Nincs szükség beépülőre, de be kell konfigurálni a Secure Boot-ot.
menuentry win {
kernel EFI/Microsoft/BOOT/BOOTMGRW.EFI
}
Szükséges beépülők: linux, ext234
Ha a kernel nem a boot partíción található, akkor a parancssorban is megadható a root partíció.
menuentry linux {
kernel vmlinuz-linux root=PARTUUID=01020304-0506-0708-0a0b0c0d0e0f1011
}
Szükséges beépülők: obsdboot, ufs44
menuentry openbsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot
}
VIGYÁZAT! Nem használható az elf32 beépülő, ha OpenBSD-t is indítunk! A boot
-ja valótlanul állítja
magáról, hogy egy ELF 32-bites SysV ABI belépési ponttal, holott valójában 16-bites valós módú belépési pontja van.
Szükséges beépülők: fbsdboot, ufs2
A hagyományos BIOS rendszereken a boot
betöltőt kell megadni.
menuentry freebsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot/boot
}
UEFI gépeken pedig a loader.efi
betöltőt a boot partíción (ehhez nincs szükség beépülőkre).
menuentry freebsd {
kernel boot/loader.efi
}
Ha a root fájlrendszer ZFS, akkor ezt az egy fájlt (boot
BIOS-on, loader.efi
UEFI-n) be kell másolni az (indir)
-be és
NEM kell megadni root partíciót.
Szükséges beépülők: fdos
A FreeDOS fájljait be kell másolni az (indir)
-be (a FreeDOS a boot partíciót használja root partícióként).
menuentry freedos {
kernel KERNEL.SYS
}
Ha a bootolás a jogi figyelmeztetés és az - InitDisk
kiírása után megáll, akkor a FreeDOS kernel FAT32 támogatás nélkül lett
fordítva. Egy másik kernelt kell letölteni, olyant, aminek a nevében szerepel az f32
.
Szükséges beépülők: reactos
menuentry reactos {
kernel FREELDR.SYS
}
Szükséges beépülők: menuet
menuentry menuetos {
kernel KERNEL.MNT
module CONFIG.MNT
module RAMDISK.MNT
}
Az automatikus konfiguráció kikapcsolható a noauto
parancssori kapcsolóval.
Szükséges beépülők: kolibri
menuentry kolibrios {
kernel KERNEL.MNT syspath=/rd/1/ launcher_start=1
module KOLIBRI.IMG
module DEVICES.DAT
}
A beépülő működik UEFI gépeken is, de használható akár az uefi4kos.efi
is a boot partíción (ehhez nincs szükség beépülőkre).
Szükséges beépülők: grubmb1
menuentry serenityos {
kernel boot/Prekernel
module boot/Kernel
}
Szükséges beépülők: grubmb1, befs
menuentry haiku {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel system/packages/haiku_loader-r1~beta4_hrev56578_59-1-x86_64.hpkg
}
UEFI gépeken pedig a haiku_loader.efi
betöltőt kell megadni a boot partíción (ehhez nincs szükség beépülőkre).
menuentry osz {
kernel ibmpc/core
module ibmpc/initrd
}
Ehhez nincs szükség beépülőkre.