Dual boot Windows și ESXi instalat pe stick USB

Mai devreme sau mai târziu unul din studenții din clasele noi de VMware îmi dă aceeași “Cum ai configurat dual boot-ul de Windows și ESXi pe PC-urile din clasă ?” Ca să am explicația la îndemână am să fac o descriere pe pași pentru configurația de dual boot utilizată pe PC-urile din clasa de VMware academie DNT. Dual boot-ul e configurat intre două sisteme de operare: unul de Windows 7 (pre-instalat) și o imagine ESXi instalată pe un stick USB.

Înainte să continuu e bine să explic contextul în care am avut nevoie de dual booting pe PC-urile din sala de studiu VMware. Încă de la bun început s-a pus problema ca în cadrul orelor practice VMware să putem organiza scenarii complexe de laborator cu minim de achiziție de echipament. Printre soluții, varianta cu destinație dublă pentru PC-urile deja instalate sa dovedit a fi cea mai potrivită, pe de-o parte PC-urile le putem folosi ca desktop-uri cu Windows iar pe de altă parte ca host-uri ESXi in scenariile de laborator. Configurația am realizat-o cu dual boot intre SO-ul Windows deja instalat pe discul rigid și imagine ESXi instalată pe un stick USB compact fixat in spatele PC-ului. Drept datastore pentru VM-uri pe ESXi folosim spațiul pe un server iSCSI dedicat.

Ce opțiuni am încercat pentru dual-boot ?

Ca să găsim o variantă mai optimă am încercat câteva opțiuni pentru dual-boot:

  • dual-boot Windows vs ESXi pe același disk rigid, idee care sa dovedit a fi imposibil de implementat. Problema e că procesul de setup ESXi distruge automat restul partițiilor pe disk și deci și pe cea de Windows. ESXi-ul nu e prea prietenos când vine vorba de a partaja același disk cu alte sisteme de operare.
  • dual-boot Windows vs ESXi pe disk-uri rigide separate – indezirabil pentru că: (1) nu avem spațiu liber pentru un disk nou in case-urile PC-urilor (Optiplex 780 – ultrasmall form factor) și (2) implica achiziții in plus pentru 10 HDD-uri noi (3) overhead de spațiu pe dikc-urile noi – o imagine de ESXi nu are nevoie de mai mult de câțiva GB pentru setup.
  • dual-boot Windows vs ESXi cu imagine ESXi instalată pe stick USB extern. Soluție realizabilă și practică pentru că: (1) minim investiții – doar pentru 10 stick-uri de 4GB noi (2) partițiile Windows pe disk-ul existent nu sunt atinse (3) configurație simplă.

Evident că am mers pe varianta cu ESXi-ul instalat pe stick-uri USB. Urma să găsim modul in care vom configura dual-boot-ul:

  • no at all – ne bazăm pe BIOS boot meniu, din care alegi fie USB pentru ESXi fie Hard Disk pentru Windows. Realizabil, dar cam non-practic: bunăoară nu poți să setezi ca meniul să-ți apară automat și dacă ai scăpat moment-ul pentru BIOS boot meniu (care e foarte scurt) ești nevoit să mai treci odată prin reboot.
  • or modificăm boot loader-ul din Windows în așa fel încât să fie posibilă și încărcarea ESXi.

Evident că am mers pe varianta cu modificarea boot loader-ului din Windows, configurație pe care o voi descrie în textul de mai jos.

dual_boot_esxi_and_win7_scheme

Cum se încarcă sistemele de operare Windows ?

Până a merge mai departe fac un overview scurt la cum se încarcă sistemele de operare Windows. Cred că de folos pentru ce urmează.

(1) Windows XP, Server 2003:

  • folosește NTLDR ca boot loader – hidden, boot partition, C:\
  • folosește boot.ini pentru boot configuration – hidden, boot partition, C:\
  • boot.ini conține opțiunile pentru boot menu.
  • boot.ini editabil cu notepad sau cu System Configuration Utility.
  • NTLDR e încărcat de loader-ul din MBR (VBR): bootstrap.
  • NTLDR încarcă ntoskernel.exe
  • aceeași partiție pentru system și boot partition

(2) Windows Vista, 7, Server 2008, 2012:

  • boot manager complet nou: Windows Boot Manager
  • folosește Boot Configuration Date (BCD) in loc de boot.ini
  • BCD in format Windows Registry: HKEY_LOCAL_MACHINE\BCD00000
  • BCD conține opțiunile pentru boot menu.
  • BCD poate fi modificat cu: bcdedit.exe, regedit.exe sau cu mai simplu cu EasyBCD.
  • Windows Boot Manager încarcă winload.exe
  • implicit partiții diferite pentru (1) system partition (boot loader files, no letter) și (2) boot partition (..\windows folder, c:\)

Instalare imagine ESXi pe stick-ul USB

Primul pas a fost să instalez ESXi-ul pe stick-urile USB. Inițial credeam că fac un install pe unul din stick-uri după care găsesc un tool cu care le clonez pe restul. Până la urmă le-am instalat de la zero pe fiecare, tool-urile de clonning pe care le-am încercat copiau rău de tot, iti lua o groza de timp pină făcea copua. Install-ul l-am făcut din VMware Workstation într-un VM la care am adus stick-urile USB. Printre altele, metodă documentată de VMware (link aici). Procedura pentru insalarea ESXi pe stick cu VMware Workstation se reduce la:

  • Creăm un VM pentru setup-ul de ESXi (2x vCPU, 4GB RAM, no HDD)
  • Montam CD/DVD-ul sau ISO file de instalare ESXi la VM
  • Pornim VM-ul după care facem pass-through in VM pentru dispozitivul stick-ului
  • Pornim procesul standard de setup. Se asigura ca installer-ul a detectat stick-ul.
  • După ce setup-ul este încheiat, shutdown la VM, eject USB stick.
  • ESXi-ul este instalat pe stick și gata de utilizare

Configurare boot menu in BCD pe Windows.

Acum că avem stick-ul cu ESXi preparat, il instalăm in unul din porturile USB pe PC. La academie am folosit cele mai mici posibile stick-uri USB, de 4GB, cu urechiușe, pe care le-am montat aproape invizibil în spatele PC-utilor, pentru siguranță le-am fixat suplimentar cu coliere din plastic pentru cabluri.

Pentru editare configurație boot BCD, prefer să folosesc EasyBCD care e simplu de utilizat și gratuit pentru non-comercial use (link aici). Tool-ul distribuit împreună cu sistemul de operare bcdedit.exe sau editarea directă a registrului nu sunt tocmai confortabile.

Așadar, după ce instalăm EasyBCD pe stația cu SO Windows (nu merită să descriu aici) parcurgem următorii pași pentru a configura dual-boot-ul cu imaginea ESXi:

  • Vom instala loader-ul GRUB (NeoGrub) care in serie cu Windows Boot Manager va încarcă loader-ul ESXi (syslinux bootloader). Serializam prin GRUB pentru că loader-ul ESXi nu poate fi inițiat din Windows Boot Manager. Din EasyBCD Toolbox click pe Add New EntryNeoGrub bootloader (install).
  • După install, pe disk-ul de sistem vor fi copiate fișierele bootloader-ului: neogrub, neogrub.mbr și menu.lst (ultimele in folderul NST pe root)
  • Din aceeași fereastră click pe Configure (sau edit fișier menu.lst cu notepad). În notepad-ul deschis inserăm configurația cu textul de mai jos:

Note1: Dacă mai tirziu nu funcționează, se va juca cu alte valori pentru hd1: hd2, hd3 …

  • Până aici suficient pentru dual boot, la repornirea PC-ului vor apărea consecutiv două ferestre de dialog pentru selecție opțiuni de boot: (1) una din Windows Boot Manager cu variante pentru Windows și GRUB și (2) a două din GRUB cu o singura variantă pentru disk-ul pe care este instalat ESXi-ul. In fereastra GRUB titlu opțiunii va fi cea specificată fișierul menu.lst după linia title.
  • Ce se mai poate de făcut e să redenumim opțiunile din Windows Boot Manager:

dual_boot_esxi_and_win7_modify_menu_entries

Așa că in final vom avea, primul dialog pentru Windows Boot Manager:

dual_boot_esxi_and_win7_windows_boot_manager_boot_menu

și dacă selectăm VMware ESXi urmează să se deschidă următorul boot menu:

dual_boot_esxi_and_win7_GRUB_boot_menu

Așa cum meniul din GRUB nu prea are sens (o singura opțiune care se selectează automat după timeout) e bine ca acesta sa nu mai fie afișat. Pentru asta in configurația GRUB setăm un timeout de 0 secunde așa că la momentul afișării se va trece automat peste el.

Configurațiile de mai sus au mers pentru ESXi 5.1/5.5 și sisteme de operare Windows Server 2008R2/Windows 7. Cred că și alte mix-uri funcționează.