[upp]
Met. 1
Met. 2
Met. 3 (chroot)
kärnor
booflaggan
startbild
[ner]
Windows
dölj finstilt
OBS! Sidan har ny adress:
[http://e-dog.info/t/63/doc/Ubuntu_installation_forts_02.php]
Var vänlig uppdatera ert bokmärke.
Senast uppdaterad:
den andra april, 2011
[TA BORT MEDDELANDET]
[index]
[Tillbaka till: Ubuntu/Linux - Grunder]
[Tillbaka till: GRUB - Reparera starthanteraren]

Ubuntu, installation, fortsättning (2)

Reparera GRUB/GRUB2/MBR

Ubuntu använder starthanteraren ("bootloadern") GRUB. GRUBs funktion är att sätta igång Ubuntu eller andra system (t.ex. Windows) som ev. är installerade.

När datorn startas aktiveras först systemet BIOS som finns lagrat i datorns hårdvara. BIOS startar sedan GRUB vilken laddar in Ubuntu eller annat operativsystem i datorns internminne. Därefter kan man börja använda datorn.

I och med Ubuntu version 9.10 har GRUB2 börjat användas. (Den tidigare GRUB kallas numera GRUB Legacy.) Flera förändringar kan noteras:

I GRUB Legacy kunde inställningar göras genom att editera filen [/boot/grub/menu.lst]. Den fil i GRUB2 som närmast motsvarar denna fil heter [/boot/grub/grub.cfg]. Denna fil är dock inte avsedd för manuell editering.

Den konfigurationsfil som är ämnad för manuell editering heter [/etc/default/grub]. Efter editering av [/etc/default/grub] kan kommandot update-grub användas för att genomföra förändringar i [grub.cfg].

För att konfigurera GRUB2 på ett enkelt sätt kan man installera paketet "startupmanager". En inställning man t.ex. kan påverka är hur många av de tidigare använda Linuxkärnorna som skall behållas "som reserv". (Minst en är att rekommendera.)

Ett annat sätt att reglera hur många kärnor som visas i startmenyn är att avinstallera de kärnor som inte används. Längre ner finns en instruktion för detta.

Två sätt att modifiera starthanteringen kan alltså vara:

  1. Installera och använd "startupmanager" för att hantera inställningar och antal kärnor.
  2. Genomför inställningar genom att editera etc/default/grub. Kör därefter update-grub. Avinstallera onödiga kärnor manuellt, t.ex. med pakethanteraren Synaptic.

Denna sida beskriver tre metoder att använda Ubuntu 9.10 Live-CD för att reparera GRUB eller GRUB2.
Samtiliga metoder kommer att installera GRUB2.

För att reparera GRUB ("GRUB(1)" = GRUB Legacy) med en Ubuntu Live-CD med äldre version än 9.10 kan man använda en liknande metod vilket beskrivs på denna sida. Där står också lite om vilka system som använder GRUB resp. GRUB2.

Vid knepigare bootproblem kan man ofta vara hjälpt av att köra ett skript som dokumenterar bootsituationen.
Metod 1

Reparera GRUB/GRUB2, metod 1

1. Starta först Ubuntu Live-CD.

För att finna den partition på vilken Ubuntu (och GRUB) ligger kan man utföra kommandot
sudo fdisk -l
Detta kommando listar systemets diskar och partitioner.
Ett annat sätt att avgöra på vilken disk/partition som GRUB ligger är genom kommandot
sudo grub-probe -t device /boot/grub
(Kommandot "find" som används GRUB Legacy finns inte i GRUB2.)
Har man en separat boot-partition måste man ta hänsyn till detta: [1]
Se även instruktionen för hur man reparerar GRUB Legacy.

2. Montera Ubuntu-partitionen.

sudo mount /dev/sda1 /mnt
Man skall alltså byta ut "sda1" i exemplet mot sin aktuella partition. Har man fler diskar ändras bokstavsbeteckningen ett steg för varje disk (sda, sdb, sdc ...). Siffran efter bokstaven anger partitionens ordningsnummer.

3. Installera GRUB.

sudo grub-install --root-directory=/mnt/ /dev/sda
Man skall alltså byta ut "sda" i exemplet mot sin aktuella disk.

4. Starta om datorn och updatera GRUB2.

sudo update-grub

Efter en installation av Windows reparerar man alltså Ubuntus starthanterare i två steg:
1. Skriv in GRUB2 i MBR mha grub-install (punkt 3)
2. Uppdatera UUID (bland GRUBs data) för Windowspartitionen mha update-grub (punkt 4)
(En formatering av en partition, som t.ex. vid (om-)installation av Windows kommer att förändra UUID.)
Metod 2

Reparera GRUB/GRUB2, metod 2

1. Starta Ubuntu Live-CD.

2 Öppna menyn "platser" och klicka på Ubuntupartitionen så att den monteras i /media (hamnar på skrivbordet).

3. För att återställa GRUB2 i MBR på t.ex. sda skriver man:

sudo grub-setup -d /media/XXXX/boot/grub /dev/sda
Uttrycket med XXXX syftar på monteringspunkten (i Live-CDn) för partitionen med GRUBs filer.
Man ser monteringspunkten t.ex. i filbläddraren Nautilus adressfönster när man bläddrar bland filerna på sin Ubuntupartition. (Tryck ctrl/L om Nautilus inte visar sökvägen på ett sätt som kan kopieras med ctrl/C.) XXXX är ofta ett långt uttryck med siffror, bokstäver och bindestreck. Kommandot kan t.ex. se ut så här:
sudo grub-setup -d /media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub /dev/sda

Om programmet meddelar att det inte hittar map-filen måste man göra om kommandot och lägga till adressen till map-filen:
sudo grub-setup -d /media/XXXXX/boot/grub -m /media/XXXXX/boot/grub/device.map /dev/sda

Har man en separat boot-partition måste man ta hänsyn till detta: [1]

4. Starta om datorn och updatera GRUB2.

sudo update-grub

Metod 3

Reparera GRUB/GRUB2, metod 3

Ett alternativt sätt att reparera GRUB/GRUB2 är att ominstallera GRUB/GRUB2 med chroot-kommandot. När man utför chroot-kommandot enligt nedan så kommer åtföljande kommandon att påverka det system som installerats på hårddisken och inte Live-CDns system.

I grunden är chroot-metoden ganska enkel. Man bootar först datorn från en Live-CD. Därefter monterar man hårddiskens Ubuntupartition under t.ex. mappen /mnt på Live-CDn. Sedan "flyttar man sig" till /mnt med chroot kommandot. (Följande kommandon kommer då att verka på hårddisken.)
sudo -i
mount /dev/sda5 /mnt
chroot /mnt
sudo grub-install /dev/sda
Man brukar dessutom montera ytterligare mappar från LiveCDn för att ta med sig LiveCDns miljö och vara säker på att man arbetar från ett fräscht system utan felaktigheter:
sudo -i
mount /dev/sda5 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /usr/ /mnt/usr
chroot /mnt
sudo grub-install /dev/sda
Här är en länk till en mer detaljerad instruktion hur man använder chroot för att reparera GRUB2. Har man problem att reparera GRUB2 med andra metoder kan det ofta hjälpa att använda chroot-metoden istället.  [Ref.]

Om man reparerar ett 32-bitars system måste man använda 32-bitars LiveCD. Samma gäller för 64-bitars system som bara kan repareras med motsvarande LiveCD. (Annars fallerar chroot-kommandot.)

1. Starta Ubuntu Live-CD.

2. Fastställ på vilken disk/partition ditt system ligger. (Se ovan samt instruktionen för hur man reparerar GRUB Legacy.) Följande kommandon kan vara användbara:

sudo fdisk -l
df -Th
Har man en separat boot-partition måste man ta hänsyn till detta: [1]

3. Montera systempartitionen.

sudo mount /dev/sdXX /mnt
sdXX motsvarar alltså disk och partition, t.ex. sda1

4. Montera väsentliga system på LiveCDn

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /usr /mnt/usr
--bind gör att man kan montera den redan monterade /dev i ytterligare en monteringspunkt

5. Använd chroot för att få åtföljande kommandon att påverka hårddisken.

sudo chroot /mnt

6. Skapa en ny /boot/grub/grub.cfg

update-grub

7. Installera om GRUB/GRUB2.

sudo grub-install /dev/sdX
sdX motsvarar alltså disken (men ej partitionen), t.ex. sda

8. Kontrollera installationen.

sudo grub-install --recheck /dev/sdX

9. Lämna chroot.

ctrl/d

10. Avmontera.

sudo umount /mnt/dev
sudo umount /mnt

11. Starta om datorn och updatera GRUB2.

sudo update-grub



Ytterligare några instruktioner
Avinstallera kärnor

Vill man själv, manuellt avgöra hur många kärnor som visas i startmenyn så brukar man helt enkelt avinstallera (via System > Administration > Pakethanteraren Synaptic) de kärnor som inte används. (Man ser att en kärna eller annat paket är installerat genom att motsvarande ruta ("checkbox") är färgad.) Behåll emellertid alltid någon kärna i reserv om en uppdatering skulle skapa en situation där den aktuella kärnan får problem.

Varning! Om man skall avinstallera kärnor måste man veta i detalj hur man gör. Om man av misstag avinstallerar den kärna man kör med och ingen annan kärna finns som fungerar har man skapat stora systemproblem. (Systemet går inte att starta.) För att ta reda på vilken kärna man använder skriver man
uname -r
Ett annat sätt att se vilken kärna man använder är att notera vilken kärna man startar i startmenyn. (Om inte startmenyn visas håller men ner shift när datorn just startats.)

För att ta bort de kärnor man inte använder kan man söka upp dessa i pakethanteraren Synaptic och ta bort motsvarande paket. Namnen på kärnornas paket börjar med beteckningen "linux-image". Vill man istället ta bort en kärna med terminal-kommandon kan man skriva:
sudo apt-get remove --purge 2.6.32-20-*
Detta tar bort kärnan 2.6.32 med subversionsnumret 20. Alla kärnor med namn som börjar med det som står före stjärnan "*" kommer att tas bort (i detta fall 2.6.32.20-generic och andra ev. installerade kärnor med samma versions- och subversions-nummer). Man får t.ex. absolut INTE skriva sudo apt-get remove --purge 2.6.32-* Man tar då bort alla kärnor med huvudversionsnumret 2.6.32. Detta gör sannolikt att systemet inte kommer att kunna startas alls eftersom alla relevanta kärnor tagits bort.

Ett alternativt kommando för att avinstallera kärnan kan vara:
sudo apt-get remove 'linux-(headers|image)-2.6.32-20'


Det finns flera kärnor med samma subversionsnummer. Vanligen är bara kärnan av typen "generic" installerad. (Generic är en kärna avsedd att fungera med så många typer av datorer som möjligt.) För att bara ta bort kärnan 2.6.32-20 av typen generic skriver man:
sudo apt-get remove --purge 2.6.32-20-generic

När man tar bort kärnor som beskrivits kommer även andra paket (ex. linux-headers-2.6.32-20, linux-headers-2.6.32-20-generic, linux-restricted-modules-2.6.32-20-generic) att tas bort. Dessa paket är kopplade till den kärna man tar bort och behövs ej mer av systemet.

Efter det att man har tagit bort kärnor kör man "sudo update-grub".
När man diskuterar startmenyn kan man även nämna nedanstående.

För att ta reda på vilka kärnor och (motsvarande) menyposter som finns i startmenyn som finns kan man göra:
grep menuentry /boot/grub/grub.cfg

Vill man ta bort de alternativ i startmenyn som testar RAM-minne kan man göra detta skript okörbart:
sudo chmod -x /etc/grub.d/20_memtest86+

I GRUB2s grundinställningar är alltid det översta alternativet i startmenyn förvalt. Vill man att ett annat alternativ skall vara förvalt ändrar man värdet av variabeln GRUB_DEFAULT i filen /etc/default/grub. Man skriver (kopierar med shift/ctrl/c) alternativet exakt som det listas när man gör kommandot "grep menuentry ..." ovan. Man skriver alltså t.ex.
GRUB_DEFAULT="Windows Vista (loader) (on /dev/sda1)"

Vill man att det alternativ man senast valde skall vara förvalt skriver man
GRUB_DEFAULT=saved

Efter ändringar i /etc/default/grub kör man, som sagt, "sudo update-grub"

Ta bort start-bilden

Ibland har man nytta av att kunna ta bort den bild som visas under uppstarten (den s.k. "boot-splashen") och ersätta den med utskrifter. Det gör man så här:

Gör säkerhetskopia

sudo cp /etc/default/grub /etc/default/grub-backup

Starta redigeraren
gksu gedit /etc/default/grub

Byt ut denna rad
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

mot denna
GRUB_CMDLINE_LINUX_DEFAULT="nosplash"

Kör
sudo update-grub

Hur länge startmenyn (där man väljer operativsystem) skall visas anges i filen [/etc/default/grub] ("timeout"). Likaså kan man välja om startmenyn helt skall hoppas över. I detta fall kan man stoppa datorn vid startmenyn om man hackar på escape-tangenten just efter påslagning.
Bootflaggan

Bootflaggan är ett värde i MBR. Den anger för Windows operativsystem vilken partition som skall bootas. Om man använder GRUB så kan GRUB boota vilken partition som helst, även de som inte anges i bootflaggan. (Den partition som har bootflaggan satt kallas aktiv partition.) [Ref.]

De flesta som börjar använda Linux följer de automatiska procedurer som skriver in GRUB i MBR. Ibland vill dock vissa användare skriva in GRUB i bootsektorn för en partition. Denna partition måste då ha bootflaggan satt ("vara aktiv").

En fördel med att ha GRUB på en partition (och inte i MBR) är att ominstallation av Windows inte kommer att skriva över GRUB (MBR) och man behöver då inte laga GRUB efter Windowsinstallationen.

Om datorn inte bootar skall man alltså kolla att BIOS pekar på rätt hårddisk. Bootflaggan används bara om man har skrivit in GRUB på en partitions bootsektor. Det senare sker nog inte så ofta om man inte uttryckligen bett om det vid installationen av GRUB.

Självklart för det inte ligga några device med monterade volymer före hårddisken i BIOS bootordning. Om man t.ex. har en USB-sticka med data kvar i USB-porten och USB-devicet ligger före hårddisken i startordningen går det ju självklart inte att boota datorn. Datorn läser bara den obotbara stickan och hänger.

Att bara ha t.ex. USB-devicet före hårddisken i startordningen (BIOS) gör ju inget. Datorn kollar ju då bara om det finns någon USB-sticka monterad innan den bootar hårddisken. Den kollen går mycket fort.

Lägga till Windows

För att att uppdatera GRUB2-menyn använder man kommandot

sudo update-grub
vilket kommer att skapa en ny startmeny med poster för Ubuntu och andra operativsystem man ev. har installerat (Linuxvarianter eller Windows).
Det beskrivna förfarandet gäller alltså GRUB2. I GRUB Legacy måste man manuellt editera /boot/grub/menu.lst för att ändra inställningarna.
Vill man i GRUB2 manuellt lägga till Windows i startmenyn lägger man till följade post i filen
[/etc/grub.d/40_custom]
menuentry "Microsoft Windows Vista" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set E87040ED7040C3D2
chainloader +1
}
Man anger naturligtvis aktuella värden för läge av rotpartition (i exemplet hd0,1) samt uuid (i exemplet E87040ED7040C3D2), enligt vad som beskrivits tidigare i denna text.

För att finna UUID gör man kommandot
sudo blkid
Vill man använda de traditionella partitionsbeteckningarna (/dev/sda1 etc.) istället för uuid går det också bra.
Den partition som anges efter "set root" är densamma som anges på raden med "search", såvida man inte har en separat boot-partition.
Man måste också notera numreringen av partitionerna vilken än en gång har ändrats!
Disk/partition betecknas enligt följande:
/dev/sda1 (fdisk) = hd(0,0) (GRUB Legacy) = hd(0,1) (GRUB2)
I mappen etc/grub.d ligger följande skript som bygger upp startmenyn. Filerna körs t.ex. när update-grub exekveras. update-grub aktiveras också bl.a. via kommandot grub-install. I grub.cfg finns kommentarer som visar från vilken av dessa filer en post kommer.

10_linux (Skriptet skriver in de Linux-operativsystem som är installerade.)
20_memtest86+ (Skriptet genererar de startalternativ som testar RAM-minnet.)
30_os-prober (Skriptet skriver in andra operativsystem, t.ex. Windows.)
40_custom (Här kan man alltså själv skriva in poster i startmenyn.)

Vill man ändra ordning på startmenyn kan man ändra de tal som inleder filnamnen. För att lägga Windows först och ange detta som förvalt (eng. default) alternativ kan man t.ex. skriva
sudo mv /etc/grub.d/30_os-prober /etc/grub.d/07_os-prober
OBS: Filerna är skript och måste alltså vara "körbara". (Man gör en fil körbar t.ex. med kommandot chmod +x 40_custom)



Ref:
Beskrivningen av metoderna 1-3 baseras på [1]
Här finns mer information: [2a, 2b, 2c, 2d, 2e, 2f]
Här jämför man vilka kommandon som kan ges i GRUB Legacy och GRUB2: [3]
Här presenteras en metod för hur man uppgraderar GRUB Legacy till GRUB2: [4]

GRUB2 upptar fler bootsektorer/block än GRUB Legacy (GRUB Legacy använder bara block 0 = MBR). Någon gång har detta misstänkts kunna orsaka att GRUB2 blivit överskriven och vissa användare har därför valt att nedgradera till GRUB Legacy. Hur man nedgraderar till GRUB Legacy (v. 0.97) beskrivs här: [5]

Wiki (Ubuntu-se.org)
Ubuntu - Installation, partitionering. Grunder.
Reparera GRUB

Är det oklart hur man gör, fråga gärna vidare här.


Tack till Bowmore, ubuntu-se.org forum, som bidragit till sidan med väsentliga tips.





[CSS: Webcredible]
Sidan underhålls av ycc, en av Ubuntu Sveriges medlemmar. Innehåll och design avspeglar nödvändigtvis inte Ubuntu Sveriges uppfattning.