Fixa GRUB efter Windows-installation
Postat: 08 apr 2009, 14:37
(Jag kommer förklara lite av den bakomliggande mekaniken och inte bara hur man löser problemet, så har du bråttom: skumläs.)
Windows har den egenskapen att efter ett par år brukar det behöva installeras om. (Om inte annat gillar jag känslan av ett helt tomt skrivbord
.) Har man som jag både Windows och Ubuntu så uppstår problem ungefär när man försöker starta Ubuntu igen efter ominstallationen. Windows skriver nämligen över MBR (Master Boot Record som inehåller information om hur de olika os du har startas) på ett rätt egoistiskt sätt: bara Windows kan startas.
När du installerar Ubuntu (och många andra os) så är det så sympatiskt att det kollar vilka andra OS som finns och fixar ett litet program som tillåter dig att starta vilket som helst av dem. Ubuntu installerar GRUB. Grub skapar en liten fil (/boot/grub/menu.lst) som inehåller information om hur de olika os:en ska startas. När du startar din dator läses den här filen in och en lista visas för dig där du får välja vilket os du vill köra. Ni som kör dual-boot vet hur det ser ut.
Så, nu sitter ni här med ett färskt Windows, och ett Ubuntu som inte kan bootas. Det vi ska göra är att fixa grub. Det gör vi från Ubuntu, så ladda ner och brän en live-cd. Starta Ubuntu från den och öppna en terminal.
Först ska vi hitta vilken partition och disk Ubuntu och Windows ligger på. Skriv "sudo fdisk -l [litet L, inte en etta] /dev/sdX" där X är a för hårddisk 1, b för disk 2 osv. Gå igenom alla dina diskar och kolla vilka som har ett 'System' = HPFS/NTFS, detta är dina partitioner med Windows. Nu gäller det att hitta den disk som har själva Windows på sig. Antagligen är det den disk med NTFS som har lägst X. Kolla vilken av partitionerna där som har NTFS. Skriv ner det som Y. Nu borde du ha ett X = disken med Windows på, Y = partitionen på disken som Windows ligger på. Skriv ner alt. kom ihåg.
Ex. Jag har två diskar, sda och sdb. Först skriver jag "sudo fdisk -l /dev/sda" och får förljande svar:
"Disk /dev/sda: 160,0 GB, 160041885696 byte
255 huvuden, 63 sektorer/spår, 19457 cylindrar
Enheter = cylindrar av 16065 · 512 = 8225280 byte
Diskidentifierare: 0x122115a4
Enhet Start Början Slut Block Id System
/dev/sda1 * 1 19457 156288321 7 HPFS/NTFS"
För sdb blir utskriften:
"Disk /dev/sdb: 250,0 GB, 250059350016 byte
255 huvuden, 63 sektorer/spår, 30401 cylindrar
Enheter = cylindrar av 16065 · 512 = 8225280 byte
Diskidentifierare: 0x66be9592
Enhet Start Början Slut Block Id System
/dev/sdb1 * 1 19122 153597433+ 7 HPFS/NTFS
/dev/sdb2 19123 20581 11719417+ 83 Linux
/dev/sdb3 20582 21067 3903795 82 Linux växling / Solaris
/dev/sdb4 21068 30401 74975355 83 Linux"
Jag drar slutsatsen att Windows ligger på sda (X=1) och där finns bara en partition, Y=1. Ubuntu ligger alltså på sdb, som partition 2 eller 4 (jag har nämligen root på en partition och home på en annan, 'Linux växling/Solaris är ointressant). Jag vet att home är större än root så jag gämför skillnaden mellan Början och Slut: 20581-19123=1458, 30401-21068=9333. Alltså är den fjärde partitionen störst och min home. Den vi vill ha är root, så nästa sak vi skriver ner är Ubuntu: x=2, y=2
(Den lilla biten med Windows på disk 2 är bara lagringsutrymme. Hela processen med att hitta allt det här är mycket enklare om man minns ungefär hur ens diskar ser ut. Jag kunde allt det här utantill, vilket spar mig en del arbete och jag slipper oroa mig för att göra fel. När man har flera datorer med 2-3 diskar i varje kan det vara värt att skriva ner allt det här och klistra fast på chassit.)
Nu till själva grub, skriv:
>sudo grub (startar grub)
>root (hdx-1,x-1) (här förbereder vi grub för att ändra listan genom att lägga till boot från harddrive x (räknas från noll, så har du ubuntu installerat på din andra disk är x=1. Partitionerna räknas också från noll. Den del vi vill ha här är Ubuntus root, alltså INTE den partition och disk som Windows ligger på.)
>setup (hdX-1, Y-1) (här ändrar vi boot-filen. Det vi vill ha här är Windows, eftersom det vi bootar från nu är windows. Ändrar vi det borde vi alltså kunna boota båda. Som förut räknas det från noll.)
>quit (avsluta grub)
Starta om, se till att bios verkligen startar från Windows. Du borde få upp din vanliga grub lista och kunna starta både Windows och Ubuntu.
(Jag arbetade med det här i två dar, hoppas det hjälper någon. Är något fel kan ni vänligen påpeka det, jag kunde inget om det här för tre dar sen. Är tråden felplacerade flytta gärna. Jag gjorde mitt konto här enbart för att skriva ner det här
)
Windows har den egenskapen att efter ett par år brukar det behöva installeras om. (Om inte annat gillar jag känslan av ett helt tomt skrivbord

När du installerar Ubuntu (och många andra os) så är det så sympatiskt att det kollar vilka andra OS som finns och fixar ett litet program som tillåter dig att starta vilket som helst av dem. Ubuntu installerar GRUB. Grub skapar en liten fil (/boot/grub/menu.lst) som inehåller information om hur de olika os:en ska startas. När du startar din dator läses den här filen in och en lista visas för dig där du får välja vilket os du vill köra. Ni som kör dual-boot vet hur det ser ut.
Så, nu sitter ni här med ett färskt Windows, och ett Ubuntu som inte kan bootas. Det vi ska göra är att fixa grub. Det gör vi från Ubuntu, så ladda ner och brän en live-cd. Starta Ubuntu från den och öppna en terminal.
Först ska vi hitta vilken partition och disk Ubuntu och Windows ligger på. Skriv "sudo fdisk -l [litet L, inte en etta] /dev/sdX" där X är a för hårddisk 1, b för disk 2 osv. Gå igenom alla dina diskar och kolla vilka som har ett 'System' = HPFS/NTFS, detta är dina partitioner med Windows. Nu gäller det att hitta den disk som har själva Windows på sig. Antagligen är det den disk med NTFS som har lägst X. Kolla vilken av partitionerna där som har NTFS. Skriv ner det som Y. Nu borde du ha ett X = disken med Windows på, Y = partitionen på disken som Windows ligger på. Skriv ner alt. kom ihåg.
Ex. Jag har två diskar, sda och sdb. Först skriver jag "sudo fdisk -l /dev/sda" och får förljande svar:
"Disk /dev/sda: 160,0 GB, 160041885696 byte
255 huvuden, 63 sektorer/spår, 19457 cylindrar
Enheter = cylindrar av 16065 · 512 = 8225280 byte
Diskidentifierare: 0x122115a4
Enhet Start Början Slut Block Id System
/dev/sda1 * 1 19457 156288321 7 HPFS/NTFS"
För sdb blir utskriften:
"Disk /dev/sdb: 250,0 GB, 250059350016 byte
255 huvuden, 63 sektorer/spår, 30401 cylindrar
Enheter = cylindrar av 16065 · 512 = 8225280 byte
Diskidentifierare: 0x66be9592
Enhet Start Början Slut Block Id System
/dev/sdb1 * 1 19122 153597433+ 7 HPFS/NTFS
/dev/sdb2 19123 20581 11719417+ 83 Linux
/dev/sdb3 20582 21067 3903795 82 Linux växling / Solaris
/dev/sdb4 21068 30401 74975355 83 Linux"
Jag drar slutsatsen att Windows ligger på sda (X=1) och där finns bara en partition, Y=1. Ubuntu ligger alltså på sdb, som partition 2 eller 4 (jag har nämligen root på en partition och home på en annan, 'Linux växling/Solaris är ointressant). Jag vet att home är större än root så jag gämför skillnaden mellan Början och Slut: 20581-19123=1458, 30401-21068=9333. Alltså är den fjärde partitionen störst och min home. Den vi vill ha är root, så nästa sak vi skriver ner är Ubuntu: x=2, y=2
(Den lilla biten med Windows på disk 2 är bara lagringsutrymme. Hela processen med att hitta allt det här är mycket enklare om man minns ungefär hur ens diskar ser ut. Jag kunde allt det här utantill, vilket spar mig en del arbete och jag slipper oroa mig för att göra fel. När man har flera datorer med 2-3 diskar i varje kan det vara värt att skriva ner allt det här och klistra fast på chassit.)
Nu till själva grub, skriv:
>sudo grub (startar grub)
>root (hdx-1,x-1) (här förbereder vi grub för att ändra listan genom att lägga till boot från harddrive x (räknas från noll, så har du ubuntu installerat på din andra disk är x=1. Partitionerna räknas också från noll. Den del vi vill ha här är Ubuntus root, alltså INTE den partition och disk som Windows ligger på.)
>setup (hdX-1, Y-1) (här ändrar vi boot-filen. Det vi vill ha här är Windows, eftersom det vi bootar från nu är windows. Ändrar vi det borde vi alltså kunna boota båda. Som förut räknas det från noll.)
>quit (avsluta grub)
Starta om, se till att bios verkligen startar från Windows. Du borde få upp din vanliga grub lista och kunna starta både Windows och Ubuntu.
(Jag arbetade med det här i två dar, hoppas det hjälper någon. Är något fel kan ni vänligen påpeka det, jag kunde inget om det här för tre dar sen. Är tråden felplacerade flytta gärna. Jag gjorde mitt konto här enbart för att skriva ner det här
