Linuxin buuttaus, yksityiskohtineen ????

MS-DOSin ja Windowsin buuttaamisen yksityiskohdista löytyy todella hyvä selitys tältä sivustolta:

https://thestarman.pcministry.com/asm/mbr/index.html

Linuxin buuttaamisesta löytyy toki myös tietoja nettihaulla, mutta suurin osa (kaikki ?) noista web -sivuista ovat puutteellisia, eli jättävät jotakin hyvin oleellista kertomatta !

Tästä on jo useampi vuosi aikaa, mutta halusin muuttaa Knoppix -linuxin buuttaustapaa.

Knoppix ISO -image on jo pitkään ollut ns. hybrid image, eli jos kirjoitat tuon imagen CD/DVD -levylle, silloin buuttilataajana käytetään ISOLINUXia.

Jos taas kirjoitat tuon imagen USB -muistitikulle, silloin buuttilataajana käytetään SYSLINUXia.

Kokeilin, mitä tapahtuu, jos vaihtaa KNOPPIXin buuttilataajan, joko SYSLINUXiin tai omatekoiseen buuttilataajaan.

Seuraus oli muistaakseni "Kernel Panic" - vaikka näennäisesti kaikki oli tehty oikein, eli kopioitu kernelille ns. kernel komentorivi suoraan joko syslinux.cfg tai isolinux.cfg -tiedostosta.

https://www.syslinux.org/old/iso.php

https://www.syslinux.org/old/faq.php

Ainakin KNOPPIXissa homma ilmeisesti toimii niin, että todellisuudessa linuxin kernelille välitettävä komentorivi on YHDISTELMÄ kahdesta asiasta:

1) syslinux.cfg tai isolinux.cfg -tiedostossa kerrotut kernel -parametrit

JA

2) isolinux tai syslinux -buuttilataaja ITSE lisää edelliseen lisäparametrin tai lisäparametreja siten, että nuo lisätyt kertovat ainakin laitenimen, josta buutattiin, ja mahdollisesti jotain hakemistonimiä myös - niin, että kernel tai kernelin lataama apuohjelma tietää tästä, mitä pitää tehdä seuraavaksi.

Debianin osalta:

JOS debian ON JO asennettu kiintolevylle, silloin buuttilataajana on moderneissa debianeissa GRUB2, ikivanhoissa ns. GRUB legacy.

JOS kuitenkin kone on buutattu joko debianin asennusCD/DVD:ltä tai vastaavalta USB -muistitikulta, ilmeisesti näissäkin on tässä tapauksessa käytössä ISOLINUX tai SYSLINUX.

Onko kellään tarkempaa tietoa, mitä lisäparametrejä ja missä muodossa ISOLINUX tai SYSLINUX lisäävät kernelille välitettävälle komentoriville sen lisäksi, mitä em. konfiguraatiotiedostoissa on asetettu ?

Entä KNOPPIX, onko Klaus Knopper itse kirjoittanut jotain koodia, joka myös lisäilee jonkin/joitakin parametrejä kernelille, vai onko tuossakin vain kyse siitä, mitä ISOLINUX tai SYSLINUX tekevät ?

Tämä yksityiskohta on tähän mennessä puuttunut kaikista niistä linuxin buuttaamista käsittelevistä nettisivuista, joita olen tähän mennessä löytänyt.

Jos jostain syystä haluaisin esim. buutata kiintolevyosiolle suoraan kirjoitetusta ISO imagesta, niin käsittääkseni pitäisi tehdä näin:

1) puretaan sieltä halutun Linux -distron ISO imagesta linux KERNEL (vmlinuz).

2) puretaan sieltä halutun Linux -distron ISO imagesta ns. initrd (initial ram disk)

3) valitaan itse, mitä buuttilataajaa halutaan käyttää, ja määritellään oikeat linux kernelin buuttiparametrit. Useat näistä voi yleensä kopioida syslinux.cfg tai isolinux.cfg -tiedostosta, mutta sitten pitäisi vielä kertoa ainakin 2 asiaa lisää kernelille tai kernelin lataamalle apuohjelmalle (jälkimmäisessä tapauksessa käsittääkseni kernel itse välittää tietyt kernel -parametrit tuolle apuohjelmalle):

4) tieto oikeasta laitenimestä, jossa tuo ko. kiintolevyosio sijaitsee, esim:
/dev/sda4

5) tieto siitä, mikä on tuon /dev/sda4:n tiedostojärjestelmä.
Jos ISO on sellaisenaan kopioitu tuolle /dev/sda4, silloin tiedostojärjestelmä on iso9660. Mutta jos sensijaan on konvertoitu tuo ISO sisältö esim. fat32 -formaattiin, silloin oikea tiedostojärjestelmä on fat32 - pitääkö sitä linuxissa kutsua nimellä vfat ?

6) mahdollisesti vielä viite yksittäiseen tiedostoon ko. ISO sisällössä.
Tämä pitäisi selvittää, a) tarvitaanko tällaista ja b) jos tarvitaan, mistä löydän oikean tiedostonimen.

Mistä siis oikea ja täydellinen kuvaus linux -käyttöjärjestelmän buuttiprosessista, jossa on mukana myös tässä kuvatut yksityiskohdat, jotka monesta netistä löytyvästä kuvauksesta jostain syystä puuttuvat ?
16495
Äänestä

Muut lukivat myös

Vastaukset 16

Vanhimmat

Ehkä on syytä huomauttaa, että boottilataaja, esim. grub2 vaihtaa prosessorin suoritustilaa real-mode:sta protected:iin ennen handoveria Linux-kernelille. Jos näin ei tehdä on käytössä vain 1Mt muistia, mikä ei riitä edes kernelin lataamiseen eli DOS-aikainen muistikartta. Grub2 antaa paljon muutakin tietoa kernelille kuin pelkän komentorivin. Kannattaa tutustua sen manuaaliin ja lukea lähdekoodista. Linux:n boottilataaja on itse asiassa erillinen projekti eikä pelkästään tue Linuxia eli sillä voi bootata lähes minkä tahansa käyttöjärjestelmän.
Syslinux on sitten toinen boottilataaja joka tekee minimaalisen alustuksen kernelin lataamisen mahdollistamiseksi - vähän samaan tapaan kuin sys-komento DOS-aikana teki. Tämä käyttää bios-kutsuja, joten vanhemmissa koneissa voi tulla ongelmia bootata esim. usb-tikulta, koska bios-tukea ei välttämättä löydy.
Sitten on vielä kolmas - joskin nykyään kai vähemmällä käytöllä oleva lilo.
Pohdintasi lienevät oikean suuntaisia, mutta hiukan turhia, koska grub2 osaa myös iso-formaatin eli mitään ei tarvitse itse purkaa. "kernel panic" on merkki siitä, että jotain on mennyt pieleen jo ennen kernelin käynnistymistä ts. kerneliltä puuttuu esim. initrd:stä levyformaatin käsittelijä moduli. Kernel ei pysty arvaamaan esim. miltä osiolta root-osio löytyy vaan se on osattava sille kertoa.
Boottilataajat on luotu ratkaisemaan eräänlaista muna-/kana-ongelmaa: Kernelistä kyllä löytyy ajurit - kunhan sen saa ensin käyntiin - mutta niitä ei voi käyttää käynnistämisen yhteydessä, koska niitä ei ole vielä ladattu. Toisaalta bios-kutsuihin ei aina voi luottaa, koska ne ovat rom-piireillä, joilla on rajallinen määrä muistia. Pakko siis luoda ohjelma, joka toisaalta pystytään käynnistämään ilman, että muistirajoitteet real-modessa haittaavat ja toisaalta sisältää vähintään tarpeelliset ajurit mutta osaa myös tarvittaessa konfiguroida laitteita köyttökuntoon.
Väittäisin, että boottaus-prosessi ei ole missään dokumentoituna täydellisesti, vaan se pitää lukea esim. grub2-koodista ottaen huomioon sen kulloinenkin konfiguraatio.

Äänestä
  • "Pohdintasi lienevät oikean suuntaisia, mutta hiukan turhia, koska grub2 osaa myös iso-formaatin"

    Jos haluaa asentaa uuden version linuxista vanhaan tietokoneeseen, ja koneessa on ennestään hyvin vanha versio linuxista, eli Debian 3.1 = Sarge, niin ei ollenkaan turhaa !

    Ensinnäkin:

    Onko olemassa turvallista keinoa päivittää GRUB Legacy -> GRUB2 ?

    Miten päivitetään ?

    Miten kone buutataan päivitettäessä ?

    Kone on vanha kannettava, USB -portti löytyy, mutta kone on niin vanha, ettei se osaa buutata USB -muistitikulta.

    CD/DVD -asema löytyy, mutta (kuten usein vanhoissa kannettavissa) toiminta on muuttunut aikojen kuluessa epäluotettavaksi.

    Levykeasema on, mutta sitäkin on viimeksi käytetty yli 10 vuotta sitten.
    Muuttuvatko levykeasematkin aikojen kuluessa epäluotettavaksi, kuten optisille asemille usein käy ?
    Koneessa siis on kuitenkin RJ45 -lähiverkkoliitäntä, ja se toimii.

    Eli buuttaamalla koneen tuohon Debian 3.1 sargeen, niin lähiverkon kautta saa tallennettua tiedostoja kiintolevylle.

    Siksi kysyn:

    Onko olemassa keinoa turvallista keinoa päivittää GRUB Legacy -> GRUB2, ja vielä siten, että:

    1) päivitys tehdään debian sargea käyttämällä, jolloin konetta ei tarvitse buutata jollain erikoisella (ja mahdollisesti riskialttiilla) tavalla.

    2) nykyinen GRUB legacy -konfigurointitiedosto autokonvertoituisi samassa yhteydessä GRUB2 -formaattiin siten, että tämän toimenpiteen jälkeen tuo vanha debian sarge on edelleen buuttikelpoinen ?

    Jos tuo ei onnistu, niin miten saan edes asennettua GRUB2 -lataajan ?

    Tuohan sitäpaitsi ylikirjoittaa vanhan GRUB legacyn, eli jos tuossa menee jotain pieleen, niin sen jälkeen konetta ei ehkä saa buutattua lainkaan, tai ainakin (jos levykeasema vielä toimii), niin pitäisi tehdä buuttilevyke, jolla koneen saa hallintaan, jos kiintolevyllä ei jonkin virheen seurauksena enää ole buuttikelpoista koodia.

    Jossain koneessa olen joskus buutannut koneen Knoppixiin tällaisella yhdistelmällä:

    Knoppix ISO:sta kopioidaan tarvittavat tiedostot kiintolevylle (esim /dev/hda3).

    sitten buutataan kone Knoppix CD:llä tai sen erikoisversiolla, jossa vain buuttivaiheen data, ja sen buuttilataajalle: no3d lang=fi fromhd=/dev/hda3 (enter)

    Tällöin kone lataa käyttöjärjestelmän tuolta /dev/hda3 ja lisäksi määritetään, että koneessa on suomenkielinen näppäimistö ja että turhat "vilkkuvälkky" -pelleilyt jätetään pois.

    JOS unohtaa tuon no3d, niin latautuu compiz-fusion, ja itse ainakin vihaan moisia "vilkkuvälkky" -pelleilyjä.

    Mutta ongelmakoneessa siis CD/DVD -aseman toimivuus on heikko, ja voi olla, ettei tuo asema saa edes sitä knoppixin kerneliä ja inird:tä (sekä isolinuxia) ladattua, jolloin tuokaan buuttikeino ei toimi.

    Sinänsä, JOS GRUB2 tukee ISO -tiedostosta buuttaamista, niin tuo olisi mainio juttu.

    Tosin:

    Jostain käsittämättömästä syystä:

    Miksi linuxissa tietty yksityiskohta MS-DOSin ja Windowsin buuttaustavasta ei linux -yhteisölle kelvannut, teknisestä paremmuudestaan huolimatta ?

    Onko tuo vain asennetta "emme halua käyttää samaa tapaa kuin Microsoft", vai onko takana (nyt jo vanhentuneita) patentteja, ja linux -yhteisö on tietoisesti vältellyt tekemästä asioita, joista Microsoft olisi saattanut haastaa linux -yhteisön oikeuteen patenttiloukkauksesta ?

    Tämä on johtanut ns. "kiintolevysektorien villi länsi" -käytäntöön!

    Eli niitä sektoreita, jotka ovat heti MBR:n jälkeen (vanhassa tyylissä 1-62), pyrkivät omimaan itselleen sekä GRUB (käsittääkseni myöskin GRUB2), että myös Plop Boot Manager:

    https://en.wikipedia.org/wiki/Plop_Boot_Manager

    Sinänsä tuo Plop Boot Manager olisi mainio:

    Sillä saisin hoidettua niin, että kone buuttaa USB -muistitikulta, ja silloin ehkä GRUB2:n asentaminen olisi helppoa.

    MUTTA:

    Kun sekä GRU2 että plop -BootManager molemmat haluavat omistaa nuo levysektorit LBA1 - LBA62, niin ylikirjoittavat toisensa päälle - sitten kumpikaan ei toimi.

    Tähän ei ole löytynyt hyvää ratkaisua !

    Microsoft -maailmassahan homma toimii näin:

    MBR tarkistaa, mikä primääriosio (1-4) on aktiivinen, ja relokatoituaan itsensä 0:7C00H -> 0:0600H, lataa tuon osion oman buuttisektorin (Volume Boot Record) osoitteeseen 0:7C00H, eli samaan osoitteeseen, jossa MBR -sektorin sisältö hetki sitten oli.

    Ja jos FAT12/FAT16/FAT32 -levyllä klusterikoko >= 4096 tavua, silloin VBR:n on helppoa ladata 4096 tavua tai enemmän dataa yhdeltä klusterilta, ja tuo 1 klusterihan on aina peräkkäisiä tavuja levyllä, eli FAT -taulukkoa ei lataamiseen tarvita.

    MUTTA:
    Ei ilmeisesti ole mitään keinoa saada GRUB2:sta toimimaan noin.

    Eli että GRUB2 sijaitsisi:

    osittain hda1..hda4 , jonkun noista VBR:ssä (= osion ensimmäisellä sektorilla) ja
    osittain tiedostossa FAT -formatoidulla asemalla, jonka klusterikoko >= 4096 tavua, tällöin tiedoston 4096 ensimmäistä tavua on ladattavissa ilman FAT -taulukon lukemista.

    Vai jäisikö ainoaksi keinoksi "puukottaa" tuo plop -BootManager toimimaan kuvaamallani tavalla, jolloin GRUB2 saisi ihan rauhassa omia itselleen nuo sektorit LBA 1-62 ?

    Äänestä

  • Anonyymi00002 kirjoitti:

    "Pohdintasi lienevät oikean suuntaisia, mutta hiukan turhia, koska grub2 osaa myös iso-formaatin"

    Jos haluaa asentaa uuden version linuxista vanhaan tietokoneeseen, ja koneessa on ennestään hyvin vanha versio linuxista, eli Debian 3.1 = Sarge, niin ei ollenkaan turhaa !

    Ensinnäkin:

    Onko olemassa turvallista keinoa päivittää GRUB Legacy -> GRUB2 ?

    Miten päivitetään ?

    Miten kone buutataan päivitettäessä ?

    Kone on vanha kannettava, USB -portti löytyy, mutta kone on niin vanha, ettei se osaa buutata USB -muistitikulta.

    CD/DVD -asema löytyy, mutta (kuten usein vanhoissa kannettavissa) toiminta on muuttunut aikojen kuluessa epäluotettavaksi.

    Levykeasema on, mutta sitäkin on viimeksi käytetty yli 10 vuotta sitten.
    Muuttuvatko levykeasematkin aikojen kuluessa epäluotettavaksi, kuten optisille asemille usein käy ?
    Koneessa siis on kuitenkin RJ45 -lähiverkkoliitäntä, ja se toimii.

    Eli buuttaamalla koneen tuohon Debian 3.1 sargeen, niin lähiverkon kautta saa tallennettua tiedostoja kiintolevylle.

    Siksi kysyn:

    Onko olemassa keinoa turvallista keinoa päivittää GRUB Legacy -> GRUB2, ja vielä siten, että:

    1) päivitys tehdään debian sargea käyttämällä, jolloin konetta ei tarvitse buutata jollain erikoisella (ja mahdollisesti riskialttiilla) tavalla.

    2) nykyinen GRUB legacy -konfigurointitiedosto autokonvertoituisi samassa yhteydessä GRUB2 -formaattiin siten, että tämän toimenpiteen jälkeen tuo vanha debian sarge on edelleen buuttikelpoinen ?

    Jos tuo ei onnistu, niin miten saan edes asennettua GRUB2 -lataajan ?

    Tuohan sitäpaitsi ylikirjoittaa vanhan GRUB legacyn, eli jos tuossa menee jotain pieleen, niin sen jälkeen konetta ei ehkä saa buutattua lainkaan, tai ainakin (jos levykeasema vielä toimii), niin pitäisi tehdä buuttilevyke, jolla koneen saa hallintaan, jos kiintolevyllä ei jonkin virheen seurauksena enää ole buuttikelpoista koodia.

    Jossain koneessa olen joskus buutannut koneen Knoppixiin tällaisella yhdistelmällä:

    Knoppix ISO:sta kopioidaan tarvittavat tiedostot kiintolevylle (esim /dev/hda3).

    sitten buutataan kone Knoppix CD:llä tai sen erikoisversiolla, jossa vain buuttivaiheen data, ja sen buuttilataajalle: no3d lang=fi fromhd=/dev/hda3 (enter)

    Tällöin kone lataa käyttöjärjestelmän tuolta /dev/hda3 ja lisäksi määritetään, että koneessa on suomenkielinen näppäimistö ja että turhat "vilkkuvälkky" -pelleilyt jätetään pois.

    JOS unohtaa tuon no3d, niin latautuu compiz-fusion, ja itse ainakin vihaan moisia "vilkkuvälkky" -pelleilyjä.

    Mutta ongelmakoneessa siis CD/DVD -aseman toimivuus on heikko, ja voi olla, ettei tuo asema saa edes sitä knoppixin kerneliä ja inird:tä (sekä isolinuxia) ladattua, jolloin tuokaan buuttikeino ei toimi.

    Sinänsä, JOS GRUB2 tukee ISO -tiedostosta buuttaamista, niin tuo olisi mainio juttu.

    Tosin:

    Jostain käsittämättömästä syystä:

    Miksi linuxissa tietty yksityiskohta MS-DOSin ja Windowsin buuttaustavasta ei linux -yhteisölle kelvannut, teknisestä paremmuudestaan huolimatta ?

    Onko tuo vain asennetta "emme halua käyttää samaa tapaa kuin Microsoft", vai onko takana (nyt jo vanhentuneita) patentteja, ja linux -yhteisö on tietoisesti vältellyt tekemästä asioita, joista Microsoft olisi saattanut haastaa linux -yhteisön oikeuteen patenttiloukkauksesta ?

    Tämä on johtanut ns. "kiintolevysektorien villi länsi" -käytäntöön!

    Eli niitä sektoreita, jotka ovat heti MBR:n jälkeen (vanhassa tyylissä 1-62), pyrkivät omimaan itselleen sekä GRUB (käsittääkseni myöskin GRUB2), että myös Plop Boot Manager:

    https://en.wikipedia.org/wiki/Plop_Boot_Manager

    Sinänsä tuo Plop Boot Manager olisi mainio:

    Sillä saisin hoidettua niin, että kone buuttaa USB -muistitikulta, ja silloin ehkä GRUB2:n asentaminen olisi helppoa.

    MUTTA:

    Kun sekä GRU2 että plop -BootManager molemmat haluavat omistaa nuo levysektorit LBA1 - LBA62, niin ylikirjoittavat toisensa päälle - sitten kumpikaan ei toimi.

    Tähän ei ole löytynyt hyvää ratkaisua !

    Microsoft -maailmassahan homma toimii näin:

    MBR tarkistaa, mikä primääriosio (1-4) on aktiivinen, ja relokatoituaan itsensä 0:7C00H -> 0:0600H, lataa tuon osion oman buuttisektorin (Volume Boot Record) osoitteeseen 0:7C00H, eli samaan osoitteeseen, jossa MBR -sektorin sisältö hetki sitten oli.

    Ja jos FAT12/FAT16/FAT32 -levyllä klusterikoko >= 4096 tavua, silloin VBR:n on helppoa ladata 4096 tavua tai enemmän dataa yhdeltä klusterilta, ja tuo 1 klusterihan on aina peräkkäisiä tavuja levyllä, eli FAT -taulukkoa ei lataamiseen tarvita.

    MUTTA:
    Ei ilmeisesti ole mitään keinoa saada GRUB2:sta toimimaan noin.

    Eli että GRUB2 sijaitsisi:

    osittain hda1..hda4 , jonkun noista VBR:ssä (= osion ensimmäisellä sektorilla) ja
    osittain tiedostossa FAT -formatoidulla asemalla, jonka klusterikoko >= 4096 tavua, tällöin tiedoston 4096 ensimmäistä tavua on ladattavissa ilman FAT -taulukon lukemista.

    Vai jäisikö ainoaksi keinoksi "puukottaa" tuo plop -BootManager toimimaan kuvaamallani tavalla, jolloin GRUB2 saisi ihan rauhassa omia itselleen nuo sektorit LBA 1-62 ?

    MBR taitaa olla BIOS:n tarjoama palvelu ts. se takaa, että pystyy lukemaan 512 tavua levyn ensimmäiseltä sektorilta dataa - vanhojen biosien kanssa ei kannata olettaa, että pystyisi lataamaan tätä enempää. Microsoftin systeemi taitaa käyttää edelleen DOS:sta periytyvää tapaa ladata käyttöjärjestelmä. Tuosta 512 tavusta menee osa vielä levyosioiden kirjanpitoon ja todellisuudessa n. 450 tavua on käytettävissä lataaja-koodille: Tässä kohdassa on siis vapaat kädet päättää miten lataaminen suoritetaan. Tai melko vapaat: 450 tavua muistia ei juuri armoa anna. Tämä lataaja lataa sitten varsinaisen grub2:n, koska se ei mahdu 450 tavuun. Samalla vapausasteet lisääntyvät merkittävästi kun koodin kokoa ei enää rajoita mikään. LILO taisi jossakin vaiheessa mahtua vielä 0-sektorille mutta sekin jakautui kahteen osaan jossain vaiheessa kehitystä.
    grub2:n saa ainakin toimimaan ketjulataajana(chainloader) jolloin se voi ladata esim. osion alusta toisen alkulataajan. Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun. Joskus ainoa vaihtoehto ladata lilo:n alaiselta levyltä käyttöjärjestelmä, joka ei noudattanut grub2:n käsitystä osiotaulusta eli sisälsi virheitä oli ketjulataaja.
    Ja sitten oli vielä loadlin: DOS-ohjelma, joka pystyi käynnistämään linux-kernelin. Nykyään sille ei taida olla enää käyttöä, mutta se oli varsin kätevä tilanteessa, jossa windows pääsi ylikirjoittamaan bootti-sektorin eli tilanteen pääsi korjaamaan.

    Äänestä

  • Anonyymi00003 kirjoitti:

    MBR taitaa olla BIOS:n tarjoama palvelu ts. se takaa, että pystyy lukemaan 512 tavua levyn ensimmäiseltä sektorilta dataa - vanhojen biosien kanssa ei kannata olettaa, että pystyisi lataamaan tätä enempää. Microsoftin systeemi taitaa käyttää edelleen DOS:sta periytyvää tapaa ladata käyttöjärjestelmä. Tuosta 512 tavusta menee osa vielä levyosioiden kirjanpitoon ja todellisuudessa n. 450 tavua on käytettävissä lataaja-koodille: Tässä kohdassa on siis vapaat kädet päättää miten lataaminen suoritetaan. Tai melko vapaat: 450 tavua muistia ei juuri armoa anna. Tämä lataaja lataa sitten varsinaisen grub2:n, koska se ei mahdu 450 tavuun. Samalla vapausasteet lisääntyvät merkittävästi kun koodin kokoa ei enää rajoita mikään. LILO taisi jossakin vaiheessa mahtua vielä 0-sektorille mutta sekin jakautui kahteen osaan jossain vaiheessa kehitystä.
    grub2:n saa ainakin toimimaan ketjulataajana(chainloader) jolloin se voi ladata esim. osion alusta toisen alkulataajan. Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun. Joskus ainoa vaihtoehto ladata lilo:n alaiselta levyltä käyttöjärjestelmä, joka ei noudattanut grub2:n käsitystä osiotaulusta eli sisälsi virheitä oli ketjulataaja.
    Ja sitten oli vielä loadlin: DOS-ohjelma, joka pystyi käynnistämään linux-kernelin. Nykyään sille ei taida olla enää käyttöä, mutta se oli varsin kätevä tilanteessa, jossa windows pääsi ylikirjoittamaan bootti-sektorin eli tilanteen pääsi korjaamaan.

    "Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun"

    Mitä ilmeisimmin EI pidä paikkaansa!

    Juuri tuon takia olen tähän asti vältellyt GRUB2:ta.

    JOS GRUB2:ta yrittää asentaa muualle kuin koko levyn alkuun (jolloin 446 tavua menee MBR:ään, sen jälkeen osiotaulu ja ns. signature) ja sektoreille 1-62 (vanhat koneet) tai 1-2047 (uudet koneet), niin:

    asennusvaiheessa tulee kryptinen varoitus, joka varoittaa mahdollisesta datan ylikirjoittamisesta, mutta varoitus ei kerro tarpeeksi yksityiskohtia, jotta voisi päätellä, tuleeko varoitus ihan aiheesta vai eikö.

    GRUB2:n ongelma on juuri tuo: Sen voit asentaa vain, jos hyväksyt asennuksen MBR -alueelle (ja sitä välittömästi seuraaville usein tyhjille sektoreille).

    Toki, jos tuon hyväksyy, niin sitten varmasti GRUB2 toimii oikein hienosti.

    Mutta silloin ei siis voi samoille sektoreille laittaa myös esim. plop -BootManageria.

    Eli ovat toisensa poissulkevat.

    Harmi sinänsä:
    Tuo plop -BootManager olisi mainiota olla levyllä siltä varalta, että jotakin menee pieleen.

    Kun olisikin jokin keino korvata GRUB2:n ns. "initial loder" jollain omalla ratkaisulla, eli oma koodi lataisi GRUB2:n RAM -muistiin, ja hyppäisi tiettyyn kohtaan GRUB2 -koodia, ja GRUB2 jatkaisi sitten siitä.

    Valitettavasti GRUB2 ei tarjoa oikein mitään, jos käyttäjällä on tämäntapaisia toiveita.

    Äänestä

  • Anonyymi00004 kirjoitti:

    "Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun"

    Mitä ilmeisimmin EI pidä paikkaansa!

    Juuri tuon takia olen tähän asti vältellyt GRUB2:ta.

    JOS GRUB2:ta yrittää asentaa muualle kuin koko levyn alkuun (jolloin 446 tavua menee MBR:ään, sen jälkeen osiotaulu ja ns. signature) ja sektoreille 1-62 (vanhat koneet) tai 1-2047 (uudet koneet), niin:

    asennusvaiheessa tulee kryptinen varoitus, joka varoittaa mahdollisesta datan ylikirjoittamisesta, mutta varoitus ei kerro tarpeeksi yksityiskohtia, jotta voisi päätellä, tuleeko varoitus ihan aiheesta vai eikö.

    GRUB2:n ongelma on juuri tuo: Sen voit asentaa vain, jos hyväksyt asennuksen MBR -alueelle (ja sitä välittömästi seuraaville usein tyhjille sektoreille).

    Toki, jos tuon hyväksyy, niin sitten varmasti GRUB2 toimii oikein hienosti.

    Mutta silloin ei siis voi samoille sektoreille laittaa myös esim. plop -BootManageria.

    Eli ovat toisensa poissulkevat.

    Harmi sinänsä:
    Tuo plop -BootManager olisi mainiota olla levyllä siltä varalta, että jotakin menee pieleen.

    Kun olisikin jokin keino korvata GRUB2:n ns. "initial loder" jollain omalla ratkaisulla, eli oma koodi lataisi GRUB2:n RAM -muistiin, ja hyppäisi tiettyyn kohtaan GRUB2 -koodia, ja GRUB2 jatkaisi sitten siitä.

    Valitettavasti GRUB2 ei tarjoa oikein mitään, jos käyttäjällä on tämäntapaisia toiveita.

    "Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun"

    "Mitä ilmeisimmin EI pidä paikkaansa!"

    Kyllä tuo pitää paikkansa. Voit antaa grub-install -ohjelmalle pää-levyn esim. /dev/sda tai osion alun esim. /dev/sda1. nämä sijaitsevat eri paikassa. Koneesi BIOS:n avulla pystyt varmistamaan mitä luultavimmin asian jättämällä MBR-loaderin asentamatta, jolloin kone ei boottaa linuxiin, koska grub2 ei lataudu automaattisesti. Sen sijaan voit valita koneesi biosin boot-valikosta luultavasti, miltä osiolta kone bootataan, jolloin MBR-loaderia ei tarvita levyn alussa. Näin ollen voit asentaa vaikka jokaiselle distrolle oman bootloaderinsa(distron mukana tulleen) osion alkuun ja MBR:lle lopuksi asentaa lataajan, jolla kaikki distrot toimivat - tai käyttää ketjulataajaa joka käynnistää osion alusta löytyvän grub2:en. Tuo ketjulataaja on oikeastaan vain varotoimi mikäli grub2 ei osaisi jostain syystä bootata osiota suoraan - käytännössä ongelmia tulee vastaan hyvin harvoin.

    Äänestä

  • Anonyymi00011 kirjoitti:

    "Grub2:n pystyy myös asentamaan minkä tahansa osion alkuun"

    "Mitä ilmeisimmin EI pidä paikkaansa!"

    Kyllä tuo pitää paikkansa. Voit antaa grub-install -ohjelmalle pää-levyn esim. /dev/sda tai osion alun esim. /dev/sda1. nämä sijaitsevat eri paikassa. Koneesi BIOS:n avulla pystyt varmistamaan mitä luultavimmin asian jättämällä MBR-loaderin asentamatta, jolloin kone ei boottaa linuxiin, koska grub2 ei lataudu automaattisesti. Sen sijaan voit valita koneesi biosin boot-valikosta luultavasti, miltä osiolta kone bootataan, jolloin MBR-loaderia ei tarvita levyn alussa. Näin ollen voit asentaa vaikka jokaiselle distrolle oman bootloaderinsa(distron mukana tulleen) osion alkuun ja MBR:lle lopuksi asentaa lataajan, jolla kaikki distrot toimivat - tai käyttää ketjulataajaa joka käynnistää osion alusta löytyvän grub2:en. Tuo ketjulataaja on oikeastaan vain varotoimi mikäli grub2 ei osaisi jostain syystä bootata osiota suoraan - käytännössä ongelmia tulee vastaan hyvin harvoin.

    Jos MBR looderia ei tarvita niin tuon jälkeen tarvitaan VÄHÄN HELVETITI lisää muuta paskaa?
    ELI ei tuosta hyötyy ainakaan käyttäjälle ole jos MBR;ää ei tarvita?

    Duunaavat paskaa sanoisin.

    Äänestä

Jos noin pitkälle pääsee että tulee kernel paniciii niin ihan on toimiva toi sun omatekele boottaus.

Kernel lähtee siis pyöriin niinkuin pitääkin. Tuonjälkeen se ettii init tiedostoo ja jos ei löydä tulee kernelille paniikki kohtaus.

Käytääkö toi initrd:tä?

Äänestä
  • Luin tarkemmin ...käyttää siis initrd:tä. Ei muuta kun purat sen initrd:n ja tsekkaat mitä sen sisällä oleva tiedosto init haluaa tehdä. Tuo init yleensä tekstitiedosto.

    Ja initrd busybox "käyttöjärjestelmä".

    Äänestä

  • Anonyymi00006 kirjoitti:

    Luin tarkemmin ...käyttää siis initrd:tä. Ei muuta kun purat sen initrd:n ja tsekkaat mitä sen sisällä oleva tiedosto init haluaa tehdä. Tuo init yleensä tekstitiedosto.

    Ja initrd busybox "käyttöjärjestelmä".

    Tuossa boottauksessa viellä sellainen "yksityiskohta" että jos jakelu Asennettu levylle niin bootlooderi Kertoo kernelille mikä levy osio on root eli juuri eli "/"

    Kernel sitten mounttaa annetun levyosion juureksi eli /. Ja tuolta pitää sitten löytyä init joka kertoo mitä seuraavaksi tehdään.

    Tuolloin initrd:tä ei välttämättä tarvita ollenkaan.

    Jos taas initrd:tä käytetään niin sen sisältö on Aina root eli juuri eli /
    ja sieltä pitää löytyä init joka kertoo mitä seuraavaksi tehdään.

    Äänestä

PASKANPUHUNTA AVAUS LINKKISI EI MITÄÄN KERRO EIKÄ TOSSA JANKKAAMISESSASI OLE MUUTENKAAN MITÄÄN JÄRKEÄ!

Äänestä

Jos haluu opetella linuxin boottauksen niin vähimmäis vaatimus lienee että osaa kääntää itse busuboxin joka siis irseasiassa on (yleensä) initrd.

Voin kertoa että vakio libc:llä ei onnitu.

Tuo paska kun Kärjistetysti " huomioi sukupuoli vähemmistöt nais pappeuden jne jne..." riippuvuus-suhteet kasvaa liian isoiksi.

Hommaan pitää käyttää klibc:tä ulibc:tä ja/tai niin edelleen. Inird:n kun pitää olla STATIC eli sisäänkäännetty Kaikki tarvittava. Kuulostaa ehkä vaikeelta mutta on Yksinkertainen asia.

Äänestä
  • Sanomattakin lienee selviö ettei asennetulla paskalla voi juuri mitään opetella. Käyttis voi olla "opettelun" jälkeen totaalosesti "ulkona tästä päivästä"

    Kyllä nää asiat pitää "opetella" live linuxilla. Käyttis kun siinäkin voi "seota" mutta uudelleen käynnistyksen jälkeen.... mitään pahaa ei olr tapahtunut.

    Live on Elukka.....

    Äänestä

Tuossa on hiukan tietoa MBR:stä Linux-ympäristössä.
https://www.sharetechnote.com/html/Linux_MBR.html
Yhtä hyvin voitaisiin toki käyttää samoja menetelmiä, kuin Windows-puolella on käytetty, mutta tällöin järjestelmään jäisi pala koodia, jonka toiminta ei olisi omassa hallussa. Luultavasti tästä syystä haluttu em. pala koodia mukaan vaikka sen tehtävä onkin hyvin yksinkertainen ja oikeastaan koodi ei kuulu millekään käyttöjärjestelmälle: Sehän ei sisällä mitään pysyvää enää sen jälkeen kun käyttöjärjestelmä on aktivoitunut.
Recordin parsinnassa saattaisi auttaa Kaitai-struct:
https://formats.kaitai.io/mbr_partition_table/

Äänestä

Viekää nyt jo ne vanhat MBR koneet ser pisteelle.
GPT on olut jo 15 vuotta käytössä.

Äänestä
  • Try the MBR2GPT conversion tool
    Convert a GPT disk into an MBR disk

    Ei kai tuolla niin väliä kumpaa käyttää.

    Äänestä

Linuxissa on äärimmäisen pitkän aikaa käytetty boottilataajana Grubia ja sen uudempaa Grub 2 versiota.

Äänestä

Kommentoi aloitusta


Anonyymi-ap kirjoitti:

MS-DOSin ja Windowsin buuttaamisen yksityiskohdista löytyy todella hyvä selitys tältä sivustolta:

https://thestarman.pcministry.com/asm/mbr/index.html

Linuxin buuttaamisesta löytyy toki myös tietoja nettihaulla, mutta suurin osa (kaikki ?) noista web -sivuista ovat puutteellisia, eli jättävät jotakin hyvin oleellista kertomatta !

Tästä on jo useampi vuosi aikaa, mutta halusin muuttaa Knoppix -linuxin buuttaustapaa.

Knoppix ISO -image on jo pitkään ollut ns. hybrid image, eli jos kirjoitat tuon imagen CD/DVD -levylle, silloin buuttilataajana käytetään ISOLINUXia.

Jos taas kirjoitat tuon imagen USB -muistitikulle, silloin buuttilataajana käytetään SYSLINUXia.

Kokeilin, mitä tapahtuu, jos vaihtaa KNOPPIXin buuttilataajan, joko SYSLINUXiin tai omatekoiseen buuttilataajaan.

Seuraus oli muistaakseni "Kernel Panic" - vaikka näennäisesti kaikki oli tehty oikein, eli kopioitu kernelille ns. kernel komentorivi suoraan joko syslinux.cfg tai isolinux.cfg -tiedostosta.

https://www.syslinux.org/old/iso.php

https://www.syslinux.org/old/faq.php

Ainakin KNOPPIXissa homma ilmeisesti toimii niin, että todellisuudessa linuxin kernelille välitettävä komentorivi on YHDISTELMÄ kahdesta asiasta:

1) syslinux.cfg tai isolinux.cfg -tiedostossa kerrotut kernel -parametrit

JA

2) isolinux tai syslinux -buuttilataaja ITSE lisää edelliseen lisäparametrin tai lisäparametreja siten, että nuo lisätyt kertovat ainakin laitenimen, josta buutattiin, ja mahdollisesti jotain hakemistonimiä myös - niin, että kernel tai kernelin lataama apuohjelma tietää tästä, mitä pitää tehdä seuraavaksi.

Debianin osalta:

JOS debian ON JO asennettu kiintolevylle, silloin buuttilataajana on moderneissa debianeissa GRUB2, ikivanhoissa ns. GRUB legacy.

JOS kuitenkin kone on buutattu joko debianin asennusCD/DVD:ltä tai vastaavalta USB -muistitikulta, ilmeisesti näissäkin on tässä tapauksessa käytössä ISOLINUX tai SYSLINUX.

Onko kellään tarkempaa tietoa, mitä lisäparametrejä ja missä muodossa ISOLINUX tai SYSLINUX lisäävät kernelille välitettävälle komentoriville sen lisäksi, mitä em. konfiguraatiotiedostoissa on asetettu ?

Entä KNOPPIX, onko Klaus Knopper itse kirjoittanut jotain koodia, joka myös lisäilee jonkin/joitakin parametrejä kernelille, vai onko tuossakin vain kyse siitä, mitä ISOLINUX tai SYSLINUX tekevät ?

Tämä yksityiskohta on tähän mennessä puuttunut kaikista niistä linuxin buuttaamista käsittelevistä nettisivuista, joita olen tähän mennessä löytänyt.

Jos jostain syystä haluaisin esim. buutata kiintolevyosiolle suoraan kirjoitetusta ISO imagesta, niin käsittääkseni pitäisi tehdä näin:

1) puretaan sieltä halutun Linux -distron ISO imagesta linux KERNEL (vmlinuz).

2) puretaan sieltä halutun Linux -distron ISO imagesta ns. initrd (initial ram disk)

3) valitaan itse, mitä buuttilataajaa halutaan käyttää, ja määritellään oikeat linux kernelin buuttiparametrit. Useat näistä voi yleensä kopioida syslinux.cfg tai isolinux.cfg -tiedostosta, mutta sitten pitäisi vielä kertoa ainakin 2 asiaa lisää kernelille tai kernelin lataamalle apuohjelmalle (jälkimmäisessä tapauksessa käsittääkseni kernel itse välittää tietyt kernel -parametrit tuolle apuohjelmalle):

4) tieto oikeasta laitenimestä, jossa tuo ko. kiintolevyosio sijaitsee, esim:
/dev/sda4

5) tieto siitä, mikä on tuon /dev/sda4:n tiedostojärjestelmä.
Jos ISO on sellaisenaan kopioitu tuolle /dev/sda4, silloin tiedostojärjestelmä on iso9660. Mutta jos sensijaan on konvertoitu tuo ISO sisältö esim. fat32 -formaattiin, silloin oikea tiedostojärjestelmä on fat32 - pitääkö sitä linuxissa kutsua nimellä vfat ?

6) mahdollisesti vielä viite yksittäiseen tiedostoon ko. ISO sisällössä.
Tämä pitäisi selvittää, a) tarvitaanko tällaista ja b) jos tarvitaan, mistä löydän oikean tiedostonimen.

Mistä siis oikea ja täydellinen kuvaus linux -käyttöjärjestelmän buuttiprosessista, jossa on mukana myös tässä kuvatut yksityiskohdat, jotka monesta netistä löytyvästä kuvauksesta jostain syystä puuttuvat ?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu