Skip to Content

IT nieuczesane.

Unattended – bootdisk – autoexec

Sama dyskietka startowa nie będzie wiele warta bez odpowiedniego autoexec’a i config’a. Pełny wydruk autoexec’a prezentuje się następująco:

nieniejszy text nie obejmuje opisu jak się tworzy menu startowe w DOS’ie – zakładam, że tyle czytelnik potrafi, lub też poradzi sobie po wpisaniu ‚help’ – gdzie dostępne są wszelkie informacje na ten temat.


+———— AUTOEXEC.BAT (SKIP)

01. @echo off
02. path=a:net;a:
03. prompt $p$g
04. rem START NET
05. a:NETnet initialize
06. a:NETnetbind.com
07. a:NETumb.com
08. a:NETtcptsr.exe

09. a:NETtinyrfc.exe
10. a:NETnmtsr.exe
11. a:NETemsbfr.exe
12. a:NETnet logon USERNAME PASSWORD /yes
13. path=%path%;x:
14. if exist x:smartdrv.exe lh smartdrv

15. if exist x:smartdrv.exe echo smartdrv loaded.
16. if not exist x:fdisk.exe goto neterr
17.
18. GOTO %CONFIG%
19.
20. :neterr

21. echo NOT LOGGED IN – network error. no utils avaliable. please log in
22. goto :s
23.
24. :kill
25. fdisk 1 /clearall
26. dfdisk /mbr

27. fdisk /reboot
28.
29. :unat6
30. set DYSK=6
31.
32. :unattended

33. set STATUS=begin
34. if exist status.bat call status.bat
35. if %STATUS%==format goto format
36.
37. echo set STATUS=format>status.bat
38. ECHO creating primary windows partition [win c:]….

39. if „%DYSK%”==”6” fdisk /pri:2500
40. if „%DYSK%”==”” fdisk /pri:4000
41. ECHO creating second pri partition [win d:]….
42. if „%DYSK%”==”6” fdisk /pri:1000
43. if „%DYSK%”==”” fdisk /pri:3000
44. ECHO creating primary fat16 partition for linux….

45. rem hidden fat16: 0x16=22
46. rem fat16: 0x6 = 6
47. fdisk /pri:1000 /spec:22
48.
49. fdisk /activate:1
50. fdisk /reboot

51.
52. :format
53. del status.bat
54. echo t|format c:/u/v:”sys-apps”
55. echo t|format d:/u/v:”3-4-users”
56. set COMP=err

57. ECHO podaj nazwe komputera do instalacji i nacisnij ctrl-z enter
58. copy con comp
59. copy begin+comp tmp.bat
60. call tmp.bat
61. del tmp.bat
62. del comp

63. choice /T:Y,5 rozpoczac instalacje?
64. if errorlevel 1 ins %comp%
65.
66. :sn
67.



—–( źródło )—–


Jedną z najważniejszych częścią jest
autoexec.bat, w którym zastosowanych jest kilka sztuczek. Powiedzieć ‚skrypty’ mówiąc
o możliwościach batchfile’i w DOSie to duża przesada – dla tego część rzeczy została
dość dziwnie wymyślona. W tym pliku znajduję się w zasadzie cała ‚automatyzacja’ procesu zakładania partycji. Poniżej wyjaśnienia co i jak:

  • linie 1-3 nie prezentują nic trudnego: wyłączenie wyświetlania komend na ekranie, ustawienie ścieżki przeszukiwania oraz wyglądu znaku zachęty. standardzik.
  • natępnie od 5-11linii uruchamiane są kolejne usługi niezbędne do prawidłowej implementacji stosu TCP/IP.
  • dość szczególna jest linia 12. Służy do automatycznego zalgowania użytkownika do domeny, tak aby później podmapować dysk sieciowy z serwera w domenie, na którym znajdują się wszelkie programy użytkowe typu fdisk, smartdrive etc. Przy pierwszym uruchomieniu tak spreparowanej dyskietki zapytani zostaniemy o hasło. Po jego wpisaniu, zostanie ono zapamiętane w pliku a:netUSERNAME.pwl. ‚USERNAME’ będzie oczywiście takie, jak nazwa użytkownika jako który będziemy się logować. Stanowi to dość poważną lukę w bezpieczeństwie w razie, jeśli flop wpadnie w niepowołane ręce. Należy pamiętać o tym, aby to konto użytkownika było odblokowywane jedynie na czas instalacji, i zablokowywane zaraz po jej zakończeniu. Może to oszczędzić sporo problemów.
  • w 13 linii ścieżka przeszukiwania zostaje poszeżona o dysk ‚x:’. Skąd taki akurat dysk? podobnie jak wprzypadku użytkownika i hasła, przy pierwszym podłaczeniu [ net use x: \servershare ], w pliku a:netshares.pwl zostają zpisane insformacje na temat tego jaki udział został zmapowany, na jaką literkę [tu ‚x:’] oraz na jakich credentials’ach [user/pass]. Nie obejdzie jak widać bez uwcześniejszego przetestowania i pożeźbienia samemu choć troszkę przed przystąpnieniem do instalacji.
  • linie 14-15 to sprawdzenie czy istnieje plik smartdrv.exe na dysku x:. Ma to dwie podstawowe funkcje: załadowanie smartdrive’a, bez którego kopiowanie plików trwałoby ponad godzinę, ale przede wszystkim sprawdzenie, czy wogóle dysk x: został zmapowany. W razie jeśli dysk nie zostanie zmapowany, dalsza instalacja nie ma możliwości przebiec poprawnie (linia 16), więc wykonanie zostaje przeniesione do linii 20, gdzie wypisywany jest błąd, oraz zaniechane zostaje dalsze wykonywanie.
  • linie 24-27 wykonywane są w przypadku wybrania z menu startowego opcji ‚clear partition info‚. Przy instalacji podczas pierwszego uruchomienia warto byłoby wyczyścić dysk – tak do cna. To właśnie robi komenda fdisk 1 /clearall. To ‚1’ to numer dysku fizycznego [fdisk /?]. Następnie wykonywany jest restart maszyny (27).
  • linia 26 niestety nie działa. Można wyciąć tam literkę ‚d’ z początku i będzie działać. Problem polega na tym, że freeFDISK ma swój własny bootloader, który z pewnych względów mi nie odpowiada. Próbowałem zastąpić go jakimś innym, ale nie starczyło mi cierpliwości.
  • w przypadku wybrania z menu startowego opcji ‚unattended installation (6Gb)‚ wykonana zostaje ta właśnie część kodu – a mianowicie zmienna ‚DYSK’ przyjmuje wartość ‚6’. Opcja ta jest wprowadzona w przypadku instalacji na małych dyskach – 6Gb, gdzie muszą być zakładane mniejsze partycje.
  • od linii 32 zaczyna się mała motanina. Założenie jest takie, iż przy pierwszym uruchomieniu zakładane są partycje. Po ich założeniu tworzony jest plik status.bat, ktory po uruchomieniu ustala wartość zmiennej ‚STATUS’ na ‚format’. W efekcie otrzymuje się pełny ‚unattended’ – przy pierwszym uruchomieniu pliku status.bat nie ma, więc wykonywane są linie 37-50. Ponieważ w linii 37 tenże plik zostaje własnie utworzony, a więc po restarcie wykonanie z linii 35 zostanie przeniesione do linii 52.
  • linie 38-50 odpowiadają za utworzenie partycji, aktywowana zostaje partycja pierwsza, i następuje restart. W razie jeśli instalacja została przerwana gdzieś w tym momencie i trzeba ją powtórzyć, trzeba pamiętać o usunięciu pliku status.bat bo w innym przypadku pominięte zostanie zakładanie partycji.
  • od linii 52 rozpoczyna się ostatnia faza przygotowania dysku. Po pierwsze kasowany jest plik statusu (53), żeby przygorować flopa do kolejnej instalacji. Następnie formatowane są partycje (54-55). Linia 56 … jest niepotrzebna. Próbowałem zrobić dodatkową obsługę błedu ale z pewnych względów się to nie powiodło.
  • na koniec jeszcze drobna sztuczka. Są co prawda programy DOS’owe, które umożliwiają ustawianie zmiennej po wprowadzeniu jej przez użytkownika. Można to jednak zrobić korzystając z triku zaprezentowanego w liniach 58-62. Na dyskietcie znajduje sie pliczek begin w którym wpisane jest jedynie: ‚set comp=‚. Następnie zakładany jest plik ‚comp‚, użytkownik wpisuje nazwe komputera i naciska ‚ctrl-z’. Następuje wtedy zapis do pliku. Z pliku ‚begin’ i ‚comp’ tworzony jest plik ‚tmp.bat’ (59), który będzie miał w tym momęcie postać np: ‚set comp=COMPNAME‚. Następnie jest on uruchamiany definiując zmienną ‚comp‚ (60). Usuwane są śmieci (61-62) Jeśli zgodzimy się na dalszą instalację (linia 63-64), uruchomiony zostanie skrypcik ins.bat ze zmienną ‚comp‚ jako parametr.

Pliczek ins.bat służy do uruchomienia instalacji unattended dostarczając wszelkich niezbędnych parametrów, takich jak nazwa kompa czy ścieżka do plików unattended:

Wszystkie parametry winnt.exe można wyświetlić wpisując ‚winnt /?‚. Te które są powyżej oznaczają:
uruchom instalację, pliki instalacyjne są dostępne w udziale 2kp$ na serwerze INSSERVER, do instalcji wykorzystaj plik z odpowiedziami [ścieżka do unattended.txt], a uszczególnienie dla komputera o nazwie takiej jak podano w pierwszym parametrze wywołania, znajduje się w pliku [ścieżka do unattended.udf].