Kaip ir planavau – pasidariau virtualią mašina pasiekti lokalią Linux instaliaciją iš Windows. Konfigūravau iš VMware Server. Keletas niuansų, kad nepamirščiau:
– VM tinklo konfigūracijos tipas – NAT
– 1mas diskas – “Use a physical disk” -> PhysicalDrive0 (Use entire disk)
– 2tras diskas – “new virtual disk” -> SCSI (size 0.1 GB – mažiausias, kuri leidžia sistema)
Švariai instaliuotame Debian’e buvo padarytas šioks toks GRUB’o tiuningas, kad windowsai defaultiškai startuotu pirmi, ir kad sistema pasiimtu einamąjį Linux branduolį ir susijusiuis failus per simlinkus:
base:/boot# for a in vmlinuz initrd.img config; \
do ln -sf ${a}-2.6.18-4-686 $a; done
O pagrindinis GRUB menu.lst dabar atrodo taip:
default 0
timeout 3
color cyan/blue white/blue
title WinXP
root (hd0,0)
savedefault
makeactive
chainloader +1
title Linux
root (hd0,1)
kernel /boot/vmlinuz root=/dev/hda2 ro
initrd /boot/initrd.img
savedefault
Kadangi Windowsai startuoja pirmi, leisti tokį setup’ą iš windowsų per VM būtų kiek rizikinga – jei užsižiopsočiau, sistema mėgintų boot’inti jau naudojamą particiją. Tam ir skirtas papildomas SCSI diskas – mes padarysime ji pagrindiniu virtualioje mašinoje ir sudėsime ten GRUB’o kopija, skirtą tik virtualiai mašinai su Linux bootinti.
Taigi, startuojame mūsų Linux’ą per VM’ą ir atliekame šiuos veiksmus:
– pažiūrime ar tikrai turime virtualų SCSI diską:
base:~# fdisk -l /dev/sda
Disk /dev/sda: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
– sukuriame Linux particiją per visą diską ir padarome ja bootable:
base:~# fdisk /dev/sda <EOF
> n
> p
> 1
>
> a
> 1
> w
> EOF
– patikriname, ar viskas OK:
base:~# fdisk -l /dev/sda
Disk /dev/sda: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 1 1008 83 Linux
– formatuojame naują particiją ir ją primontuojame:
base:~# mkfs.ext3 /dev/sda1 && mount /dev/sda1 /mnt
– sukuriame alternatyvią GRUB instaliaciją VMware’ui:
base:~# mkdir /mnt/{boot,boot/grub}
base:~# cp /boot/grub/{stage1,stage2,menu.lst} /mnt/boot/grub/
– instaliuojame GRUB’ą į mūsų virtualaus SCSI disko MBR. Čia yra keletas niuansų. GRUB nedaro skirtumo tarp SCSI ir IDE diskų ir numeruoja juos pagal BIOS’o boot tvarką. Taigi, pasižiūrime, kaip virtualų diską mato GRUB:
base:~# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> geometry (hd
Possible disks are: hd0 hd1
grub> geometry (hd0)
drive 0x80: C/H/S = 65535/15/63, The number of sectors = 78140160, /dev/hda
Partition num: 0, Filesystem type unknown, partition type 0x7
Partition num: 1, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x82
grub> geometry (hd1)
drive 0x81: C/H/S = 102/64/32, The number of sectors = 209715, /dev/sda
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Taigi, virtualus SCSI (/dev/sda) diskas yra hd1, turintis vienintelę particiją 0. Į jį GRUB’ą ir instaliuojame:
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... no
Running "install /boot/grub/stage1 (hd1) /boot/grub/stage2 p /boot/grub/menu.l
st "... succeeded
Done.
grub> quit
– redaguojame /mnt/boot/grub/menu.lst failą, kad jame liktų tik Linux, turėdami omeny, kad pakeisime “boot order” VM biose, ir mūsų virtualus diskas pataps pirmuoju, o tikras fizinis diskas – antruoju. Failas atrodo taip:
default 0
timeout 3
color cyan/blue white/blue
title Linux
root (hd1,1)
kernel /boot/vmlinuz root=/dev/hda2 ro
initrd /boot/initrd.img
– beliko rebootinti VM’ą, jam startuojant paspausti F2, nueiti į “Boot -> +Hard Drive” meniu ir “pakelti” “Seagate Disk”, kuris yra mūsų virtualusis SCSI diskas virš “VMware Virtual IDE Hard-(PM)”, kuris yra mūsų fizinis diskas. Tada spaudžiame F10, ir stebime, kaip bazė bootinasi į Linux su naujuoju GRUB.
P.S.: Kadangi minimalus virtualus SCSI diskas pakankamai didelis – 100MB – būtų gaila jo neišnaudoti. Ateity planuoju sudėti į jį “rescue” Linux branduolį ir įrankius, jei netyčia sugriaučiau bazinę instaliacija. O kol kas palieku kaip yra. Tiek šiam kartui.