Kirjoittaja Aihe: Grub2:n editointi  (Luettu 3677 kertaa)

petteriIII

  • Käyttäjä
  • Viestejä: 672
    • Profiili
Grub2:n editointi
« : 18.11.09 - klo:14.15 »
Koneessa voi olla useampi käyttöjärjestelmä useammastakin syystä:
- halu kokeilla erilaisia käyttöjärjestelmiä, sillä useinkin on niin että jollain käyttöjärjeselmällä voi tehdä sellaista mitä ei toisella voi.
- silkka väline-urheilu
- halu piilotella jotakin
- tietoturva syyt: esimerkiksi pankkiasiointia on syytä välttää sellaisella selaimella jolla selataan nettiä ja varsinkin sen likaisia sivuja.
- mikäli koneessa on monta käyttöjerjestelmää niin kun joku käyttöjärjestelmistä lakkaa boottamasta esimerkiksi päivityksen surauksena niin sen saa palautettua boottaavaksi toisilla käyttöjärjestelmillä.

Samassa järjestelmässä voi olla vaikka kuinkamonta käyttöjärjestelmää ja kaikkien niiden kutsut voi sijoittaa boottaavan levyn grub.cfg:hen. Käyttöjärjestelmiä ei ole rajoitettu muuten kuin että käyttöjätjestelmiem tulee tuntea grub2, mutta eri levyjen grubit osaavat ketjuttaa toisiaan. EFI on kylläkin asettaa omia rajoituksiaan sillä jokaisella boottausvälineellä tulee olla oma EFI-osio johon kaikki sillä boottausvälineellä olevat käyttöjärjestelmät viittaavat.

Mutta tämä tekee tarpeen staattiseen valikkoon sillä muuten kun joku käyttöjärjestelmistä päivitetään niin mikäli sen kernel kuuluu päivitettäviin muodostetaan uusi grub.cfg jossa tuo käyttöjärjestelmä olisi ensimmäisenä. Käyttäjä voi kylläkin ottaa pienellä vaivalla ottaa tämän homioon, mutta sitä ei voi huomioida että osioiden otsikot tulisivat arvoituksellisiksi.

Ubuntun kehittäjät ovat kyllä mahdollistaneet staattisen valikon tekemisen - haepa editoriin grub.cfg ja lue kohta 40_custom. Mutta nimi 40_custom on huono, sillä vaikka sillä nimellä muodostettu staattinen valikko toimisi kyllä oikein hyvin niin sen perusteella tehdyssä grub.cfg:ssä olisi ensin sama grub kuin ennenkin ja perässä tämä uusi ilman väliä joten tulos on entistä pahempi sotku. Mutta linux toimii siten, etta vaikka kaikki kansiossa xyz.d olevat tiedostot suoritetaan niin ensiksi suoritetaan ne tiedostot joiden nimessä tuo numero on pienempi - ja tämä toiminta on ubuntu kehittäjiä arvovaltaisemman sakin määräämä ja sen rikkominen olisi kauhea moka. Ainoa muutos mitä skriptini tekee on nimen 40_custom muuttaminen 07_customiksi jolloin staattinen valikko on ensimmäisenä - ja GrubEdit antaa mahdollisuuden lisätä välieroitin staattisen ja dynaamisen valikko-osan väliin.

Vaikka staattinen valikko on kirjaimellisesti staattinen niin oikein määriteltynä se kykenee ottamaan dynaamisesti huomioon kerneli-version muuttumisen päivitettäessä. Ja pienellä lisähommalla staattinen valikko selviää myös uudelleenasennuksesta ja levynvaihdosta.

GrubEdit kuten Skriptiajurikin on tarkoitettu otettavaksi käyttöön silloin, kun internetin tietoturva laskee olemattomaksi,  sillä niiden avulla saa järjestelmäänsä muunneltua todella nopeasti ja täydellisesti.

Mikäli järjestelmän levyn koko on yli 2T täytyy siirtyä käyttämään gpt-osiointia ja vaihta BIOS EFI:iin. GrubEdit hallitsee nekin.

15.04/btrfs:n kanssa Ubuntun update-grub ei toimi kunnolla vaan jättää pois samalla levyllä olevia Ubuntuja ainakin vielä 6.12.2014. GrubEdit sensijaan osaa.

Koodia: [Valitse]
#!/bin/bash
#petteriIII 31.7.2014   grubin editointi täytyy suorittaa boottaus-järjestyksessä ensimmäisessä Ubuntussa.
function koodinpalasia () {
echo '
set default=number                      # mikä menuentry on valittuna kun grub aukeaa.
set timeout=number                      # montako sekuntia odotetaan ennenkuin bootataan automaattisesti
set locale_dir=($root)/boot/grub/locale # mikäli grubissa haluaa käyttää kansallisia merkkejä
set lang=fi                             # aseta Suomi näppäimistökieleksi grubissa

käyttöjärjestelmä-kutsuja ei kokonaisuudessaan tehdä itse, vaan ne kopioidaan sivulta grub.cfg ja senjälkeen editoidaan ainoastaan rivillä: menuentry heitto-merkkien välissä olevaa tekstiä. Kun editointi on toimivaksi havaittu niin voi alkaa varovasti esimerkiksi poistamaan "quiet splash" ja semmoista. Myös kernel-parametreja voi myöhemmin lisäillä, esimerkiksi: video=1280x1024-24@75
 
menuentry "Boottaus USB:ltä (BIOS:ia ei saa asetella)" {
configfile (hd1,1)/boot/grub/grub.cfg
}

menuentry " " { # editoitu grub on näytön alussa ja koneen itsensä tekemä grub perässä. Niiden väliin voi laittaa tyhjän rivin.
set root="(hd1,1)"
}

- koneen itsensä tekemä grub on ihan muuttamaton ja se toimii aina. Jos siis onnistut jotenkin sössimään editoinnin, niin senkun vain käytät koneen tekemää - vaikka se onkin epäselvä niin se toimii varmasti.
 

saat tehtyä grub.cfg:stä salasana-suojatun seuraavasti:
- vain superuser petteri saa editoida alkuvalikkoa antamalla tässä määrätyn salasanan, ei sudo-salasanaa
- antamalla tässä määritellyn salasanansa ville saa ajaa Ubuntun jonka "menuentry" rivin lopussa on: --users ville  . Muut käyttäjät eivät saa sitä   ajaa mutta superuser saa antamalla oman tässä määritellyn salasanan.
- kun halutaan editoida valikkoa käynnistettäessä siirretään valintakenttä editoitavan rivin päälle ja painetaan kirjainta: e . Silloin kysyttävä
- käyttäjänimi on petteri ja salasana 1234.
- äsköisten ohjeiden mukaisen suojauksen saat päälle kun lisäät editointiin seuraavan kaltaiset käskyt:
set superusers="petteri"
password petteri 1234 
password osmo 4321
password ville 0987' > hae_täältä_koodinpalasia
}

function teorianteko () {
echo 'Editoiminen ei voi johtaa siihen ettei kone enää boottaisi vaan joudut vain käyttämään vanhaa grubia kunnes editoit oman osasi kuntoon.

Jos editointisi ei toimi niin yleensä syyn näkee välittömästi kun menee editoriin uudestaan, mutta naurettaviakin syitä löytyy: esimerkiksi joskus ihmisen mielestä samanlaiset tekstit eivät olekaan koneen mielestä samanlaisia.

Mikäli USB-tikut bottaavat koneessasi kannattaa GrubEdit sijoittaa sellaiselle. Tee boottaava USB-tikku uusimmasta "ei-alfa-tai-beta" Ubuntusta ja boottattuasi sille kopioi tikun omalla nautiluksella ohjelma kovalevyltä tikun kansioon: /home/ubuntu/Desktop. Tällöin Grubeditin saa ajettua kun boottamisen jälkeen tupla-näpäyttää hiirellä GrubEditin kuvaketta näytöllä ja näpäyttämällä avautuvassa ikkunassa: suorita päätteessä. Samalla kun editoidaan palautuu todennäköisesti myös kovalevyn boottauskyky.   

GrubEdit voi olla talletettuna millä medialla hyvänsä jolta saa nautiluksen avulla sen kuvakkeen näytölle; ajaakseesi GrubEditin kaksoisnäpäytä sen kuvaketta ja näpäytä aukeavasta valikosta "Aja päätteessä".   

GrubEdit toimii kaikille sudo-oikeuksisille, se ei vaadi asentamista eikä asetuksien tekemistä, se toimii yhtähyvin yksittäiselle Ubuntulle kuin silloin kun Ubuntuja ja muita käyttöjärjestelmiä on lukemattomia jakautuneena eri levyille. Editoitavat voivat käyttää mitähyvänsä tiedostojärjestelmää tai levytyyppiä tahansa, Ubuntu-versiolla ei ole väliä ja se voi ollaa 32- tai 64 bittinen kunhan editoiva Ubuntu ymmärtää niitä (=paketteja saattaa joutua lisäämään ja jos ajaa ohjelmaa live-CD:ltä täytyy sen olla samanbittinen kuin korjattavakin). Editoitavilla voi olla yhteiset tai erilliset kodit.

Voit editoida levollisin mielin: jos editoit alkuvalikon siihen kuntoon ettei kone enää boottaa niin voit palauttaa boottauskyvyn boottaamalla live-CD:llä ja tehdä GrubEditissä sellaisen alkuvalikon joka varmasti toimii boottaamalla live-CD:llä ja kopioimalla 07_custom sivulta grub.cfg tai historia.

Voit laittaa 07_custom:iin kutsurivit melkein milletahansa käyttöjärjestelmälle; ehkä joudut kirjoittamaan ne itse, kopioimaan sivulta grub.cfg tai hakemaan internetistä. Mutta parasta olisi pysyä niissä käyttöjärjestelmissä joissa on grub2 ja kutsua niitä käskyllä: configfile (hdx,y)/boot/grub/grub.cfg ; tämä tosin johtaa kaksiulotteiseen alkuvalikkoon ja hieman hitaanpaan boottaukseen, mutta tällatavoin kutsutut päivittävät itse oman alkuvalikkonsa etkä joudu tekemään sitä käsin.

Jos BIOS:issa muutetaan boottaava levy tai kovalevyn johdot vaihdetaan toisiin paikkoihin niin grubedit kehoittaa palauttamaan alkuperäisen tilanteen.

Toimintansa aluksi grubedit testaa kaikkien kovalevyjen kaikki Linux-osiot miksili ollaan bootattu live-CD:llä. Tarkistuksen kunkin osion kohdalla voi lopettaa painamalla ESC.

Tapahtumia kannattaa ajamisen jälkeen tutkia pääte-ikkunasta, sillä kukaan ei kerkiä käynnin aikana tajuta viestien merkitystä.

Mikäli boottaus päätyy pimeään ruutuun saattaa että näytön arvot on auto-detektoitu väärin. Kirjoita tällöin kernel-riville esimerkiksi:
video=1280x1024-24@75 . Tietoa vbe-mahdollisuuksista saat grub-editorissa käskyllä: vbeinfo.
 ' > teoria
}

function ohjeidenteko () {
echo 'Editointi tulee aina lopettaa: tiedosto - sulje (file -close) ja senjälkeen pitää odottaa kunnes näyttö rauhoittuu.

Sivujen merkitys:

- 07_custom: tähän kirjoitetaan se koodi, joka luo alkuvalikon eteen ne halutut rivit. Tänne kirjoitettava teksti pääasiattain kopioidaan sivuilta grub.cfg ja hae_täältä_koodinpalasia. Tietoa kannattaa hakea myös internetistä ja kirjoittaa senmukaan, mutta alkuun sitä kannattaa välttää.

- historia: kun editointisi ei toimi löydät sen toimivan 07_custom:in sivulta historia
 
- grub.cfg: se alkuperäinen grub.cfg. Esimerkiksi jos olet asentanut uuden Ubuntun niin sivulla 07_custom ei edes ole kutsua uudelle Ubuntulle. grub.cfg:stä se löytyy: kopioi kutsu 07_custom-lehdelle.

- grub: määreet siitä mitenkä grub.cfg muodostetaan seuraavalla kerralla. Tämän editointi vaikuttaa vanhaan grub.cfg:hen.

- teoria: millä perusteilla toimitaan.

- hae_täältä_ koodinpalasia: -

- fstab: sieltä näkee esimerkiksi mitä järjestelmään on liitetty.
 

Huomautuksia 

- kun haluat liittää Ubuntuusi uuden käyttöjärjestelmän kutsun: asenna se uusi käyttöjärjestelmä minnekkä haluat ja irroita siksiaikaa vanha kovalevy jos tarvitsee. Asennettuasi sen uuden käyttöjärjestelmän kytke järjestelmään kaikki siihen kuuluvat käyttöjärjestelmiä sisältävät levyt. Boottaa ja käynnistä skripti GrubEdit. Täytä sivu 07_custom kopioiden sivuilta grub.cfg ja hae_täältä_koodinpalasia. Editointi osio ja -levy eivät saa muuttua tai koko sivu 07_custom täytyy kirjoittaa uudelleen.

- muuten boottaus on melkoinen ongelma; koeta jos onnistaa mutta jos ei ala boottaamaan kovalevyltä tai boottaa jonnekin muualle kuin Ubuntuun niin boottaa live-CD:llä ja aja skripti ChroottaaJaKorjaa.
test
- näyttöongelmin saattaa auttaa käsky: sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.broken sillä vaikka sitä ei nykyään tarvitakaan niin väärin kasattua xorg.conf:iakin kunnioitetaan ja boottaus saattaa loppua siihen.

- yksi syy siihen ettei boottaa tai että toiminta on ihmeellistä voi olla se että viitataan olemattomiin UUID:eihin. Tarkista ne sivuilta 07_custom ja fstab; sivulta grub.cfg näet mitä niiden pitäisi olla.

- tällä ohjelmalla on sivuvaikutuksena se, että se luo kotihakemistoon kansion nimeltään GrubEdit. Sen voi editoituaan poistaakin, mutta koska historia alkaa silloin uudestaan kannattaa harkita poistaako sen ja milloin poistaa.' > käyttöohje
}

function Osiojollaollaan { apuu=$(sudo df | grep -m 1 /dev/ | awk '{print $1}'); osiojollaollaan=${apuu##*/dev/}; } # boottausosion looginen nimi tyypiltään sdx

function Levyjollaollaan { levyjollaollaan=$(ls -l /dev/disk/by-id | grep '/'$osiojollaollaan | awk '{print $9}' | sed "s/-part*//g");} # boottausvälineen fyysinen nimi

Osiojollaollaan; Levyjollaollaan; echo 'Nyt ollaan osiolla:'$osiojollaollaan' ja se on tämän nimisellä levyllä:'$levyjollaollaan
[[ ! -d /var/lib/os-prober/mount ]] && sudo mkdir /var/lib/os-prober/mount # lisäys 14.04; mikä on tämän lauseen tehtävä ? Paikata kehittäjien koodia ?
sudo apt-get install btrfs-tools
sudo os-prober
sudo update-grub2
[[ ! -d ~/.GrubEdit ]] && mkdir ~/.GrubEdit
cd ~/.GrubEdit
[[ ! -f /etc/grub.d/07_custom ]] && sudo cp /etc/grub.d/40_custom /etc/grub.d/07_custom
[[ ! -f käyttöohje ]] && ohjeidenteko
[[ ! -f teoria ]] && teorianteko
[[ ! -f hae_täältä_koodinpalasia ]] && koodinpalasia
[[ ! -f historia ]] && touch historia
sudo blkid > UUID
sudo gedit /etc/grub.d/07_custom käyttöohje teoria hae_täältä_koodinpalasia historia UUID /boot/grub/grub.cfg /etc/default/grub /etc/fstab # /boot/grub/device.map
echo -e '\n##############  07_custom   päivänä:'`date`'      #####################' >> historia
echo -e '### Nyt ollaan osiolla:'$osiojollaollaan' ja se on levyllä:'$levyjollaollaan'\n' >> historia
sudo cat  /etc/grub.d/07_custom >> historia
sudo update-grub2
cd ~
 

GrubEdit toimii myös EFI:n kanssa, mutta toimittaessa useammalla kovalevyllä olevien käyttöjärjestelmien kanssa toiminnan virittämiessä on paljon työtä.
- kaikilla saman levyn käyttöjärjestelmillä on yhteinen EFI-osio. Jokaisella kovalevyllä on oma EFI-osionsa.
- osiointimuoto gpt ja tiedostomuoto btrfs onnistuvat myös.

valikkoni tällähetkellä:
Koodia: [Valitse]
15.04 sda6 btrfs
15.04 sda1 ext4
15.04 sda3 btrfs . Varattu pankkipalveluille: muu selainkäyttö on kielletty ja koti on oma -> esim. ikuisia pipareita ei kerry

boottaus USB:ltä (tai joltain toiselta järjestelmään liitetyltä kovalevyltä)
tässä perässä on normaali grub.cfg. Näitä rivejä ei saa poistaa, sillä ne toimivat aina - niin itsetekemiesikin pitäisi toimia mutta niiden suhteen voit hölmöillä niin paljon etteivät ne toimi.

jos ensisijaista boottausvälinettä ei löydy on ilmaantuvassa grub:issa vai toissijaisten levyjen valikko. Jos sensijan toissijaista levyä ei löydy pysyy valikko täydellisenä. Kuitenkin on viisainta jättää silloin toissijainen levy valitsematta. Mutta kumpikan tilanne ei siis ole virhe.
« Viimeksi muokattu: 15.12.14 - klo:12.40 kirjoittanut petteriIII »

audi

  • Käyttäjä
  • Viestejä: 1124
    • Profiili
Vs: Grub2:n editointi
« Vastaus #1 : 23.06.10 - klo:18.17 »
Mutta tilanne on muuttumassa, sillä Ubuntuunkin aletaan soveltaa samoja tietoturvan-murto menetelmiä kuin Windowsiinkin. Tämä johtaa tarpeeseen muuttaa monia tottumuksia. Mutta lisäksi käyttöjärjestelmän täytyy olla jokaisella sovelluksella täysin erillinen ja sillä tulee olla vain ne oikeudet joita tarvitaan sen yhden nimenomaisen sovelluksen suorittamiseen - rajoitusten tulee myös olla kohdallaan.

Kävisikö jokin näistä oikeuksien rajoittamiseen: SeLinux, VirtualBox tai Vmware? Tietenkin monella voi olla tarvetta usealle jakelulle/ käyttöjärjestelmälle, missä tarvitaan grubin editointia. Laskujen maksamiseen yksinkertainen server-asennus, selain, openbox jne.
« Viimeksi muokattu: 23.06.10 - klo:18.20 kirjoittanut audi »
Mozillazine

A1398 ym romua,  macOS 10.13
Linux Mint 18, Mate

petteriIII

  • Käyttäjä
  • Viestejä: 672
    • Profiili
Vs: Grub2:n editointi
« Vastaus #2 : 04.07.10 - klo:07.14 »
Kävisikö jokin näistä oikeuksien rajoittamiseen: SeLinux, VirtualBox tai Vmware? Tietenkin monella voi olla tarvetta usealle jakelulle/ käyttöjärjestelmälle, missä tarvitaan grubin editointia. Laskujen maksamiseen yksinkertainen server-asennus, selain, openbox jne.

Toki kävisi, kaikkikin noista. Ja laskujen maksaminen pyörii hyvin kun tekee asetukset oikein. Ja varmaankin surffaaminen ja moni muukin homma toimii.
Mutta millähyvänsä menetelmällä käyttöjärjestelmää rajoitetaankin tulee siitä vaikeakäyttöinen joillekin toimille (joita useimmat ei kyllä tarvitsekaan) - esimerkiksi kone urputtaa kaikkeen: sinulla ei ole oikeuksia ....
 
Ratkaisuna on: oma ubuntu tärkeille sovelluksille. Ubuntu ei maksa mitään, asentaminen on nopeaa ja nykyisille kovalevyille mahtuu niin monta Ubuntua kun haluaa - ja erilliselle kodille jää vielä niin paljon tilaa että hirvittää. Muutkin käyttöjärjestelmät sopivat mukaan.

Jos vain osaisin esittää käsitettävästi mitä haluan. Kun tällaista hommaa ei vielä tarvita - tai tarvitaan kyllä sillä tämä olisi ratkaisu myös koulujen ongelma-oppilaiden käyttöjärjestelmäksi; kun mählivät käyttöjärjestelmänsä niin se on vain omassa käytössä. Vandaalinkestävä palautuspiste on kylläkin tarpeen, mutta sekin  on Ubuntulla tehtävissä.