Ubuntu-problem och deras lösningar (with English abstract)
För ett par veckor sedan var jag med och installerade Ubuntu på Milliecents dator. Det hela gick inte fullt så smidigt som vi hade hoppats på, men vi fick ordning på det hela. Jag har dock förstått att många andra verkar stöta på liknande problem, så därför tänkte jag att det kunde vara lämpligt att skriva hur problemen löste sig i det här fallet. Förhoppningsvis kan det kan hjälpa någon.
Abstract in English
Do not worry, I know I am writing a blog post and not a master thesis. I agree that having English abstracts in blog posts is overkill and I usually do not have any either. However, I know how annoying it is to have a problem, search for it and after a long time find the answer -- in some weird language I do not understand. I find that very frustrating, so therefore I included an English abstract here (since I have been told that there are people out there who think Swedish is one of those weird un-understandable languages.)
This article describes how Ubuntu was installed on a machine which already had Windows XP installed. However, the focus is not on the basic procedure, but on how certain problems were solved. In particular, two problems were encountered during the installation procedure. The first one was that Dynamic Drive Overlay (DDO) was used to make the computer able to handle discs larger than 136 Gb. The second was that the installation created an incorrect menu configuration file (menu.lst) for Grub.
DDO
First of all, the installation program must be booted after DDO has been loaded rather than directly. This means that you should tell your BIOS to boot from the disc and then, when DDO is loaded, select to boot from CD. (I pressed 'c' to do this.)
When the system had booted, the actual DDO problem was solved by adding the following kernel parameter.
hda=remap63
This parameter must be passed to the installation at start-up time. In Ubuntu this is done by first pressing F6 in the initial menu (before you select "Start or install Ubuntu"), and then adding it to the line titled "Boot Options" that appears.
After this procedure is done GParted, or whichever partitioning program you are using, should be able to see the disc and read it correctly.
Incorrect menu configuration file
After the DDO problem was solved the system was installed correctly. However, when the computer restarted and Grub appeared Ubuntu would not boot. This was due to an incorrectly created menu configuration file for Grub. The errors were that the Windows partition, rather than the Ubuntu partition, was named in the file. Clearly, Ubuntu can not be loaded if the boot loader is looking for it in the wrong partition.
The actual menu configuration file is saved in /boot/grub/menu.lst, and that is the file you should edit to correct these errors permanently. However, to start the system (so you can change the above-mentioned file) you can press 'e' in Grub to make direct, non-permanent changes.
Make sure to change the two references to the root partition, and to also add the DDO parameter.
In our case the original configuration looked like this.
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-10-generic root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
It was changed to the following.
root (hd0,1)
kernel /boot/vmlinuz-2.6.17-10-generic hda=remap63 root=/dev/hda2 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
Your system will now hopefully boot and work just fine. Good luck with your brand new Ubuntu system! (And yeah, you might want to write down those changes you made in Grub. It is possible that the automatic upgrading system will overwrite Grub's menu configuration file when upgrading the kernel.)
Artikeln på svenska
Aktuell och önskad konfiguration
I det stora hela var förfarandet ganska klassiskt. Från början fanns Windows på hårddisken och nu ville vi installera Linux utan att förstöra Windows. Från början fanns bara en NTFS-partition på hårddisken och den upptog allt utrymme som fanns där.
Vårt slutmål var att krympa NTFS-partitionen så mycket som möjligt och i det resterande utrymmet lägga en root-partition för Linux, en swap-partition för detsamma och slutligen en FAT32-partition som de båda operativsystemen skulle kunna samsas om. På den gemensamma delen skulle exempelvis bilder kunna sparas då dessa gärna ska vara åtkomliga oavsett startat operativsystem. Program däremot kan läggas på respektive operativsystems egen partition.
Planen var att starta installationen och följa instruktionerna. Var den inte genomtänkt och bra?
DDO-problemet
Vi bootade som vanligt direkt från installations-cd:n och installationen satte igång direkt. Allt såg ut att gå bra, men när vi kom till steget där partitionerna skulle skapas stötte vi på patrull. GParted, alltså det program som används för detta syfte, kunde inte se hela hårddisken och det den såg tolkade den helt fel.
Vid det här laget visade det sig att datorn i fråga inte klarade av större diskar än ungefär 136 Gb (och den här disken var 320 Gb). För att få ordning på detta hade personen som installerade hårddisken, Daniel, använt sig av något som hette Dynamic Drive Overlay (DDO).
Hur detta fungerar är det nog ingen som riktigt vet, men tydligen lägger sig DDO:n i MBR:en och flyttar fram övrigt innehåll (inklusive den äkta MBR:en) till efter denna.
Som en puff i rätt riktigt tipsade Daniel om att det nu fanns två sätt att boota från en CD. Det ena var som vanligt, via BIOS så att säga, och det andra var göra det i samband med att DDO:n laddades. I vårt fall gjordes detta genom att trycka "c" när DDO:n laddades.
Vi bootade via DDO:n istället, men fortfarande kunde GParted inte se hela disken och dess partition. Vid det här laget fick vi börja leta på nätet efter en lösning. Och där fanns den!
För att få DDO:n att fungera måste Linux få berättat för sig att positionerna på hårddisken är framflyttade. Detta löses genom att skicka med följande argument som startparameter:
hda=remap63
Exakt hur denna parameter ska skickas med beror lite på hur Linux startas, men när det gäller Ubuntu-installationen görs det genom att trycka F6 vid startskärmen (där du annars skulle välja "Start or install Ubuntu" direkt). Då kommer en editerbar rad vid namn "Boot Options" upp. Lägg till aktuell parameter där.
Installationen
Efter att vi hade lagt till parametern ovan startade installationen fint, men den här gången visades även partitionerna precis som de skulle. Vi lade upp våra partioner som vi ville och detta fungerade bra även om det tog lite tid att krympa Windows partition. (Som en liten parentes kan nämnas att den delade partitionen måste ligga som en utökad partition för att Windows ska vara glad.)
När installationen väl var igång gick allt som på räls. Men när vi försökte starta vårt nyinstallerade operativsystem började det hela strula igen. Jag ska redan på en gång passa på att säga att Windows gick att starta hela tiden, så vi riskerade aldrig att försämra utgångsläget.
DDO-problemet igen
När datorn hade startat om efter installationen såg vi att Grub-menyn kom fram precis som den skulle. Vi var dock lite tveksamma ifall boot-parametern som vi hade lagt till under installationen hade blivit automatiskt tillagd i Grub eller inte. Vi öppnade editeringsläget (genom att trycka "e") för att undersöka saken. Det vi såg var följande.
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-10-generic root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
Vår aktuella inställning hade inte kommit med så vi lade till den.
root (hd0,0)
kernel /boot/vmlinuz-2.6.17-10-generic hda=remap63 root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
Felaktig root 1
Vi testade nu att starta när Grub såg ut som ovan. Trots att vi hade lagt in rätt parameter fick vi bara följande felmeddelande.
Error 17: Cannot mount selected partition
Press any key to continue...
Efter lite sökande på nätet visade det sig att detta felmeddelande betyder att Grub hittar en partition, men att den inte tycks vara den Grub vill ha (exempelvis då fel operativsystem ligger på den). Detta gjorde att vi återigen gick in i Grubs editeringsläge för att kolla vad som stod där.
Vi såg då att den översta raden, alltså den som berättar vilken partition Grub ska använda, löd (hd0,0). Detta innebär den första partitionen på den första disken. Detta stämde inte i vårt fall då Windows-partitionen låg före Linux-partitionen på hårddisken. Vi ändrade således detta till (hd0,1) och fick följande.
root (hd0,1)
kernel /boot/vmlinuz-2.6.17-10-generic hda=remap63 root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
Felaktig root 2
När vi bootade med ovanstående inställningar såg allt mycket lovande ut. Fin Ubuntu-grafik visades och en förloppsindikator dök upp. Indikatorn i fråga hann dock inte komma långt innan följande dök upp.
BusyBox v1.1.3 (Debian 1:1.1.3-2ubuntu3) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
/bin/sh: can't access tty; job control turned off
(initramfs)
Här dök alltså en prompt upp. Från denna gick det att göra lite felsökning och det visade sig att ingen partition hade monterats korrekt. Detta verkade onekligen oroväckande. Hur som helst gick vi tillbaka till Grub för att se om vi hade missat något där. Och det hade vi. När vi ändrade rooten ändrade vi bara på ett ställe, men rooten är faktiskt angiven även som en parameter till kärnan. Vi ändrade /dev/hda1 till /dev/hda2.
root (hd0,1)
kernel /boot/vmlinuz-2.6.17-10-generic hda=remap63 root=/dev/hda2 ro quiet splash
initrd /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot
Slutet gott, allting gott
När vi nu startade Ubuntu flöt allt på väldigt smidigt och systemet laddades.
För att slippa skriva in dessa rättningar varje gång öppnade vi filen /boot/grub/menu.lst och ändrade även där. I den filen går det att bläddra ned lite och komma till en sektion som ser ut ganska exakt som det vi såg i editeringsläget (bortsett från raden "title" som står ovanför). Gör samma ändringar i denna fil och system kommer att komma igång utan handpåläggning i framtiden.
Det kan hur som helst vara en god idé att skriva ned dessa ändringar då det automatiska uppgraderingsverktyget kan skriva över Grubs menyfil.
Kommentarer
Grubmaster Fredrik (070216)
I Debian (och därmed antagligen Ubuntu) finns ett skript, /usr/sbin/update-grub, som automatiskt lägger till alla kärnor den hittar i menu.lst. Man kan också få skriptet att köras automatiskt när man installerar en ny kärna om man lägger till lite i filen /etc/kernel-img.conf:
postinst_hook=/usr/sbin/update-grub
postrm_hook=/usr/sbin/update-grub
Det funkar för mej i alla fall...
Skriv en kommentar till den här sidan