ISO boot
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.
■ 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.
Igen
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.
Köszi. A gentoot inkább
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.
Nincs
Biztosan ugyanarra
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.
Nem
Ne erts felre, epithetsz klasszikus boot imageket es azok mukodni is fognak, de tobb szivas mint EFI-vel megoldani.
Nagyon nem egy dologról
Vegeredmeny
ismétlés a ...
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á.
OK
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
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
Köszi szépen, még emésztem,
Ezt akár egy cikknek is
Nem
Plusz nincs kedvem ket honapot varni arra hogy kikeruljon valami.
Nem feltétlen ide gondoltam.
Lista
Ha lehet még tippeket adni
Kerdezz
Nekem most csak technikai
Roviden
Az sose baj. :-) Köszi!
goto https://hup.hu Mire
Mire kell pendrive rendszer? Van egy rakás készen a neten.
Nem. :) Vannak fokozatok, de
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.
Eddig erre nem is gondoltam,
Amiket használok, azok dd
Már úgy érted, hogyha ezzel a
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
Pár kipróbált darab: ubuntu
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.
Ja olvasom fentebb, hogy
Elvben működik. Gyakorlatban
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.