Dynamic disks offline na opstarten windows

Pagina: 1
Acties:

  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Ik heb de windows raid hack uitgevoerd die hier ergens in het forum beschreven staat: http://gathering.tweakers...ages/733248///raid%2Chack. Nou werkt die software raid opzich perfect, maar na elke reboot zijn de dynamic disks weer offline. Nu is het simpel ze op te starten vanuit de 'Computer Management' utility, maar het is natuurlijk niet echt wenselijk om na iedere reboot te moeten doen. Het verschijnsel lijkt ook beschreven te zijn in http://support.microsoft.com/?kbid=244550, en hoewel enigszins informatief, bevat het geen kant en klare oplossing hoe ik het probleem nou oplos. Ik heb een klein scriptje (als het die naam al waard is) gemaakt:

vanuit een snelkoppeling in de startup entries: 'diskpart /s locatievanscript\startraid'

de inhoud van 'startraid':
select disk 2
online
exit

Mocht niemand nou een oplossing hebben om de disks echt netjes tijdens het opstarten al te initialiseren, dan kan dit mogelijk iemand helpen om het in ieder geval niet handmatig te hoeven doen (hoewel dat dosboxje bij het inloggen me nu al ergert ;)). Let wel op dat je het ID van de schijf (bij mij hierboven '2') moet vervangen door een van de ID's van jouw dynamic disks, welke maakt geloof ik weinig uit. Ik heb nu 4 schijven in twee raidsets en ze starten allemaal zodra ik er via het script een op online zet.

Maar om terug te komen op mijn vraag: het lijkt dus inderdaad een geval dat er gecheckt wordt op de aanwezigheid van dynamische schijven, voordat de drivers van de schijf zelf zijn geladen (of iets in die richting). Heeft iemand een idee hoe dit op te lossen is?

Alvast bedankt voor het meedenken! :)

  • rfoppen
  • Registratie: December 2000
  • Laatst online: 13-02 13:06
Middels een start-up group policy kan je scripts al tijdens het booten van windows laten draaien. Wellicht dat dat iets helpt (al is het nog steeds symptoom bestrijding; in ieder geval geen pop-ups meer)

Appels zijn geen peren


  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Het script tijdens het booten kunnen laden klinkt in ieder geval als een vooruitgang, het grootste probleem is namelijk dat ik mijn swapfile op de RAID0 wil zetten, maar aangezien die schijf pas na het inloggen beschikbaar wordt lukt dat niet (kan wel toevoegen, maar het systeem gebruikt het bestand niet). Tijdens het booten het script starten is al een pluspunt, maar moet je die group policy opties niet op een domain controller instellen? Ik heb hier zelf geen domein draaien dus dat zou dan lastig worden. Ik ga ook nog maar even zoeken naar hoe ik bootscripts uit kan voeren, wel een goed idee :)

  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Even een klein voortangsrapportje. Ik heb Excead gebruikt http://www.codeproject.co...ExseadServiceManager.aspx om een scriptje te starten als service. Dat werkt opzich al heel netjes, in ieder geval geen lelijk dosboxje meer en de schijven zijn er bij het inloggen dus ook direct. Maar, de swapfile op de RAID0 wordt nog niet geopend. Deze worden vermoedelijk tijdens boottime al geopend. Ik heb geprobeerd de service te installeren als bootservice (het progje doet dit zelf niet goed, maar in het register is het handmatig aan te passen), maar dit werkt niet goed, de service crashed. Op zich verbaast dit me niet heel erg aangezien vbscript me een stuk software lijkt wat pas later in het bootproces wordt geladen en dus niet beschikbaar is tijdens boottime. Aangezien vbscript benodigd is, failed de service (vermoed ik). Anyway, om ditzelfde te doen (voor de mensen die ook behoefte hebben aan een oplossing): sla in een map de ExceadServiceManager.exe op en rename deze naar DynamicDiskActivator.exe. Maak dan een DynamicDiskActivator.vbs aan en sla daarin onderstaande op. Ook moet een bestandje DynamicDiskActivator.csp aangemaakt worden, waarin eerdergenoemd 'scriptje' opgeslagen moet worden. Dan heb je dus zonder domain controller je dynamic disks @ systemtime ingeladen.



Option Explicit

' Constants and identifiers
' =========================
CONST SERVICE_NAME = "DynamicDiskActivator"
CONST ForReading = 1, ForWriting = 2, ForAppending = 3

' Globals
' =======
Dim objWSHShell
Dim objWSHNetwork
Dim objFSO
Dim objLogger
Dim is_init

' This method ensures the globals are up
' but only creates the object (expensive)
' once.
sub init()
if not is_init then
Set objWSHShell = CreateObject("WScript.Shell")
Set objWSHNetwork = CreateObject("WScript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogger = new Logger
is_init=true
end if
end sub

class Logger

private logFile

Private Sub Class_Initialize()
set logFile=objFSO.openTextFile(SERVICE_NAME+"_script.log",ForWriting,true)
End Sub

public sub WriteLog(what)
logFile.writeLine(what)
end sub

Private Sub Class_Terminate()
logFile.close
End Sub

end class

sub StartService()
init
'objWSHShell.run SERVICE_NAME + ".exe -K"
Dim curdir
dim scriptFile
curdir = objWSHShell.CurrentDirectory
scriptFile = curdir & "\DynamicDiskActivator.csp"

If not objFSO.FileExists(scriptFile) then
SilentReport "Could not find " & scriptFile, 0
exit sub
end if

objWSHShell.run "diskpart /s " + scriptFile, 0, true
end sub

sub StopService()
init
' Do nothing, diskpart only runs for a few seconds and killing it is troublesome anyway
end sub

Sub SilentReport(sString, iErr)
init
objLogger.WriteLog(now & ": " & sString & " , " & iErr)
End Sub



Vanzelfsprekend hou ik me nog steeds erg aanbevolen voor een echte oplossing voor het probleem, dat ik mijn swapfile niet daar kan zetten is goed irritant :)

  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Ik ben ondertussen even verder gegaan met het proberen te vinden van een echte oplossing in plaats van een ducktape variant. Dit artikel (http://www.windowsitpro.c...303/8303/pg/2/2.html?Ad=1) beschrijft kort de volgorde van acties om de volumes van de dynamic disks in te lezen. Een summiere vertaling:

dmio.sys en dmload.sys worden beiden gestart tijdens boottime. dmload queried dmio om te zien of er dynamic disks in het systeem aanwezig zijn. Indien dynamic disks aanwezig zijn start dmload dmboot.sys op (het bestandje wat gehacked moest worden). Deze laad de volumes van de dynamische schijven en geeft ze door aan dmio zodat deze virtuele instanties aan kan maken van de volumes die representeerbaar zijn in bijvoorbeeld windows verkenner.

dmboot stond bij mij op 'disabled', dus die heb ik op enabled gezet -> geen verschil. Ik gokte dat er misschien iets fout ging in de communicatie tussen een van de drivers waardoor dmboot misschien niet werd opgestart. Dus ik configureer dmboot zodat deze start tijdens het booten. Dit heeft het volgende effect:

-de dynamische schijven komen in een soort van errormodus
-de RAID0 partities zijn gewoon te benaderen
-om de RAID1 partities te benaderen moet de disk eerst gereactiveerd worden, daarna wordt er een of andere check gedaan, ik vermoed dat de consistentie tussen de twee schijven wordt geverifieerd. Dit doet hij iedere keer weer bij reboot
-na elke volgende reboot wordt dmboot automatisch weer gedisabled

Er is waarschijnlijk een logische verklaring voor al deze dingen (het is tenslotte een computer) en mijn oplossingen zijn ook maar trail & error (vooral dat laatste), maar meer dan dit kan ik eigenlijk niet doen aangezien het nou niet echt fantastisch gedocumenteerd is. Het zou ook prima kunnen liggen aan de vrij simpele hack waarmee de functionaliteit unlocked wordt, en om nou die drivers te disassemblen heb ik eigenlijk niet zo'n zin in. Ik laat het voorlopig hier dus maar bij en ga zitten mokken over dat MS deze functies niet standaard toestaat in elke windows versie ;), hopelijk kan iemand (misschien met behulp van deze informatie) nog iets bedenken.

Bedankt! :)

  • rfoppen
  • Registratie: December 2000
  • Laatst online: 13-02 13:06
beyonix schreef op woensdag 05 december 2007 @ 08:07:
maar moet je die group policy opties niet op een domain controller instellen? Ik heb hier zelf geen domein draaien dus dat zou dan lastig worden.
Normaal zou je dat in een domein omgeving doen idd. Maar als je op je XP \ WxK machine de Group Policy editor start, kun je de scope op je lokale machine zetten. StartUp scripts included. (Start -- Run -- MMC -- Add Remove snap in -- GPO Editor.)

Staat bij dat "This snap-in allows you to edit Group Policy Objects which can be linked to a Site, Domain, or Organizational Unit in the Active Directory or stored on a computer."

Lijkt me dat dat gewoon werkt (moet wel toegeven dat het een theorie is, en dat ik het zelf ook nooit op die manier gedaan heb }:O )

Appels zijn geen peren


  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Ik heb voor de zekerheid nog even een poging gewaagd maar de scripts die ik aanmaak starten helaas niet op... zou mooi zijn geweest opzich! Aan de andere kant starten die scripts volgens mij op hetzelfde moment dat mijn huidige miniservice mijn scriptje opstart (dus niet BOOT_START, of SYSTEM_START maar AUTO_START, net voor logon). Het enige voordeel was dus geweest dat ik een built-in service kon gebruiken ipv nog een extra (wat over het algemeen mijn voorkeur heeft). Wel bedankt voor het meedenken natuurlijk, dat is altijd tof :)

Misschien dat iemand (met werkende dynamic disks) eens een log kan laten zien van de volgorde waarin zijn drivers worden geladen? Dan kan ik die met die van mij vergelijken!

  • beyonix
  • Registratie: April 2006
  • Laatst online: 23-08-2020
Juist ja *kucht even*...

In mijn enthousiasme over mijn nieuwe schijven in software raid heb ik iets over het hoofd gezien in het hacken van de bestanden:

'2 open deze drie bestanden met een hexeditor en vervang de ‘WINNT’ entries met ‘SERVERNT’ en vice versa (dus ‘SERVERNT’ ook in ‘WINNT’ veranderen)'

Ik dacht dat de hack goed was uitgevoerd omdat de meeste hacks die maar half goed zijn je systeem doen laten crashen, maar dat was dus nu niet het geval. Samenvattend voor mensen die met de volgende fout zitten: wel raidsets kunnen aanmaken die werken maar altijd offline zijn nadat windows opnieuw opstart, controleer of je niet alleen servernt in winnt hebt veranderd, maar ook winnt in servernt.

Na dit te veranderen werkt alles naar behoren! :)
Pagina: 1