Skocz do zawartości

maggreg

Użytkownicy
  • Postów

    649
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez maggreg

  1. W takiej sytuacji trzeba się zdecydować którą partycję chcesz podłączyć do której.

    Większość programów podczas połączenia dane tej partycji powiedzmy podrzędnej wrzucą po prostu do jednego katalogu, struktura partycji nadrzędnej pozostanie bez zmian.

    Tak to przynajmniej odbywało się kiedyś (dawno nic nie łączyłem), na pewno nie ma prostego sposobu na połączenie dwóch partycji w sposób równorzędny w końcu mogą na nich występować takie same dane,

    Najczęściej polecanym programem do operacji na partycjach jest gparted dostępny w wersji live jako samodzielny pakiet lub w zestawie parted magic, sprawa komplikuje się trochę na dyskach RAID ale to cię chyba nie dodtyczy.

     

    pzdr

  2. Ale rozumiem, że poniższe komendy wydajesz:

    select vdisk file="y:\nazwa_dysku.vhd"

    attach vdisk

     

    Oczywiście partycje na dysku VHD można założyć ale instalator powinien tego sam dokonać.

    Można też spróbować instalacji na dysku vhd z pominięciem instalatora.

    Możemy to zrobić z poziomu windowsPE ale najwygodniej zrobić to z poziomu działającego systemu 7- wystarczą do tego dwa programy - bcdedit oraz imagex

    Trzeba wtedy ręcznie stwozyć odpowiedni wpis w magazynie rozruchu:

     

    bcdedit /copy {current} /d "Windows 7 VHD"
    bcdedit /set <guid> device vhd=[X:]\"plik vhd ze ścieżką"
    bcdedit /set <guid> osdevice vhd=[X:]\"plik vhd ze ścieżką"
    bcdedit /set <guid> detecthal on
    bcdedit /set <guid> locale pl-PL
    
    gdzie x: to litera dysku na którym znajduje się nasz plik VHD - można też podać ścieżkę unc (bcd powinno ją zrozumieć) w formacie "\\?\GLOBALROOT\device\harddisk0\partition1" gdzie harddisk0 to numer dysku w systemie zaczynając od 0 a partition1 to numer partycji na tym dysku zaczynając od 1 (można też pdoać numer volumenu lub jego guid ale wcześniej podany format jest chyba najbardziej przejrzysty).

     

    następnie należy podmontować nasz plik vhd (tu mała uwaga - oczywiście można to zrobić także z poziomu np. win xp ale trzeba w systemie zainstalować virual server 2005 a konkretnie jego część odpowiedzialną za obsługę dysków wirtualnych, nie da się co prawda wtedy stworzyć nowego pliku vhd ale można montować już istniejące), zakładamy i formatujemy partycję i przywracamy na nią obraz z pliku install.wim, oczywiście tylko 7 ultimate (albo 2008 R2 :)), w przypadku nieprzerobionej wersji instalacyjnej windowsa komenda wygląda tak:

     

    imagex /apply d:\source\install.wim 5 y:
    
    gdzie Y jest literą naszej podmontowanej partycji wirtualnej, co to jest "d:\source\install.wim" chyba wiadowmo.

     

    następnie restart i odpalamy naszą pozycję vhd, wtedy ruszy normalna instalacja windowsa z pominięciem fazy winpe.

     

    pzdr

  3. Mały dodatek do trzeciego skryptu dla serwisu zshare który dość beszczelnie podmienia całą stronę po wykryciu blokad:

     

     if (location.hostname.indexOf('zshare.net') != -1)
       {
        window.opera.defineMagicVariable('trap_active', function ()
      {
        return true;
      }, null);
       }
    

     

    Chyba domyślicie się w którym miejscu wstawić w/w fragment.

     

    Oczywiście w nagłówku należy dopisać:

     

    // @include       http://www.zshare.net/*

  4. Poszukaj na Elektrodzie opisu dysków seagate z tzw czrnej serii - być może twój się łapie.

    Producent udostępnił dla nich firmware ale powinno się go aplikować na dyski sprawne.

    Myśl, że podstawa to kopia posektorowa (chyba, że ci nie zależy na danych) a potem próba odbudowy smarta w mhdd.

    Jeżeli masz taką możliwość to diagnostyka przez konsolę szeregową.

     

    pzdr

  5. Do powyższego tekstu należą się dwa uzupełnienia.

    Po pierwsze skrypty należy zapisywać w formacie asci/ansi w przeciwnym wypadku choć sam skrypt zadziała to opera zignoruje niestety nagłówek a więc skrypt zadziała jak przy ustawieniu "// @include *" bez exclude

     

    Po drugie skrypty w operze występują w dwóch trybach kompatybilności:

    działające bezpośrednio - te muszą mieć rozszerzenie .js

    działające w trybie emulacji greasemonkey - te muszą mieć rozszerzenie .user.js

     

    Niestety odwrócenie/pomylenie rozszerzeń spowoduje, że dany skrypt nie zadziała jak choćby jeden z bardziej rozbudowanych skryptów :

    YousableTubeFix for Opera

    zadziała tylko z rozszerzeniem user.js

     

    Generalnie do tej drugiej grupy należą skrypty używające funkcji GM_ czyli właściwych dla Greasemonkey a nie dla jscriptu.

     

    Oczywiście żeby stwierdzić czy skrypt działa trzeba zaobserwować czy na odwiedzanych stronach widać jakieś skutki.

    Można też w skrypt wpleść jakiś kawałek kodu który wyświetli nam coś na ekranie, choćby coś takiego:

     

           var txt = "Raz dwa raz - proba skryptu";
           var d = document.createElement('div');
           var tt = document.createTextNode(txt);
           var body = document.getElementsByTagName('body')[0];
           d.style.position = 'absolute';
           d.style.left = '0px';
           d.style.top = '0px';
           d.style.padding = '5px';
           d.style.backgroundColor = '#eeeeee';
           d.style.color = 'red';
           d.style.font = '10pt';
           d.appendChild(tt);
           body.appendChild(d);
    

     

    Wyświetli nam w lewym górnym rogu czerwony tekst na białym tle.

    Można też zajrzeć do dragonfly i na zakładce skrypty sprawdzić jakie błędy generuje opera podczas ich wykonywania.

     

    pzdr

  6. Dawid swoim cyklem o kontrolowaniu wyglądu stron zainspirował mnie do przedstawienia mojego spojrzenia na tą problematykę.

    Zainspirował to może trochę mało powiedziane, powiedzmy że podrażnił moją duszę starego "Operusa".

    Norweskiej przeglądarki używam od początku swojego bytowania z komputerem PC, z początku powodem było podobieństwo do mechanizmów znanych z amigowej przeglądarki IBrowse której używałem wcześniej, teraz cenię sobie kompleksowość dostępnych w niej rozwiązań, nie trzeba instalować dodatkowych programów lub pluginów aby otrzymać funkcjonalność innych przeglądarek na rynku.

    Szczególnie podrażnił mnie fragment o przypisaniu stylów kaskadowych do konkretnej strony a mianowicie parametr @-moz-document dostępny w Firefoxie.

    Pomyślałem sobie wtedy, jak to, moja ulubiona przeglądarka miałaby w tym temacie mniejsze możliwości - nic z tego.

    Oczywiście pewnym rozwiązaniem są "preferencje dla witryny" w których można konkretnej stronie przypisać jej własny arkusz stylów użytkownika ale dla mnie to jednak mało elastyczne.

    Rozpocząłem prywatną korespondencję z Dawidem w wyniku której zagłębiłem się troszkę w temat skryptów userjs i tak powstały poniższe skrypty.

    Wcześniej temat interesował mnie w niewielkim stopniu i choć używałem zarówno pewnych userjs jak i usercss a te tutaj są pierwszymi jakie skleciłem więc siłą żeczy bazują na pewnych obecnych na sieci szablonach dlatego znawców js proszę o wyrozumiałość.

     

    Pierwszy skrypt używa styli kaskadowych generowanych podczas ładowania strony do usuwania powszechnie znanych upiększaczy-śmieci, domyślnie stosowany jest do wszystkich odwiedzanych witryn ale oczywiście można to skonfigurować w nagłówku skrytpu zmiennymi "// @include *" i "// @exclude *" "

     

    // ==UserScript==
    // @include  *
    // ==/UserScript==
    
    
    (function ()
    { 
    
    
    //   window.opera.addEventListener('BeforeScript',function(e) {
    //   document.addEventListener('load',function(e) {
    //   window.opera.addEventListener( 'BeforeEventListener', function (e) {
    //if (e.event.type != 'load')
    
    
    var myHandler = function myHandler(e) {
    
    if( location.pathname.match(/\.(txt|text|js|css|cpp|src)$/) ) { return; }
    
    var mystylesheet = ''
    +'applet, marquee, blink, .copyright, .sosumi, .tinywhite, span.storybox, .tiny, iframe,'
    +'[alt~="donate"], [alt~="Donate"], [title~="donate"],'
    +'[title="XHTML Friends Network"], [alt~="Advertisement"], [alt~="advertisement"], [href="http://wordpress.org"],'
    +'[alt~="powered"], [alt~="Powered"], [title~="powered"], [title~="Powered"], [alt~="XFN"], [title~="XFN"],'
    +'[title~="Donate"], [alt~="pajacyk"], [alt~="Paypal"], [alt~="PayPal"], [alt~="paypal"], [alt="Amazon Honor System"],'
    +'div[class*="banner"], div[class*="baner"], div[id*="baner"], div[id*="advert"], div[class*="ipla"],' 
    +'[alt~="twitter"], [alt~="Twitter"], [alt~="facebook"], [alt~="Facebook"], iframe[name="google_ads_frame"],'
    +'[alt~="Reklama"], [alt~="Reklama"], div[id="ad"], div[class="rekTop"], div[class="rek"], div[id*="ads"], div[id*="reklama"]'
    
    
     if (location.hostname.indexOf('wykop.pl') != -1 || location.hostname.indexOf('asus.com') != -1 || location.href.match(/^http:\/\/(www\.|images\.)?google\.(com|pl)\/imgres\?imgurl=/)  )
    {var mystylesheet = mystylesheet + '{display: none !important;}' + 'iframe'+ '{display: block !important;}'}
    else if (location.hostname.indexOf('youtube.com') != -1)
    {var mystylesheet = mystylesheet  +'{display: none !important;}' + 'div[id*="uploads"], embed[id*="movie_player"], embed[name*="movie_player"]'+ '{display: block !important;}'}
    else if (location.hostname.indexOf('experts-exchange.com') != -1)
    {var mystylesheet = mystylesheet + ',div[class="blurredBGImage315"]' +'{display: none !important;}'}
    else if (location.hostname.indexOf('mediafire.com') != -1)
    {var mystylesheet = mystylesheet + ',div[id*="catfish_div"]' +'{display: none !important;}'}
    else
    {var mystylesheet = mystylesheet  +'{display: none !important;}'}
    
    
    var wycinanka = document.getElementById('wycinanka.js');
    if(wycinanka == null)
    {
    
       var newstyle = document.createElement("style");
       newstyle.setAttribute('type', 'text/css');
       newstyle.setAttribute('id', 'wycinanka.js');
       newstyle.appendChild(document.createTextNode(mystylesheet));
       document.getElementsByTagName('head')[0].appendChild(newstyle);
    
    }
    
    else
    {return;}
    }
    
    window.opera.addEventListener('BeforeEvent.load',myHandler,true);
    
    window.opera.addEventListener('BeforeEventListener.load', function (){
    var wycinanka = document.getElementById('wycinanka.js');
    var wycinanka_str = document.getElementById('wycinanka_str');
    if(wycinanka_str != null)
    {return;}
    else
    {if(wycinanka != null)
    {    var newstr = document.createElement("div");
       newstr.setAttribute('style', 'display: none');
       newstr.setAttribute('id', 'wycinanka_str');
       newstr.appendChild(document.createTextNode("wycinanka!"));
       document.getElementsByTagName('body')[0].appendChild(newstr);}
    }
    },true);
    
    })();
    

     

    Drugi z moich skryptów jest nastawiony na elementy wyświetlające animacje i przede wszystkim filmy, tutaj z założenia wykluczone zostały w nagłówku strony których kwintesencją jest taka działalność jak np youtube:

     

    // ==UserScript==
    // @include  *
    // @exclude  http://www.youtube.com/*
    // @exclude  http://*.tvp.pl/*
    // @exclude  http://tvgry.pl/*
    // @exclude  http://vod.onet.pl/*
    // @exclude  http://fdb.pl/*
    // @exclude  http://www.gametrailers.com/video/*
    // @exclude  http://www.mojageneracja.pl/4142
    // @exclude  http://jerzybralczyk.bloog.pl/*
    // @exclude  http://www.interia.tv/*
    // @exclude  http://*.wp.tv/*
    // @exclude  http://wp.tv/*
    // @exclude  http://imageshack.us/*
    // ==/UserScript==
    
    
    (function ()
    { 
    
    var myHandler = function myHandler(e) {
    
    if( location.pathname.match(/\.(txt|text|js|css|cpp|src)$/) ) { return; }
    
    var mystylesheet = ''
    + 'object[type^="video"], object[type*="flash"], object[type*="shockwave"], embed[quality], embed, object[codebase], object[classid],'
    + 'object[classid="clsid:D27CDB6E-aE6D-11cf-96B8-444553540000"], object[classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000"],' 
    + 'object[type="application/x-shockwave-flash"], embed[type="application/x-shockwave-flash"], embed[type="application/x-director"],'
    + 'object[type="application/x-silverlight"], embed[type="application/x-silverlight"], object[type="application/x-silverlight-2"], embed[type="application/x-silverlight-2"],'
    + 'div[class="html5-player"], div[class="flash-player"], video[class="video-stream"], object[type="application/x-mplayer2"], div[class="videoPlayer"],' 
    + 'video, canvas, #contentVideo, div[class="video-content"], div[class*="video"], div[id="video-container"], div[class="playerBox"], div[id*="spot"], div[class="wrapper video"]'
    + '{display: none !important;}' 
    + 'object[data*="http://www.youtube.com/v"],embed[src*="http://www.youtube.com/v"]'+'{display: block !important;}'
    
    
    var antysyf = document.getElementById('antysyf.js');
    if(antysyf == null)
    {
    
       var newstyle = document.createElement("style");
       newstyle.setAttribute('type', 'text/css');
       newstyle.setAttribute('id', 'antysyf.js');
       newstyle.appendChild(document.createTextNode(mystylesheet));
       document.getElementsByTagName('head')[0].appendChild(newstyle);
    
    }
    
    else
    {return;}
    }
    
    
    window.opera.addEventListener('BeforeEvent.load',myHandler,true);
    
    window.opera.addEventListener('BeforeEventListener.load', function (){
    var antysyf = document.getElementById('antysyf.js');
    var antysyf_str = document.getElementById('antysyf_str');
    if(antysyf_str != null)
    {return;}
    else
    {if(antysyf != null)
    {    var newstr = document.createElement("div");
       newstr.setAttribute('style', 'display: none');
       newstr.setAttribute('id', 'antysyf_str');
       newstr.appendChild(document.createTextNode("antysyf!"));
       document.getElementsByTagName('body')[0].appendChild(newstr);}
    }
    },true);
    
    
    })();
    

     

    Trzeci ze skryptów został nastawiony na strony które próbują nas zmusić do oglądania wypocin ich sponsorów i blokuje kilka popularnych skryptów typu antiblock, w zależności od strony używa rożnych technik, nie tylko styli css:

     

    // ==UserScript==
    // @include       http://www.antiblock.org/*
    // @include       http://blog.maragnus.com/*
    // @include       http://jacklewis.net/*
    // @include       http://*.jacklewis.net/*
    // @include       http://purepc.pl/*
    // @include       http://*.purepc.pl/*
    // @include       http://wthl.redzoneleagues.com/*
    // @include       http://www.zshare.net/*
    // ==/UserScript==
    
    
    (function ()
    { 
    
    
     if (location.hostname.indexOf('blog.maragnus.com') != -1)
        {
          window.opera.defineMagicFunction('show_content', function ()
       {
         return false;
       }, null);
    
          window.opera.defineMagicFunction('check_ads', function ()
       {
         return false;
       }, null);
    
         window.opera.defineMagicFunction('watch_it', function ()
       {
        return false;
       }, null);
       }
    
     if (location.hostname.indexOf('jacklewis.net') != -1)
        {
         window.opera.defineMagicFunction('_enabled', function ()
       {  
         return false;
       }, null);
        }   
    
    
     if (location.hostname.indexOf('purepc.pl') != -1)
       {
        window.opera.defineMagicFunction('getCookie', function ()
      {
        return true;
      }, null);
       }
    
    
     if (location.hostname.indexOf('zshare.net') != -1)
       {
        window.opera.defineMagicVariable('trap_active', function ()
      {
        return true;
      }, null);
       }
    
    
    var myHandler = function myHandler(e) {
    
    if( location.pathname.match(/\.(txt|text|js|css|cpp|src)$/) ) { return; }
    
     var mystylesheet =  ''
     +'div[style*="z-index:9999"], div[style*="z-index: 9998"],'
     +'div[id="no_ad_message"]{display: none !important; visibility: hidden !important;}'
    
    
    var antiblock = document.getElementById('antiblock.js');
    if(antiblock == null)
    {
    
       var newstyle = document.createElement("style");
       newstyle.setAttribute('type', 'text/css');
       newstyle.setAttribute('id', 'antiblock.js');
       newstyle.appendChild(document.createTextNode(mystylesheet));
       document.getElementsByTagName('head')[0].appendChild(newstyle);
    
    }
    
    else
    {return;}
    }
    
    window.opera.addEventListener('BeforeEvent.load',myHandler,true);
    
    window.opera.addEventListener('BeforeEventListener.load', function (){
    var antiblock = document.getElementById('antiblock.js');
    var antiblock_str = document.getElementById('antiblock_str');
    if(antiblock_str != null)
    {return;}
    else
    {if(antiblock != null)
    {    var newstr = document.createElement("div");
       newstr.setAttribute('style', 'display: none');
       newstr.setAttribute('id', 'antiblock_str');
       newstr.appendChild(document.createTextNode("antiblock!"));
       document.getElementsByTagName('body')[0].appendChild(newstr);}
    }
    },true);
    
    })();
    

     

     

    I w końcu skrypt z którego jestem najbardziej zadowolony, otóż jest on skierowany na portal vod.onet.pl w ktorym można obejrzeć nie tyko większość seriali produkowanych przez TVN ale też sporo ciekawych produktów dokumentalnych.

    Niestety onet zupełnie olał użytkowników opery zwalając brak wsparcia na fakt, że takiego wsparcia w przypadku silverlighta nie udziela sam microsoft.

    Wcześniejsze wersje zupełnie się wykładały na tej stronie ale najnowsze już nie ale nadal nie pozwalają obejrzeć większości materiałów. Co ciekawe bez problemu działają materiały dla dzieci jak i część dokumentów.

    To wskazywałoby, że to nie silverligt sprawia problem ale co innego, moim spostrzeżeniem był fakt, że częścią wspólną materiałów odtwarzanych poprawnie był brak reklam wewnątrz filmu.

    Mimo, że niektórzy użytkownicy forum opery polemizowali z moim spostrzeżeniem to jednak okazało się ono słuszne czego dowodem poniższy skrypt.

    Co prawda problem sprawiają tylko spoty w środku filmu to jednak postanowiłem, że skrypt udostępniony na tym forum wytnie również te na początku filmu - skoro onet nas olewa to czemu mamy czuć się winni z tego powodu.

     

    // ==UserScript==
    // @include http://vod.onet.pl/*
    // ==/UserScript==
    
    
    
    (function ()
    { 
    
    if (location.hostname.indexOf('onet.pl') != -1)
    {
    
    var myHandler = function myHandler(e) {
    
    if( location.pathname.match(/\.(txt|text|js|css|cpp|src)$/) ) { return; }
    
    
    var mystylesheet =  '' +
    'div[id="playerka_plugin_ew_ctnr"] {display: none !important;}' +
    'div[id="playerka_plugin_ad_ctnr"] {display: none !important;}' +
    'div[id="promobox_plugin_ew_ctnr"] {display: none !important;}' +
    'div[class="platnosci"],div[id="platnosci"],div[class="abonamentBox rBox"]  {display: none !important;}' +
    'div[id="playerFoot"],div[class="adTitle"] {display: none !important;}' +
    'body {}' 
    
    
    
    var vodonet= document.getElementById('vodonet.js');
    if(vodonet== null)
    {
    
       var newstyle = document.createElement("style");
       newstyle.setAttribute('type', 'text/css');
       newstyle.setAttribute('id', 'vodonet.js');
       newstyle.appendChild(document.createTextNode(mystylesheet));
       document.getElementsByTagName('head')[0].appendChild(newstyle);
    
    }
    
    else
    {return;}
    }
    
    window.opera.defineMagicVariable('iel', function ()
    {
     return false;
    }, null);
    
     window.opera.addEventListener('BeforeEvent.load',myHandler,true);
    
     window.opera.addEventListener('BeforeScript', function (e)
     {
      e.element.text = e.element.text.replace('Opera','Firefox');
      e.element.text = e.element.text.replace('"ad_pre":1','"ad_pre":0');
      e.element.text = e.element.text.replace('"ad_post":1','"ad_post":0');
      e.element.text = e.element.text.replace('"views_left":-1','"views_left":0');
    
      e.element.text = e.element.text.replace(/this.ad_pre&&typeof this.obj!='undefined'/g,"0!=0");
      e.element.text = e.element.text.replace(/"markers":\[\{"id".*"ad"\}\]/,'"markers":[]');
     }, false);
    
    
    
    window.opera.addEventListener('BeforeEventListener.load', function (){
    var vodonet= document.getElementById('vodonet.js');
    var vodonet_str = document.getElementById('vodonet_str');
    if(vodonet_str != null)
    {return;}
    else
    {if(vodonet != null)
    {    var newstr = document.createElement("div");
       newstr.setAttribute('style', 'display: none');
       newstr.setAttribute('id', 'vodonet_str');
       newstr.appendChild(document.createTextNode("vodonet!"));
       document.getElementsByTagName('body')[0].appendChild(newstr);}
    }
    },true);
    
    }
    
    
    
    })();
    

     

    Skrypt dodatkowo ogłupia mechanizm rozpoznawania przeglądarki więc nie musimy ustawiać maskowania.

     

     

    Cechą skryptów userjs jest fakt, że wywołują się tylko raz najczęściej podczas ładowania strony (choć można ustawić fokus na inne zdarzenie) dlatego jeżeli są style kaskadowe które włączamy i wyłączamy dynamicznie to nie warto ich przerzucać do js na siłę.

    Warto też zainstalować sobie w belce przycisk do włączania i wyłączania userjs np z tej strony http://userjs.org/help/resources/toggle-user-javascript , przełączenie userjs działa globalnie więc należy pamiętać o jego statusie przed załadowaniem/przeładowaniem innej strony niż ta dla której używaliśmy przełącznika.

     

    to tyle na ten moment, troch dużo tekstu jak zwykle u mnie :) ale myślę, że same skrypty mogą być przydatne.

     

    ps - oczywiście podobnie jak przy stylach użytkownika tak przy userjs można w preferencjach witryny ustawić alternatywny/własny zestaw skryptów, w tym przypadku podajemy katalog, jeżeli z jakiegoś powodu dla jakiejś witryny chcemy skrypty wyłączyć podajemy pusty katalog lub pusty wpis.

     

    Aktualizacja 12.07.2010 - troszkę przebudowane skrypty, dodane kilka definicji, przeniesiona do właściwych skryptów, wyeliminowane błędy (głównie typu brak , lub '' )

     

    Aktualizacja 20.07.2010 - kolejne poprawki - mała zmiana momentu wywołania skryptów, dodatkowy wrunek pilnujący, aby skrypt wykonał się tylko podczas ładowania strony (na niektórych witrynach stara wersja potrafiła zamulić np przy przewijaniu),

    skrypty wstawiają znaczniki do kodu strony dzięki którym można stwierdzić, czy kod na danej stronie się wykonał (w dragonfly oczywiście),

    podejście do tematu wyjątków w pierwszym skrypcie - style dla iframe wykluczone na witrynie wykop (i test.pl :) )

     

    Aktualizacja 31.07.2010 - poprawka pierwszego skryptu który wycinając za dużo uniemożliwiał przeglądanie plików w kanałach użytkownika na youtube, mała zmiana w wyjątkach ułatwiająca ich wprowadzanie (jeżeli zajdzie taka potrzeba), wyjątek dla ifame dla google dotyczy wyłącznie podstrony na której to jest potrzebne a nie całej domeny.

     

    Aktualizacja 06.10.2010 - Zmiany na Vod.onet.pl (nowe wersje playerów) spowodowały potrzebę odświeżenia skryptu.

     

    Aktualizacja 10.10.2010 - Małe poprawki w skrypcie dla vod, pozostałe skrypty w wersji jakiej używam na dziś, kilka bardziej przemyślanych wykluczeń, w skrypcie do flashy sposób na nie wycinanie embedów z youtuba, w antiblocku dodany zshare.

    pzdr

  7. XP z kluczem SLP da się zainstalować bez problemu, nowe wersje VBoxa mają w konfigu opcję DmiBIOSVendor w której można wpisać dowolnego producenta, oczywiście nie każdy zadziałaa (vide dell).

    Do kompletu potrzeba jeszcze plików oembios (sig ,dat, cat, bin) danego producenta a klucz podaje sam MS:

    Klucze SLP.

     

    Niestety wyższe wersje stanowią większy problem, nie da się podpiąć slic-a bo nie mamy dostępu do biosu, tutaj lepiej jest z vmware. w przypadku Vboxa istnieją wersje OSE do samodzielnej kompilacji z wprowadzonym patchem pozwalającym na podanie slica z pliku ale ja nie miałem z nimi styczności.

     

    pzdr

  8. Uwaga!!!

    Ponieważ siłą rzeczy temat się trochę rozrósł (tematyka jest dość obszerna), jeżeli nie interesują cię podstawy a chcesz uzyskać efekt najmniejszym nakładem proponuję:

    Ściągamy plik odpowiedzi autounattend.xml : autounattend.xml lub autounattend.xml jest to wersja dość minimalistyczna

    Jeżeli nie interesuje nas mechanizm SLP dodatkowo wywalamy sekcję:

     

     
             <FirstLogonCommands>
                  <SynchronousCommand wcm:action="add">
                       <Order>1</Order>
                       <RequiresUserInput>false</RequiresUserInput>
                       <Description>Install OEM certificate</Description>
                       <CommandLine>cmd.exe /c cscript %windir%\system32\slmgr.vbs -ilc %windir%\System32\OEM\certyfikat.xrm-ms</CommandLine>
                   </SynchronousCommand>
               </FirstLogonCommands>]
    

     

    Nie musimy tworzyć nowej płyty ani też preparować nośnika usb aby zastosować ten plik - wystarczy wrzucić plik do głównego katalogu pendriva i podczas instalacji z płyty podpiąć pena do komputera.

    Setup powinien automatycznie wykryć i użyć tego pliku. Na penie można też umieścić katalog $OEM$.

    Instalujemy system

    Ściągamy imagex.exe (do znalezienia w sieci nawet bez potrzeby ssania całego WAIK)

    Następnie ściągamy masterscriptwim.vbs lub masterscriptwim.vbs

    Umieszczamy oba na pulpicie i odpalamy masterscriptwim.vbs

    I to tyle, niezależnie czy zdecydujemy się zapieczętować czy nie (w przypadku powyższego pliku odpowiedzi lepiej nie pieczętować) po kilku minutach mamy gotowy system z recoverem pod F9

     

     

    pzdr

    23.07.2010 - Ponieważ wklej.org ostatnio miewa kłopoty wszystkie skrypty zostały dodatkowo wrzucone na wklej.to, w teście znajdują się linki do obu serwisów

     

    22.08.2010 - Update > Powyżej napisałem, że na penie można umieścić katalog $OEM$, wymaga to sprecyzowania - otóż katalog ten umieszczamy w głównym katalogu pendriva (nie w katalogu sources) a plik autounattend musi w fazie WINPE zawierać wpis:

     

     <UseConfigurationSet>true</UseConfigurationSet>

     

    Na wklej.to i wklej.org znajduje się poprawiony plik autounattend.xml.

     

    29-08.2010 - na wklejach dostępna jest nowa wersja skryptu masterscriptwim która działa przy włączonym uac - po kliknięciu na plik pojawi się standardowy monit administracyjny.

  9. Przyszła pora na inne podejście.

    Jak obiecałem na początku cyklu będzie to recovery przywracający w pełni to co zrzucimy.

    W przeciwieństwie do wcześniej przedstawionego rozwiązania tym razem mamy pełną dowolność w przygotowaniu i customizacji partycji z systemem, możemy pracować na dowolnym koncie, w trybie audytu, pieczętować lub nie wedle uznania.

    Oczywiście nie wszystkie scenariusze mają taki sam sens ale nie powodują żadnych dodatkowych perturbacji same z siebie.

     

    Oto skrypt automatyzujący cały proces:

     

    masterscriptwim.vbs lub masterscriptwim.vbs Skrypt powinien się nazywać masterscriptwim.vbs i zostać uruchomiony z prawami administratora w towarzystwie pliku imagex.exe, najwygodniej z pulpitu.

     

    Skrypt podobnie jak poprzednio tworzy tymczasową kopię środowiska winpe na podstawie pliku winre.wim ale tym razem tworzy też drugą kopię, tym razem stałą, która będzie używana jako środowisko odzyskiwania.

    Tym razem systemowy mechanizm recovery nie zostaje włączony poleceniem reagentc.exe jednakże skrypt dodaje opcję uruchomienia środowiska recovery po przerwaniu sekwencji startowej klawiszem F8, odpowiednią opcję dodałem w sekcji tools obok systemowego testera pamięci.

    Tak jak poprzednio po złapaniu obrazu pliki tymczasowe zostaną wyczyszczone.

    Do środowiska odzyskiwania dostajemy się i tym razem klawiszem F9, pojawią się dwa monity widoczne na poniższych obrazkach ostrzegające o wyczyszczeniu danych na partycji systemowej (tym razem zostaje ona sformatowana przed przywróceniem obrazu).

     

    windows720100629195136.th.pngwindows720100629195141.th.png

     

    Tak jak poprzednio system działa w oparciu o skrypty vbs, dzięki dostępności w standardowym środowisku winre odpowiedniej funkcjonalności nie musimy tworzyć ekstra nowego środowiska PE i całość ładnie zautomatyzować.

    Jeżeli ktoś chce uzuskać ładniejsze menu/monity należy zwrócić się w kierunku aplikacji HTA jednakże to już wymaga zbudowania nowego środowiska winpe, wkrótce opiszę odpowiednią procedurę.

     

    W następnej kolejności przedstawię system oparty o ghosta, wymaga on zasadniczo tylko zastąpienia pliku imagex plikiem ghost i zmiany zaledwie 4 linijek w pliku (i skasowania kilku gdyż w przypadku ghosta nie trzeba formatować partycji przed przywróceniem.

    Użycie ghosta zamiast imagexa ma jednak pewną wadę - mianowicie ghost nie pomija automatycznie pewnych śmieci (plik hibernacji, punkty przywracania, kosz itp) dlatego warto rozważyć w tym przypadku rezygnację z przechwytywania automatycznego na rzecz ręcznie przygotowanego systemu w którym będzie można najpierw posprzątać system prze przechwyceniem. Co wy na to? czekam na sugestie. Można też spróbować skryptów czyszczących, co prawda może być problem z prawami dostępu ale z drugiej strony środowisko PE automatycznie pracuje na koncie "System" i kasowanie np. "System Volume Information" nie powinno mu sprawić problemów.

     

    Podczas prac nad tym cyklem troszeczkę poznęcałem się nad instalacją nienadzorowaną i spotkałem kilka ciekawych zagadnień (zwłaszcza dotyczących instalacji sterowników) które warte by były oddzielnego artykułu i tu znów pytanie, czy jesteście zainteresowani tą tematyką ?

    pzdr

  10. System nam się zainstalował więc w końcu możemy przejść do clue.

    Ale na początek znów trochę pieprzenia (znaczy się teorii).

    Kiedy MS wraz z wprowadzeniem Visty zaprezentował nowy magazyn do przechowywania konfiguracji startowych a konkretnie plik BCD zawarł w nim funkcję pozwalającą przypisać dowolny wpis startowy do jednego z klawiszy.

    Oficjalnie obsługiwane są klawisze od F1 do F12 z wyłączeniem z przyczyn obiektywnych klawiszy F8 i F5 które mają od dawna (od MS DOS) przypisaną inną rolę.

    I wszystko byłoby by fajnie gdyby nie fakt, że jest to chyba najsłabiej udokumentowana funkcjonalność w historii systemów Microsoftu. Na dodatek edytory BCD dostępne na rynku mają bardzo ubogą ilość funkcji i próżno w nich szukać możliwości edycji tych ustawień.

    Ale jako człowiek dociekliwy przebadałem ten aspekt konfiguracji i mogą wam przedstawić nie tylko coś co da się stworzyć narzędziami systemowymi związanymi z mechanizmem recovery ale też pokażę jak przypisać funkcje startowe do kilku klawiszy równolegle.

    Przykładem może być choćby opcja uruchomienia systemu XP z pomocą klawisza kiedy domyślnie uruchamianym jest Win 7 bez potrzeby wyświetlania menu startowego.

     

    Teraz do rzeczy.

    W pierwszej kolejności zbudujemy sobie system w oparciu o standardowy Windows Recovery Enviroment, zaletą takiego rozwiązania jest jego dostępność w każdej instalacji siódemki i niewielki nakład pracy potrzebny do uruchomienia jego funkcjonalności.

    Największą wadą (choć zapewne będą i tacy którzy dostrzegą w tym zaletę) jest fakt, że tak zbudowany system jest przy przywracaniu nabudowywany na już istniejącą instancję, stary system po przywróceniu nowego ląduje w katalogu windows.old i tak każde kolejne przywracanie dodaje nam kolejny katalog, oczywiście można go skasować ale dla grupy do której kierujemy taką instalację może to nie być oczywiste.

    Ponieważ w tym trybie system podczas przywracania jest de facto instalowany zmniejsza się nam elastyczność takiego zestawu, działa on prawidłowo zasadniczo tylko w przypadku kiedy ustawień dokonamy na koncie administratora a następnie zapieczętujemy system..

    W przypadku instalacji nadzorowanej nie przeskoczymy OOBE po każdym przywróceniu, w przypadku customizacji z innego konta niż administrator przy przywracaniu nie wykonuje się ostatnia faza instalacji co powoduje pozostawienie w systemie śmieci po instalacji.

    Z tym ostatni radzi sobie skrypt który zaprezentuję ale jest to w nim dość duża komplikacja.

     

    Co musimy zrobić aby uruchomić ten system, pozornie niewiele ale dość dużo do przeklikania dlatego bez skryptu jest to zabawa na dłuższą metę dla masochistów choć jednorazowo można i ręcznie, w końcu ja napisałem skrypt który to robi obudowując go całą otoczką vbscriptu.

    Po pierwsze musimy przenieść standardowy recovery na partycję rozruchową do nowego katalogu, żeby to było możliwe trzeba wbudowany mechanizm na czas operacji wyłaczyć (jeżeli był włączony)

    Następnie musimy wykonać kopię przeniesionego środowiska winre którą wykorzystamy do automatycznego złapania obrazu partycji systemowej.

    Musimy ustawić wpis startowy dla naszego tymczasowego "przechwytywacza" który wykona się tylko raz a następnie zostanie usunięty.

    Wreszcie musimy ustawić konfigurację WRE na nowy katalog i ustawić klawisz który będzie wymusza jego uruchomienie.

    I na koniec wypadałoby trochę po sobie pozamiatać, skrypt usuwa siebie samego i wszystkie towarzyszące pliki i katalogi tymczasowe, usuwany jest też tymczasowy plik wim.

     

    Oto sam skrypt:

    masterscript.vbs lub masterscript.vbs

     

    Plik powinien mieć nazwę masterscript.vbs, do takiej nazwy odwołują się wewnętrzne funkcje, aby zadziałał należy go umieścić na pulpicie obrabianego systemu wraz z plikiem imagex.exe.

    W przypadku gdy jednak zdecydujemy się pracować na koncie innym niż administrator pamiętajmy o odpaleniu skryptu z odpowiednimi poświadczeniami.

    Na koniec pierwszej fazy (przed restartem) skrypt zapyta czy chcemy system zapieczętować - polecam odpowiedź twierdzącą, inne opcje lepiej będzie rozważyć przy następnych metodach przywracania które pojawią się w tym cyklu.

    Skrypt podczas pieczętowania odwołuje się do minimalistycznego pliku odpowiedzi instalacji nienadzorowanej który pozwala założyć automatycznie konto przy przywracaniu systemu i przeskoczyć OOBE ale tylko jeśli system został zainstalowany w trybie nienadzorowanym.

     

    I kilka obrazków:

     

    Skrypt i imagex na pulpicie - odpalamy

    windows720100624173106.th.png

     

    Na pulpicie pojawiają się i znikają pliki tymczasowe generowane przez skrypt

    windows720100624173121.th.png

     

    Czas podjąć decyzję

    windows720100624173304.th.png

     

    Ja system pieczętuję

    windows720100624173311.th.png

     

    Uruchamia się tymczasowy windows pe i przechwytuje partycję systemową

     

    windows720100624173626.th.pngwindows720100624173710.th.pngwindows720100624173800.th.png

     

    Aby system Recovery zaczął działać trzeba choć raz zalogować się do systemu, dopiero po tym będzie aktywny klawisz przechwytujący (w przykładzie F9).

     

    Potem wystarczy tylko przy self teście przytrzymać F9 i opali się WRE a w nim dodatkowa opcja:

     

    windows720100622023226.th.png

     

    To tyle na razie, w następnej kolejności opiszę system który będzie przywracał system na czysto w postaci w jakiej go zrzucimy czy to z pomocą imagexa z pliku wim czy też ghostem plus proste komunikaty ostrzegające przed utratą danych.

     

    pzdr

  11. Taka instalacja daje nam o wiele większe możliwości wpływania na samą instalację, dodatkowo ma kilka ficzerów które okazują się bardzo przydatne przy przygotowaniu systemu recovery.

    Zamieszczę tutaj przykładowy plik odpowiedzi dla instalacji.

    Dla standardowych nośników należy go umieścić w katalogu root pod nazwą autounattend.xml, dla szczęśliwych posiadaczy systemów opartych o winpe komenda odpalająca setup powinna się odwołać do tego pliku przy czym może mieć on wtedy dowolną nazw:

    "\sources\setup.exe /unattend:nazwa.xml

     

    Plik w całości znajduje się tutaj:

    autounattend.xml lub autounattend.xml

     

    Miałem zamiar zamieścić go na forum ale wygląda to dość pokracznie i nieczytelnie dlatego tylko opiszę poszczególne sekcje

    Standardowy nagłówek dla pliku odpowiedzi:

     

    <?xml version='1.0' encoding='utf-8'?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">

     

    jak widać plik powinien być zapisany w formacie utf-8

     

    Pierwsza sekcja pliku (tak zwana faza) to "windowsPE" a w niej przebiegi : "Microsoft-Windows-Setup", "Microsoft-Windows-International-Core-WinPE" i Microsoft-Windows-PnpCustomizationsWinPE

    Tą ostatnią wskazującą na katalog ze sterownikami można pominąć w przypadku standardowych nośników, wystarczy katalog $WinPEDriver$ umiescić w katalogu root nośnika instalacyjnego. Oczywiście jeżeli nie zależy wam na instalacji sterowników można ją w ogóle pominąć.

    Zasadniczo to co najważniejsze w tej sekcji to konfiguracja dysku <DiskConfiguration>, oczywiście i tutaj obowiązuje zastrzeżenie dotyczące wielkości partycji systemowej, jeżeli chcemy ograniczyć jej wielkość należy dodać fragment <Size> tutaj rozmair</Size> do drugiej partycji.

    W tej sekcji też konfigurujemy parametry językowe dla instalatora.

    Tutaj też podajemy zarówno źródło jak i cel instalacji <ImageInstall>. Źródło możemy wybrać na podstawie klucza produktu jak i indeksu w pliku wim przy czym ta druga wersja jest precyzyjniejsza dla rozbudowanych źródeł instalacji zawierających w pliku install.wim wiele różnych systemów i/lub ich wersji, w przypadku podania źródła wg klucza jeżeli instalator znajdzie kilka pasujących wpisów pojawi się okno wyboru.

    Podany tutaj klucz wg instrukcji MS służy tylko do ww celów i może się różnić od klucza podanego dla celów aktywacji. O ile w przypadku Visty sp1 podany tutaj klucz był później ignorowany to w przypadku siódemki zdaje się wystarczać również do celów aktywacji. Na wszelki wypadek mój przykładowy plik odpowiedzi pokazuje wszystkie możliwe sposoby podania klucza które mogą ze sobą koegzystować.

    Celem instalacji jest oczywiście partycja druga na dysku o identyfikatorze 0.

     

    W drugiej sekcji zwanej "specialize" podajemy dane producenta systemu (w przykładzie wskazują na nasze ulubione forum :) ), klucz produktu (to jest metoda podawana przez MS jako właściwa), i ustawiamy sobie linki ulubione IE (znów w przykładzie Fixit).

    Sekcja Microsoft-Windows-LUA-Settings nie ma zasadniczo znaczenia dla mojego cyklu ale pokazuje jak w łatwy sposób wyłączyć ochronę konta administratora z poziomu instalatora.

     

    Ostatnia interesująca nas faza "oobeSystem" ustawia nam automatyczne logowanie - tu na konto administratora.

    Uwaga! na sieci można w tym przypadku znaleźć konstrukcje typu <LogonCount>9999</LogonCount> które są do niczego niepotrzebne, nie podanie opcji <LogonCount> powoduje włączenie nieograniczonej ilosci autologowań na dane konto.

    Dodatkowo w sekcji <OOBE> wyłączymy sobie niepokojenie nas podczas pierwszego startu systemu.

    Dzięki takim ustawieniom będziemy ustawiać system bezpośrednio na koncie administratora co jest o wiele wygodniejsze od audytu i pozwala nam skustomizować taki system w sposób który zostanie zapamiętany przez system.

    W tej fazie też mamy sekcję która pozwala nam ustawić domyślny temat pulpitu z jakim system się zainstaluje co w połączeniu z możliwością edycji plików .theme daje duże możliwości wpłynięcia na to co się rzuca w oczy w pierwszej kolejności.

    W sekcji <FirstLogonCommands> możemy umieścić komendy które się wykonają podczas pierwszego uruchomienia systemu zaraz przed pojawieniem się pulpitu. Możemy tutaj zainstalować różne programy czy wprowadzić niestandardowe ustawienia (np edycja rejestru) niedostępne bezpośrednio w pliku odpowiedzi, Komendy te wykonują się synchronicznie wg kolejności ustalonej w tagach <Order>.

    W przykładzie za pomocą tej sekcji instalowany jest certyfikat producenta sprzętu dla aktywacji SLP, trzecia z metod podania klucza instalacji, instalowany jest pakiet oprogramowania VMWARE i MSE z pakitu OPK.

    Uwaga! na sieci dla klucza można spotkać konstrukcję typu slmgr.vbs -ipk [2V8P2-QKJWM-xxxxx-xxxxx-xxxxx] która nie zadziała.

    Ponieważ ja przeprowadzam instalacje z zasobu sieciowego ścieżki odwołują się do udostępnionej ścieżki, w przypadku nośnika najlepiej posiłkować się katalogiem $OEM$\$1 a następnie skasować instalery np taką komendą:

    <CommandLine>cmd.exe /c rmdir /Q /S c:\instalki</CommandLine>

     

    Plikowi odpowiedzi towarzyszy katalog $OEM$ skustomizowany pod nasze forum który można znaleźć tutaj (oczywiście zamieszcony ceryfikat to fake).

     

    katalog oem

     

    No i kilka obrazków z instalacji z pomocą mojego zestawu - obraz mówi za siebie:

     

    windows720100623183615.th.pngwindows720100623183623.th.pngwindows720100623183638.th.png

    I tyle - reszta zrobi się sama

    windows720100623183647.th.pngwindows720100623183733.th.pngwindows720100623184345.th.pngwindows720100623184500.th.pngwindows720100623184512.th.pngwindows720100623184855.th.pngwindows720100623185048.th.pngwindows720100623185352.th.png

     

    I bez żadnej ingerencji wita mnie gotowy system:

     

    windows720100623185528.th.png

     

     

    W pliku odpowiedzi tagi są przypisane do wersji 32 bitowej systemu, dla wersji 64 bit należy je zmienić wg schematu:

     

    <component name="Microsoft-Windows-Setup" processorArchitecture="x86" ............... >

    zamieniamy na

    <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" ............... >

     

    Dodatkowo należy pamiętać, że dana faza zostanie wykonana tylko jeżeli nie ma wstawionej informacji o tym, ze już się wykonała:

     

    czyli

    <settings pass="windowsPE">

    a nie

    <settings pass="windowsPE" wasPassProcessed="true">

     

    pzdr

  12. Dla czystej formalności wypada napisać aby pamiętać o ustawieniu w biosie odpowiedniej ścieżki botowania dla nośnika instalacyjnego bądź posłużenia się bootmenu płyty głównej.

     

    Przechodzimy standardowe fazy instalacji:

     

    windows720100622000719.th.pngwindows720100622000740.th.pngwindows720100622000748.th.png

     

    aż dojdziemy do etapu:

     

    windows720100622000814.th.png

     

    W tym momencie wciskamy kombinację "SHIFT + F10" aby odpalić linię komend:

     

    windows720100622000804.th.png

     

    Tutaj ustawimy sobie parametry naszego dysku, jak już pisałem partycję boot ustawimy na 10GB i dodtatkowo zmienimy jej identyfikator na 27.

    wydajemy po kolei komendy:

    diskpart > select disk 0 > clean > create partition primary size=10240 > create partiton primary* > select partition 1 > format fs=ntfs label="RECOVERY" quick > active > setid id=27 override > select partition 2 > format fs=ntfs label="Windows 7" quick > exit

     

    * - jeżeli chcemy utworzyć oddzielne partycje na dane należy tutaj podać rozmiar partycji systemowej, wygląda to mniej więcej tak jak na obrazku:

     

    windows720100622014248.th.png

     

    Zamykamy okno i wybieramy instalację niestandardową:

     

    windows720100622002544.th.png

     

    Potem wskazujemy jaką miejsce instalacji partycję drugą:

     

    windows720100622014302.th.png

     

    Instalacje biegnie osbie dalej własnym torem aż do momentu pojawienia się okna OOBE (doświadczenie pozapudełkowe :) ):

     

    windows720100622004306.th.png

     

    Tutaj podejmujemy decyzję czy wejść w tryb audytu czy założyć konto. Wszystko zależy od tego jaką koncepcję dla przywracanego systemu przyjmiemy. zależnie od podjętej decyzji trafimy na następne kłopoty przy zamykaniu systemu. Dotyczą one zasadniczo pierwszej z metod przywracania jaką opiszę ale wszystko omówię później na razie przyjmiemy sobie, że wchodzimy w tryb audytu. W tym celu należy wcisnąć na powyższym ekranie kombinację "CTRL + SHIFT + F3".

     

    System odpali się z oknem sysprepa które możemy zamknąć:

     

    windows720100622005411.th.png

     

    Następnie instalujemy certyfikat (jeżeli takowy mamy) oraz klucz instalacji:

     

    windows720100622011134.th.png

     

    W przypadku systemu SLP będzie on już w tym momencie aktywowany:

     

    windows720100622011147.th.png

     

    Systemu nie slp nie warto w tym momencie aktywować, po przywróceniu pierwszą z metod i tak będzie wymagał ponownej aktywacji.

     

    I to tyle standardowej instalacji przejdźmy do wersji nienadzorowanej (w następnym poście)

  13. Witam

    Co prawda opisywanie procesu instalacji systemu jest lekką przesadą ale ponieważ mamy do podjęcia kilka decyzji uwzględniających specyficzne założenia naszego zestawu.

    Oczywiście wszystko co tutaj założymy jest opcjonalne ale -może poza rozmiarem partycji- zaręczam jest to wersja najwygodniejsza w kontekście działań następnych.

    Same instalacje przeprowadzałem za pomocą mojego zestawu usb/net, w tym przypadku wersja net z pomocą PXE, instalacje przeprowadzane były na podwójnej maszynie wirtualnej, jako serwer TFTP i PLIKÓW służył system XP z pakietem hanewim (serwer htcp z wbudowanym TFTP).

    Dla potrzeb instalacji została założona nowa maszyna z dyskiem ustawionym na 30GB.

    Po co te informacje?

    Oczywiście instalacje tego typu przeprowadzałem już wcześniej wielokrotnie a sama maszyna wirtualna posłużyła do budowy i przetestowania skryptów automatyzujących jednakże doświadczenia wcześniejsze nauczyły mnie, ze miedzy maszyną wirtualną a fizyczną mogą pojawić się różnice w działaniu środowiska WinPE ale miejmy nadzieję, że wszystko zadziała jak należy.

     

    Opiszemy sobie dwa typy instalacji nienadzorowaną i (no kto zgadnie|) nadzorowaną. Zaczniemy od tej drugiej aby potem stwierdzić, że jest to opcja jednorazowa i docelowo będziemy się skupiać na wersji nienadzorowanej do której pojawią się odpowiednie skrypty, przy okazji wytkniemy kilka nieścisłości które funkcjonują w sieci przy opisach plików odpowiedzi i są nad wyraz często powielane, na dodatek niektóre wspiera oficjalna dokumentacja MS dołączona do pakietów OPK i WAIK.

    Jak już wcześniej nadmieniałem opiszę instalację od podstaw na czysto, ewentualne zagadnienia już zainstalowanych systemów pozostawimy sobie na później (oczywiście pod warunkiem, że pojawi się zainteresowanie).

     

    Trzy podstawowe założenia instalacji to ilość partycji, wielkość partycji recovery, rodzaj partycji recovery.

    Ilość partycji - dwie , pierwsza recovery będąca jednocześnie partycją boot (aktywną), oczywiście można założyć więcej partycji na dane tutaj decydujemy tylko o tym, że łączymy partycję recovery ze standardową dla win 7 partycją boot.

    Wielkość partycji zależy od tego ile śmieci (przepraszam programów i narzędzi) chcemy w niej umieścić domyślnie - podstawowy system ze sterownikami śmiało da się upchnąć w 5GB ale to minimalizm, uważam że najsensowniejsza będzie wielkość 10GB i taką wielkością będę operował w przykładach.

    Rodzaj partycji a zasadniczo jej identyfikator - rozsądnym pomysłem jest ukrycie takiej partycji przed użytkownikiem i utrudnienie mu dobrania się do niej, dlatego domyślnym założeniem jest partycja typu 0x27 w nomenklaturze MS opisywana jako typowa partycja recovery, do takiej partycji nie ma dostępu z poziomu graficznego konfiguratora dysków w windows (choć diskpart da radę). Oczywiście można zastosować inne typy partycji - choćby powszechną opcję 0x12 - ale nie gwarantuję, że zadziała poprawnie.

    Na wszelki wypadek w przykładach i skryptach w miarę możliwości będę posługiwał się ścieżkami bezwzględnymi unc, tutaj znów coś zakładając - a mianowicie operacje odbywają się na dysku o identyfikatorze 0.

     

    Dla pełnej swobody wyboru w przypadku standardowych nośników MS należy je lekko przerobić, a mianowicie usunąć z katalogu sources plik ei.cfg, dzięki temu nośnik staje się uniwersalny i można z niego instalować dowolną edycję z danej serii.

    Jeżeli przerabiamy brandowanaą maszynę na której już istnieje instalacja systemu warto się upewnić czy nie mamy do czynienia z systemem typu SLP, jeżeli tak dobrze byłoby odczytać klucz użyty do tej instalacji i zgrać odpowiadający danemu producentowi certyfikat.

    Dzięki temu będziemy mogli postawić system niewymagający aktywacji na certyfikowanej maszynie. Oczywiście nie ma problemu ze znalezieniem w sieci zarówno certyfikatów jak i kluczy dla większości popularnych producentów (zresztą same klucze w przeciwieństwie do certyfikatów są przypisane do sprzętu) ale najczęściej z intencją obejścia procesu aktywacji a tym nie będziemy się zajmować i nie mam zamiaru promować tutaj takich stron.

    Klucz można odczytać np. programem ProduKey Nirsoftu:

    ProduKej

    Oczywiście należy jeszcze stwierdzić czy jest to klucz SLP, i w tym przypadku można znaleźć n w/w stronach odpowiednie programy ale wg mnie wystarczy porównać ten klucz z tym na nalepce licencyjnej, jeżeli są różne to instalacja na pewno została zrobiona kluczem SLP, dodatkowo upewni nas w tym przekonaniu obecność certyfikatu.

    Certyfikat to plik z rozszerzeniem XRM-MS który najczęściej znajduje się w katalogu "windows/system32/OEM' lub w podkatalogu katalogu "windows/panher", czasami występuje tylko na dołaczonej płycie recovery lub stosownej partycji i nie jest kopiowany na partycję z systemem. w nazwie samego pliku z reguły występuje nazwa producenta lub modelu danej maszyny mp:

    ACER-ACRSYS-2.1.XRM-MS, TOSCPL00-TOSCPL-2.1.XRM-MS, SAMSUNG-SECCSD-2.1.XRM-MS

     

    Dla przejrzystości przejdźmy do następnego posta.

  14. Dla tych którzy się niecierpliwią informacja:

    Zwlekam z rozpoczęciem do czasu pełnego przetestowania skryptu automatyzującego cały proces który cały czas ewoluuje .

    Co prawda zadanie które skrypt ma wykonać nie jest jakoś skomplikowane ale jest kilka założeń które powodują, że się on rozrasta.

    Po pierwsze uniezależnienie skryptu od liter przypisanych partycjom - konia z rzędem temu kto zgadnie dlaczego objFSO działa prawidłowo ze ścieżkami unc w przypadku tworzenia czy kasowania plików lub folderów ale kompletnie nie radzi sobie z kopiowaniem :)

    Po drugie chęć zawarcia w jednym skrypcie scenariuszy w których system dla recovera będzie zarówno zapieczętowany jak i niezapieczętowany.

    I wreszcie działanie z ukrytymi partycjami a w szczególności typem 0x27 czyli typową partycją Recovery choć i z 0x12 powinien działać .

     

    Oto jak to ewolucja skryptu wygląda w pkratyce:

    Wersja obecna (zdaje się, że już wszystko działa ale testy trwają):

    obecny skrypt lub obecny skrypt

     

    a tak wyglądał dwa dni wcześniej (składał się z oddzielnych kawałków i działał do czasu próby ukrycia partycji):

    część pierwsza w pliku cmd lub część pierwsza w pliku cmd

    część druga uruchamiana w przypadku braku pięczętowania lub część druga uruchamiana w przypadku braku pięczętowania

     

    W międzyczasie dodałem też dodatkową funkcjonalność w moim poprzednim "dziele" a mianowicie instalatorze USB/NET - obsługę skryptów diskparta przy instalacji (+dodatkowo autorestart winpe przydany przy czysto bezdotykowej instalacji)

    tak to wygląda dla xpekowatych i vistowatych

    13929018.th.png32618913.th.png

     

    A tu samo menuw aktualnej wersji: menu.hta lub menu.hta

     

    Jeżeli jest zapotrzebowanie na ponowne opisanie takiego pendriva na nowym forum dajcie znać, postaram się zrobić to w sposób bardziej przejrzysty i dorzucić jakieś skrypty które zautomatyzują choćby proces przygotowanie środowiska winpe, można też pomyśleć nad wersją z samą Vistą (i automatycznie całą linią 7, 2008 i R2).

     

    pzdr

  15. System Recovery "prawie" profesjonalnie i kompleksowo

    Przygotowanie instalacji z opcją partycji recovery

     

     

    Zaczynam dziś nowy tutorial zawierający opis przygotowania systemu operacyjnego do zastosowania z partycją Recovery.

    Założeniem jest uzyskanie efektu jak najbliższego temu co oferują producenci brandowych komputerów na dowolnej maszynie, zresztą warianty opisanych tutaj metod również są stosowana przez markowych producentów.

    Niektórzy zapytają po co to wszystko skoro przeglądając zarówno krajowe jak i zachodnie fora internetowe można odnieść wrażenie, że większość użytkowników raczej zastanawia się jak taką partycję usunąć a nie jak ją tworzyć.

    Po części jest to oczywiście prawda ale należy wziąć poprawkę na to, że wiele fabrycznie przygotowanych systemów jest bardzo zagracona prze różnej maść mniej lub bardzie wkurzające (potrzebne) narzędzia, często w wersji trial które nie tylko zajmują miejsce ale często w wyraźny sposób zamulają komputerki co (zwłaszcza na laptopach) bywa frustrujące.

    Dlatego uważam, że wielu z takich użytkowników chętnie pozbywających się fabrycznej partycji recovery byłoby zainteresowanych jej własnym (czystym) wariantem.

    Ale zasadniczo artykuł kierowany jest docelowo do innej grupy osób.

    Na pewno wielu z was jest uważanych w swoim środowisku za tak zwanych "guru" do których często krąg znajomych czy rodziny zwraca się o złożenie komputera czy też instalację systemów.

    Często maszyny takie przygotowywane dla różnych ciotek, kuzynów, przyjaciółek a w zwłaszcza kolegów szefa trafia na podatny grunt jeżeli chodzi o umiejętności destrukcyjne.

    Oczywiście reinstalacja systemu jest ostatecznością, ja zawsze twierdzę że wręcz porażką ale dotyczy to własnego komputera. W przypadkach wymienionych powyżej próby przywracania są nie tylko praco ale przede wszystkim czasochłonne a jedyną gratyfikacją na jaką można liczyć jest z reguły tzw BROWAR. Dlatego system przygotowany w sposób pozwalający na jego szybkie odbudowanie nawet bez naszej ingerencji może być bardzo pożądany.

    W końcu są też różni zawodowi składacze i sklepiki komputerowe które myślę, że chętnie zaproponują klientom takie dość profesjonalne rozwiązanie.

     

    Koniec bajki czas na więcej konkretów.

    Opis zostanie zasadniczo podzielony na dwie części:

    Pierwsza omawiająca przygotowanie samego systemu w której zajmiemy się instalacją samego systemu w wersji optymalnej dla potrzeb recovera, tutorial oprze się na takiej świerzej instalacji choć nie wykluczam również po zakończeniu cyklu zasadniczo omówienia przeróbki gotowych już instalacji na potrzeby własnej partycji odzyskiwania.

    Omówimy sobie zarówno instalację prostą jak i wygodną instalację nienadzorowaną.

    Druga część cyklu pokarze już samo zagadnienie odzyskiwania systemu z użyciem różnych dostępnych narzędzi:

    sposób Microsftowy, szybki ale mało elegancki

    własne winpe używające formatu wim jako obrazu odzyskiwania w wersji prostolinijnej jak i wyposażone w menu z ostrzeżeniami zapobiegające przypadkowemu przywróceniu

    tak jak powyżej tylko z użyciem ghosta

    jeżeli wystarczy mi samozaparcia (pojawi się zainteresowanie) spróbujemy też jakieś bardziej "gurowskiej" metody, np. z użyciem Clonzilli

    Poza pierwszym pierwszym sposobem pozostałe będą wymagały pewnych narzędzi a najlepiej przygotowania systemu live odpalanego np z pena choć nie będzie to ostanie nie będzie warunkiem koniecznym to jednak pożądanym dla integralności i czystości przygotowywanego systemu.

     

    Osoby znające moje wcześniejsze teksty które obawiają się, że i tym razem bedą miały kłopot z przebrnięciem przez opis pragnę uspokoić

    po pierwsze tym razem zagadnienie tym razem jest dużo prostsze a w pierwszej metodzie nie wymaga nawet dodatkowych narzędzi.

    po drugie postaram się całość jak najbardziej oskryptować a poszczególne etapy dokładnie zilustrować obrazkami.

     

    Tyle tytułem wstępu zapraszam wkrótce na pierwsze opisy

     

    pzdr

  16. Wydaje mi się, że problem właśnie w skasowaniu oryginalnego desktop.ini i należałoby przywrócić jago zlokalizowany odpowiednik.

    Coś w tym stylu:

    [.ShellClassInfo]

    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798

    IconResource=%SystemRoot%\system32\imageres.dll,-184

     

    pzdr

  17. CD na USB też będzie potrzebował sterowników działających w trybie boot czego niestety nieprzerabiany instalator nie potrafi (a przerabiany potrafi czasami :)).

    Myślę, że wybrałeś bardziej skomplikowane rozwiązanie na początek.

    Spróbuj najpierw sposoby z instalacją na tymczasowej partycji, jeżeli nie masz miejsca fizycznie to może być to partycja wirtualna, skoro masz inne laptopy to na którymś jest system a sam rezultat możesz przenieść z pomocą pena (nie potrzeba przepinać dysku), jak pisałem najlepiej jako obraz i nie musi to być ghost, obraz dlatego żeby uniknąć problemu konwersji nazw podczas kopiowania w dosie.

    W pomyśle z ghostem na pena wrzucasz obraz i exec ghosta (bo pewnie na dyskietkę się nie zmieści) i odpalasz z dyskietki dosowej.

    Wirtualną partycję jeżeli nie masz lapka z siódemką można pyknąć choćby prościutkim darmowym filediskiem:

    filedisk

    Można też zrobić partycję vhd (virtualpc) czy też vmdk (vmware), przy dobrym pokombinowaniu można można takie partycje oznaczyć jako aktywne i zainstalować odpowiedni bootsector np programikiem bootsec, dane te zostaną zachowane przy przenoszeniu partycji w formie obrazu przy większości programów typu ghost czy acronis a programy same zadbają o ich przystosowanie do dysku (partycji) docelowego.

     

    pzdr

  18. W międzyczasie skrobłem mały skrypcik który ułatwi "przejmowanie kontroli" nad kluczami

    własność.vbs:

    Set objDictionary = CreateObject("Scripting.Dictionary")

     

    Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")

     

    Set objShell = CreateObject("WSCript.shell")

     

    ' Poniżej podajemy klucz na którym będziemy operować &H80000002 oznacza HKLM a np. &H80000001 HKCU

    ' Tu w przykładzie jest to klucz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR a właściwie wszystkie jego pod klucze

     

    strKeyPath = "SYSTEM\CurrentControlSet\Enum\USBSTOR"

    strhiv = &H80000002

     

    enumSubkeys strhiv ,strKeyPath

     

    objDictionary.Add strKeyPath,strKeyPath

     

    'W stringach poniżej wstawiony został użytkownik wszyscy ale można ustawić innego usera (jak mniemam)

    struser = "wszyscy"

     

    For Each strkey in objDictionary.items

    strkomendaown = objShell.currentdirectory & "\psexec.exe -s -w " & objShell.currentdirectory & " " & objShell.currentdirectory &"\setacl.exe -on " &chr(34)&"HKLM\" & Replace(strKey,vbCr,"")&chr(34)& " -ot reg -rec yes -actn ace -ace "&chr(34)&"n:"& struser &";p:full"&chr(34)

    strkomendaace = objShell.currentdirectory & "\psexec.exe -s -w " & objShell.currentdirectory & " " & objShell.currentdirectory &"\setacl.exe -on " &chr(34)&"HKLM\" & Replace(strKey,vbCr,"")&chr(34)& " -ot reg -rec yes -actn setowner -ownr "&chr(34)&"n:"& struser &chr(34)

    strkeys = strkeys & strkomendaown & vbCrLf & strkomendaace &vbCrLf

    Next

     

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.CreateTextFile("klucze.bat", True)

     

    arrkeys = split(strkeys,vbcrlf)

     

    'Tutaj wywracamy nasz plik do góry nogami (aby uprawnienia nadawać w odpowiedniej kolejności)

    For i = Ubound(arrkeys ) to LBound(arrkeys ) Step -1

    objFile.WriteLine arrkeys(i)

    Next

     

    objFile.Close

     

    WScript.Quit

     

    Sub enumSubkeys(HK, strKeyPath)

    objRegistry.EnumKey HK, strKeyPath, arrSubkeys

     

    If IsArray(arrSubkeys) Then

    For Each strSubkey In arrSubkeys

    enumSubkeys HK, strKeyPath & "\" & strSubkey

    objDictionary.Add strKeyPath & "\" & strSubkey,strKeyPath & "\" & strSubkey & vbCr

    Next

    End If

     

    End Sub

     

    Do zadziałania potrzebuje programiku setacl.exe:

    Strona programu

    który umieszczamy w tym samym katalogu co skrypt

     

    Oczywiście skrypt jest dość uniwersalny i może służyć do przejęcia na własność dowolnych pod kluczy rejestru np celem ich zmiany lub skasowania

    Jak znów będzie mi się nudziło rozbuduję go tak aby nie posiłkował się produkcją bat-a ale działał sam z siebie

     

    ps

    Ponieważ rzecz się dzieje w systemie z lini vista można napotkać na problem z odpaleniem skryptu nawet z konta administratora, część pod kluczy będzie się "stawiać"

    ale jest na to rada - odpalamy skrypt poprzez psexec.exe z zestawy sysinternals:

    Stronka z programem

    odpalamy go z parametrem -s i pełną ścieżką do skryptu trzeba też podać parametr -w ze ścieżką katalogu z którego plik jestr odpalany i w którym znajduje się setacl.exe

     

    Dodałem też recurencję co może pomóc przy zagłębionych kluczach z pomieszanym dziedziczeniem uprawnień - de facto z włączoną recurencją skrypt mógłby być prostszy (bez sub procedury) ale taki jest bardziej rozwojowy :)

     

    ps 2

    Przerobiłem lekko skrypt - teraz ustawia komendy już z użyciem psexec

    Dodatkowo zmienia też uprawnienia klucza głównego a nie tylko podkluczy

    Część parametrów została wyciągnięta jako zmienne które łatwiej ustawić, myślę że teraz jest trochę przejrzyściej

     

    pzdr

  19. Podaj wszystkie pliki o których monituje ci instaler.

    Prawdopodobnie są to sterowniki urządzeń massstorage do których nie może on uzyskać dostępu ze względu na ich lokalizację.

    Pliki tego typu dla fazy tekstowej i graficznej instalacji powinny wylądować w innych katalogach czego instalator sam z siwbie nie potrafi w przypadku nośników innych niż płyta cd.

     

    Niestety dosowy winnt nie obsługuje argumentów /makelocalsource i /syspart: które prawdopodobnie rozwiązały by twój problem dlatego lepiej użyć winpe do uruchomienia instalacji, przy braku startu z usb trzeba by się posiłkować dyskietką z syslinuxem bądź grubem i opcją chainload.

    Można też przygotować sobie podstawę instalacji z poziomu systemu i bezczelnie wrzucić ją na docelową partycję np ghostem.

    Podstawę robimy sobie spod windowsa na jakiejś wolnej partycji (może być wirtualna, np siódemka ma natywnie obsługę takiej wbudowaną) własnie poprzez winnt32 z odpowiednimi parametrami:

     

    winnt32.exe /makelocalsource /noreboot /syspart:litera /tempdrive:litera

     

    gdzie "litera" to oczywiście litera twojej partycji roboczej.

    Potem należy jeszcze wywalić z niej plik migrate inf i opcjonalnie winnt.sif i przenieść taką partycje (jak już pisałem najwygodniej w formie obrazu) na dysk na którym ma być zainstalowany system.

    Oczywiście musimy jakimś narzędziem nadać takiej partycji atrybut botowalnej i systemowej a wtedy instalacja sama ruszy z kopyta.

    Jeżeli będzie potrzeba integracji sterowników massstorage to też chętnie służe pomocą jak to zrobić w powyższej metodzie.

     

    pzdr

  20. zapisz sobie jako skrypt VBS (np devman.vbs) poniższy ciąg:

    Set objShell = CreateObject("WSCript.shell")

    objShell.Run ("%comspec% /c Set devmgr_show_nonpresent_devices=1 & Devmgmt.msc"),0,false

    Set objShell = Nothing

    WScript.Quit

     

    On odpali ci menedżera urządzeń w trybie w którym będziesz miał widoczne wszystkie zainstalowane w systemie urządzenia a nie tylko te które systemowi udało się uruchomić.

    Aby system je ujawnił w menedżerze trzeba jeszcze wybrać - "widok/pokaż ukryte urządzenia"

     

    Sprawdź czy nie masz wpisów dla uniwersalnie magistrali szeregowej typu "unknown devices" czy "nieznane urządzenie", jeżeli są spróbuj je wyczyścić.

    Niestety prawdopodobnie bez ingerencji w rejestrze się nie obędzie.

    Zainteresuj się gałęziami :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

     

    Pierwsza odpowiada typowo za urządzenia pamięci masowej druga ogólnie za urządzenia USB.

    Niestety usuwanie wpisów przez menedżera urządzeń nie koniecznie usuwa wpisy z tych dwóch gałęzi co zwłaszcza w przypadku błędnie wykrytego kontrolera skutkuje różnymi problemami (głównie z czytnikami kart).

    Aby ingerencja w tych kluczach była możliwa trzeba też odpowiednio ustawić uprawnienia do pod kluczy które w tych gałęziach są przypisane do wirtualnego użytkownika trustedinstaller.

    Oczywiście samo grzebanie w rejestrze jest potencjalnie groźne dla stabilności i spójności systemy więc wypada zrobić backup choćby tych gałęzi w które chcemy ingerować.

    Dodatkowo jeśli mamy klawiaturę i myszkę USB to racze nie usuwajmy całej gałęzi ...Enum\USB bo jeśli po restarcie system nie znajdzie samodzielnie sterowników to będzie kłopot popchnąć go dalej.:)

     

    Możesz też spojrzeć (usunąć wpisy) do gałęzi:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usb***

    zwłaszcza usbstor i wyrzucić z pod klucza ENUM pid tego upierdliwego pena.

     

     

    Spotkałem się też z komputerami w których żadne zabiegi i egzorcyzmy nie pomogły w przypadku problemów z urządzeniami USB i trzeba było przeinstalować system co zawsze jest pewną porażką, ale dotyczyło to niewielkiej ilości maszyn i zawsze problem powodował czytnik kart a komputerów z racji wykonywanego zawodu przerzucam co najmniej kilkaset miesięcznie.

     

    pzdr

×
×
  • Dodaj nową pozycję...