Jag börjar nu få ordning på mina partitioneringsproblem jag nämnde innan.
Som jag nämnde försöker jag få triple boot windows 7, Linux och OpenSolaris att fungera samtidigt som jag vill spegla systempartitionen för opensolaris och dessutom ha raidz på varsin partition på mina tre hårddiskar...
Mitt senaste problem var att jag inte kunde boota upp på min andra hårddisk när den första disken i spegeln kopplats ur (SATA-kabeln dragits ur moderkortet). Jag vill ju simulera att spegeln är bootbar från singeldisk om någon av dem i spegeln har gått sönder.
Problemet uppstod på grund av att jag skapat Linuxpartitionerna med gparted på ena hårddisken och sedan lagt till opensolarispartition på denna vilket gjorde att opensolaris hamnade i primär partition 2 och den utökade partitionen innehållande linuxpartitionerna blev primär partition nr 1. Primär partition nr 0 är en NTFS lagringspartition för windows som jag skapade innan. Men på den andra sisken i spegeln så har jag endast lagringspartition för windows (nr 0) och solarispartition nr 1.
Detta gjorde alltså att jag hade försökt spegla partition 2 på disk 1 med partition 1 på disk 2. Det funkar bra som zfs mirror men förvirringen uppstod i filen /rpool/boot/grub/menu.lst. Eftersom jag först installerade opensolaris på disk 1 partition 2 så blev det en rad som följer inuti menu.lst:
findroot (pool_rpool,2,a)
Detta betyder "leta efter bootsign-filen pool_rpool i partition nr 2, slice a (första slice på tredje partitionen, partitoioner börjar på 0 och slices på a).
Detta funkar bra så länge båda diskarna är inkopplade i spegeln eftersom den filen ju finns på tredje partitionen på en av diskarna.
Ändrar jag till "findroot (pool_rpool,1,a)" så funkar det att boota på disk nr 2 eftersom systempartitionen där är den andra partitionen (alltså partition 1). Jag testade lägga in två menyalternativ i grub och då gick det att boota på vilken som helst av diskarna genom att välja motsvarande alternativ.
Men det är tråkigt att behöva göra två menyalternativ för varje bootmiljö i grub så slutsatsen blev att för att få bootbar mirror att funka smidigt så måste man se till att använda samma partitionsnummer på båda hårddiskarna. Detta gör man enklast genom att skapa partitionerna i samma ordning, på båda hårddiskarna. Så tanken är nu att installera opensolaris först och när allt detta är klart sedan lägga in linux... Ja windows installerade jag allra först. Ordningen för installation bör alltså vara windows, opensolaris och sist linux.
Nu står det lite mer grejer i menu.lst än bara den raden jag nämnde. Ett verktyg som man kan använda i sammanhanget är bootadm där man kan se var filen menu.lst befinner sig i filsystemet med kommandot
bootadm list-menu
Läs mer om bootadm med "man bootadm".
Här står lite om findroot:
http://docs.sun.com/app/docs/doc/819-2379/ggumt?a=view
Normalt hanterar man ju bootmiljöer i opensolaris med beadm, men just för att fixa bootproblem när man flyttar runt sin rpool mellan olika systempartitioner, t.ex. när man återställer efter hårddiskkrash så är det bra att veta litegrann hur det funkar med grub och findroot.
Sammanfattningsvis har jag nu gjort följande:
1) installerat windows 7 på disk nr 0, vilket skapade två NTFS-partitioner.
2) skapat lagringspartitioner för windows, en på varje hårddisk (tre diskar). Se till att 400 GB utrymme är ledigt på disk 0, 480 GB ledigt på disk1 och 440 GB ledigt på disk 2 efter att ha skapat alla NTFS-partitioner.
3) Installerat opensolaris på 40 GB partition på disk 1 (alltså andra disken). Denna heter nu c7t2d0s0.
4) Manuellt skapat en solarispartition på disk 2, se till att den har samma partitionsnummer i fdisk (andra partitionen på båda diskarna). Denna partition täcker resten av diskutrymmet (440 GB) och den är gjord som aktiv partition så man kan boota på den.
5) Skapat en 40 GB slice 0 på solarispartitionen disk 2 som är lika stor som slice0 på disk 1, den heter c7t3d0s0. Dessutom skapat en 400 GB slice 1 på solarispartitionen på disk 2 avsedd för lagringspoolen, c7t3d0s1.
6) Lagt till c7t3d0s0 som zfs mirror till c7t2d0s0, alltså speglade systempartitioner. Lagt till grub till c7t3d0s0 med installgrub.
7) Konstatera att det går att boota från båda hårddiskarna både som mirror och sedan som singeldisk. Fixa eventuellt strul med grub...
8) Boota upp på c7t3d0s0, alltså disk 2. zpool rpool detach c7t2d0s0 så att disk 2 blir singeldisk.
Nu har jag alltså installerat opensolaris på en partition på disk1, skapat ny partition på disk2 som inkluderar en extra lagrings-slice och flyttat över installationen till slice0 på solarispartitionen på disk 2. Allt detta för att komma runt att opensolarisinstallern inte har verktyg för att skapa slices när man installerar så man för göra det manuellt...
Framtidsplaner:
9) Ta bort den gamla fdisk-partitionen som solaris installerades ursprungligen på disk 1.
10) Skapa ny 440 GB fdisk-partition av typ solaris2 med 40 GB slice 0 och 400 GB slice 1 på hårddisk 1.
11) Skapa ny bootbar mirror på samma sätt som i steg 4) till steg 8) så att jag nu får 40 GB mirror för systemet på c7t2d0s0 och s7t3d0s0.
Nu har jag alltså två hårddiskar med varsin speglad s0 slice på varsin solarispartition och samtidigt varsin ledig 400 GB s1 slice på vardera disken.
12) Skapa 400GB solarispartition i det lediga utrymmet på disk0, dedikera hela utrymmet till slice2 (hela "disken" = hela fdisk-partitionen). Denna heter nu c7t1d0.
13) zpool create tank raidz1 c7t1d0 c7t2d0s1 c7t3d0s1
Alltså skapa min lagringspool på tre stycken 400 GB delar, en på vaqrje hårddisk.
Nu har jag alltså mirror av två 40 GB slices mellan hårddisk1 och hårddisk2, och samtidigt raidz1 med tre 400GB delar, en på varje disk. Lagringen för opensolaris är färdig.
14) Det finns nu 40 GB ledigt utrymme på disk 1 (andra hårddisken) där mjag nu skapar utökad partition innehållande partitionerna för Linux.
15) Installera Linux på disk1, med hårddisk 1 bootbar.
16) Nu har Linux installerat sin egna grub (vilket jag ville). Lägg till cainloader till vardera opensolarispartitionen i opensolaris boot-mirror, Läg även till för Windows om den inte redan finns.
17) Fixa grub i opensolaris så att jag kan boota Linux och Windows oberoende på om jag bootar upp disk 1 eller disk 2. Bootar jag på disk 0 så startas windows direkt.
18) Färdigt!!!
Oj, inte konstigt att detta tar sådan tid att utföra...