ugrás a tartalomhoz

ISO boot

hóhér · 2017. Jún. 16. (P), 17.51
Sziasztok!

Ugyan nem webes téma, de hátha valaki tud segíteni.
Szeretnék pendrive-ról bootolni iso image-eket úgy, hogy grub2-t telepítek rá és annak a menüjéből választom ki, hogy melyiket.
Ehhez találtam leírásokat, viszont van egy kérdés, amire nem találok választ: ha egy akármilyen BIOS be tudja tölteni közvetlenül ezeket az image-eket cd/dvd/bd-ről, akkor a grub-nak miért nem lehet megmondani simán, hogy itt ez az iso, ugorj a boot szektorára, aztán hagyd őt dolgozni?
Hol találok technikai leírást a pc-k boot folyamatáról?
Az eddig talált doksikban mindenütt úgy van leírva, hogy ismerni kell az iso felépítését, meg kell adni pl. a kernel elérhetőségét stb., holott ez ott van az iso-ban valahol.
 
1

Igen

janoszen · 2017. Jún. 16. (P), 18.18
Igen, de ez nagyon attol fugg hogy BIOS-os geprol beszelunk vagy pedig (U)EFI-rol. Ha UEFI, akkor egyszeru, felteszed a pendrivera a Grub EFI fajljat es az UEFI boot menubol ramutatsz es kesz. A boot sectornak itt semmi dolga nincs. Ha BIOS, akkor kacifantosabb, de jo esetben erre nem lesz szukseged, mar minden modern gep UEFI-vel jon.

Ami az UEFI boot utan jon az mar kacifantosabb, a grubnak tudnai kell hogy mit honnan kell betolteni. Eppen ezert meg kell neki mondani hogy melyik disken talalja a Linux kernelt, az milyen filerendszeren van, es azon belul is milyen konyvtaron. Ha valami kacifantosabb mount rendszer van, akkor pluszban azt meg kell adni, hogy milyen initramfs-t hasznaljon, illetve hol van a root particio.

Ha szeretnel tobbet tanulni arrol, hogy hogyan bootol a Linux, akkor javaslom egyszer vegig kuzdeni a Gentoo telepitest minimal CD-rol. Utana jo esellyel okosabb leszel.
2

Köszi. A gentoot inkább

hóhér · 2017. Jún. 16. (P), 18.33
Köszi. A gentoot inkább kihagynám, annyi nyugtató nincs a fiókban. ;)
Amit ott végig kellene küzdeni, az nincs valahol normálisan, gentoo független formában dokumentálva?
Ami keresést próbáltam, az mind valami toolt ajánlott részletes leírás helyett. :(
Bosszant, hogy régen levettem a polcról az öt kilós reference guide-ot és tudtam mindent, ami kellett, most meg itt az intern(y)et, dokumentáció meg csak elvétve. Legjobb esetben találok par rfc-t.
5

Nincs

janoszen · 2017. Jún. 17. (Szo), 00.13
Nincs, mert kb egymillio fele keppen ossze tudod rakni a boot setupot, igy barmilyen leiras termeszetebol adodoan hianyos lenne. Vegig kell kuzdeni a telepitest egyszer hogy megertsd hogy hogyan bootol a Linux. Ha egyszer lesz idom es lelkesedesem, csinalok rola egy guide-jellegu leirast vagy videot, de ehhez sok ido kell.
7

Biztosan ugyanarra

hóhér · 2017. Jún. 17. (Szo), 09.15
Biztosan ugyanarra gondolunk?
Azon vagyok elakadva, hogy van egy (pár) talán szabványos formátum (iso9660, joliet, udf, más egyéb?) amit mondjuk dvd-re írhatok anélkül, hogy ismerném a tartalmát. Az így elkészült adathordozón lébő op.rendszert a BIOS/UEFI gond nélkül betölti, tehát kell valami szabványos felület közéjük. Ezt miért ne lehetne, miért nem lehet használni az iso image-ek betöltésére? És erről a felületről miért nem találok leírást?
Csak feltételezem, itt is kell lenni valaminek, ami funkciójában hasonlít a néhai floppy-k boot szektorára.
9

Nem

janoszen · 2017. Jún. 17. (Szo), 10.01
A "boot sector" fogalma csak klasszikus boot eseten erdekes, UEFI bootnal ez mar nem erdekes, ott a BIOS chipen levo szoftver kepes a filerendszerrol olvasni. Ha az ISO9660 es tarsait nezed, azok CD/DVD imagek, viszont Te USB-t kerdeztel...

Ne erts felre, epithetsz klasszikus boot imageket es azok mukodni is fognak, de tobb szivas mint EFI-vel megoldani.
10

Nagyon nem egy dologról

hóhér · 2017. Jún. 17. (Szo), 10.30
Nagyon nem egy dologról beszélünk továbbra sem. A floppy-t, boot szektort csak példának hoztam. De mindegy, inkább hagyjuk, ha a problémám alapját sem udom megértetni, akkor reménytelen, hogy választ kapjak.
11

Vegeredmeny

janoszen · 2017. Jún. 17. (Szo), 12.05
Ird le hogy milyen vegeredmenyt szeretnel es akkor segitunk megoldani.
13

ismétlés a ...

hóhér · 2017. Jún. 17. (Szo), 21.34
"Hol találok technikai leírást a pc-k boot folyamatáról?"
Mint írtam, megoldás van, csak érteni szeretném, hogy miért nem megy úgy, ahogy szerintem logikus lenne.
A logikus szerintem az lenne, hogy ha egy CD-ről betölthető egy halom bit, akkor elvileg bármilyen adathordozóról is működhetne.
A floppy-t csak azért hoztam fel, mert ott még úgy működött a boot, hogy a boot szektorból betöltött programra adta a BIOS a vezérlést (real módban), doksi híján csak feltételezem, hogy ez most is valahogy így működhet. Ha így van, akkor pl a grub miért ne tudhatná ezt "szimulálni", ha nem akarok tőle mást, csak hogy tegye ugyanazt az image tartalmával, amit a BIOS tenne vele, ha CD-ről olvasná.
16

OK

janoszen · 2017. Jún. 19. (H), 07.48
OK, tehat a bootolas ket fele keppen tud mukodni.

Kozos vonas: amikor a gepet bekapcsolod, a BIOS chipen tarolt program betoltodik memoriaba es elkezd futni a CPU-n. Ez a program tartalmaz alapveto klaviatura drivereket, a BIOS menut, stb. illetve ez a program felel az oprendszered elso betolteseert is. Mind a Phoenix BIOS-ban, mind az UEFI-ben szabvanyositva van a mukodese.

1. Klasszikus bootolas. Itt elso korben az elso, un. boot sector kerul betoltesre. x86-os PC-ken a BIOS megnezi az eszkozok (floppy, merevlemez) elso szektorat es ha megtalalja a bootolashoz szukseges magic numbert (a szektor utolso ket byteja 0x55 0xAA), akkor a boot szektorban talalhato kodot elkezdi lefuttatni. (Ha merevlemezrol beszelunk, akkor ezt Master Boot Recordkent is ismerheted.)

Na most, a boot sectorban kb ~400 byte hasznos kodot lehet elhelyezni, ami nem tul sok, eppen ezert sok bootloader kihasznalja azt, hogy a merevlemezen az elso particio elott meg van 62 szektornyi hely, tekintettel arra hogy particio csak egesz cilinderen kezdodhet. Eppen ezert ide kb. 1 MB adatot meg el lehet helyezni, ami eleg egy Grubnak.

Az USB-rol bootolas szinten igy mukodik, a BIOS beolvassa az eszkoz elso szektorat es ha van magic number, akkor elinditja a benne talalhato kodot. Onnantol mar az ott talalhato kod dolga, hogy ertelmezze az USB eszkozon talalhato particios tablat. (Altalaban rendes DOS particios tabla van a pendrive-okon.)

Ha CD-rol bootolasrol beszelunk, az ISO9660 szabvany eloirja, hogy a CD-n elhelyezheto boot kod, ez vagy HDD/floppy emulacioval fut, vagy emulacio nelkul. A merevlemezes bootolassal szemben itt a boot code azonban nem az elso szektoron kezdodik, hiszen ott a CD leiro van, hanem a 71. byte-tol. Ha erdekelnek a reszeletek, bele kell bujnod az El-Torito formatum leirasaba. (16. oldal) A lenyeg azonban az, hogy itt is egy halom bit kerul betoltesre, de annak a halom bitnek tudnia kell a CD-t kezelni, hiszen a bootolas csak az elso adag byte-ot tolti be, onnantol a program feladata hogy beolvassa a tobbit a CD-rol. Ha van emulacio, akkor az emulalt eszkozzel azonos modon, ha nincs, akkor kozvetlenul a CD eszkozzel beszelgetve.

Lehetseges, hogy a BIOS-ok egy ISO9660 formatumot is be tudnak tolteni USB-rol, de errol nem tudok nyilatkozni, sem gyakorlati tapasztalatom nincs ezzel, sem pedig dokumentaciot nem talaltam hozza. Ha tippelnem kellene, sztem ez nem tud altalanosan mukodni, foleg nem legacy BIOS-szal.

2. UEFI bootolas. A klasszikus bootolas csak es kizarolag az elso szektoran talalhato kodot volt kepes elinditani, eppen ezert meglehetosen korlatozott volt a kepessegeit tekintve. Az UEFI ezt megoldja azzal, hogy magaba a BIOS programba tesz kulonbozo particios tabla es filerendszer drivereket, vagyis a BIOS program kepes ertelmezni a merevlemez felepiteset. Igy peldaul a regi DOS particios tabla helyett most mar egy masik struktura, a GPT is bejon. Ez azert is hasznos, mert a DOS particios tabla meretet tekintve korlatozott volt. (Legacy BIOS-bol is lehet GPT-t hasznalni, de borzaszto maceras es ebbe most nem megyek bele.)

Ha bootolasrol van szo, ket opcio van. Az egyik az, hogy a feltelepitett oprendszered a BIOS-ba beleirt egy boot menu entryt, vagyis a BIOS eleve tudja hogy hol kell keresni az EFI binaris filet amit neki el kell inditani. Ezt pl. Windowson a bcdedit programmal lehet elerni.

Ha USB-rol, vagy boot menu entry nelkul akarsz bootolni, akkor azt ugy kell megoldani, hogy a bootolni kivant particion legyen ott a megfelelo helyen (CPU tipustol fuggoen /EFI/BOOT/BOOTIA32.EFI, /EFI/BOOT/BOOTX64.EFI, stb) az a .EFI file amiben a bootolni kivant image van. Innen aztan megint csak azt tolt be a program amit szeretne, grubot, vagy oprendszert.

Erre mindossze annyi megkotes van, hogy az EFI-t tartalmazo filerendszernek FAT32-nek kell lennie, viszont a Grub mar tartalmaz mas filerendszer drivereket is, igy kepes mindenfelerol bootolni.

CD-rol bootolas: mint irtam, az ISO-9660 hagy helyet egy boot imagenek. A legacy betoltessel szemben az UEFI a boot image helyet FAT-kent ertelmezi es megprobalja onnan betolteni a boot kodot. Ezzel kapcsolatban lasd: http://wiki.osdev.org/El-Torito

A Grub mukodese

A Grub szinten egy teljesen mezei program, akar a BIOS, tehat kepes tobb fele boot modszerre. Ha olyan oprendszert kell betolteni amit nem ismer, akkor az un. chainloadert hasznalja, vagyis meghivja az adott oprendszer boot kodjat es kitakarodik a memoriabol.

Ha ezzel szemben ismeri a betoltendo rendszert, akkor kozvetlenul a kernelt tolti be, es adott esetben parametereket is at tud adni.

Arra erdemes figyelni, hogy akarhogy is toltod be a kivant rendszert, az adott rendszernek kezelnie kell az alatta levo disk setupot. Ez azt jelenti, hogy ha az adott oprendszert ISO imagebol inditod el, de o sajat maga megprobalja ertelmezni a diskeket es nem tudja osszerakni a kepet, akkor nem fogsz tudni bootolni, mivel a boot loader / kernel nem tudja beolvasni az oprendszer tobbi reszet.

A Windows (ugy nez ki) hivatalosan tamogatja az ISO-bol bootolast, ellenben ha Linuxot bootolsz, akkor mindenkeppen varazsolnod kell egy kicsit. Ezzel kapcsolatban ajanlom elolvasasra: https://wiki.gentoo.org/wiki/GRUB2/Chainloading

Without kernel cmd line options, booting ISO images with GRUB2 will fail in the physical media check/test stage of the ISOs boot process.


Alternativakent azt is megteheted, hogy betoltod a Linux kernelt es adsz neki egy egyedi initramfs-t. Ez egy olyan mini Linux telepites, ami azert felel hogy eloallitsa a root filerendszert. Tipikusan arra hasznaljak, hogy titkositott particiorol vagy LVM-rol bootoljanak. Ebben felmountolhatod az ISO imaget, es pivot_roottal atallithatod arra a root filerendszert, valamint elindithatod az init folyamatot.

Remelem, ez igy ertheto volt es megvalaszolta a kerdesedet, es remelem hogy sehol nem hibaztam, regen volt mar hogy ezzel foglalkoztam melyebben.

Tovabbi forrasok:

- Master boot record
- Programming for EFI: Creating a "Hello, World" Program
17

Köszi szépen, még emésztem,

hóhér · 2017. Jún. 19. (H), 14.11
Köszi szépen, még emésztem, de nagyjából ezt szerettem volna tudni, csak a szükséges dokumentációk többségét nem találtam.
18

Ezt akár egy cikknek is

inf · 2017. Jún. 22. (Cs), 03.48
Ezt akár egy cikknek is beküldhetted volna. :-)
19

Nem

janoszen · 2017. Jún. 22. (Cs), 10.05
Nem, mert ez csak egy elmeleti es emlekezetbol osszeirt leiras. Cikkhez minimum ossze kellett volna rakni mindenfele setupbol legalabb egyet, erre pedig jelenleg nincs idom.

Plusz nincs kedvem ket honapot varni arra hogy kikeruljon valami.
20

Nem feltétlen ide gondoltam.

inf · 2017. Jún. 22. (Cs), 15.29
Nem feltétlen ide gondoltam. Nekem jó így is, hogy nagyjából stimmel, ezt is sok óra lenne összekeresni netről, ha mélyebben érintene a téma.
21

Lista

janoszen · 2017. Jún. 22. (Cs), 15.33
Felirom a listamra, de nem igerem hogy magyarul lesz a tartalom ami ebbol keszul. :)
22

Ha lehet még tippeket adni

inf · 2017. Jún. 22. (Cs), 16.42
Ha lehet még tippeket adni hiány cikkre. Én a hálózatozás alapjait néztem nemrég, az is tök érdekes, hogy egy konkrét kérés hogyan kerül teljesítésre, milyen OSI rétegekben milyen üzenetek mennek vele kapcsolatban, stb. Nyilván én nem tudok annyit erről, hogy cikket írjak róla, mert csak most kezdtem. Nekem most csak arra kell, hogy ARP broadcast-et fogjak. Olyan szempontból is érdekes lehet, hogy Hidvégi úr szerint az absztrakció a bűnös mindenért, és hogy pl az OSI model is absztrakciós rétegek mentén tagozódik, szóval élő ellenpélda, mert működik és ha az ő szavajárásával leak-el is néha, akkor is tolerálhatóak a hibái.
23

Kerdezz

janoszen · 2017. Jún. 22. (Cs), 16.47
Kerdezz nyugodtan, eleg sokat tudok errol is. Rajta is van a listamon, elegge elol. :)
24

Nekem most csak technikai

inf · 2017. Jún. 22. (Cs), 17.25
Nekem most csak technikai jellegű kérdéseim vannak, azt hiszem nyitok is egy témát neki. Egyébként webes szempontból engem az érdekelne a legjobban, hogy egy-egy HTTP(s)/websocket kérés hogyan megy át a teljes hálózaton, és közben milyen további protokolok segítik a célba jutását melyik eszközön és pontosan hogyan. Erre a kérdésre tényleg csak egy cikk lenne a válasz, mert annyira hosszú. Persze ha nincs időd, és emlékezetből írnál, én azt is megköszönném.
25

Roviden

janoszen · 2017. Jún. 23. (P), 11.06
Erre lesz rovidesen valaszom, de tobb reszes lesz. :)
26

Az sose baj. :-) Köszi!

inf · 2017. Jún. 23. (P), 19.21
Az sose baj. :-) Köszi!
3

goto https://hup.hu Mire

sly · 2017. Jún. 16. (P), 18.41
goto https://hup.hu

Mire kell pendrive rendszer? Van egy rakás készen a neten.
4

Nem. :) Vannak fokozatok, de

hóhér · 2017. Jún. 16. (P), 19.29
Nem. :) Vannak fokozatok, de a hazai fórumok, a weblabor kivételével mind mélyebb színvonalat képviselnek, mint ameddig hajlandó vagyok süllyedni. De ebbe ne menjünk bele.

Mire kell? Próbálgatni többféle rendszert, többféle hardveren, rescue rendszert, önálló víruskeresőt stb. használni. Van egy 32G-s pendrive-om, egyszerűbb iso formában tárolni a rendszereket, mint minden használat előtt újraírni.
6

Eddig erre nem is gondoltam,

inf · 2017. Jún. 17. (Szo), 01.51
Eddig erre nem is gondoltam, de tök jó ötlet. Egyébként érdekes, hogy amikor kiírod az iso-t pendrive-ra, akkor a legtöbb program külön listázza az összes különböző disztrót, tehát valami bonyodalom ott is van, amiért nem lehet egyforma módon felírni őket. Régebben volt is ebből gondom, hogy túl új volt a disztró verziója, és nem tudta rendesen felírni amivel próbáltam. Minden szempontból jobb lenne ha csak fel lehetne másolni és grubból kiválasztani.
8

Amiket használok, azok dd

hóhér · 2017. Jún. 17. (Szo), 09.17
Amiket használok, azok dd if=iso.img of=/dev/pendrive paranccsal felírva működnek.
12

Már úgy érted, hogyha ezzel a

inf · 2017. Jún. 17. (Szo), 13.44
Már úgy érted, hogyha ezzel a paranccsal felírod a pendrive-ra, akkor be lehet bootolni? Ha igen, akkor azonos formán kell, hogy működjön a bootolásuk, szóval elméletileg lehetséges, amit akarsz. A hogyant sajnos én sem tudom, de google rengeteg találatot dob angol nyelven. Nem tudsz angolul, vagy csak nem jött össze ezek alapján?

szerk:
Ahogy nézem mindegyik tool-okat ajánl, de a mikéntjét egyik sem írja. A tool-ok fejlesztőit lehetne megkérdezni erről, esetleg ha opensource tool-ról van szó, akkor belenézni a forrásába, hogy hogyan csinálja, milyen API-t használ. Biztosan lehet valami szabvány erre. Egyébként ezeket érdemes átnézni: link link, de van még rengeteg másik is.

szerk2:
Ha jól értem neked az kell, ami itt van leírva: link, esetleg itt lehet megtekinteni: link
14

Pár kipróbált darab: ubuntu

hóhér · 2017. Jún. 17. (Szo), 21.41
Pár kipróbált darab: ubuntu variánsok, grml, kaspersky rescue, windows 10 telepítő. Ezeket letöltve, dd-vel pendrive-ra másolva, simán bootoltak.

Az archwiki(ubuntuhoz is van ilyen leírás) az egyik, ami leírja, hogy hogyan csináljam, de arra nem kaptam ott sem választ, hogy miért csak úgy megy.
Windows iso pl. chainloadert használ, ami kb. az amit janoszennek leírtam, de valamiért linuxos image-re nem működik. Vagy én rontottam el valamit, amikor egyszer ezzel próbálkoztam.
15

Ja olvasom fentebb, hogy

inf · 2017. Jún. 17. (Szo), 22.33
Ja olvasom fentebb, hogy működni működik, csak a mikéntjét akarod érteni.
27

Elvben működik. Gyakorlatban

hóhér · 2017. Aug. 8. (K), 11.13
Elvben működik. Gyakorlatban már nem annyira. :D

Tegnap megint előszedtem a témát és a pendrive-okat.
Finoman szólva érdekes amit csinál.
Ubuntut sikerült rábeszélni, hogy bootoljon fájlból, a többi (debian, Fedora, GRML) megkergül tőle. A többivel csak annyira jutottam, hogy elindul a kernel, de vagy a root fs mountolásakor vagy már az initrd betöltésekor megdöglik. Hibaüzenet semmi, csak lefagy az egész.
Érdekes na. :)
Részleteket egyelőre azért hanyagolom, mert bőven benne van, hogy valamit figyelmetlenül olvastam el.

Mondjuk az se semmi, hogy pl. a notbookom fel se ismeri az uefi-s környezetre készített pendrive-ot, ha a telepített ubuntu-hoz tartozó boot entry-t nem törlöm a boot opciók közül. Pedig elvben tud az UEFI/BIOS többet is.