sobota, 26 marca 2011

Windows 7 przesunięci katalogów Users, ProgramData oraz Program Files (część 1)

W Windows'ie zawsze irytowała mnie domyślna lokalizacja katalogów Users (tudzież Documents and Settings) oraz Program Files. Partycja C, na której wszystko zawsze musiało lądować z czasem rozrastała się do bardzo pokaźnych rozmiarów - coraz więcej instalowanych programów oraz coraz więcej danych zgromadzonych w katalogach z dokumentami i ustawieniami użytkowników. Teoretycznie istnieje sposób na poprawienie tej sytuacji.

Jak się jednak okazało, ku mojemu wielkiemu rozczarowaniu, aby przesunąć umiejscowienie katalogu Users oraz ProgramData należy wykonać pewne operacje podczas instalowania systemu. Cóż ja już mam zainstalowany Windows 7, dobrze jednak, że testowo znajduje się on na maszynie wirtualnej, dlatego nie będę płakał nad tym, aby wykonać proces instalacji raz jeszcze.

W przypadku zmiany lokalizacji katalogu Program Files najlepiej całą operację wykonać również bezpośrednio po zainstalowaniu OS. Jednak o tej operacji napiszę oddzielny wpis. Teraz zajmijmy się przenosinami danych użytkowników oraz programów.

Zanim rozpocznę cały proces instalacji raz jeszcze przygotuję nową maszynę wirtualną i podłącze do niej dwa dodatkowe dyski (jeden na programy i jeden na dane użytkownika i aplikacji) zgodnie z opisem, który umieściłem w poprzednim poście. W tym miejscu zaznaczam, że dodanie dysków ograniczy się tylko do dołączenia ich do maszyny wirtualnej. Przypominam, że nie należy zapomnieć o podłączeniu płyty instalacyjnej Windows 7 inaczej podczas uruchamiania maszyny nie włączy się instalator :-).
Konfiguracja nowej maszyny wirtualnej dla Windows 7
Jak widać na załączonym zrzucie konfiguracji, maszyna będzie miała podłączone aż 4 dysk:

  1. Dysk systemowy - na którym będzie zainstalowany Windows 7
  2. Dysk z danymi użytkowników oraz aplikacji - na ten dysk zamierzam przenieść katalogi Users oraz ProgramData
  3. Dysk z aplikacjami - na ten dysk zamierzam przenieść katalog Program Files (jeżeli korzystacie z Windows'a 64-bitowego to trzeba przenieść również katalog Program Files (x86)).
  4. Dysk testowy - za jego pomocą zamierzam sprawdzić jak szybko zostanie utworzona partycja na dysku z dynamicznie rozszerzanym obrazem (pierwsze dyski mają stałą wielkość obrazu).
Czas na instalację - odpalamy maszynę i czekamy, aż włączy się instalator. W drugim kroku instalacji zostaniemy poproszeni o wybranie partycji na której system Windows zostanie zainstalowany. W tym kroku wybieramy jako pierwszą partycję systemową (tą o rozmiarze 20GB) i wybieramy Nowy a następnie Zastosuj. Następnie operację powtarzamy dla kolejnych dysków - w ten sposób wszystkie powinny być widoczne po instalacji i nie będzie trzeba wykonywać dodatkowych operacji.
Konfigurowanie partycji
Po zatwierdzeniu konfiguracji (na dysk systemowy wybrałem ten o rozmiarze 20GB) instalator przechodzi do kopiowania plików i całego procesu instalacji. Gdy zakończy się pierwszy etap instalacji nastąpi restart maszyny wirtualnej, a następnie ponownie zostanie podjęty proces instalacji. Następnie po konfiguracji ponownie zostanie wykonany restart.

Z chwilą kiedy na ekranie pojawi się poniższy widok rozpoczynam wykonywanie niestandardowych operacji.
Punkt przejścia do trybu Audit Mode
W tej chwili, zamiast kontynuować instalację standardowo, należy przejść do trybu AuditMode za pomocą kombinacji Ctrl+Shift+F3. Wciśnięcie tej kombinacji spowoduje restart maszyny i uruchomienie Windows'a w specjalnym trybie, który pozwoli wykonać wszystkie czynności. Po załadowaniu systemu pojawią się prośby o dodatkowej konfiguracje (jak na poniższym zrzucie ekranu) - tą pierwszą anulowałem (Narzędzie przygotowanie systemu), natomiast w drugiej wybrałem opcję "Sieć domowa"
Anulowanie "Narzędzia przygotowania systemu" oraz wybranie opcji "Sieć domowa"
Na kolejnym ekranie ponownie wybrałem opcję anulowania.
Anulowanie połączenia do grupy domowej
Otwórzmy teraz Mój komputer i wykonajmy formatowanie pozostałych partycji (niestety nie zostało to wykonane podczas początkowej instalacji - można to jednak było tam wykonać). Zatem spróbujmy otworzyć każdy dysk po kolei i następnie potwierdzić prośbę o formatowanie.
Formatowanie dysków twardych
Sformatowane partycje dodatkowe z nadanymi etykietami
Kiedy wykonamy już te operacje należy teraz przygotować plik xml za pomocą którego wykonamy definicję konfiguracji. W moim wypadku plik wygląda w następujący sposób:


   1:  <?xml version="1.0" encoding="utf-8"?>
   2:  <unattend xmlns="urn:schemas-microsoft-com:unattend">
   3:        <settings pass="oobeSystem">
   4:        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   5:        <FolderLocations>
   6:                         <ProfilesDirectory>e:\Użytkownicy</ProfilesDirectory>
   7:                         <ProgramData>e:\ProgramData</ProgramData>
   8:        </FolderLocations>
   9:        </component>
  10:        </settings>
  11:        <cpi:offlineImage cpi:source="wim:G:/sources/install.wim#Windows 7 HOMEPREMIUM" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
  12:  </unattend>
Jeżeli wasza maszyna wirtualna oraz Windows są 64-bitowe to obowiązkowo w linii 4 należy zastąpić ciąg znaków x86 ciągiem amd64. Dodatkowo w linii 11 należy wskazać literę dysku na którym znajduje się instalka Windows'a (G - w moim wypadku) oraz nazwę instalacji, którą posiadacie. Ja mam HOMEPREMIUM, ale dostępne są również opcje: HOMEBASIC, PROFESSIONAL, ULTIMATE, ENTERPRISE.
Oczywiście wszystko to robimy dlatego, że chcemy zmienić ProfilesDirectory (linia: 6) oraz ProgramData (linia: 7). W tych elementach należy podać lokalizacje odpowiednich katalogów. Ja podjąłem decyzję, że oba będą znajdowały się na partycji E. Tak przygotowany plik należy zapisać pod dowolną nazwą z rozszerzeniem xml np. na głównej partycji.
Zapisany plik relocate.xml
Gdybym wcześniej pomyślał, to zdecydowałbym się na zainstalowanie Dodatków Gościa. Pomogłoby to w kopiowaniu tekstu pomiędzy systemem hosta a gościa za pomocą współdzielonego schowka. Niestety musiałem wklepać to ręcznie i weryfikować czy wszystko się zgadza z założeniami. Proszę uważnie wprowadzać tekst tego pliku. Nie wiem jakie mogą być skutki niepoprawnej konfiguracji. Chociaż w najgorszym razie wszystko trzeba będzie zacząć raz jeszcze.

Po utworzeniu tego pliku otwieramy terminal (Start->Wszystkie programy->Akcesoria->Wiersz poleceń), za pomocą komendy cd przechodzimy do katalogu z Narzędziem przygotowania systemu:

  • cd \Windows\System32\Sysprep
I następnie wydajemy polecenie konfigurujące system na podstawie utworzonego wcześniej pliku xml:

  • sysprep /audit /reboot /unattend:C:\relocate.xml

Po chwili System ponownie się resetuje i ponownie wchodzi w tryb Audit Mode (bardzo wygodne rozwiązanie). Po włączeniu dopiero jawne wskazanie, że kolejne ładowanie ma wyjść z tego trybu prowadzi do tego. Dlatego z chwilą kiedy ponownie powita nas Narzędzie przygotowania systemu wybieramy weryfikujemy czy wybrane opcje zgadzają się z tymi ze zrzutu i potwierdzamy wciskając OK.
Zakończenie pracy w trybie Audit Mode
System ponownie się zresetuje i tym razem dokończy instalacje zgodnie z naszymi ustawieniami. Sam proces instalacji należy przeprowadzić we własnym zakresie, zgodnie z własnymi wymaganiami.

Kiedy wszystko będzie już grało i zalogujemy się do systemu to należy sprawdzić czy rzeczywiście na nowej partycji pojawiły się zdefiniowane katalogi.
Jak widać powyżej wszystko się zgadza. Zweryfikujmy jeszcze co znajduje się na dysku głównym z systemem operacyjnym.

Ku mojemu zaskoczeniu pojawił się tutaj katalog ProgramData. Nie ma za co katalogu z danymi użytkowników - co mnie bardzo ucieszyło. Pobieżne przejrzenie obu katalogów z danymi aplikacji na dysku E i tego na dysku systemowym upewniło mnie, że wszystko i tak trafiło na E - czyli tam gdzie chciałem.

W następnym wpisie spróbuję opisać o tym w jaki sposób zmodyfikować lokalizację katalogów Program Files. Wprawdzie Microsoft nie zaleca przeprowadzania tej operacji jednak ja spróbuję to zrobić.

11 komentarzy:

  1. Bardzo fajny artykuł. Mam jednak problem. Doszedłem do punktu
    "sysprep /audit /reboot /unattend:C:\relocate.xml" i dalej nie ruszę. Po zatwierdzeniu powyższej linijki wyskakuje błąd: Wystąpił błąd krytyczny podczas próby wykonania programu sysprep na komputerze.
    W pliku relocate.xml dokonałem niezbędnych zmian: x86 na amd64, i zmiany ścieżki dostępu do pliku instal.wim.
    Gdzie może być błąd ?

    zero_jeden

    OdpowiedzUsuń
  2. Możesz wkleić treść pliku?

    OdpowiedzUsuń
  3. Jasne.
    treść pliku:





    E:\Użytkownicy
    D:\ProgramData

    OdpowiedzUsuń
  4. <?xml version=\"1.0\" encoding=\"utf-8\"?>
    <unattend xmlns=\"urn:schemas-microsoft-com:unattend\">
    <settings pass=\"oobeSystem\">
    <component name=\"Microsoft-Windows-Shell-Setup\" processorArchitecture=\"amd64\" publicKeyToken=\"31bf3856ad364e35\" language=\"neutral\" versionScope=\"nonSxS\" xmlns:wcm=\"http://schemas.microsoft.com/WMIConfig/2002/State\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
    <FolderLocations>
    <ProfilesDirectory>E:\\Użytkownicy</ProfilesDirectory>
    <ProgramData>D:\\ProgramData</ProgramData>
    </FolderLocations>
    </component>
    </settings>
    <cpi:offlineImage cpi:source=\"wim:F:/sources/install.wim#Windows 7 ULTIMATE\" xmlns:cpi=\"urn:schemas-microsoft-com:cpi\" />
    </unattend>

    OdpowiedzUsuń
  5. oczywiście bez "\" przed znakami cydzysłowu...
    przepraszam za zamieszanie, a miałem problem z cytowanie kodu....

    OdpowiedzUsuń
  6. Wszystko wygląda na OK. Proponuję sprawdzić czy dyski są dostępne, czy nie ma już na nich katalogów Użytkownicy i ProgramData (jeżeli są to proszę je skasować). Proponuję również sprawdzić ścieżkę do obrazu windows'a.
    Zastanawia mnie również parametr amd64 - szczerze mówiąc nie byłem w stanie jego wypróbować z powodów ograniczeń na maszynę wirtualną. Czy jesteś w stanie testowo skorzystać z x86?

    OdpowiedzUsuń
  7. Dyski są dostępne i po formacie, są puste. Ścieżka do obrazu prawidłowa. Próbowałem z opcją x86, ale efekt ten sam. Spróbuję jeszcze zamiast obrazu podawanego z napędu wirtualnego, dać go z płyty z rzeczywistego urządzenia. Nic innego nie przychodzi mi do głowy.

    OdpowiedzUsuń
  8. niestety...efekt ten sam. Nie wiem gdzie mogę robić błąd. Strasznie mi zależy aby uzyskać możliwość przeniesienia tych katalogów...ale nie mam juz pomysłu na znalezienie "haczyka", który rozwiązałby ten problem.

    OdpowiedzUsuń
  9. Nie trzeba haczyka.
    Nie wiem w jakiej wersji językowej masz system, ale u mnie w ultimate eng, wystarczyło zmienić nazwę "użytkownicy" na jakakolwiek bez polskich liter.
    Jeśli zależy ci na polskich literkach to prawdopodobnie musisz pokombinować z enkoding, ale nie próbowałem wiec nie jestem pewien.
    A jeszcze jedno, instalacja była na ustawieniach wersja- angielska, ustawienia eng-us, klawiatura us.
    Na innych nie próbowałem bez polskich znaków wiec ew musisz popróbować.

    Nico

    OdpowiedzUsuń
  10. Czy jest naprawde niezbedne formatowanie innych partycji ,dyskow,jezeli chcialbym dac na "D" program data i na "E" User,to musza byc one puste i sformatowane,czy moge je zostawic bez formatowania z danymi ?
    I jeszcze jedno czy moge plik xml miec juz przygotowany na innym dysku i pozniej go tylko skopiowac na "C" ?

    OdpowiedzUsuń
  11. u mnie problem leżał w kodowaniu pliku, w xml jest UTF-8 a zapisujesz plik w ANSI, u mnie pomogło, pozdrawiam

    OdpowiedzUsuń