11 Replies Latest reply on Feb 9, 2015 5:55 AM by xebia

    DSM 2013.2 - Windows 7 100MB system reserved partition

    Markus.Zierer Expert
      Hallo Zusammen,

      hab heute leider feststellen müssen, dass das Default Partitionierungsscript in DSM 2013.2 auf Legacy BIOS Systemen KEINE zusätzliche 100MB Partition für Windows anlegt. Das ist für uns insofern blöd, da wir bei nem Kunden diese Partition benötigen damit wir HDD Encryption einrichten können.
      Würden wir die Systeme im UEFI Modus laufen lassen können, hätten wir dieses Problem nicht, da in diesem Fall die benötigte Partition angelegt wird. Dummerweise funktioniert aber die HDD Encryption nicht im UEFI Modus.

      Ich habe diesbezüglich einen Call / FR eröffnet, da ich der Ansicht bin, dass diese Funktionalität auch für Non-UEFI Systeme gegeben sein muss. Frage an dieser Stelle ist jetzt, hat jemand bereits ein Angepasstes Script für dieses Szenario? In diesem Fall würde ich mich über ne PM bezüglich Kontaktaufnahme freuen.
        • 1. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
          _Mel_ Master
          auf UEFI systemen werden zwei extra partitionen angelegt
          - die efi system partition (die nur auf UEFI Systemen Sinn macht)
          - und die microsoft reserved partition (die ein reiner platzhalter ist, keine sinnvollen daten enthält und außerdem nur bei GPT partitionierung angelegt werden kann)

          welche davon wird für die HDD encryption benötigt ?
          • 2. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
            Markus.Zierer Expert
            Installiert man ein Windows 7 von Hand, wird vom Setup selbst immer auch eine 100MB große Partition angelegt. Diese Partition enthält den Bootloader und wird benötigt, falls man Laufwerksverschlüsselung (Bitlocker, Trusted Disk) benutzen möchte. Der Grund hierfür ist, dass diese Produkte den Bootloader nicht auf der eigentlichen Partition installieren, sondern statt dessen diesen in der kleinen, versteckten Partition installieren.

            Solange man kein Bitlocker oder andere Produkte einsetzt, die diese Partition benötigen, kann man die Durchaus weglassen. In diesem Fall wird der Bootloader direkt auf die System Partition installiert. Es ist in diesem Fall jedoch nicht mehr möglich, Verschlüsselungsprodukte zu installieren, die diese Partition benötigen.

            Wird die Partitionierung der HDD NICHT über die unattend.xml vorgenommen, wie aktuell in euren Skripten, legt das Windows Setup diese Partition NICHT automatisch an. Wird diese Benötigt, muss man Sie selbst erzeugen.

            Und genau hier liegt das Problem. Eure Partitionierungsscripte sehen das nicht Vor. Jedenfalls nicht bei Legacy BIOS Systemen. Aus meiner Sicht sollte die Möglichkeit jedoch Durchaus Vorhanden sein. Theoretisch dürfte das ganze eigentlich nicht so schwierig sein. Einfach per InstallationParameter einen Wert angeben auf den man per If condition abfragt und dann halt eben zusätzlich die Partition erstellt oder eben halt nicht. Das wäre alles.
            • 3. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
              Frank.Scholer Master
              Hallo Markus,

              mal ne doofe Frage: das Script "Partitioning and Formatting for multiple partitions" sieht doch vor, dass man bis zu vier Partitionen anlegen kann. Was spricht dagegen, da einfach zu sagen, die erste Partition ist 100 MB groß und die zweite nimmt den Rest der Platte? Das ist doch genau das, was du brauchst - oder verstehe ich was falsch?

              HTH, Gruß Frank
              • 4. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                Michi Expert

                Hallo Markus,

                mal ne doofe Frage: das Script "Partitioning and Formatting for multiple partitions" sieht doch vor, dass man bis zu vier Partitionen anlegen kann. Was spricht dagegen, da einfach zu sagen, die erste Partition ist 100 MB groß und die zweite nimmt den Rest der Platte? Das ist doch genau das, was du brauchst - oder verstehe ich was falsch?

                HTH, Gruß Frank




                genau so siehts aus.
                Wichtig ist dann nur die unattend.xml noch ein bisschen anzupassen.
                Per Default gibt es da einen Wert "InstallToAvailablePartition" = True
                Der sollte natürlich auf False stehen und dann gibt man z.B. Disk 0 Partition 2 an. Somit wird nicht versucht auf die 100MB Partition zu installieren. Das ganze lässt sich prima mit Installationsparametern und ggf. noch in Kombination mit ODS Variablen lösen.

                Gruß
                Michi
                • 5. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                  Klaus Salger Expert
                  Also ganz so einfach ist's aber doch nicht.

                  Wenn man ein Original Multiple Partitions-Paket nimmt, dann ist die 1. Partition C und auf der landet dann auch das OSD-Verzeichnis, das nach der Windows-Installation dann nicht mehr gefunden wird weil's ja dann nicht mehr C ist.

                  Es macht also m.E. schon Sinn, das Partitionierungspaket anzupassen um zu vermeiden, dass die 1. Partition einen Laufwerksbuchstaben bekommt oder zumindest nicht C.

                  Ciao
                    Klaus
                  • 6. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                    Markus.Zierer Expert
                    @Frank

                    Es ist genau so wie Klaus schreibt. Nimmst Du das Script von Frontrange wird der ersten Partition automatisch der Buchstabe C zugewiesen. Das ist in der Script Logik leider hart verdrahtet.

                    Ein Möglichkeit wäre es, die Partitionierung über die unattend.xml vornehmen zu lassen. Das bedeutet allerdings, dass man damit ein Stück Flexibilität verliert bzw. der Aufwand für die Implementierung bei anderen Kunden steigt, da immer dann, wenn Mehrere Partitionen benötigt werden, die Datei angepasst werden muss.
                    • 7. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                      info@offlimits-it.com Expert
                      Script für Bitlocker mit Installationsparametern für Laufwerksbuchstaben und Partitionsnamen



                      @echo off
                      echo Partitioning and formatting multiple Partitions
                      echo Partitioning and formatting multiple Partitions > _out.txt

                      IF NOT "%%OS%%" == "Windows_NT" GOTO wrongOS_error
                      IF NOT EXIST X:\ENTEO\osdclnt.ini GOTO wrongOS_error

                      regedit /s PE20PartAlign.reg

                      set disknumber=0
                      set formatParams=/Y
                      if "%InstallationParameters.QuickFormat%" == "1" set formatParams=%%formatParams%% /Q
                      if /I not "%InstallationParameters.ClusterSize%"=="default" set formatParams=%%formatParams%% /A:%InstallationParameters.ClusterSize%

                      set scale=1
                      if "%InstallationParameters.UnitSize%" == "MB" goto scale_end
                      set scale=1024
                      if "%InstallationParameters.UnitSize%" == "GB" goto scale_end
                      set scale=0
                      for /F "tokens=1,2 delims==" %%%%a in ('wmic diskdrive where "index=%%disknumber%%" get size /format:list') do if "%%%%a"=="Size" set scale=%%%%b
                      rem clean unicode
                      set scale=%%scale%%
                      echo Disk size is %%scale%% Bytes >> _out.txt
                      rem divide by 100000 (100 for percentages and 1000 to get it in 31 bit)
                      set scale=%%scale:~0,-5%%
                      rem convert to KB
                      set /A scale=scale/1024
                      rem convert to MB (correct the 1000 to 1024)
                      set /A scale=scale*1000
                      set /A scale=scale/1024
                      if "%%scale%%"=="" goto scale_error
                      if "%%scale%%"=="0" goto scale_error
                      :scale_end
                      echo Unit size is %%scale%% MB >> _out.txt

                      set align_param=
                      set align=0
                      set /A align=%InstallationParameters.Alignment%
                      if not "%%align%%"=="0" set align_param=align=%%align%%

                      set diskfull=0
                      set activate_partition=0
                      if "%%disknumber%%" == "0" set activate_partition=1

                      echo Cleaning Disk %%disknumber%%
                      echo Cleaning Disk %%disknumber%% >> _out.txt
                      echo select disk %%disknumber%% > clean_%%disknumber%%.txt
                      echo clean >> clean_%%disknumber%%.txt
                      echo exit >> clean_%%disknumber%%.txt
                      echo --- Content of clean_%%disknumber%%.txt >> _out.txt
                      type clean_%%disknumber%%.txt >> _out.txt
                      echo --- >> _out.txt
                      diskpart /s clean_%%disknumber%%.txt >> _out.txt
                      if errorlevel 1 goto cleandisk_error

                      :createvolume_1
                      set volumeletter=%InstallationParameters.P1Volumeletter%
                      set volumefs=%InstallationParameters.P1FileSystem%
                      set /A volumesize=scale*%InstallationParameters.P1Size%
                      set label=%InstallationParameters.P1Label%
                      set returnlabel=createvolume_2
                      goto createvolume

                      :createvolume_2
                      set volumeletter=%InstallationParameters.P2Volumeletter%
                      set volumefs=%InstallationParameters.P2FileSystem%
                      set /A volumesize=scale*%InstallationParameters.P2Size%
                      set label=%InstallationParameters.P2Label%
                      set returnlabel=createvolume_3
                      goto createvolume

                      :createvolume_3
                      set volumeletter=%InstallationParameters.P3Volumeletter%
                      set volumefs=%InstallationParameters.P3FileSystem%
                      set /A volumesize=scale*%InstallationParameters.P3Size%
                      set label=%InstallationParameters.P3Label%
                      set returnlabel=createvolume_4
                      goto createvolume

                      :createvolume_4
                      set volumeletter=%InstallationParameters.P4Volumeletter%
                      set volumefs=%InstallationParameters.P4FileSystem%
                      set /A volumesize=scale*%InstallationParameters.P4Size%
                      set label=%InstallationParameters.P4Label%
                      set returnlabel=end
                      goto createvolume


                      :createvolume
                      echo --- Creating %%volumefs%% Volume %%volumeletter%% with size %%volumesize%%
                      echo --- Creating %%volumefs%% Volume %%volumeletter%% with size %%volumesize%% >> _out.txt
                      if "%%volumefs%%" == "NONE" goto %%returnlabel%%
                      echo removing Mountpoint %%volumeletter%%:
                      echo removing Mountpoint %%volumeletter%%: >> _out.txt
                      echo select volume %%volumeletter%% > remove_%%volumeletter%%.txt
                      echo remove >> remove_%%volumeletter%%.txt
                      echo exit >> remove_%%volumeletter%%.txt
                      echo --- Content of remove_%%volumeletter%%.txt >> _out.txt
                      type remove_%%volumeletter%%.txt >> _out.txt
                      echo --- >> _out.txt
                      diskpart /s remove_%%volumeletter%%.txt >> _out.txt
                      if not errorlevel 1 goto createvolume_part

                      echo volume did not exist... sleeping 2 seconds
                      rem ping is used as a replacement for sleep
                      ping 127.0.0.1 -n 3 -w 1000 > nul

                      :createvolume_part
                      echo creating new %%volumeletter%% Partition
                      echo creating new %%volumeletter%% Partition >> _out.txt
                      set local_sizeparam=
                      if not "%%volumesize%%" == "0" set local_sizeparam=size=%%volumesize%%
                      echo automount disable > create_%%volumeletter%%.txt
                      echo select disk %%disknumber%% >> create_%%volumeletter%%.txt
                      echo create partition primary %%local_sizeparam%% %%align_param%% >> create_%%volumeletter%%.txt
                      if "%%activate_partition%%" == "1" echo active >> create_%%volumeletter%%.txt
                      set activate_partition=0
                      echo assign letter %%volumeletter%% >> create_%%volumeletter%%.txt
                      echo exit >> create_%%volumeletter%%.txt
                      echo --- Content of create_%%volumeletter%%.txt >> _out.txt
                      type create_%%volumeletter%%.txt >> _out.txt
                      echo --- >> _out.txt
                      diskpart /s create_%%volumeletter%%.txt >> _out.txt
                      if errorlevel 1 goto createvolume_parterror
                      If "1%%label%%" NEQ "1" set volumelabel=/v:%%label%%
                      if "%%volumesize%%" == "0" set diskfull=1

                      echo formatting %%volumeletter%% Partition
                      echo formatting %%volumeletter%% Partition >> _out.txt
                      format %%volumeletter%%:  %%volumelabel%% %%formatParams%% /FS:%%volumefs%% >> _out.txt
                      if errorlevel 1 goto createvolume_formaterror

                      goto %%returnlabel%%

                      :scale_error
                      set errortext=Unable to determine disk size
                      goto error

                      :createvolume_diskfull
                      set errortext=Creating Partition %%volumeletter%% failed - disk is full
                      goto error

                      :createvolume_parterror
                      if "%%diskfull%%" == "1" goto createvolume_diskfull
                      set errortext=Creating Partition %%volumeletter%% failed
                      goto error

                      :createvolume_formaterror
                      set errortext=Formatting Partition %%volumeletter%% failed
                      goto error

                      :cleandisk_error
                      set errortext=Cleaning Disk %%disknumber%% failed
                      goto error

                      :wrongOS_error
                      set errortext=This Script works only in Windows PE
                      goto error

                      :error
                      echo %%errortext%%
                      echo %%errortext%% >> _out.txt
                      echo %%errortext%% > _Error.txt
                      exit /B 1

                      :end
                      echo Execution finished
                      exit /B 0
                      • 8. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                        derniwi Master
                        Hallo,

                        oder wende dich mal mit dem Problem an den Support, vielleicht haben die eine Lösung in der Schublade. Und wenn es bei genügend Leuten Probleme verursacht bzw. die 100MB-Partition benötigt wird, könnten sie das System soweit anpassen, dass das funktioniert.

                        Ich habe das Partitionierungsskript für uns so angepaßt, dass die Partitionierungsdaten über eine Schemaerweiterung eingestellt werden können, es gibt Vorgaben, aber eben auch die Freiheit, schnell auf notwendige Anpassungen reagieren zu können. Weiterhin habe ich einen Parameter, welcher eine Neupartitionierung steuert - gerade bei Notebooks mit vielen lokalen Daten auf der zweiten Partition wird dann nur die erste Partition neu formatiert und Windows darauf installiert. Somit sparen wir uns einige Stunden für die Wiederherstellung - falls möglich. Bei einer Erstinstallation wird partitionert, dann der Schalter umgestellt und später nur noch formatiert - außer man stellt den Schalter wieder zurück.

                        Im Prinzip könnte FrontRange auch hier ein paar Erweiterungen einbringen, z.B. auch logische Partitionen oder eben den Parameter, auf welche Partition Windows installiert werden soll - sprich welche Partition soll den Buchstaben C: erhalten.

                        Je nach dem, wie umfangreich man das machen möchte, kann man auch für jede Partition getrennt eine Formatierung anbieten. Und nicht zu vergessen, die 100MB-Partition muss, falls sie als Boot-Partition eingetragen werden soll, aktiviert werden.

                        Wenn wir genügen sind, die einen entsprechenden Request stellen...

                        Gruß
                        Nils
                        • 9. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                          Markus.Zierer Expert
                          So, Danke erstmal für die Denkanstösse hier. Manchmal sieht man den Wald halt vor lauter Bäumen nicht.

                          Die Lösung für das Problem ist eigentlich ganz einfach. Man kopiert einfach die Sektion ":createvolume_1" und passt die Werte entsprechend an (Driveletter S, FAT32, Size 103MB) Dann noch als returnlabel "createvolume_1" eintragen und Fertig. Sofern man in Umgebungen mit BIOS und UEFI Boot Maschinen arbeitet, sollte man hier noch ne IF Abfrage einfügen, damit die Sektion übersprungen wird, falls es sich um eine UEFI Maschine handelt.
                          Und wenn man das ganze noch Variabel haben will, kann man noch ne If Abfrage auf nen InstallationParameter mit einbauen mit dem man das Anlegen Ein/Aus Schalten kann.

                          Gesamter Zeitaufwand: ca. 30 Minuten (inkl. Websuche und lesen von TechNet Doku)

                          Ärgert mich jetzt, da ich gestern bestimmt 3h damit verbraten hab und jetzt Feststellen muss, dass ich einfach den Falschen Ansatz hatte. Das hätte nie funktioniert so wie ich mir das Gedacht habe...
                          • 10. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                            schurl85 Apprentice
                            Hi,

                            mal kurz meine Erfahrung damit. Haben seit ca. 2 Jahren Windows 7 im Einsatz mit Bitlocker. Habe von Anfang an das mitgelieferte Script "Pre OS Action Package Partitioning" verwendet. Immer ohne Probleme. Im Windows 7 muss man dann noch, um Bitlocker verwenden zu können "bdehdcfg -target default -quiet" aufrufen. Damit wird eine zusätzliche Partition für Bitlocker automatisch erstellt

                            Bei Windows 8 / 8.1 verwende ich auch das mitgelieferte "partitioning and Formatting for multiple partitions", bis jetzt auch ohne Probleme mit Bitlocker.

                            lg
                            Georg
                            • 11. Re: DSM 2013.2 - Windows 7 100MB system reserved partition
                              xebia Rookie
                              [QUOTE=Markus.Zierer;42828]So, Danke erstmal für die Denkanstösse hier. Manchmal sieht man den Wald halt vor lauter Bäumen nicht.

                              Die Lösung für das Problem ist eigentlich ganz einfach. Man kopiert einfach die Sektion ":createvolume_1" und passt die Werte entsprechend an (Driveletter S, FAT32, Size 103MB) Dann noch als returnlabel "createvolume_1" eintragen und Fertig. Sofern man in Umgebungen mit BIOS und UEFI Boot Maschinen arbeitet, sollte man hier noch ne IF Abfrage einfügen, damit die Sektion übersprungen wird, falls es sich um eine UEFI Maschine handelt.
                              Und wenn man das ganze noch Variabel haben will, kann man noch ne If Abfrage auf nen InstallationParameter mit einbauen mit dem man das Anlegen Ein/Aus Schalten kann.

                              Gesamter Zeitaufwand: ca. 30 Minuten (inkl. Websuche und lesen von TechNet Doku)

                              Ärgert mich jetzt, da ich gestern bestimmt 3h damit verbraten hab und jetzt Feststellen muss, dass ich einfach den Falschen Ansatz hatte. Das hätte nie funktioniert so wie ich mir das Gedacht habe...


                              Vielen Dank!
                              Der Tipp hat geholfen. Ich optimiere das Script mal entsprechend und stelle es dann hoch.