Kirjoittaja Aihe: Kovalevyn aloitus-sektorin palauttaja  (Luettu 9260 kertaa)

petteriIII

  • Käyttäjä
  • Viestejä: 693
    • Profiili
Kovalevyn aloitus-sektorin palauttaja
« : 08.12.10 - klo:08.58 »
Yksi ongelma näyttää vaivaavan Ubuntua usein: 'grub hävisi', 'lakkasi boottaamasta', 'aloitus-sektori tais kadota', 'päivitys sotki' .... kaikissa näissä on usein syynä se että kovalevyn boottaavaa osiota osoittava aloitus-sektori osoittaa väärää osiota. Aloitus-sektorin voi kirjoittaa oikeaksi ohjelmallisesti käyttäen samoja käskyjä kuin tässä hommassa aina käytetään.
 
- useimmilla käyttäjillä on käytössä vain yksi Ubuntu joten aloitus-sektorin palautusohjelma toimii heille automaattisesti; mikäli Ubuntuja on useampia niin käyttö hieman vaikeutuu mutta käyttö-kykyjäkin on silloin enemmän.
- mikäli ohjelman suorittamiseksi tekee boottaavan USB-muistitikun niin itse ohjelma kannattaa sijoittaa kansioon /home/ubuntu/Desktop. Tällainen muistitikku on todella helppokäyttöinen mikäli koneen saa boottaamaan USB:ltä yksinkertaisesti. 
- jos valmista muistitikkua ei ole kannattaa se tehdä toimivassa koneessa gpartedilla tiedostomuotona ext4. Heti lähdettyäsi gpartedista anna käsky: sudo chown -R `whoami`:`whoami` /media. (muuten kopioi-liimaa käsky tästä sillä merkki ` ei ole sama kuin ' eikä sitä näppäimistöiltä aina löydä.)   
- ohjelmakoodi ladataan muistitikulle missähyvänsä toimivassa koneessa. Helppo tapa on kopioida-liimata internetistä.
- ohjelman voit tallettaa millä nimellä haluat, mutta eikö NäpäytäMinuaNiinAsetanBoottauksen ole kuvaava kun sitä kerran on tarkoitus näpäyttää?
- ohjelmalle täytyy antaa suoritusoikeus. Suoritusoikeuden antaakseesi käske: sudo chmod uga+x /media/*/ohjelmalle_antamasi_nimi
- ohjelma on skripti. Koskan skriptausta ei asetella ei skriptiä voi kutsua nimellä vaan sitä käytetään nautiluksella. Muuten se on nautilus mikä avautuu kun USB-tikun työntää liittimeen.
- ohjelma toimii vain kun on bootattu live-CD:llä tai "Käynnistyslevyn luonti"-toiminteella tehdyllä boottavalla USB-tikulla. Ohjelman toiminta on estetty mikäli on bootattu kiintolevyltä sillä se on riskialtista. Sensijaan ohjelmakoodin voi kyllä hakea/suorittaa kovalevyltä nautiluksella.
- toistaiseksi ohjelma toimii vain gnome:ssa.
- teen kokoajan tarkistamista ja korjaan tähän alkuperäiseen viestiin mitä tarvitsee; ainahan niitä salahautoja löytyy.

Ohjelman käyttö-ohje:
Boottaa sekaisin oleva kone live-CD:llä siten että muistitikku on irti, ja laita tikku liittimeen kun boottaus on selvä. Tuplanäpäytä ohjelman kuvaketta ja avautuvasta ikkunasta näpäytä: Suorita päätteessä (Run in Terminal). Tai boottaa USB-muistitikulla ja tuplanäpäytä ohjelman kuvaketta.

Koodia: [Valitse]
#!/bin/bash
# mikäli Ubuntuja on vain yksi suunnataan boottaus sille automaattisesti, vain mikäli Ubuntuja on useampia kysytään mille niistä boottaus suunnataan. Windowseja ja muita käyttöjärjestelmiä ei lasketa.   7.12.2010 petteriIII

function tulostamahdolliset {
clear
jarjestelmia=0
echo -e 'Seuraavilla osioilla on Linux ja grub.cfg ja jotka siten ovat mahdollisia:\n'
for osio in `sudo fdisk -l | grep /dev/ | grep Linux | grep -v sivutus | grep -v swap | grep -v tavua | grep -v bytes | awk '{print $1}'`
do
  sudo mount $osio /mnt && test -f /mnt/boot/grub/grub.cfg && echo ${osio:5} && sudo umount /mnt && ekanUbuntunOsio=${osio:5} && let jarjestelmia++
done
# jarjestelmia=1 # sen testaamiseksi toimiiko yhden Ubuntun valinta automaattisesti
test $jarjestelmia -eq 0 &&  echo 'eipä näköpiirissä ole yhtään kelvollista Ubuntua' && sleep 10 && exit
echo ''
}
 
function unmountmnt {
cd / # umount ei onnistu, jos umountattavaan on cd
sudo echo ""
for mountattu in `sudo mount | grep /mnt | awk '{print $3}'`
do
    test -d $mountattu && sudo umount -l $mountattu
done 
# echo '/mnt:n mountit on poistettu'
}

# Pääohjelma
test ! `env | grep USERNAME=ubuntu` && echo 'tätä ohjelmaa voi ajaa ainoastaan Ubuntun live-CD:ltä tai "Käynnistyslevyn luonti"-kohdassa tehdyltä USB-muistitikulta' && sleep 10 && exit
sudo clear
unmountmnt
tulostamahdolliset
test $jarjestelmia -ne 1 && read -p "mille osiolle haluat suunnata boottaamisen: " ekanUbuntunOsio 
if [ -b /dev/$ekanUbuntunOsio ]; then
  echo 'asetan boottauksen tapahtumaan osiolta: '$ekanUbuntunOsio
  sudo mount /dev/$ekanUbuntunOsio /mnt
  sudo mount -t sysfs none /mnt/sys
  sudo mount -t proc none /mnt/proc
  sudo mount --bind /dev/ /mnt/dev
  sudo mount --bind /dev/pts /mnt/dev/pts
  test ! -d /lib64 && test ! -d /mnt/lib64 && sudo chroot /mnt update-grub2
  test -d /lib64 && test -d /mnt/lib64 && sudo chroot /mnt update-grub2
  sudo grub-install --root-directory=/mnt /dev/${ekanUbuntunOsio:0:3}
  echo 'jos hommat onnistuivat niin tulostui: Installation finished. No error reported.'
  else
  echo 'sellaista laitetta ei ole'
fi
unmountmnt
read -p 'paina enter jatkaakseesi' apu

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Kovalevyn aloitus-sektorin palauttaja
« Vastaus #1 : 08.12.10 - klo:13.39 »
Pieni kysymys heräsi:  Onko tuossa jo valmiiksi luotuna nuo hakemistot /mnt: n alla vai jäikö minulta jotain huomaamatta ?
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

petteriIII

  • Käyttäjä
  • Viestejä: 693
    • Profiili
Vs: Kovalevyn aloitus-sektorin palauttaja
« Vastaus #2 : 08.12.10 - klo:15.47 »
Kyllä ne on, toisessa päässä viittausta on live-CD:n hakemistot ja toiseen päähän ne ilmestyy  senjälkeen kun korjattava osio on mountattu /mnt:lle. Siten ei vielä tarvitse luoda mitään.
 

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Kovalevyn aloitus-sektorin palauttaja
« Vastaus #3 : 09.12.10 - klo:09.22 »
Lainaus
toiseen päähän ne ilmestyy  senjälkeen kun korjattava osio on mountattu /mnt:lle

Ihmettelin vain siksi kun kokeilin "mount" komentoa käynnissä olevalla koneellani (ei live-CD) ja se herjaa heti että "liitospistettä ei ole olemassa" jos yritän montata --> /mnt/jotain ilman että etukäteen luon tuon "jotain" hakemiston. Toimiiko tuo live-CD: llä eri tavalla eli luoko "mount" siellä puuttuvan hakemiston ?
  
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

petteriIII

  • Käyttäjä
  • Viestejä: 693
    • Profiili
Vs: Kovalevyn aloitus-sektorin palauttaja
« Vastaus #4 : 11.12.10 - klo:07.40 »
Tosi juttu, toimii ainoastaan live-CD:ltä. Ja enpä tässävaiheessa luottaisi muihin kuin tavalliseen Ubuntuun; ohjelman kehittyessä sitä on kokeiltu ainakin kun ohjelma pöyrii koneessa joka on 32/64-bittinen, eri tiedostojärjestelmäinen, Xubuntulla (vaatiko se pieniä muutoksia koodiin?) ja Mintillä, mutta tällä versiolla en vielä ole kerinnyt.

Live-CD:n tiedostojärjestelmä on aikatavalla erilainen kuin kovalevy-Ubuntun ja nuo mountit sitoo niitä yhteen; jos toimitaan kovalevyltä ei tosiaan mountin toista puolta löydy.

Ja tuo käsky:  "sudo mount /dev/$ekanUbuntunOsio /mnt" tuo esiin mountin toiset osatekijät, mutta ainostaan mikäli tuo $ekanUbuntunOsio tosiaan on osio jossa on Ubuntu.

Sitäpaitsi seuraava huomattavasti muuttunut versio on jo melkein valmis. En vain enää jaksa testata ja tehdä testien tarpeellisiksi osoittamia muutoksia. Muuten Linuxi:lle on maailmalla mahdottoman paljon erittäin kehittyneitä työkaluja ja kaikkia niitä vaivaa tämä sama tauti: kehittäjä ei jaksa testata, kehittää ohjelmaansa pari versiota liian pitkälle ja kaikki sortuu. Eikä uudestaan keksitty pyörä aina pyöri yhtähyvin, kuka sen pyörän keksiikin uudelleen.


ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Kovalevyn aloitus-sektorin palauttaja
« Vastaus #5 : 11.12.10 - klo:12.07 »
Tuossa bash-ohjelmoinnissa on omat hauskuutensa ja kurjuutensa. Jälkimmäisiin kuuluu pikkutarkkuus esimerkiksi "valkoisen tilan" (white space) suhteen, tuo tarkoittaa sitä "tyhjää" kuten välilyöntejä.
Jos kiinnostaa niin tuossa on yksi bash-tekele jonka tein viihteekseni mutta se on ollut kätevä ja toimiva lisuke muutenkin kun koneillani on ollut niin monenlaisia versioita ja kerneleitä niihin että on välillä joutunut miettimään että milläs tuon nyt olinkaan käynnistänyt.
 http://forum.ubuntu-fi.org/index.php?topic=32070.msg253901#msg253901


Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.