Modalità di avvio di un sistema Windows 2000/XP In questa guida è mio obiettivo analizzare i meccanismi di avvio di un sistema basato su Core NT. In particolare analizzerò in dettaglio il file “Boot.ini” utilizzato per specificare la partizione di avvio di un sistema operativo e i suoi parametri di configurazione. PARTE 1 – INTRODUZIONE Per avviarsi, un sistema operativo basato su core NT (quindi Windows NT, 2000 e XP) per prima cosa utilizza tre files principali. Questi tre files sono (in ordine): 1. Ntldr 2. Boot.ini 3. NTDETECT.COM Dopodichè il controllo del sistema passa al file “ntoskrnl.exe” (nel caso di sistemi operativi NT) e agli altri file di sistema di Windows. La parte che analizzeremo noi in questa guida riguarda il file “Boot.ini”. Infatti, quando un sistema basato su kernel NT si avvia, presenta (se avete un sistema multiboot), una schermata su sfondo nero con un menu ed una lista di voci relative a quale OS avviare e in che modalità (con un timeout prefissato prima che il sistema predefinito parta automaticamente... solitamente 30 secondi). Il boot.ini è il file che Ntldr legge per sapere quali opzioni e timeout presentare all'avvio. Il boot.ini è un file (editabile da blocco note) di sola lettura, nascosto e presente nella root (directory radice) della partizione di sistema. Esso è accessibile anche in un modo inconsueto e cioè aprendo il blocco note di Windows, posizionandosi sulla directory "root", digitando BOOT.ini e cliccando sul pulsante "Apri". In definitiva, l’approccio di avvio di NT, risulta vincente rispetto a quello basato sul DOS di Windows 9x, visto che assicura maggior stabilità, nonché la possibilità di avviare più sistemi sulla stessa macchina. PARTE 2 – COME MODIFICARE IL FILE DI BOOT È possibile visualizzare il file di avvio “Boot.ini” con un semplice editor di testo come il blocco note. Ma per modificare tale file è necessario rimuovere gli attributi di protezione del sistema. Per fare ciò è necessario avviare il prompt dei comandi (avvio -> esegui -> CMD) e digitare: ATTRIB -S -H -R C:\Boot.ini e premere Invio A questo punto chiudere il prompt dei comandi e aprire il blocco note (oppure un editor di testo) e successivamente aprire il file Boot.ini presente nella directory root di Windows (C:\ in questo caso). Dopo aver completato le modifiche salvare il file e uscire dal Blocco Note. A questo punto per riportare tutto alla condizione originale è necessario aprire di nuovo il prompt dei comandi e digitare: ATTRIB +S +H +R C:\Boot.ini e premere Invio. Inoltre è possibile modificare tale file con l’utility di Windows MSCONFIG (avvio -> esegui -> msconfig). Un esempio di file Boot.ini che permette di eseguire 3 sistemi operativi diversi e una console di ripristino di emergenza di Windows. Realizzare tale configurazione è relativamente semplice… PARTE 3 – ALL’INTERNO DEL FILE DI AVVIO All'interno del BOOT.ini sono presenti due sezioni: "[boot loader]" e "[operating systems]". Ecco qui un esempio di un file Boot.ini: [boot loader] timeout=03 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional" /fastdetect multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP X64 Edition" /noexecute=optin /fastdetect multi(0)disk(0)rdisk(1)partition(1)\WINDOWS=”Microsoft Vista Beta 2” /noexecute=optin /fastdetect C:\CMDCONS\BOOTSECT.DAT=”Console di ripristino di emergenza di Windows" /cmdcons Ecco qui il risultato del file Boot.ini dell’esempio precedente. Questa infatti è la schermata di boot classica di un sistema Windows Ora arriva la parte più interessante di questa guida: analizzeremo ogni parte del file di avvio e ogni suo più specifico parametro… 1° Sezione [boot loader]: timeout - il parametro è usato per indicare per quanto tempo (in secondi) il menù dei sistemi operativi deve essere visualizzato. Se nel PC è presente un solo sistema operativo questo parametro viene ignorato. AaLl86 consiglia di specificare un tempo compreso tra 3 e 60 secondi e soprattutto di scrivere i numeri ad una cifra con uno 0 davanti (per esempio 03 e non 3) default - il valore dell'opzione che segue questo elemento indica a Ntldr quale delle voci del menu è da utilizzare e da attivare dopo la scadenza del tempo di timeout. Questo valore corrisponde ad uno dei sistemi operativi elencati nella sezione “operating systems”. 2° Sezione [operating systems]: Questa sezione contiene la lista dei sistemi operativi avviabili con percorso, descrizione e switch (opzionali). In realtà il valore esatto contenuto nella sezione [operating systems] dipenderà dalla configurazione del computer che esegue Windows XP che si desidera avviare Per definire la posizione di un sistema operativo, il boot loader utilizza questi parametri: Parametro Descrizione Questo parametro è usato con controller dei dischi IDE ed è inoltre utilizzato con controller SCSI per sistemi Windows NT. Il numero specificato nell’esempio è “0”, quindi indica il primo controller del disco IDE (primo e' 0, secondo 1, e così via) C’è una precisazione da fare su questo parametro però: multi(x) • • • in un computer che usa solo controller IDE questa opzione funziona bene anche per più di quattro hard disk In un computer che utilizza solo controller SCSI il parametro multi(x) funziona solo con i primi due hard disk sul controller primario Infine, se un computer utilizza hard disk sia SCSI che IDE, il parametro funziona solo con gli hard disk IDE sul primo controller. scsi(x) utilizzato per indicare il controller del disco se il PC utilizza un controller SCSI (in questo caso il parametro multi(x) non viene utilizzato) disk(x) indica quale disco usare, del controller indicato precedentemente. Il valore, solitamente, è settato a 0 se il controller e' multi(x). Nel caso di controller SCSI, disk(x) indicherà l'indirizzo SCSI del disco da avviare. rdisk(x) indica quale disco usare sul controller indicato in multi(x). Questo parametro deve essere un numero compreso tra 0 (primo disco) e 3 (quarto disco) ed ha valore 0 se il controller e' scsi(x). paritions(x) indica quale partizione del disco utilizzare. A differenza dei parametri precedenti la prima partizione del disco sarà 1, la seconda 2, e così via. \WINDOWS="..." Infine l’ultimo parametro indica in quale directory sono posizionati i file di sistema e la descrizione da mostrare alla schermata di boot. Il valore predefinito per questo parametro è “Windows” per Windows XP, “Winnt” per Windows 2000 e NT. Alcuni Switch utilizzati nel BOOT.ini Qui di seguito è riportata una lista di switch e una breve descrizione di essi. Questi switch possono essere utilizzati per aiutare a risolvere un problema oppure per attivare una particolare caratteristica del/i processore/i del sistema: /basevideo - Avvia Windows usando il driver VGA standard con una risoluzione di 640x480 pixel a 16 colori /crashdebug - abilita/forza il ripristino automatico e riavvia la macchina /maxmem=x - inpone a Windows di utilizzare un massimo di x Mb di RAM /noserialmice[=comx,y,z] - disabilita il riconoscimento del modem o del mouse sulle porte specificate nello switch. /fastdetect - Costringe NTDETECT a non rilevare le periferiche seriali e parallele e allo stesso modo abilita il rilevamento di periferiche plug & play. /bootlog - Crea un file di log chiamato “ntbtlog.txt” all’avvio del sistema operative specificato. /burnmemory=x - Costringe il sistema operativo ad ignorare la memoria specificata nello switch. Ad esempio "/burnmemory=64" costringe il sistema operativo ad ignorare i 64MB iniziali di memoria Ram /debug - Abilita la console di debug del kernel collegata via porta seriale. /debugport - Specifica quale porta seriale utilizzare per la console di debug. /baudrate - Specifica la velocità in bit per secondo (bps) utilizzata dalla console di debug. /noguiboot - Switch di Windows 2000 e successivi che, se abilitato, impedisce al sistema di caricare il driver grafico. /numproc - Indica al sistema operativo da avviare quanti processori deve utilizzare (ovviamente lo switch è da utilizzare solo in sistemi multiprocessore). /onecpu - Obbliga il sistema operativo ad usare un solo processore in un computer multiprocessore. /pae - Switch di Windows 2000 e successivi che abilita il computer ad utilizzare l’Intel Physical Address Extensions (una caratteristica dei processori Intel). /nopae - Switch di Windows 2000 e successivi che disabilita l’Intel Physical Address Extensions. /pcilock - Impedisce a Windows di assegnare automaticamente un IRQ alle periferiche PCI. /safeboot - Carica la modalità provvisoria di Windows al posto della modalità normale. /sos - Visualizza una lista dei drivers che sono caricati dal sistema operativo. /w95 - Switch usato per avviare sistemi Windows 9x /w95dos - Switch usato per avviare sistemi MS-DOS. /year=yyyy - Usato per obbligare il sistema operativo a ignorare l’anno indicato nel bios e utilizzare così l’anno specificato nello switch. /noexecute=optin - Abilita, in abbinamento a processori che la supportano, la Protezione Esecuzione Programmi (controllo che viene effettuato via Hardware), impedendo l'inizializzazione di codice malevolo. Tale opzione si trova solo in Windows XP SP2. Ecco qui invece come si presenta l’utilità di configurazione di sistema (MSCONFIG) utilizzata per modificare il file Boot.ini. Notate alcuni switch descritti in precedenza… by AaLl86 Ultima revisione: 09/11/2005 www.aall86.altervista.org