Tag Archives: EasyBCD

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ă.