Skocz do zawartości

Multibootowalna DVD Windows


Rekomendowane odpowiedzi

Copyright @picasso fixitpc.pl Powielanie tej pracy zabronione. Artykuł archiwalny, stworzony przeze mnie w roku 2008. Skorygowany w 2012 (aktualizacje instrukcji relatywnych do SysLinux).


logo.png

DVD zawierająca multi-instalację różnych systemów + Parted Magic



Download

Budowa drzewa DVD:

Ulokowanie kopii płytek CD Windows
Budowa struktury Windows 98/ME
Budowa struktury Windows NT4/2000/XP/2003 (metoda ręczna)
Budowa struktury Windows 2000/XP/2003 (metoda automatyczna)
Budowa struktury edycji LiveCD (z wybranego systemu XP/2003)
Finałowy teoretyczny układ na DVD

Budowa menu (dwie metody do wyboru):

Budowa menu w ISOLINUX
Budowa menu w CD Shell

Finalizacja:

Extra - dodanie Parted Magic
Wypalanie (tworzenie obrazu ISO)



Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Z motyką na słońce, czyli bootowalna DVD zawierająca multi instalacje różnych systemów operacyjnych. Projekt tego typu wymaga dużo czasu, dużo cierpliwości, dużo uwagi we wdrażaniu instrukcji. Porównawczo linkuję alternatywne tutoriale: Creating a Multi-Boot DVD + Magic ISO Maker - all in one installation DVD. Napisałam mój przewodnik inny niż tamte (ale bazą wyjściową jest ten pierwszy), uzupełniając o różne niepunktowane tam rzeczy, zmieniłam zupełnie defaultowy system używany do budowy menu (alternatywnie zostawiając starszą metodę), dałam możliwość dołączenia Parted Magic, wybrałam inny program do generowania ISO. Wszystko, o czym piszę, zostało wykonane na moim komputerze i moja DVD jest sprawa, wszyściutko bootuje jak należy. Jeśli podążycie dokładnie za wskazówkami = nie będzie problemu. Ten projekt zakłada elastyczność, może służyć jako baza implementowania innych pakietów narzędziowych.

Punkt wyjścia na ten topik to Wytwarzanie płyt startowych Windows. Przeczytać od deski do deski, by mieć podstawowe pojęcie jak wygląda robienie normalnej CD, bo będą następowały tu manipulacje morfujące ten układ. Poza tym materiał podstawowy do multi DVD to posiadanie kopii Windowsów z preintegrowanymi Service Packami. Nie jest to konieczne, ale przyjmuję, że robimy DVD z bazą podstawowej aktualizacji.

Proszę włączyć w opcjach Widoku pokazywanie rozszerzeń + ukrytych plików. A pracować na jednym systemie w tym samym czasie, bo operacja jest dość skomplikowana.





download.gif
Download

1. Bootsectory wszystkich systemów operacyjnych. W temacie Wytwarzanie płyt startowych Windows jest opis jak samodzielnie wyekstraktować bootsector z oryginalnej CD lub obrazu ISO instalacji Windows. Zamiast się męczyć, można pobrać od razu gotowe pliki z poniższych linków. Nazwy tych plików będą zmieniane w dalszych krokach. Na razie proszę je sobie zapisać w dowolnym miejscu. Bootsector dla systemów Windows 2000/XP/2003 to ten sam bootsector, dlatego jest tu linkowany tylko jeden plik. Bootsectory są podane w konkretnych formatach: BIN + IMA, jest to dobrane celowo.

boot.bin (Windows 2000/XP/2003) bootnt4.bin (Windows NT4)

ME.IMA (Windows ME) 98.IMA (Windows 98)

2. Edytor obrazów dyskietek systemów Windows 98/ME. Do tego dobrze się nadaje komercyjny WinImage. Trial nie ma ograniczeń funkcyjnych i akcję bez problemu da się prowadzić.

WinImage

3. Hex edytor niezbędny do poprawienia plików bootsectorów Windows NT4/2000/XP/2003 oraz findcd.exe w obrazach dyskietek. Wybór jest spory. Z komercyjnych np. UltraEdit, Hex Workshop. Za darmo np. XVI32 lub Tiny Hexer. W całym opracowaniu właśnie edytorem XVI32 będę się posługiwać.

4. Bootloader startowy, który zbootuje całe DVD i poda menu startowe, w którym będziemy wybierać swoje instalacje. Za darmo do wyboru albo Isolinux albo CD Shell. Poczytacie o nich na końcu tematu. Aktualnie słusznym wyborem jest rozwijany i nowoczesny Isolinux, ma optymalnie rozwiązany plik konfigu a przeciętny użytkownik łatwiej w nim napisze bardzo atrakcyjne menu, wbrew pozorom. CD Shell to projekt zupełnie przestarzały (jego rozwój zatrzymał się w roku 2005) i wymarły, ponadto trudniej w nim napisać menu, efekty graficzne mozolniej osiągane.

Isolinux

Program CD Shell jest nierozwijany i nie ma już nawet strony domowej. Archiwalna postać strony domowej do wglądu: CD Shell


Trzecim programem do robienia tych akcji jest komercyjny EasyBoot i tego programu tu nie omawiam w ogóle. Jeśli ten program zastosujecie, musicie porównać co opisuję i dostosować do wymogów struktur tej aplikacji.

EasyBoot

5. Program do tworzenia obrazu ISO. Z całej struktury będzie produkowany bootowalny obraz ISO, który będzie testowany na okoliczność poprawności. Bardzo ważnym jest dobranie właściwego narzędzia, które skonfiguruje wymagane parametry. To nie może być dowolny program rzekomo oferujący tworzenie bootowalnego ISO, bo jest kilka haczyków. Proponuję za darmo MKISOFS (zalecany) albo ewentualnie CDIMAGE, a z komercyjnych UltraISO. W końcowym wątku tematu jest dokładny opis adresujący podstępne konfiguracje.

MKISOFS + GUI CDIMAGE + GUI UltraISO

6. Wygenerowane ISO musi być sprawdzone, by uniknąć daremnej roboty i masowej utraty płytek. Potrzebne więc środowisko wirtualne. Możemy wybierać między darmowymi: VirtualBox, VMWare Player, MS Virtual PC. Program, który sama stosuję, to właśnie VirtualBox.

7. Na końcu, po wszystkich testach, ISO będzie wypalone na płytce. Tu już można zastosować dowolny wypalacz umiejący nagrywać obrazy. Zamiast rozbudowanych programów proponuję mini-mini free programik:

Active ISO Burner

8. Opcjonalnie program do masowej zmiany nazw plików i folderów. Jak przeczytacie w instrukcjach, bardzo ważną rzeczą jest duże CAPSLOCKOWE liternictwo obiektów bootujących.

9. Opcjonalnie jakiś edytor grafiki rastrowej do oprawy graficznej instalatora / logo startowego.
Odnośnik do komentarza

Budowa drzewa DVD


To będzie boleć. Zacznijmy od tego, że potrzebujemy partycję z koszmarną ilością wolnego miejsca. Przynajmniej 5-6GIG. Na tejże partycji (tutaj w przykładzie G:) w katalogu głównym tworzymy folder o umownej nazwie DVD:

disc.gifG:
---- folder.gifDVD

 

 

Umieszczenie kopii CD Windowsów w odpowiednich folderach:

 

W folderze DVD tworzymy podfoldery do których wsadzimy całe kopie płytek Windows:

Jeśli umieszczamy Windows 98/ME

W folderze DVD tworzymy folder o umownej krótkiej nazwie definiującej rodzaj Windowsa np. WIN98 lub WINME:

disc.gifG:
---- folder.gifDVD
-------- folder.gifWIN98
-------- folder.gifWINME

W folderach tych lokujemy całą kopię płytek tych systemów.

1. Windowsy te celowo separuję od nowszych, nie tylko ze względu na ich inną budowę. Sugeruję się problemami innych użytkowników, u których wywoływanie instalatora z głębszych struktur nie chciało działać: przykład 1 / przykład 2. Dlatego też wybrałam jako układ domyślny umieszczenie płytek CD bezpośrednio w katalogu DVD, nie głębiej.

2. Następna ważna sprawa = kwestia wielkości liternictwa i sposobu nagrywania ISO wg standardów niekompatybilnych ze starymi Windows ("iso level 4" zamiast 3 = patrz na koniec tematu). Wszystkie foldery + pliki muszą być w CAPSLOCKU, by setup został znaleziony. Czyli jeśli przekopiowana CD ma wszystko w małych literach, proszę rekursywnie przetransformować na duże litery wszystkie foldery + podfoldery + pliki w nich zlokalizowane (w sekcji pobierania dałam linki do programów, które to wykonają automatycznie):

win981.gif > win982.gif




Jeśli umieszczamy Windows NT4/2000/XP/2003

W folderze DVD tworzymy folder o nazwie SETUP:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP

W folderze SETUP tworzymy podfoldery o umownych nazwach odbijających rodzaj Windowsa np.:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP

Można się zatrzymać na tym poziomie kończąc tu strukturę. Ale można też pójść w większą detalikę i wydłużyć ścieżkę = w folderze danego Windowsa tworzyć kolejne podfoldery odbijające rodzaj edycji.

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP
---------------- folder.gifPRO

Ten system stosuję w opracowaniu. Jest to rodzaj umowy, schemat, który każdy wybiera na własną rękę. To wcale nie musi być tak rozbudowane, wcale nie muszą być podfoldery edycji. Proszę jednak uważnie badać ścieżki dostępu, bo wszystko to ma znaczenie. Raz dobrane ścieżki będą stosowane do końca budowania projektu i w pewnym momencie będą wprowadzane w edycjach. Proszę dbać by były maksymalnie krótkie a treściwe, bez spacji i bez dziwnych znaków. Po przemyśleniu konstrukcji ścieżki, umieszczamy w niej całą zawartość płytki danego Windowsa.



Hipotetyczny układ, tylko poglądowo:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWIN2000
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IP.5 + CDROMSPx.TST
---------------- folder.gifADV (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IA.5 + CDROMSPx.TST
---------------- folder.gifSRV (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IS.5 + CDROMSPx.TST
---------------- folder.gifDTC (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_ID.5 + CDROMSPx.TST
------------ folder.gifWINXP
---------------- folder.gifHOME (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IC + WIN51IC.SPx
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifTABLET (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifMCE (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifX64 (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- folder.gifAMD64
-------------------- file.gifWIN51 + WIN51AP + WIN51AP.SPx
------------ folder.gifWIN2003
---------------- folder.gifSTD (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IS + WIN51IS.SPx
---------------- folder.gifENT (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IA + WIN51IA.SPx
---------------- folder.gifWEB (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IB + WIN51IB.SPx
---------------- folder.gifDTC (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51ID + WIN51ID.SPx
---------------- folder.gifSMB (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IL + WIN51IL.SPx
------------ folder.gifi tak dalej....

To co zaznaczyłam kolorami jest ważne i jest tu punktowane, ponieważ będą tworzone duplikaty tych rzeczy:
- Jest oryginalny folder i386 systemów typu Windows NT (64-bitowce mają dwa foldery: i386+AMD64). Podkreślam to teraz już na początku ponieważ w dalszej części jest często mowa o tym folderze, o tworzeniu jego skrojonej kopii i jego przekierowaniu. To co powyżej na schemacie ma zostać w spokoju, nie będzie ruszane wcale.
- Są pliki tagów edycji (proszę porównać pasujące do danego Windowsa tagi w: taglist.txt). Bardzo ważne, bo bez nich start danej instalacji będzie żebrał o wkładanie CD o określonej etykiecie. Te pliki tagów będą skopiowane w inny miejsce (nie przenoszone, lecz dokładnie jak mówię: skopiowane). Proszę zadbać o to by pliki tagów były w dużych literach. To ma znaczenie.

console7.gif



Co dalej? Windowsy nie są jeszcze bootowalne i nadchodzi najbardziej zamotana część całej operacji, która wygląda inaczej dla systemów Windows 98/ME oraz systemów Windows NT4/2000/XP/2003.

Odnośnik do komentarza

.... Cały ten post dotyczy tylko i wyłącznie Windows 98/ME ....


1. Na razie posiadamy wstępną strukturę, czyli przekopiowane płytki Windowsów w folderze DVD:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP (tu są nowsze Windowsy, nie interesują nas)
-------- folder.gifWINME (cała zawartość płytki)
-------- folder.gifWIN98 (cała zawartość płytki)

2. Mamy również pobrane z linków pliki bootsectorów: 98.IMA i ME.IMA (proszę zachować duże litery nazewnictwa!). Pliki bootsectorów umieszczamy bezpośrednio w folderze DVD obok folderów z kopiami płytek:

disc.gifG:
---- folder.gifDVD
-------- folder.gifWINME
-------- folder.gifWIN98
-------- fileima.gif98.IMA
-------- fileima.gifME.IMA

3. Następną fazą będzie korekta bootsectorów. Wstępnie proszę otworzyć wybrany obraz dyskietki IMA w WinImage:

winimage.gif

W kwestii zawartości obrazów IMA: pochodzą od wyekstraktowanych oryginałów i mają sterownik KEYBRD4.SYS (klawiatura polska programisty). Proszę też spojrzeć na temat Wytwarzanie płyt startowych Windows, na budowę oryginalnych menu instalatora. Tam jest na obrazkach pokazane przejście przez podwójne menu: pierwsze proponuje "czy bootować z twardego czy z CD-ROMu", następne daje wybór potrójnej opcji (czyli: Uruchom instalator, Uruchom z obsługą CD-ROM, Uruchom bez obsługi CD-ROM). Wszystkie te menu zostaną usunięte, gdyż stanowią niepotrzebną komplikację w układzie multibootowalnego DVD. Proponowane tu obrazy IMA wstępnie podmodyfikowałam = tzn. wycięłam z nich jo.sys (by się pozbyć menu "bootować z twardego czy z CD-ROMu"). Czeka Was jednak ingerencja w 3 pliki: findcd.exe, autoexec.bat i config.sys, po to by przekierować ścieżki oraz pozbyć się drugiego menu. W otworzonym w WinImage wybranym obrazie *.IMA wypakuj te trzy pliki w dowolne miejsce dysku twardego (albo prawoklikową opcją Extract, albo zaznaczając te pliki i przeciągając poza okno WinImage).

 

 

Stworzenie tagu CD

 

Pierwszy krok to utworzenie tagu identyfikacyjnego dla kopii płytek Windows 98/ME siedzących w swoich korespondujących folderach. Wystarczy utworzyć zwyczajny pusty plik tekstowy (może być również bez rozszerzenia). Umownie przyjmijmy, że jego nazwa to CD.TXT. Nazwy mogą być dowolne, byle krótkie i w dużych literach. Wystarczy tylko jeden plik tagowy, niezależnie od tego ile umieszczamy Windowsów tego typu (bo wszystko i tak będzie kierowane na ten plik). Plik tagowy lokujemy bezpośrednio w folderze DVD:

disc.gifG:
---- folder.gifDVD
-------- folder.gifWINME
-------- folder.gifWIN98
-------- fileima.gif98.IMA
-------- fileima.gifME.IMA
-------- txtfile.gifCD.TXT


 

Edycja Findcd.exe

 

Kolejnym krokiem jest zmodyfikowanie składnika obrazu dyskietki *.IMA - pliku FINDCD.EXE, by przekierować go na wyszukiwanie właśnie stworzonego tagu płytek. Otwórz plik w hex-edytorze i wyszukaj linię %c:\WIN..... Najprościej to znaleźć wpisując na szukanie słowo "Microsoft", bo ten ciąg jest zaraz za nim. Windows 98 ma w tym ciągu %c:\WIN98\WIN98SETUP.BIN, a Windows Me %c:\WIN9x\SETUP.EXE. To i tak nie ma znaczenia co stoi tam aktualnie, bo to zostanie usunięte. Podświetl pierwszą literę po ukośniku, by zaznaczyć pozycję:

findcd1.gif

Następnie przełącz się na numer korespondujący z pozycją pierwszej litery po ukośniku:

findcd2.gif

Zacznij wpisywać podwójne zera 00 aż do następnego znaku % (tego znaku proszę nie ruszać):

findcd3.gif

Wynikowo między znakami %c:\ a następnym %c: mamy uzyskać pełne wyzerowanie. Następnie najechać na pierwszą pozycję po ukośniku i wpisać w dużych literach nazwę pliku tagowego, w tym przypadku jest to CD.TXT (jeśli zastosowaliście inną nazwę pliku tagowego, oczywiście wpisujecie swoją!):

findcd4.gif

Zapisać zmiany w pliku.

Operację tę należy powtórzyć dla każdego z obrazów *.IMA z osobna!


 

Edycja autoexec.bat

 

Wyekstraktowany plik autoexec.bat otwórz w Notatniku. Jego zawartość to:

@ECHO OFF
set EXPAND=YES
SET DIRCMD=/O:N
cls
set temp=c:\
set tmp=c:\
path=a:\

IF "%config%"=="NOCD" GOTO QUIT
LH MSCDEX.EXE /D:oemcd001 /L:D

echo.
IF "%config%"=="SETUP_CD" goto AUTOSETUP
GOTO QUIT

:AUTOSETUP
set CDROM=FOO23
FINDCD.EXE
if "ÍROM%"=="FOO23" goto NOCDROM
path=a:\;ÍROM%\
ÍROM%
cd \WIN98
echo.
OEMSETUP.EXE /K "/IE /NF"
goto QUIT

:NOCDROM
echo.
echo Nie znaleziono plikow Instalatora systemu Windows 98.
echo.

:QUIT


1. Wytnij z pliku te linijki zaznaczone na szaro:

autoexec3.gif

2. Następnie zjedź na fragment AUTOSETUP. Tu należy skorygować ścieżkę dostępu do instalatora Windows, który jest teraz przesunięty poziom niżej (pamiętajcie: jeśli macie inny układ, to musicie odnosić się do swojego układu!). Przypominam, gdzie siedzi instalator:

disc.gifG:
---- folder.gifDVD
-------- folder.gifWINME (cała zawartość płytki)
------------ folder.gifWIN9X (tu jest plik oemsetup.exe + setup.exe)
-------- folder.gifWIN98 (cała zawartość płytki)
------------ folder.gifWIN98 (tu jest plik oemsetup.exe + setup.exe)

W linii CD po ukośniku zamienić obecne tam WIN98 (Windows 98) lub WIN9X (Windows Me) na pasującą ścieżkę z głównego katalogu DVD, czyli ma finałowo widnieć korespondująco \WIN98\WIN98 (dla Windows 98) lub \WINME\WIN9X (dla Windows Me). Oczywiście, jeśli macie inny układ folderów dopracowujecie to pod kątem własnych ścieżek!

autoexec1.gifautoexec2.gif

3. Dodatkowo, by mieć mniej problemów, zamień wpis OEMSETUP.EXE /K "/IE /NF" na SETUP.EXE /IE /NF.

Zapisujemy zmiany w pliku.

Operację tę należy powtórzyć dla każdego z obrazów *.IMA z osobna!


 

Edycja config.sys

 

Wyekstraktowany plik otwórz w Notatniku. Jego zawartość to:

[menu]
menuitem=SETUP_CD, Uruchom Instalatora systemu Windows 98 z dysku CD-ROM.
menuitem=CD, Uruchom komputer z obsluga CD-ROM.
menuitem=NOCD, Uruchom komputer bez obslugi CD-ROM.
menudefault=SETUP_CD,30
menucolor=7,0

[sETUP_CD]
device=himem.sys /testmem:off
device=oakcdrom.sys /D:oemcd001
device=btdosm.sys
device=flashpt.sys
device=btcdrom.sys /D:oemcd001
device=aspi2dos.sys
device=aspi8dos.sys
device=aspi4dos.sys
device=aspi8u2.sys
device=aspicd.sys /D:oemcd001

[CD]
device=himem.sys /testmem:off
device=oakcdrom.sys /D:oemcd001
device=btdosm.sys
device=flashpt.sys
device=btcdrom.sys /D:oemcd001
device=aspi2dos.sys
device=aspi8dos.sys
device=aspi4dos.sys
device=aspi8u2.sys
device=aspicd.sys /D:oemcd001

[NOCD]
device=himem.sys /testmem:off

[COMMON]
device=display.sys con=(ega,,1)
country=048,852,country.sys
install=mode.com con cp prepare=((852) ega.cpi)
install=mode.com con cp select=852
install=keyb.com pl,,keybrd4.sys
files=60
buffers=20
dos=high,umb
stacks=9,256
lastdrive=z


Wytnij wszystko zamieszczając zamiennie tylko ten kod:

device=himem.sys /testmem:off
device=oakcdrom.sys /D:oemcd001
device=btdosm.sys
device=flashpt.sys
device=btcdrom.sys /D:oemcd001
device=aspi2dos.sys
device=aspi8dos.sys
device=aspi4dos.sys
device=aspi8u2.sys
device=aspicd.sys /D:oemcd001
device=display.sys con=(ega,,1)
country=048,852,country.sys
install=mode.com con cp prepare=((852) ega.cpi)
install=mode.com con cp select=852
install=keyb.com pl,,keybrd4.sys
files=60
buffers=20
dos=high,umb
stacks=9,256
lastdrive=z


Zapisz zmiany w pliku.

Operację tę należy powtórzyć dla każdego z obrazów *.IMA z osobna!


Wszystkie trzy modyfikowane pliki należy wsadzić z powrotem do obrazu IMA za pomocą WinImage: albo przeciągając je na otwarte okno WinImage i zatwierdzając injekcję + podmianę, albo z menu Image wybrać Inject, wskazać po kolei modyfikowane pliki, zatwierdzić wymianę plików. Oczywiście zapisać zmiany w obrazie IMA.


 

Końcowe uwagi

 

Uwaga: Wielu użytkowników miało błąd "bad command or file name" po uruchomieniu z DVD instalki Windows 9x. Ja również to przerobiłam: figurował ten błąd a po nim pojawiał się prompt ustawiony na literę CD-ROMu, DIR działał, ale już polecenie CD do podkatalogu z setupem zwracało "invalid directory". W topikach, które oglądałam, szukali w obrębie błędów przypisywania litery CD-ROM, nie sformułowali rozwiązania. Ja doszłam do tego gdzie leży problem: żaden CD-ROM (przecież działa DIR na root DVD), tu się rozbija o sposób nagrywania obrazu płyty i jego ustawień budujących struktury (konkretniej: obsługiwany poziom ISO). I właśnie = przypominam jeszcze raz o wielkości liternictwa. Przy ustawianiu nagrywania ISO wg omijania ograniczeń dziwne rzeczy się dzieją z MSCDEX = nie umie odczytać struktury na DVD = dlatego wszystkie foldery + pliki muszą być w CAPSLOCKU, by setup został znaleziony.

win981.gif > win982.gif > win983.gif


Koniec. Instalatory spokojnie zastartują i zainstalują system pod warunkiem, że istnieje na dysku preformatowana partycja w FAT. Jeśli nie ma partycji tego typu lub istnieje partycja NTFS (nie czytana przez archaiczny instalator 9x), musi się odbyć ten etap przed wywołaniem instalatora z DVD. Z tych powodów na płycie DVD proponuję zaszczepić program partycjonujący Parted Magic. O tym będzie w dalszej części wypracowania.

Odnośnik do komentarza

.... Cały ten post dotyczy tylko i wyłącznie Windows NT4/2000/XP/2003 ....


METODA RĘCZNA

Umieszczenie tagów Windows NT4/2000/XP/2003:

 
Każda kopia płytki CD ulokowana w folderze SETUP ma swoje tagowe identyfikatory definiujące rodzaj Windows + stan zaservicepackowania. Przykładowo dla XP Pro jest to ten zestaw:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386 (tu jest plik TXTSETUP.SIF)
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx (pliki tagów)

Lista pasujących do danego Windows tagów do wglądu: taglist.txt. Te pliki tagów muszą zostać przekopiowane (nie przenoszone tylko skopiowane!) bezpośrednio do głównego katalogu DVD. Pliki tagów będą więc istnieć podwójnie w dwóch różnych lokalizacjach, i jest to niezbędne (jeśli zabraknie tagów w jednej z lokalizacji, DVD będzie zgłaszać prośby o wkładanie CD danego Windows oznaczonego konkretną etykietą). W obu lokalizacjach pliki tagów powinny być w dużych literach, w przeciwnym wypadku może się zdarzyć błąd nieznalezienia tagu (mimo iż on będzie). Nie trudno zauważyć, że łącząc kilka edycji Windows niektóre tagi są zdublowane np. nagminnie występuje WIN51, i przy próbie kopiowania jeden plik będzie chciał przepisywać drugi. Wystarczy tylko jeden z nich, nie ma znaczenia z której CD. Te tagi (niezależnie od edycji) mają taką samą zawartość = tzn. prawie puste pliki zawierające tylko słowo "Windows". Tylko ich nazwa ma znaczenie.

Ogólny schemat skopiowanych tagów:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- file.gifCDROM_NT.5
-------- file.gifCDROM_IX.5
-------- file.gifCDROMSPx.TST
-------- file.gifWIN51
-------- file.gifWIN51IX
-------- file.gifWIN51IX.SPx

Informacja na wszelki wypadek, jakby Windows nadal pluł o wkładanie labelowanych płyt mimo, że tagi teoretycznie są: skąd Windows wie jakiego tagu szukać? To jest zlokalizowane w pliku TXTSETUP.SIF. W przypadku problemów zawsze można ten plik otworzyć w Notatniku i zjechać do sekcji, która ma spis tagów, by porównać czy mamy wszystkie z nich:

tags.gif

W pliku mogą być listowane tagi zbędne (np. tu na obrazku płyty XP SP3 widać tag CD2 charakterystyczny dla edycji Media Center / Tablet + tag wersji Itanium). Jakby jakiegoś tagu brakowało = utwórzcie przez Notatnik zwykły pusty plik o nazwie tagu, zdublujcie w odpowiednich lokalizacjach i tyle.

Nawiasem mówiąc, jest sposób jak uniknąć umieszczania tagów w dwóch miejscach: wyedytować TXTSETUP.SIF ale z bootfolderu (patrz dalej) przesuwając dla plików tagowych ścieżkę poziomy odpowiednio w dół np. \WIN51IP na \SETUP\WINXP\PRO\WIN51IP. Ale szczerze mówiąc lepiej mieć te pliki przekopiowane dwa razy (bo łatwo się to sprawdza), niż mozolić się z edycją. Zaznaczam jednak taką możliwość, bo niektórzy mają świra pod kątem tego jak wygląda ich DVD w roocie.



 

Stworzenie boot folderów:

 

Bootsector Windows NT4/2000/XP/2003 otworzony w hexedytorze pokazuje nam taki fragment:

bootsector.gif

Bootsector szuka bootfolderu, którym jest w oryginale i386, a w tym folderze pliku setupldr.bin, który z kolei szuka txtsetup.sif. Te foldery i386 są folderach z kopiami CD Windowsów, co jest zaznaczone dokładnie w wątku powyżej. I te foldery nie będą używane (choć na DVD mają być), bo w związku z budową struktury drzewka DVD nastąpiło zupełne przetransformowanie ścieżek. Bootsector już nie znajdzie tego bootfolderu. Trzeba stworzyć skopiowaną imitację zgodną z platformą systemową i w innym miejscu:



1. Bootfoldery mają być tworzone bezpośrednio w folderze o nazwie DVD. Muszą być czteroznakowe i w dużych literach:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gifXXXX

Dla systemów 64-bit: należy utworzyć podwójny bootfolder (czteroznakowy zamiennik dla i386 + pięcioznakowy zamiennik dla AMD64). 64-bitowce mogłby się posługiwać tylko jednym bootfolderem (tym czteroznakowym), aczkolwiek wtedy występuje różnica reakcyjna instalatora przy próbie uruchamiania instalki 64-bit na sprzęcie z procesorem 32-bitowym. Jeśli są podwójne bootfoldery, wtedy jest zwracany prawidłowy komunikat "Attempting to load an x64 operating system, however this CPU is not compatible...". Jeśli jest tylko jeden bootfolder, setup plecie coś o wkładaniu labelowanej CD, co zaciemnia faktyczną treść. Z tego powodu lepiej zachować podwójny układ.

2. Jak dobrać nazwy pod XXXX? Tu wchodzi już umowa. Te nazwy mogą być dowolne, takie jak Wam pasują. Ale coś muszę tu zastosować w opisie, by unaocznić proces. Przykładowo załóżmy system skrótów tego typu (1 = Windowsy 2000, 2 = Windowsy XP, 3 = Windowsy 2003, a 3 pozostałe znaki to abrewiacja edycji Windows):

-------- folder.gif1PRO = Boot folder 2000 Professional
-------- folder.gif1ADV = Boot folder 2000 Advanced Server
-------- folder.gif1SRV = Boot folder 2000 Server
-------- folder.gif1DTC = Boot folder 2000 Datacenter Server
-------- folder.gif2PRO = Boot folder XP Pro
-------- folder.gif2HOM = Boot folder XP Home
-------- folder.gif2MCE = Boot folder XP Media Center
-------- folder.gif2TAB = Boot folder XP Tablet
-------- folder.gif3STD = Boot folder 2003 Standard
-------- folder.gif3ENT = Boot folder 2003 Enterprise
-------- folder.gif3WEB = Boot folder 2003 Web
-------- folder.gif3DTC = Boot folder 2003 Datacenter
-------- folder.gif3SMB = Boot folder 2003 Small Business

Systemy 64-bit mają podwójny folder, przykładowo tak to można rozpisać:

-------- folder.gif2X64 = Boot folder XP 64-bit (czteroznakowy zamiennik dla I386)
-------- folder.gif64PRO = Boot folder XP 64-bit (pięcioznakowy zamiennik dla AMD64)

Możemy też utworzyć folder o nazwie oryginalnej i386:

-------- folder.gifI386 - Boot folder zawierający tylko Konsolę Odzyskiwania.

Opcjonalnie (jeśli ktoś dołącza LiveCD robione Bartem, patrz dalej):

-------- folder.gifBART - Boot folder zawierający LiveCD Barta.

Powyższy system skrótów to jedynie konwencja. Każdy przewodnik tworzenia multibootowalnej DVD posługuje się innym nazewnictwem tych bootfolderów, każdy użytkownik stosuje inne rodzaje skrótów, które rozumie i uważa za wygodne. Równie dobrze to możecie sobie tam zastosować np nazwy IXPP, IXPH etc. To nie jest ważne jak ta nazwa "wygląda", ważne jest tylko to by była czteroznakowa i w dużych literach (w przeciwnym wypadku nastąpi uszkodzenie plików).


 

Zapełnienie boot folderów:

 

Teraz trzeba te bootfoldery zapełnić właściwą zawartością startową. Teoretycznie zawartość bootfolderu to oryginalny folder i386 z płyty Windows. I np. w tutorialu Magic ISO Maker mowa o przekopiowaniu tego folderu w całości. Czyli na DVD jest załączony dwukrotnie ten sam folder. Jednakże przekopiowanie całego i386 to jest za dużo i niepotrzebne. Te foldery to z 300-500MB na łeb i mają również zapakowane niepotrzebne do bootowania elementy. Wystarczy przeliczyć, ile to by wyszło przy tworzeniu multiboot DVD repetujących po kilka edycji tej samej platformy...... Bootfolder nie potrzebuje całej zawartości oryginalnego i386 tylko jej cząstkę stricte startową = dokładnie to jest mechanizm z Dysków rozruchowych MS (waga to tylko między 5-7MB). Jak widać dyski rozruchowe są tylko pod wybrane warianty XP i raczej nie da się ich zastosować pod wszystkie Windowsy. I tu nadchodzi hardcore jak ręcznie skroić i386 do tego mini zestawu, pasującego do danej edycji Windows. Niestety w wykonaniu ręcznym jest to pracochłonne, a wybór metody zależy też od typu Windows:

 

Bootfoldery Windows XP/2003

 


Metoda 1 - Fragmentaryczne uruchomienie prawdziwego instalatora Windows:

Ta metoda polega na uruchomieniu z folderu SETUP (gdzie siedzą nasze przekopiowane płytki Windowsów), z podfolderu i386 wybranego Windowsa, instalatora winnt32.exe z przełącznikiem zapobiegającym resetowi komputera, i doprowadzenie go tylko do szczególnego punktu utworzenia plików bootujących, a po tym przerwanie procesu (bo przecież nie chcemy instalować Windowsa......). Metoda jest uciążliwa, ale gwarantuje, że dostaniemy odpowiednie pliki bootfolderów pasujące do danej edycji Windows. W przykładzie posłużmy się XP Pro, przypominam, gdzie siedzi skopiowana płytka (na zielono zaznaczony folder gdzie siedzi instalator):

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386 (tu siedzi instalator winnt32.exe)

(Na systemach 64-bit instalator ten siedzi w folderze AMD64 a nie i386)

1. Ważne Ta metoda modyfikuje ukryty plik prawdziwego Windows BOOT.INI, leżący na C:\ a odpowiedzialny za start naszego systemu. Jest to wysoce niepożądane, bo po restarcie komputera zacznie się uruchamiać ślepy instalator Windows. Przed operacją niżej opisaną należy wykonać kopię pliku BOOT.INI w bezpiecznym miejscu. Ta kopia będzie podstawiona na końcu, by przywrócić domyślny prawidłowy plik.

disc.gifC:
---- fileinihid.gifBOOT.INI

2. Uruchamiamy polecenie kierujące do wybranego instalatora z folderu SETUP, w tym konkretnym przypadku przykładowego XP Pro jest to ta ścieżka:

Start >>> Uruchom >>> G:\DVD\SETUP\WINXP\PRO\i386\winnt32.exe /noreboot

Pojawi się pełnoekranowy dialog instalowania Windowsa. Wybieramy jako typ Nowa instalacja (a nie Aktualizacja) i przechodzimy przez proces "instalowania Windows" (m.in. wpisanie klucza SN, opcje regionalne) omijając ściąganie zaktualizowanych plików. Poza tym w opcjach instalatora > Opcje zaawansowane > powinna być zaznaczona opcja Skopiuj pliki instalacji z dysku CD na dysk twardy (jeśli jest zszarzony wybór, nie ma się czym martwić). Proces wygląda dość "przerażająco", bo sugeruje że nam się właśnie instaluje Windows. Po przejściu etapów kopiowania plików instalacyjnych instalator sam się wyłączy.

3. Wynikowo instalator utworzy w katalogu głównym dysku C:\ (jeśli tam nie ma miejsca może to wyglądować na innym dysku) dwa ukryte foldery:

disc.gifC:
---- folderhid.gif$WIN_NT$.~BT
---- folderhid.gif$WIN_NT$.~LS

Katalog $WIN_NT$.~LS (300MB z okładem) zawierający pliki instalacyjne jest zupełnie nieistotny i od razu go skasować z dysku. Natomiast $WIN_NT$.~BT (~5-7MB) to jest właśnie bootfolder i to jego zawartość idzie na DVD. Kasujemy z niego pliki BOOTSECT.DAT + migrate.inf + winnt.sif, a następnie całą zawartość tego folderu przenosimy do naszego dotychczas pustego bootfolderu, w przykładzie 2PRO.

4. Przywracamy nasz domyślny plik BOOT.INI.




Metoda 2 - wyciągnięcie listy plików z pliku TXTSETUP.SIF:

Ta metoda jest jeszcze bardziej męcząca. Polega ona na zrobieniu listy na podstawie pliku TXTSETUP.SIF, a następnie ręcznym przekopiowaniu plików z folderu i386 do skorelowanego bootfolderu.

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386 (tu siedzi TXTSETUP.SIF)

W tym pliku w sekcjach [sourceDisksFiles...] wszystkie pliki, które mają w ciągu kreskę przed lub po numerze np:

kbdus.dll = 1,,,,,,_5,2,0,0,,1,2
1394bus.sys = 100,,,,,,3_,4,1,,,1,4


... to są właśnie pliki, które mają się znaleźć w bootfolderze. Kto by to "oczami" sprawdzał! Można sobie uprościć robiąc listę w trybie automatycznym przez plik BAT. Wystarczy w folderze i386 utworzyć plik BAT o poniższej zawartości i go uruchomić:
 
type TXTSETUP.SIF | findstr /r ",_[1-9] ,[1-9]_" > C:\LOG.TXT

 

Na C:\ powstanie plik LOG.TXT zawierający listę plików. Na podstawie tej listy należy z i386 przekopiowć: wszystkie pasujące spakowane pliki (one nie mają tam rozszerzeń EXE / SYS tylko ich zcabowane odpowiedniki EX_ / SY_ etc.) + TXTSETUP.SIF + folder system32 do nowego bootfolderu.



Wybraną metodę należy powtórzyć dla każdej edycji Windowsa z osobna, oczywiście uwzględniając inne ścieżki w folderze SETUP!



 

Bootfoldery Windows NT4/2000

 

1. Na tych Windowsach powyższą metodę numer 1 można stosować na żywca tylko pracując na tych typach systemów. Czyli: pracując na komputerze z Windows 2000 przy tworzeniu bootfolderu Windows 2000 można to zastosować, ale pracując na XP do tworzenia bootfolderu 2000 już jest to wykluczone. W takim przypadku tę metodę można użyć przez wirtualizer (np. VirtualBox) montując na nim wybraną edycję Windows 2000 i zapuszczając z jej poziomu instalator 2000.

2. Metoda numer dwa nadal aktualna.

Bootfolder Konsoli Odzyskiwania

 

Zapełnianie bootfolderu planowanej Konsoli Odzyskiwania na DVD jest dla odmiany bardzo proste. Proszę popatrzyć do topiku Wytwarzanie płyt startowych Windows na opis tworzenia płytki zawierającej tylko Konsolę Odzyskiwania. Zawartością bootfolderu będzie po prostu zawartość serii rozpakowanych dyskietek IMG. Czyli: pobrać wybraną wersję dyskietek, rozpakować je zgodnie z wytycznymi, całość umieścić w bootfolderze o nazwie I386, jeśli braliście polską wersję dyskietek to jeszcze połóżcie obok bootfolderu plik BOOTFONT.BIN (zamienić na duże litery!) by polskie znaki się wyświetlały. I tyle.

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gifI386
-------- file.gifBOOTFONT.BIN

 

Bootfolder LiveCD Barta

 

To jest osobny przypadek, proszę skierować się do indywidualnego posta opisującego co tu należy umieścić w boot folderze BART. To jest bardzo proste.





UWAGA: Jeszcze jedna pułapka. Otóż może się zdarzyć, że płytka zwróci błąd "nie znaleziono usbehci.sys" (albo innego pliku). I o cóż tu chodzi = o wielkość liter nazw plików. Pliki w bootfolderach powinny być w CAPSLOCKU, wszystkie. Czyli w bootfolderze zmienić nazwę pliku na duże litery. Jeśli w bootfolderach wszystkie pliki są zapisane małymi, należy masowo przekonwertować znaki na CAPSLOCK. W sekcji pobierania dałam linki do programów mielących to hurtem.

usbehci.gif

Odnośnik do komentarza

....cd.... METODY RĘCZNEJ




Skorelowanie ilości bootsectorów z ilością bootfolderów:



1. Liczba bootsectorów = liczba pasujących bootfolderów:

Od razu można zauważyć, że mamy tylko jeden bootsector pod wszystkie Windows 2000/XP/2003 (boot.bin) = czyli może kierować tylko do jednego boot folderu. Problemu nie ma żadnego, jeśli robi się boot płytę np. z Windows 98 + jedną edycją systemu typu NT = jeden bootsector + jeden bootfolder i koniec. Problemem jest załączanie kilku edycji Windows NT = boot folderów musi być utworzone tyle, ile załącza się edycji danego Windowsa (np. XP Home i XP Pro = to już dwa). Oczywiście bootsector nie da rady, zignoruje kolejne foldery, bo może adresować tylko jeden. Wniosek: trzeba wymnożyć bootsector tyle razy, ile jest edycji. Najprościej przekopiować ten plik bootsectora pod inną korespondującą nazwą. Dokładnie to znaczy to = nic trudnego, każdy umie skopiować plik. tongue.gif

file.gifBOOT.BIN > ten plik kopiujemy


2. Nazwy bootsectorów = nazwy pasujących bootfolderów (w DUŻYCH literach):

Bootsector punktuje do konkretnego bootfolderu, należy sobie uzgodnić nazwę bootsectora z nazwą bootfolderu. Czyli np. dla Windows XP Pro nasz umowny bootfolder to 2PRO = zmieniamy nazwę bootsectora na 2PRO.BIN.

file.gif2PRO.BIN > Skopiowany BOOT.BIN, w dużych literach!


3. Gdzie umieścić bootsectory:

Bootsectory muszą leżeć bezpośrednio w katalogu DVD obok bootfolderów. Czyli w przypadku naszego XP Pro lokujemy je razem:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gif2PRO
-------- file.gif2PRO.BIN

Operacje 1-3 trzeba powtórzyć tyle razy, ile zamieszczamy Windowsów.


Hipotetyczna sparowana mega-struktura multisystemowa wygląda w ten sposób:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gif1PRO = Boot folder 2000 Professional
-------- folder.gif1ADV = Boot folder 2000 Advanced Server
-------- folder.gif1SRV = Boot folder 2000 Server
-------- folder.gif1DTC = Boot folder 2000 Datacenter Server
-------- folder.gif2PRO = Boot folder XP Pro
-------- folder.gif2HOM = Boot folder XP Home
-------- folder.gif2MCE = Boot folder XP Media Center
-------- folder.gif2TAB = Boot folder XP Tablet
-------- folder.gif2X64 = Boot folder XP 64-bit
-------- folder.gif3STD = Boot folder 2003 Standard
-------- folder.gif3ENT = Boot folder 2003 Enterprise
-------- folder.gif3WEB = Boot folder 2003 Web
-------- folder.gif3DTC = Boot folder 2003 Datacenter
-------- folder.gif3SMB = Boot folder 2003 Small Business
-------- folder.gif64PRO = Do pary drugi bootfolder XP 64-bit
-------- folder.gifBART = Boot folder LiveCD Barta
-------- folder.gifI386 = Boot folder Konsoli Odzyskiwania
-------- file.gif1PRO.BIN = Bootsector 2000 Professional
-------- file.gif1ADV.BIN = Bootsector 2000 Advanced Server
-------- file.gif1SRV.BIN = Bootsector 2000 Server
-------- file.gif1DTC.BIN = Bootsector 2000 Datacenter Server
-------- file.gif2PRO.BIN = Bootsector XP Pro
-------- file.gif2HOM.BIN = Bootsector XP Home
-------- file.gif2MCE.BIN = Bootsector XP Media Center
-------- file.gif2TAB.BIN = Bootsector XP Tablet
-------- file.gif2X64.BIN = Bootsector XP 64-bit
-------- file.gif3STD.BIN = Bootsector 2003 Standard
-------- file.gif3ENT.BIN = Bootsector 2003 Enterprise
-------- file.gif3WEB.BIN = Bootsector 2003 Web
-------- file.gif3DTC.BIN = Bootsector 2003 Datacenter
-------- file.gif3SMB.BIN = Bootsector 2003 Small Business
-------- file.gifBART.BIN = Bootsector LiveCD Barta
-------- file.gifI386.BIN = Bootsector Konsoli Odzyskiwania





Edycja plików startowych bootfolderów:



Utworzyliśmy bootfoldery (z właściwą zawartością) i położyliśmy obok nich bootsectory. Teraz trzeba skorygować, by każdy bootsector kierował do prawidłowego bootfolderu, bo na razie te przekopiowane tyle razy bootsectory nadal punktują do oryginalnego i386, a to się już nie zgadza się. Jedyny bootsector, który nie będzie edytowany, to ten należący do bootfolderu Konsoli Odzyskiwania - ponieważ zachowaliśmy oryginalną nazwę i386.
Operacje te muszą być wykonane tyle razy ile jest par bootsector+bootfolder, z uwzględnieniem ich różniących się nazw! Oczywiście nie ma sensu opisywać dla każdej wersji systemów Windows 2000/XP/2003 tej operacji. Ją prowadzi się w taki sam sposób (jest tylko jeden wyjątek i to będzie opisane). Dlatego też w przykładzie jest opis akcji na tylko jednej parze bootsector+bootfolder, ten opis powtarza się tyle razy, ile jest następnych par. Heh robota zamotana i męcząca, ale tak to niestety wygląda w wydaniu ręcznym. Przyjmijmy, że interesuje nas zmontowanie tej pary dla Windows XP Pro.


Hex-edycja bootsectora:

Na przykładzie bootsectora przekopiowanego pod nazwą 2PRO.BIN

Bootsector leży obok bootfolderu, dzielą wspólną nazwę:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gif2PRO
-------- file.gif2PRO.BIN

Należy plik bootsectora 2PRO.BIN otworzyć w hex-edytorze i zjechać do fragmentu tekstowego z I386:

hex1.gif

Zamienić tekst I386 na nowy tekst będący nazwą pasującego bootfolderu, w tym przypadku 2PRO:

hex2.gif
^
hex3.gif

Zapisać zmiany w pliku. Nasz bootsector jest już gotowy.


Tę operację należy powtórzyć dla każdego z bootsectorów z osobna, oczywiście uwzględniając inne pasujące do kompletu nazwy bootfolderów!



Hex-edycja SETUPLDR.BIN:

Na przykładzie bootfolderu XP Pro czyli 2PRO

Należy wejść w bootfolder 2PRO i zlokalizować tam plik SETUPLDR.BIN:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gif2PRO
------------ file.gifSETUPLDR.BIN

Plik otworzyć w hex-edytorze. Z menu Search > Replace > odznaczyć Case sensitive > zaznaczyć w obu polach Text String > w pierwszym wpisać wymienianą nazwę i386, a w drugim nową nazwę bootfolderu, w tym przypadku 2PRO:

hex4.gif

Klikamy w Replace all. Wynikowy komunikat to zamiana 4 instancji:

hex5.gif

4 instancje są na Windows XP/2003, 3 instancje na Windows 2000 i 2 instancje na Windows NT4, oraz 7 instancji na zaservicepackowanym 2003 + edycjach 64-bit.
Jeżeli komunikaty zwracają inne liczby dla danego systemu niż tu powiedziane = jest problem i jakiś błąd operacji. Należy przerwać i powtórzyć wszystko od samego początku.... Zapisujemy zmiany w pliku.


Tę operację należy powtórzyć dla każdego z bootfolderów z osobna, oczywiście uwzględniając inne pasujące do kompletu nazwy!

 

Wyjątek: Wersje Windows 2003 SP1/SP2 + edycje 64-bit + WinPE


Te wersje Windowsów mają inny SETUPLDR.BIN. Wykonanie na nim powyższej edycji skutkuje niepomyślnym bootowaniem instalki zwracającym błąd uszkodzonego pliku NTLDR, ponieważ nie zgadza się suma kontrolna. Musi być wykonana dodatkowa edycja przed powyższą edycją. Otworzyć plik w hexedytorze i przejść na adres 2060:

hex6.gif

Tam zamienić ciąg 74 03 na EB 1A:

hex7.gif
^
hex8.gif

Następnie wykonać powyższą edycję zamiany znaków i386 na czteroznakową nazwę pasującego bootfolderu. Dla wersji 64-bitowych zamiana znaków jest podwójna, ponieważ 64-bitowce mają podwójny folder:
- zamiana i386 na czeteroznakowy nowy pasujący bootfolder
- zamiana amd64 na pięcioznakowy nowy pasujący bootfolder. Uwaga: nie wymieniać wszystkich ciągów amd64, tylko te z ukośnikami: \amd64, amd64\ na korespondujące pięcioznakowe bootfoldery również z uwzględnieniem ukośnika.



Edycja TXTSETUP.SIF:

Na przykładzie bootfolderu XP Pro czyli 2PRO

Należy wejść w bootfolder 2PRO i zlokalizować tam plik txtsetup.sif:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
-------- folder.gif2PRO
------------ file.gifTXTSETUP.SIF

Plik otworzyć w zwykłym Notatniku. CTRL+F i na wyszukiwanie wpisać ciąg SetupSourcePath.

txtsetup1.gif

W linijce tej należy wymienić domyślne "\" na prawidłową ścieżkę kierującą do pełnej skopiowanej płytki danego Windowsa (wszystkie siedzą w folderze SETUP). Przypominam gdzie konkretnie leży nasza pełna skopiowana zawartość płyty XP Pro:

disc.gifG:
---- folder.gifDVD
-------- folder.gifSETUP
------------ folder.gifWINXP
---------------- folder.gifPRO

W tym przypadku zmienić "\" na "\SETUP\WINXP\PRO\":

txtsetup2.giftxtsetup3.gif

Zapisać zmiany w pliku.


Tę operację należy powtórzyć dla każdego z bootfolderów z osobna, oczywiście uwzględniając inne pasujące do kompletu ścieżki płyt CD z folderu SETUP!


Jeszcze w kwestii TXTSETUP.SIF = dodatkowy możliwy tweak to wyedytowanie ścieżek do plików tagowych, by je przekierować na odczyt z folderu SETUP (wtedy pliki tagów wystarczy załączyć tylko raz). Ale choć ta metoda jest możliwa, nieszczególnie ją eksponuję, bo łatwiej sprawdzić braki tagów przez widoczność plików tagowych, niż przez mozolne sprawdzanie każdego TXTSETUP.SIF w każdym bootfolderze.




 

Odnośnik do komentarza

.... Cały ten post dotyczy tylko i wyłącznie Windows 2000/XP/2003 ....





Automatyczny skrypt:



Wszystko co powyżej opisane (ale musicie to przeczytać, by zrozumieć co się zaraz stanie, i by zweryfikować na końcu poprawność akcji) da się zrobić z palca automatycznym skryptem, zajefajnym. Skrypt sam tworzy boot foldery, wypełnia je odpowiednimi plikami, multiplikuje korespondujące bootsectory pod zgadzającymi się nazwami, patchuje wszystkie pliki przez załączony edytor hexów XVI32 (włącznie z korektą setupldr na Windows Server 2003 SP + edycjach 64-bit) + modduje TXTSETUP.SIF, plus z podfolderów SETUP wyciąga wszystkie tagi identyfikacyjne i lokuje tam gdzie potrzeba. Już prościej być nie może. Skrypt pochodzi z msfn.org z topiku Automatically create multi boot folders. Pobranie załącznika forum wymaga tam rejestracji, dlatego przehostowałam to. Mam nadzieję, że mogę = źródło podane.

create_multiboot_folders_and_files.zip



1. W paczce jest plik exe, który uruchamiamy. Padnie pytanie gdzie "zainstalować narzędzie" = wskazać folder DVD. Po ukończeniu wypakowywania narzędzie utworzy folder o nazwie #TOOLS, w którym są dwa pliki o podobnych nazwach:

disc.gifG:
---- folder.gifDVD
-------- folder.gif#TOOLS
------------ file.gifcreate_boot_folders.cmd
------------ file.gifcreate_boot_folder.cmd



2. Otworzyć w Notatniku plik create_boot_folders.cmd (ten plik wywołuje drugi plik create_boot_folder.cmd) i zmodyfikować stosownie do potrzeb. Oni tam mają swój system nazewnictwa, skrypt wymaga przeróbki, by pasował. Uprościłam go, by każdy zrozumiał, można sobie wkleić to co poniżej i na tym pracować. Czarnych nie ruszamy, tylko w kolorze ma znaczenie i to trzeba sobie dograć:


@echo off


rem Dopasuj plik do swoich potrzeb:
rem call create_boot_folder.cmd setup dvd boot1 boot2 flaga_setupldr
rem
rem setup: folder kopii CD Windows
rem dvd: nadrzedny folder DVD, tu powstaja bootfoldery
rem boot1: 4 znakowy bootfolder, w CAPSLOCK
rem boot2: 5 znakowy bootfolder, tylko dla edycji 64bit, w CAPSLOCK
rem flaga_setupldr: ustawienie na 1 wymagane dla Server 2003 SP i wersji 64bit

rem Po edycji zapisz plik i uruchom


echo Tworzenie bootfolderow i plikow, czekaj...


rem Wersje Windows 2000
call create_boot_folder.cmd G:\DVD\SETUP\WIN2000\ADV G:\DVD 1ADV FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WIN2000\DTC G:\DVD 1DTC FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WIN2000\PRO G:\DVD 1PRO FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WIN2000\SRV G:\DVD 1SRV FOO 0

rem Wersje Windows XP
call create_boot_folder.cmd G:\DVD\SETUP\WINXP\HOME G:\DVD 2HOM FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WINXP\PRO G:\DVD 2PRO FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WINXP\MCE G:\DVD 2MCE FOO 0
call create_boot_folder.cmd G:\DVD\SETUP\WINXP\TABLET G:\DVD 2TAB FOO 0

rem Wersje Windows 2003
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\DTC G:\DVD 3DTC FOO 1
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\ENT G:\DVD 3ENT FOO 1
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\SBS G:\DVD 3SBS FOO 1
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\STD G:\DVD 3STD FOO 1
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\WEB G:\DVD 3WEB FOO 1

rem Wersje 64-bit
call create_boot_folder.cmd G:\DVD\SETUP\WINXP\X64 G:\DVD 2X64 64PRO 1
call create_boot_folder.cmd G:\DVD\SETUP\WIN2003\X64 G:\DVD 3X64 64ENT 1


echo Jesli nie widzisz bledow, wszystko OK, ale upewnij sie.
pause



 

3. Po skorygowaniu skryptu zapisujemy zmiany w pliku i plik uruchamiany przez dwuklik. Pojawi się okno konsolowe i cierpliwie czekamy. Tam będą w tle latać różne automatycznie otwierane/zamykane okna. Tym się nie przejmować i wytrwać do końca procesu.


4. Udajemy się do folderu DVD i sprawdzamy, czy skrypt prawidłowo utworzył pary bootsector+bootfolder, pod odpowiednimi nazwami w dużych literach. Oraz proszę się upewnić, że w każdym bootfolderze wszystkie pliki są w dużych literach (jeśli nie = zmienić nazwę na CAPSLOCKOWĄ!). Jeśli wszystko się zgadza = koniec. Przeszliśmy ten etap.



 

Odnośnik do komentarza

.... Cały ten post dotyczy tylko i wyłącznie Windows XP/2003 przerobionego na typ "LiveCD" ....

 

 

Dodanie edycji LiveCD (z wybranego systemu XP/2003):

 

Jest to krok opcjonalny, ale jakże przydatny. Opisuję ten wątek odrębnie od reszty, ponieważ mimo że wszystko idzie bardzo podobnie (bootfolder + bootsector), nie chcę wymieszać ścieżek dostępu. Bart po prostu od razu preparuje zestaw bootowalny, tylko niektóre rzeczy trzeba poprawić i przearanżować. Pobieranie Barta:

Bart's Preinstalled Environment (BartPE)


1. Uruchamiamy Barta i przepuszczamy przez niego wybraną kopię płytki Windows XP lub 2003, konfigurując:

  • W Źródło wskazujemy pliki skopiowanej płytki Windowsa. Jako, że już mamy przecież w naszym projekcie DVD w podfolderze SETUP skopiowaną płytę możemy od razu ją wskazać (oczywiście jeśli ktoś ma kopię CD gdzie indziej to co innego tu wprowadza).
  • Jako katalog docelowy zostawiamy domyślnie proponowany (można sobie zmienić)
  • Media output: zdecydowałam, że nie robię od razu z tego ISO, bo i tak nie jest nam potrzebne (to inne pliki Barta idą na DVD), tylko zaznaczam po prostu opcję Brak.
  • W Plugins dokonfigurować dwie rzeczy. Po pierwsze wyłączyć bootfix.bin - to usunie ekran "Wciśnij klawisz by bootować z CD". Ekran zbędny na multi-DVD, która będzie mieć własny system czekania na reakcję klawiaturową (poza tym, jeśli nie wciśnie się klawisza, będzie samoreset). Trzeci powód to taki, że dziwne rzeczy u mnie się działy = przy włączonym bootfix.bin start Barta z multidvd po prostu wisiał i nie wszedł dalej. Następna rzecz do skonfigurowania to włączenie wtyczki DCOM (jeśli LiveCD jest robiona z Windows XP, który ma conajmniej SP2 i wyżej).

bart1.gif bart2.gif bart3.gif


2. Po pomyślnym ukończeniu procesu wynikowo uzyskamy katalog docelowy Barta, o zawartości podobnej do tej:

bart4.gif

Folder i386 to będzie bootfolder, bootsect.bin to bootsector, folder Programs to programy powłoki Barta, reszta plików to tagi płytki (będą inne w zależności od tego z jakiego Windowsa zrobiliśmy LiveCD). To ta zawartość idzie na DVD i zaraz będzie jak to rozlokować, bo to nie może być tak po prostu "wrzucone razem". Jednakże na początek uwaga: jeśli wynikowo w folderze Barta w i386 wszystkie pliki są w małych literach, proszę rekursywnie zamienić wszystkie na CAPSLOCK'owe liternictwo. Wszystkie.

bart5.gif


3. Utworzenie bootfolderu + bootsectora i przekierowanie im ścieżek dostępu. Postępujemy tak samo jak w przypadku normalnych instalacji Windows opisanych wcześniej tzn.:

  • Bezpośrednio w folderze DVD tworzymy folder o nazwie czteroznakowej i w dużych literach np. przyjmijmy, że nazwa folderu to BART. I do tego nowego bootfolderu BART przenosimy całą zawartość z folderu i386 katalogu docelowego Barta.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBART

  • W katalogu docelowym Barta zmieniamy nazwę pliku BOOTSECT.BIN na czteroznakową pasującą do nazwy bootfolderu, czyli w tym przypadku na BART.BIN, i plik BART.BIN umieszczamy obok folderu BART.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBART
-------- file.gifBART.BIN

  • Kolejny krok to zedytowanie w hexedytorze plików: bootsectora BART.BIN (zamieniając słowo I386 na BART) + leżącego w bootfolderze BART pliku SETUPLDR.BIN (zamieniając wszystkie instancje słowa i386 na BART). Proszę popatrzyć na wcześniejszy opis jak to się robi dla Windows 2000/XP/2003. Edytujemy tylko te dwa pliki, pliku TXTSETUP.SIF nie trzeba korygować, ponieważ folder BART jest jednocześnie bootfolderem oraz właściwym Windowsem typu Live = folder leży w root DVD, czyli zostanie znaleziony bez edycji.

4. Na koniec obok bootfolderu i bootsectora kładziemy folder Programs z docelowego katalogu Barta, oraz wszystkie pliki tagów (jeśli już te same tagi są z normalnych Windows = nie ma potrzeby ich umieszczać). Końcowy układ elementów należących do LiveCD zrobionej Bartem:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBART (Boot folder zawierający LiveCD Barta)
-------- folder.gifPrograms (Dodatkowy folder mający Programy Barta)
-------- file.gifBART.BIN (Bootsector LiveCD Barta)
-------- file.gifWIN51 + WIN51IX + WIN51IX.SPx (pliki tagów zależą od tego z jakiego Windows robiliśmy LiveCD)

I tyle. LiveCD jest przystosowana do układu multiinstalacyjnej DVD.

Odnośnik do komentarza

Finałowa struktura DVD (jeszcze niebootowalna i bez menu):




disc.gifG:
---- folder.gifDVD

W folderze DVD są wszystkie bootfoldery systemów typu NT, czteroznakowe i w dużych literach!
Systemy 64-bit mają aż dwa bootfoldery: czteroznakowy + pięcioznakowy i w dużych literach!
Wszystkie pliki w każdym bootfolderze muszą być w dużych literach!
Bart ma dwa foldery. Wszystkie pliki w bootfolderze BART muszą być w dużych literach!


-------- folder.gif1PRO (Boot folder 2000 Professional)
-------- folder.gif1ADV (Boot folder 2000 Advanced Server)
-------- folder.gif1SRV (Boot folder 2000 Server)
-------- folder.gif1DTC (Boot folder 2000 Datacenter Server)
-------- folder.gif2PRO (Boot folder XP Pro)
-------- folder.gif2HOM (Boot folder XP Home)
-------- folder.gif2MCE (Boot folder XP Media Center)
-------- folder.gif2TAB (Boot folder XP Tablet)
-------- folder.gif2X64 (Boot folder XP 64-bit)
-------- folder.gif3STD (Boot folder 2003 Standard)
-------- folder.gif3ENT (Boot folder 2003 Enterprise)
-------- folder.gif3WEB (Boot folder 2003 Web)
-------- folder.gif3DTC (Boot folder 2003 Datacenter)
-------- folder.gif3SMB (Boot folder 2003 Small Business)
-------- folder.gif64PRO (Do pary drugi bootfolder XP 64-bit)
-------- folder.gifBART (Boot folder LiveCD Barta)
-------- folder.gifI386 (Boot folder Konsoli Odzyskiwania)
-------- folder.gifPrograms (Dodatkowy folder LiveCD Barta trzymający jego aplikacje)
-------- folder.gifi tak dalej....

W folderze DVD jest podfolder SETUP zawierający pełne kopie oryginalnych płytek Windows NT4/2000/XP/2003. Organizacja podfolderowa umowna.
Na zielono oryginalne foldery kopii płyt CD, nie ruszamy tych folderów. Systemy 64-bit mają podwójne foldery.
Na niebiesko tag odpowiadający danej edycji Windowsa.


-------- folder.gifSETUP
------------ folder.gifWIN2000
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IP.5 + CDROMSPx.TST
---------------- folder.gifADV (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IA.5 + CDROMSPx.TST
---------------- folder.gifSRV (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_IS.5 + CDROMSPx.TST
---------------- folder.gifDTC (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifCDROM_NT.5 + CDROM_ID.5 + CDROMSPx.TST
------------ folder.gifWINXP
---------------- folder.gifHOME (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IC + WIN51IC.SPx
---------------- folder.gifPRO (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifTABLET (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifMCE (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IP + WIN51IP.SPx
---------------- folder.gifX64 (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- folder.gifAMD64
-------------------- file.gifWIN51 + WIN51AP + WIN51AP.SPx
------------ folder.gifWIN2003
---------------- folder.gifSTD (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IS + WIN51IS.SPx
---------------- folder.gifENT (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IA + WIN51IA.SPx
---------------- folder.gifWEB (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IB + WIN51IB.SPx
---------------- folder.gifDTC (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51ID + WIN51ID.SPx
---------------- folder.gifSMB (cała zawartość płytki)
-------------------- folder.gifi386
-------------------- file.gifWIN51 + WIN51IL + WIN51IL.SPx
------------ folder.gifi tak dalej....

W folderze DVD leżą pełne kopie płytek starszych systemów, celowo tu odseparowane.
Wszystkie podfoldery + pliki w środku muszą być w dużych literach!


-------- folder.gifWINME (cała zawartość płytki)
-------- folder.gifWIN98 (cała zawartość płytki)

W folderze DVD luzem leżą wszystkie bootsectory wszystkich systemów, w dużych literach!
(ich nazwy korespondują do nazw bootfolderów, z wyjątkiem obrazów dyskietek Windows 98/Me)


-------- file.gif1PRO.BIN
-------- file.gif1ADV.BIN
-------- file.gif1SRV.BIN
-------- file.gif1DTC.BIN
-------- file.gif2PRO.BIN
-------- file.gif2HOM.BIN
-------- file.gif2MCE.BIN
-------- file.gif2TAB.BIN
-------- file.gif2X64.BIN
-------- file.gif3STD.BIN
-------- file.gif3ENT.BIN
-------- file.gif3WEB.BIN
-------- file.gif3DTC.BIN
-------- file.gif3SMB.BIN
-------- file.gifBART.BIN
-------- file.gifI386.BIN
-------- fileima.gif98.IMA
-------- fileima.gifME.IMA
-------- file.gifi tak dalej....

W folderze DVD leżą też pliki identyfikatorów platform w dużych literach!
- Windows NT4/2000/XP/2003 mają tagi przekopiowane (a nie przeniesione) z folderu SETUP (tagi zdublowane załączamy tylko raz, nieważne z której CD)
- Windows 98/Me dzielą plik tagowy CD.TXT


-------- txtfile.gifCD.TXT
-------- file.gifCDROM_NT.5
-------- file.gifCDROM_IX.5
-------- file.gifCDROMSPx.TST
-------- file.gifWIN51
-------- file.gifWIN51IX
-------- file.gifWIN51IX.SPx

W folderze DVD jest też samotny plik BOOTFONT.BIN w dużych literach!, odpowiadający za polskie znaki w instalatorach.
(dotyczy to tylko sytuacji, gdy na DVD są jakiekolwiek polskie instalki)


-------- file.gifBOOTFONT.BIN

... dodatkowo można tu umieścić zwykły plik tekstowy zawierający wszystkie klucze SN Windows

-------- txtfile.gifKLUCZE.TXT


Nie dostańcie zawału = to tylko teoretyczna struktura i co to musiałoby być za DVD by to wszystko weszło, nawet osiemnastka by nie starczyła laugh.gif. Oczywiście nie tworzycie wszystkiego i dokładnie tak samo - wybieracie tyle folderów, ile załączacie edycji danego systemu, wybieracie takie nazwy jakie są wam potrzebne. Powyżej jest po prostu wizualny graf jak to się rozmieszcza, by łatwo było sobie wybrać i nie pogubić się w lokowaniu swoich obiektów. Dla porównania moja struktura:

final.gif


 

Odnośnik do komentarza

Budowa menu startowego

Cała powyższa struktura bootfolderów + sparowanych bootsectorów, folderu SETUP z instalkami i plików tagowych musi być ujęta przez ogólny system, który zrobi z tego menu i załaduje wszystko.



syslinux_135x135.pngMenu w ISOLINUX

Nie uciekać na słowo "Linux", to jest bardzo fajny soft do zrobienia menu. Wybrałam tę metodę jako główną z kilku podstawowych powodów. Jest o wiele prostsza niż nierozwijany archaiczny CD Shell (jak porównacie następne wątki, od razu zrozumiecie co mam na myśli). Struktura menu to tylko po kilka dość czytelnych linijek, bardzo szybko można uzyskać atrakcyjne graficzne menu. Poza tym chciałam dać pole do poszerzania swojej DVD o inne programy = tutaj konkretnie mam na myśli budowę dysku multiinstalacyjnego, który ma zaimplementowany również program do partycjonowania - darmowy Parted Magic (Linux-based). O wiele łatwiej wsadzić Parted Magica bezpośrednio via Isolinux, niż przez system CD Shell (o tym będzie wzmianka i również zrozumiecie dlaczego Isolinux to zbawienie). Co więcej, zastosowanie Isolinux pozwoli w dość łatwy sposób zrobić DVD, które będzie łączyło instalacje Windowsa z instalacjami Linuxa. Nie będę tu tego omawiać = jesteśmy na forum ukierunkowanym na Windows, ale kreślę tylko potencjał użytego mechanizmu. W podstawowym wydaniu całość operacji jest bardzo prosta:

 

 

 

Wprowadzenie folderów ISOLINUX:

Syslinux

1. Pobraną paczkę Syslinuxową rozpakować w dowolnym miejscu. W roocie DVD obok wszystkich bootfolderów / SETUP / obrazów dyskietek umieścić cały katalog syslinux (nic w nim nie modyfikować zachowując wszystko co ma w środku). Obok utworzyć folder o nazwie BOOT a w nim podfolder isolinux.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
-------- folder.gifsyslinux

2. Z folderu syslinux skopiować (nie przenosić, tylko skopiować!) do podfolderu isolinux pliki (one są w folderze syslinux w różnych miejscach, szukać): isolinux.bin, vesamenu.c32 (ewentualnie też menu.c32 - patrz dalej co to za różnica), chain.c32 i memdisk. Położyć obok pusty plik o nazwie isolinux.cfg (można zrobić go w Notatniku).

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
---------------- file.gifchain.c32
---------------- file.gifisolinux.bin
---------------- file.gifisolinux.cfg
---------------- file.gifmemdisk
---------------- file.gifvesamenu.c32

Krótki opis do czego służą te pliki:

  • chain.c32 = bootowanie twardych dysków
  • isolinux.bin = bootowalny obraz bez emulacji, to będzie generalny bootloader całego DVD wskazywany w programach wypalających
  • isolinux.cfg = plik będzie trzymał cały konfig menu, który dopiero musimy rozpisać.
  • memdisk = do inicjowania obrazów dyskietek Windows 98/ME oraz projektów narzędziowych posługujących się takim typem emulacji
  • vesamenu.c32 = matryca graficznego menu z możnością wprowadzania grafiki. Alternatywnym zamiennikiem jest plik menu.c32 = to zubożałe menu tekstowe bez możliwości wyświetlania obrazów i plików tekstowych przez klawisze funkcyjne. Przyjęłam, że interesują nas atrakcje graficzne, a nie "dosówki".

3. Otworzyć pusty plik isolinux.cfg w dowolnym edytorze tekstowym (może być Notatnik). I zabieramy się za pisanie menu.

 

 

 

Napisanie menu ISOLINUX:

 

Opis budowania menu jest w dokumentacji, ja tu skondensuję pod kątem naszej tematyki. Od razu rzecz o ścieżkach dostępu i ich właściwym odczytaniu. W pliku ścieżki idą od roota (tutaj to oznacza root folderu DVD) i mają ukośniki w przeciwną stronę niż "struktura Windows". To znaczy, że ścieżka naszego projektu G:\DVD to w pliku /, ścieżka G:\DVD\BOOT to w pliku /BOOT itd.



GŁÓWNA OPRAWA I PODZIAŁ MENU:

Wybranie systemu menu, jego tła, domyślnych komunikatów i tytułu:

UI /boot/isolinux/vesamenu.c32
MENU BACKGROUND /boot/isolinux/splash.png
MENU TABMSG Dowolny tekst wyświetlany zamiast "wciśnij Tab..."
MENU AUTOBOOT Automatyczny restart za # sekund
MENU TITLE Dowolny tekst wyświetlany w nagłówku


Linia UI wskazuje, który system menu jest użyty i tu zostawiamy tak jak jest kierunek na plik vesamenu.c32, bo interesuje nas graficzne menu z możliwością podłożenia atrakcyjnego obrazu, a nie klasyczne dosówkowe ekrany.
Linia MENU BACKGROUND punktuje tło stosowane w systemie vesamenu.c32. Tłem może być wypełnienie kolorem lub po prostu ścieżka dostępu do pliku gotowej bitmapy podkładowej. Bitmapa musi mieć rozmiar 640x480 pixeli, może być w formacie PNG lub JPEG. Obrazek jest tłem, cały tekst menu jest na to nałożony i nie przysłonięty. Przygotowany obraz umieszczamy zgodnie z tym co jest napisane wyżej, w folderze:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
---------------- filepng.gifsplash.png

Można go też umieścić bezpośrednio w katalogu DVD, wtedy wpisujemy tylko ukośnik i nazwę pliku.

Linia MENU TABMSG wymienia domyślny tekst "Press [Tab] to edit options" na inny dowolnie tu wybrany. Zostawiając to puste powodujemy, że nie wyświetla się ten komunikat wcale. Komunikat ten nas nie interesuje, bo nic nie będziemy "edytować".
Linia MENU AUTOBOOT wymienia domyślny komunikat odliczania czasowego do resetu komputera na inny dowolny tekst, akurat tu wpisałam spolszczoną opcję. Znaczek # odpowiada za pokazywanie się ilości sekund.
Linia MENU TITLE drukuje nam po prostu tytuł nagłówka menu. Tu można wpisać dowolną bzdurę.

Od wersji SysLinux 3.74 nastąpiła zmiana i DEFAULT nie jest stosowane już jako polecenie wyboru menu:

DEFAULT /boot/isolinux/vesamenu.c32

W zamian należy zastosować dyrektywę UI:

UI /boot/isolinux/vesamenu.c32



Podział na sekcje:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu


Każda pozycja menu jest rozpisana w bloku mającym znacznik LABEL, po którym wprowadzamy dowolne krótkie słowo (to słowo stosuje się w linii poleceń). LABEL musi być unikatowe (nie może być dwóch LABEL z tym samym wyrazem). W bloku LABEL są dodatkowe specyfikacje opcji menu takie jak: MENU LABEL (wyświetlany w menu tekst pozycji i tu można wpisywać dowolne rzeczy), MENU DEFAULT (zapis powoduje, że dana pozycja menu jest podświetlona jako domyślna), KERNEL (inicjowanie określonych instalatorów / bootsectorów = patrz dalej). Te dodatkowe polecenia sukcesywnie się zapełnia w zależności co ma robić dana pozycja menu. By uzyskać pustą linię między pozycjami menu po prostu wpisuje się MENU SEPARATOR.


ELEMENTY NATURY NAWIGACYJNEJ / OPISOWEJ:

Wprowadzenie hotkeya, który podświetli na liście menu wybraną pozycję:

LABEL UnikatowaNazwa
MENU LABEL ^Dowolny tekst wyświetlany w menu


Stosowanie tego jest niekonieczne. Do tego służy znaczek daszkowy ^, umieszczony przed tym znakiem menu, który ma inicjować z klawiatury podświetlanie i to zostanie wyboldowane w menu. Przykładowo: ^Dowolny tekst wyświetlany w menu (hotkeyem będzie D, literka D w bold), Dowolny ^tekst wyświetlany w menu (hotkeyem będzie T i ta literka będzie w bold). Hotkey nie może się powtarzać - można użyć ten sam tylko raz, w przeciwnym przypadku jest kolizja i dana opcja menu ulega deaktywacji.

Wprowadzenie wyświetlania określonego tekstu opisowego po zaznaczeniu pozycji menu:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu
TEXT HELP
Klucz seryjny to: XXXX-XXXX-XXXX-XXXX
CD ze zintegrowanymi aktualizacjami via nLite

ENDTEXT


Za to odpowiada wstawienie w bloku label znacznika TEXT HELP po którym wpisujemy swoje wypociny, a zakańczamy przez ENDTEXT. Tekst może być dowolny, tekst może być wieloliniowy. Przykładowe zastosowanie: po zaznaczeniu pozycji menu instalacji danego systemu wyświetli się jego klucz SN stosowany do instalacji. Albo też można umieścić opis jak płytę zrobiono, jakie Service Packi ma zintegrowane, albo czy płyta ma modyfikowany Windows. Po prostu dowolne rzeczy.

Wyświetlanie dodatkowych informacji z plików tekstowych:

F1 /PlikTekstowy1
F2 /PlikTekstowy2
.....


Można również w bardzo prosty sposób wywołać wybrany plik tekstowy zawierający jakąś pomoc / opis / zestaw kluczy instalacyjnych etc. Do tego służy polecenie zawierające nazwę keya funkcyjnego (od F1 do F12) a po nim ścieżkę dostępu do pliku. Plik tekstowy można umieścić np. bezpośrednio w katalogu DVD = stąd ścieżka dostępu sprowadza się tutaj tylko do podania ukośnika + nazwy pliku. Dodatkowy cymes graficzny: każdy plik tekstowy może być wyświetlany na innym tle niż główny obraz podkładowy menu. Wystarczy dopisać sobie po ścieżce dostępu do pliku tekstowego ścieżkę dostępu do obrazu PNG lub JPEG.


WYWOŁYWANIE INSTALATORÓW / BOOTOWANIA:

Inicjowanie instalatorów systemów Windows NT4/2000/XP/2003, LiveCD Barta, oraz skrojonej Konsoli Odzyskiwania:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu
KERNEL /PlikBootsectora


Wystarczy w sekcji KERNEL podać ścieżkę do pasującego bootsectora. Isolinux wymaga w tym przypadku formatu BIN = i to uwzględniłam dając Wam gotowy bootsector do operacji kopiowania. Pliki bootsectorów omawialiśmy na samym początku = to ta seria plików 2PRO.BIN, I386.BIN etc. Jako że nasze bootsectory leżą bezpośrednio w głównym katalogu DVD, ich ścieżka dostępu ogranicza się tylko do ukośnika (to oznacza root) + nazwy bootsectora np. /2PRO.BIN, /I386.BIN. Tylko tyle.

Inicjowanie instalatorów systemów Windows 98/ME:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu
KERNEL /boot/isolinux/memdisk
APPEND initrd=/PlikObrazuDyskietki


Dla tych systemów ich bootsectorami są obrazy dyskietek, dlatego też musi być w linii KERNEL skierowanie do memdiska + dodanie linii APPEND kierującej do obrazu dyskietki. Ta sama zasada co wyżej: nasze obrazy dyskietek leżą bezpośrednio w głównym katalogu DVD = wystarczy ukośnik + nazwa pliku np. /98.IMA, /ME.IMA.

Inicjowanie bootowania z dysku twardego:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu
KERNEL /boot/isolinux/chain.c32
APPEND KodDysku


Dodatkowo można wprowadzić w menu opcję bootowania z dysku twardego np. jeśli jest tam już jakiś system zainstalowany lub jeśli wywołana z DVD instalacja Windows ma być kontynuowana po restarcie. W sekcji KERNEL kierujemy do pliku chain.c32, a w APPEND podajemy kod dysku twardego, który ma bootować. Np. hd0 = oznacza pierwszy dysk twardy.


FORMOWANIE SUBMENU:

Ogólny schemat:

MENU BEGIN UnikatowaNazwa
MENU LABEL Dowolny tekst wyświetlany w menu (dostanie strzałkę z boku)

... tu wchodzą kolejne bloki LABEL definiujące kolejne opcje ...

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst powrotu (dostanie strzałkę z boku)
MENU EXIT

MENU END


Całe podmenu jest zamknięte między znacznikami MENU BEGIN a MENU END. Pomiędzy wprowadzamy to co już znamy = czyli osobne labelki definiujące każdą pozycję submenu z osobna. Wypada też dorobić opcję powrotu do głównego menu, do tego służy polecenie MENU EXIT (użyte na goło automatycznie przenosi poziom w górę, przy bardziej skomplikowanych układach mających wielopoziomowe systemy podmenu można dopisać tag menu do którego ma nastąpić powrót). Jeżeli submenu ma kierować na kolejne głębsze submenu - prócz powrotowej opcji MENU EXIT stosujemy dodatkowy label z poleceniem MENU GOTO z nazwą label kolejnego menu:

LABEL UnikatowaNazwa
MENU LABEL Dowolny tekst kierujący na kolejne submenu (dostanie strzałkę z boku)
MENU GOTO UnikatowaNazwa


.... repetując cały układ. I tak do skutku. Każde submenu domyślnie dziedziczy ustawienia menu głównego, z którego wyszło, ale można wymusić by każde menu miało inne obrazy tłowe i inne kolory po prostu dopisując polecenia. O kolorach pogadamy poniżej.


KOLOROWANIE MENU:

Opcjonalnie, to nie jest konieczne. Domyślnie menu ma swoją matrycę ustawioną na określone kolory i jeśli ktoś nie potrafi zrozumieć co tu będzie napisane = nie musi nic więcej robić, zadowoli się presetem. Natomiast dla tych co decydują się na rekoloryzację = ogólnym poleceniem kolorowania jest:

MENU COLOR element ansi foreground background cień

1. Wskazanie składnika do kolorowania: Co podstawić za element? Podam tylko główne: screen (obszar poza menu), border (ramka), title (nagłówek), unsel (niezaznaczona pozycja menu), hotkey (niezaznaczony hotkey), sel (zaznaczona pozycja menu), hotsel (zaznaczony hotkey), disabled (menu wyłączone - dotyczy też separatorów), scrollbar (suwak z boku menu), tabmsg (komunikat wciśnij Tab), timeout (komunikat odliczania do resetu).

2. Dobranie koloru składnika: Ansi (to są określone liczby oddzielone średnikami) możemy sobie odpuścić = to jest stosowane w trybie tekstowym, wystarczy, że przepiszecie z tabelki w dokumentacji wartości domyślne i nie trzeba nad tym się zastanawiać. To co w naszym graficznym menu nas interesuje to foreground (element pierwszoplanowy) + background (tło dla tego elementu). Te wartości są w 8 znakowym kodzie hexadecymalnym: #AARRGGBB (AA = wartość alpha przeźroczystości w hex, RRGGBB = RGB w hexie). Jak to rozszyfrować i wybrać właściwy kolor?
  • Obliczanie przeźroczystości: przeźroczystość w systemie dziesiętnym to skala 0-255. Wystarczy posłużyć się instrukcją i w normalnym kalkulatorze zamienić wybrany numer dziesiętny na hexadecymalny. Uzyskany wynik to pierwsza część sekwencji kolorystycznej. Od razu podam te 3 główne punkty: 100% przeźroczystości (czyli 255) to w hexie 00, 50% przeźroczystości (czyli 127) to w hexie 7F, 0% przeźroczystości to w hexie FF. A wartości pośrednie bez trudu obliczycie.
  • Kolory skali RGB przekonwertowane na hex = tę całą sześcioznakową resztę RRGGBB weźmiecie z byle jakiej tabeli kolorów np.: HTML Colors.

Łącząc to wszystko razem uzyskamy wybrany kolor o określonym stopniu przeźroczystości. Np.:

#00000000 = totalna przeźroczystość
#ff000000 = czarny
#7F000000 = półprzeźroczysty czarny
#c0ffffff = 75% przeźroczysty biały
#ffffffff = biały

3. Ustalenie rodzaju cienia dla składnika: można przypisać none (brak cienia), std (standardowy = pixele foreground pogrubione), all (pixele foreground+backround pogrubione) lub rev (pixele backround pogrubione).

Przykładowa sekwencja kolorowania określonego elementu menu:

Każdy składnik menu koloruje się odrębnym poleceniem o tej składni. Przykładowo zakolorujmy podświetloną pozycję menu (białe litery na czarnym tle) i hotkey na podświetlonej pozycji (zielona litera na czarnym tle):

menuisolinuxcolor.gif

MENU COLOR sel_______7;37;40__#c0ffffff__ #ff000000 std
MENU COLOR hotsel__1;7;37;40__#ff00ff00 __#ff000000 all


Tip: wybierając dla danego elementu kolor niekryjący tylko z wybranym stopniem przeźroczystości uzyskacie bardzo atrakcyjne efekty graficzne, kolor z przeźroczystością dokładnie tak działa = jest przeźroczysty i widać pod spodem inne elementy np. fragment naszej bitmapy podkładowej.




To podstawowe składniki, które można użytkować do budowy menu. Tam da się zrobić znacznie więcej np. zmienić wymiary menu a nawet wprowadzić menu na hasło. Tego już nie będę opisywać. Luknijcie na dokumentację. To proste, tylko trzeba posiedzieć i popróbować.


 

Przykład menu:

 

Oto moje przykładowe menu. Prościuteńkie bez podmenu: mające 4 instalacje Windowsów, dostęp do Konsoli Odzyskiwania, LiveCD Barta oraz Parted Magic (w kwestii Parted Magic = patrz dalej jak go ulokować na DVD, by polecenia tu zapisane się zgadzały). Grafika menu zmodyfikowana (elementy mają ustawioną przeźroczystość + inne kolory), i umieszczony obrazek podkładowy (z DeviantArt). Linie z #### to tylko komentarz, to się nie liczy i do wycięcia.

UI /boot/isolinux/vesamenu.c32
F1 /KLUCZE.TXT
PROMPT 0
TIMEOUT 300
TOTALTIMEOUT 450

MENU BACKGROUND /boot/isolinux/splash.png
MENU TITLE Multi-DVD Edycja Fixitpc.pl
MENU AUTOBOOT Automatyczny restart za # sekund
MENU TABMSG

#### Kolor ramki - 75% transparent biały na 50% transparent czarnym:
MENU COLOR border 30;44 #c0ffffff #7F000000 std
#### Kolor nagłówka - biały na 50% transparent czarnym:
MENU COLOR title 1;36;44 #ffffffff #7F000000 std
#### Niezaznaczona pozycja - 75% transparent biały na 50% transparent czarnym:
MENU COLOR unsel 37;44 #c0ffffff #7F000000 std
#### Zaznaczona pozycja - biały na czarnym:
MENU COLOR sel 7;37;40 #c0ffffff #ff000000 std
#### Niezaznaczony hotkey - niebieski na 50% transparent czarnym:
MENU COLOR hotkey 1;37;44 #ff33FFFF #7F000000 std
#### Zaznaczony hotkey - niebieski na czarnym:
MENU COLOR hotsel 1;7;37;40 #ff33FFFF #FF000000 std
#### Wyłączone menu (tu separatory) - 100% transparent na 50% transparent czarnym:
MENU COLOR disabled 1;30;44 #00000000 #7F000000 std

LABEL hd
MENU LABEL ^Boot dysku twardego
MENU DEFAULT
KERNEL /boot/isolinux/chain.c32
APPEND hd0

MENU SEPARATOR

LABEL 1
MENU LABEL ^1 Instalacja Windows 2000 Pro SP4
KERNEL /1PRO.BIN

LABEL 2
MENU LABEL ^2 Instalacja Windows XP Pro SP3
KERNEL /2PRO.BIN

LABEL 3
MENU LABEL ^3 Instalacja Windows 2003 R2 SP2
KERNEL /3ENT.BIN

LABEL 4
MENU LABEL ^4 Instalacja Windows 98 SE
KERNEL /boot/isolinux/memdisk
APPEND initrd=/98.IMA

MENU SEPARATOR

LABEL cons
MENU LABEL ^Konsola Odzyskiwania
KERNEL /I386.BIN

LABEL bart
MENU LABEL ^LiveCD XP Barta
KERNEL /BART.BIN

LABEL pmagic
MENU LABEL ^Parted Magic
KERNEL /pmagic/boot/syslinux/menu.c32
APPEND /pmagic/boot/syslinux/syslinux.cfg


menuisolinux1.gif

A tu fragment jak można zmodować menu poprzez wstawienie osobnego podmenu dedykującego tylko różne instalacje XP - submenu ma przypisane inne tło (obrazek jest od adni18) i inne kolory w stosunku do menu nadrzędnego:

MENU BEGIN install
MENU LABEL ^Instalacje Windows XP
MENU BACKGROUND /boot/isolinux/menu.png

MENU COLOR border 30;44 #c0ffffff #7F000000 std
MENU COLOR title 1;36;44 #ffffffff #7F000000 std
MENU COLOR unsel 37;44 #c0ffffff #7F000000 std
MENU COLOR sel 7;37;40 #c0ffffff #00000000 std
MENU COLOR hotkey 1;37;44 #ffD83200 #7F000000 std
MENU COLOR hotsel 1;7;37;40 #ffffffff #00000000 std
MENU COLOR disabled 1;30;44 #00000000 #7F000000 std

MENU SEPARATOR

LABEL pro
MENU LABEL ^1. Instalacja Windows XP Professional SP3
KERNEL /2PRO.BIN

LABEL mce
MENU LABEL ^2. Instalacja Windows XP Media Center SP2
KERNEL /2MCE.BIN

LABEL x64
MENU LABEL ^3. Instalacja Windows XP Professional x64
KERNEL /2X64.BIN

MENU SEPARATOR
MENU SEPARATOR
MENU SEPARATOR
MENU SEPARATOR
MENU SEPARATOR

LABEL back
MENU LABEL ^Powrot do menu
MENU EXIT

MENU END


menuisolinux2.png


To jest bardzo podstawowy przykład. Proszę się nie sugerować kolorystyką, ona może być dowolna. Menu można upiększać i wymiarować w inny sposób (np. ścinając / poszerzając ilość linii, także przesunąć jego pozycję na ekranie = tu trzeba dużo próbować, bo może z tego powstać sieczka), rozbudowywać w złożone wielopoziomowe układy pod-menu, nakładać hasła na kolejne menu etc. Metoda prób i błędów. Fajna zabawa, można siedzieć i siedzieć. I wbrew pozorom to nie jest wcale trudne. Uwierzcie.

Niestety jedna "wada" = jak wygląda menu możemy się dopiero przekonać po wykonaniu finałowego obrazu ISO (patrz dalej) przepuszczonego przez wirtualną maszynę. Nie znalazłam żadnego narzędzia symulacyjnego pozwalającego sprawdzić grafikę budowanego menu przed zmontowaniem z tego obrazu płyty. Jedyne na co się natknęłam to "ISOLINUX Mate" - ale to jest edytor pod menu trybu tekstowego a nie naszego graficznego.
Odnośnik do komentarza

Budowa menu startowego

Jeśli nie wybraliście jako metody ISOLINUXA, alternatywnie można użyć CD Shell.

 

 

Budowa menu startowego w CD Shell:

 

Program CD Shell jest nierozwijany od roku 2005 i nie ma już nawet strony domowej. Archiwalna postać strony domowej do wglądu: CD Shell


Aktualizacja 2012: Tę starą alternatywną metodę budowy menu via CD Shell zostawiam tu ze względów historycznych, jako odnośnik porównawczy do innych tutoriali opartych na tym systemie (Creating a Multi-Boot DVD). Temat traktuję po macoszemu nie chcąc inwestować czasu w przestarzałe rozwiązania, kto zechce = doczyta więcej z dokumentacji CD Shell, porówna cudze konfigi, poszuka gotowych matryc menu.
Metoda z CD Shell jest bardziej skomplikowana niż ta z Isolinux i ma określone ułomności. Przede wszystkim jest to mozolne / trudniejsze wykonawczo dla osób niewprawionych. Menu trzeba napisać od zera w języku skryptowym przypominającym "tworzenie stron www w PHP", nie ma gotowych presetów jak w Isolinuxie (chyba, że ktoś da gotowy moduł...). Efekty graficzne uboższe, menu ma tylko tryb tekstowy (czyli efekty są zbliżone do systemu menu.c32 Isolinuxa a nie jego graficznego odpowiednika vesamenu.c32). CD Shell zawiera także kompletnie przestarzałą implementację Isolinux (to chyba jakaś shackowana wersja), choć próbowano to w późniejszym czasie nieoficjalnie skorygować (ISOLINUX module for CD shell)


 

Folder CD Shell:

 

CD Shell

Pobrany CD Shell rozpakowujemy w jakimś wybranym miejscu nie związanym z naszym projektem. W środku są dwa główne foldery: BOOT i TOOLS. W folderze DVD naszego projektu umieścić folder BOOT, a do folderu BOOT (nie obok) wsadzić folder TOOLS:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifTOOLS

Nic z tymi folderami nie robić, zostawić je w spokoju. Co najwyżej możecie szybko przeczytać na oficjalnej stronie jak wygląda struktura katalogu BOOT (to wszystko już macie w folderze BOOT): CD Shell Directory Structure. Plik CD Shell odpowiedzialny za budowę i wyświetlanie menu to cdshell.ini zlokalizowany w folderze BOOT:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ fileini.gifcdshell.ini

Plik posługuje się językiem skryptowym. Trzeba przejrzeć całą dokumentację CD Shella tyczącą komend / funkcji / zmiennych ... Oczywiście jest niemożliwe wyłożenie tutaj całej struktury skryptowej języka. Tylko podstawy zostaną opisane, umożliwiające wprowadzenie funkcjonalnego menu, bez bajerów, bez wiedzy. Nawet nie dotykam złożonej struktury warunków. To już dla normalnego użytkownika totalna miazga.


 

Napisanie menu CD Shell:

 

Plik otwieramy w dowolnym edytorze tekstu / kodów np. najzwyklejszym Notatniku. Zawartość pliku będzie całkowicie do wyrzucenia, tam na razie jeszcze nie ma nic związanego z naszym futurystycznym menu. W pliku można sobie umieścić dodatkowe komentarze poprzedzone znakiem #. Komentarze nie bądą wyświetlane na ekranie, to tylko wewnętrzna część informacyjna.

I zacznijmy od końca: każdy plik musi się kończyć poleceniem end


SEKCJE:

Sekcje służą zorganizowaniu kodu (tego co się wyświetla + komend) oraz jego mapowaniu (kolejność wykonywanych zadań).

  • Samo tworzenie sekcji proste, wpisujemy wybraną nazwę z dwukropkiem SEKCJA:
  • Przejście do danej sekcji i wykonanie kodu tej sekcji odbywa się przez polecenie goto SEKCJA

Kolejność jest istotna - sekcje wykonują się zgodnie z tym jak są zapisane "od góry do dołu". Pierwsza sekcja zawsze się wykona jako pierwsza, następnymi można manipulować tworząc przeskoki w górę i w dół za pomocą polecenia goto SEKCJA. Sekcje w większości przypadków są tworzone "w parach" - pierwsza sekcja definuje wyświetlanie na ekranie, druga sekcja do pary definiuje obsługę z klawiatury pasującą do opcji wyświetlanych. Patrz dalej.

WYŚWIETLANIE NA EKRANIE:

  • Do czyszczenia ekranu ze śmieci przed pokazaniem na ekranie tekstów właściwych stosujemy komendę cls.
  • Do "wydrukowania" na ekranie naszych opcji i tekstów menu służy komenda print. Cały tekst uwzględniany do wyświetlenia musi być ujęty przez cudzysłów.
  • Powielone komendy print mogą być umieszczone w jednej linii rozdzielone średnikami ;
  • Komenda \n tworzy przejście do nowej linii. Zastosowanie podwójnego \n\n po pierwszej komendzie print lub tuż przed następną komendą print owocuje utworzeniem wolnego miejsca między opcjami menu.
  • W zależności od tego jak tekst ma być pozycjonowany, używa się po print dodatkową komendę: c (centeralnie), l (justowanie do lewej) lub r (justowanie do prawej).

cls
print "Dowolny zwykły tekst \n"
print c "To próbka tekstu umieszczona centralnie \n"
print c "\n\n"
print l "To próbka tekstu dociągnięta do lewej"; print r "To próbka tekstu dociągnięta do prawej \n"


Są też szczególne znaczki-krzaczki, które dają określony efekt na ekranie np. wymnożenie znaku ß skonstruuje gruby pas, wymnożenie Ä stworzy cienką linię, zaś wymnożenie Í wytworzy podwójną cienką linię. Przypuszczam, że jest więcej takich cukierków, ale nie zajęłam się tym tematem.


SPECYFIKOWANIE REAKCJI KLAWISZOWEJ:

- Do przechwytywania wciśnięcia klawisza służy komenda getkey. Komendę tę można również połączyć z odliczaniem czasowym, po którym wykona się jakaś predefiniowana akcja.

getkey CZAS AKCJA

- Do precyzowania reakcji klawiaturowej łączonej z wykonaniem określonego zadania służy konstrukcja warunkowa tego typu:

if $lastKey == key[KLAWISZ]; then AKCJA

Pod KLAWISZ można podstawić dowolny pojedynczy znak klawiaturowy (np. 1, 2, a, b...) lub skrót pod specjalne klawisze funkcyjne (patrz do dokumentacji na funkcję key). Akcją może być np.: przejście do innej sekcji w celu wykonania jej poleceń (goto SEKCJA), wywołanie bootsectora mającego inicjować instalację danego systemu (chain lub memdisk = patrz dalej), restart komputera (komenda reboot), wywołanie linii poleceń (komenda end) i tak dalej.


WYWOŁANIE INSTALATORÓW / BOOTOWANIA:

Inicjowanie instalacji danego systemu operacyjnego lub narzędzia w menu odbywa się przez polecenia: chain (bootsectory Windows NT4/2000/XP/2003 / Konsola Odzyskiwania / Bart) lub memdisk (obrazy emulowane np. obrazy dyskietek) po których należy podać ścieżkę dostępu i nazwę bootsektora. Jako że nasze DVD ma wszystkie bootsectory bezpośrednio w głównym katalogu DVD, ścieżka dostępu ogranicza się tylko do podania ukośnika. Czyli przykładowo:

chain /2PRO.BIN
memdisk /98.IMA

Można również formułować bezpośrednie bootowanie wybranego dysku. Do tego służy komenda boot połączona z kodem dysku. Przykładowe kody dysku: 0x00 (napęd dyskietek), 0x80 (pierwszy dysk twardy), 0x81 (drugi dysk twardy). Czyli przykładowo bootowanie pierwszego dysku to:

boot 0x80

Akcje wywoływania bootsectorów czy bootowania można łączyć z reakcją klawiaturową wg formuły "jeżeli wciśniesz dany klawisz, wykona się to polecenie". Np.:

if $lastKey == key[1]; then chain /I386.BIN
if $lastKey == key[2]; then boot 0x80




WYŚWIETLENIE PLIKU TEKSTOWEGO:

Nieskomplikowana prosta komenda type po której podajemy ścieżkę dostępu do danego pliku tekstowego. Np.:

type /KLUCZE.TXT


KOLOROWANIE MENU

Kolory to rzecz ściśle opcjonalna. Tu proszę porównać Isolinuxa jak łatwo sobie kolorujemy. Tutaj tak nie będzie, skala kolorów jest mocno ograniczona, nie mamy też możliwości używania przeźroczystości tworzącej atrakcyjne efekty.

1. Ustawienie ogólne kolorów dla całego menu są ustalane przez parametry textColor (kolor tekstu) + boldColor (kolor dla elementów pogrubianych) sformułowane w następującą składnię:

set textColor= color[kolor on kolor]
set boldColor= color[kolor on kolor]


Co podstawić pod kolor? Prawidłowymi nazwami kolorów są tylko te: black, blue, green, cyan, red, magenta, brown, grey, brightgrey, brightblue, brightgreen, brightcyan, brightred, brightmagenta, yellow, white.

2. Prócz tego istnieje dodatkowa możliwość kolorowania wybranych partii tekstu niezależnie od ogólnego ustawienia. Do tego stosuje się komendy \cXX i \cxx przylepione do tekstu, którego mają dotyczyć. Komenda \cXX oznacza, że tekst załączony po niej jest kolorem pogrubionym. Komenda \cxx oznacza, że załączony po niej tekst wraca do normalnego koloru.

print "\cXXTo tekst kolorowy w boldzie. \cxxTen fragment tekstu wraca do normalnego wyglądu."

Jeżeli ma by użytkowana większa liczba kolorów, wtedy te iksy XX w komendach należy zastąpić specjalnym numerycznym kodem = pierwszy X oznacza kolor tła, a drugi X tekst kolor tekstu. Kod wybiera się z tych:

0 black__________8 grey
1 blue___________9 brightblue
2 green__________A brightgreen
3 cyan___________B brightcyan
4 red____________C brightreg
5 magenta________D brightmagenta
6 brown__________E yellow
7 brightgrey_____F white



Przykładowy układ całościowy:

set textColor= color[white on green]
set boldColor= color[black on green]
print "Test \CXXTest2 \c2CTest3 \c0ATest4 \c2CTest5 \cxxTest6 \n"


Ogólny kolor tekstu jest wybrany jako biały na zielonym tle, a kolor dla boldu to czarny na zielonym. Linia z print kolejno ustawia: słowo Test ma ogólne ustawienie (biały na zielonym), słowo Test2 przełącza się na ustawienie bolda (czarny na zielonym), słowo Test3 przestawia się na \c2C (czyli zielone tło z czerwonym tekstem), słowo Test4 przestawia się na \c0A (czyli czarne tło z jarzeniówkowym zielonym tekstem), słowo Test5 ponownie na \c2C, a słowo Test6 ma ustawiony \cxx (czyli powrót do normalnego koloru = w tym przypadku biały tekst na zielonym tle). Można też zauważyć, że same spacje są traktowane też jako znak i ulegają kolorowaniu.

cdshellcolors.gif

 

 

Grafika startowa CD Shell:

 

LOGO STARTOWE:

Przed wyświetlaniem menu pojawia się na chwilę obraz. Opcjonalnie można zamienić domyślną grafikę CD Shell własnym preferowanym obrazkiem. Nie - nie można stosować bezpośrednio PNG jak w Isolinuxie. CD Shell stosuje swój własny format grafik *.csi i wszystkie nasze grafiki muszą być na to przekonwertowane. Konwerter obrazów convert.exe CD Shell jest w folderze TOOLS:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifTOOLS
---------------- folder.gifconvert
-------------------- fileexe.gifconvert.exe

1. Przygotować obraz w formacie BMP o wymiarach 640x480 i głębi kolorystycznej 24bit. Obraz umieścić w folderze convert, pod umowną nazwą logo.bmp

2. W folderze G:\DVD\BOOT\TOOLS\convert zrobić tymczasowo plik BAT wywołujący polecenie konwertowania na stosowny format:

convert -bmp2csi -o logo.bmp splash.csi

3. Przekonwertowany obraz splash.csi (ta nazwa jest wymagana, by wszystko działało) umieścić w folderze graphics:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifgraphics
---------------- file.gifsplash.csi


MENU ZŁOŻONE Z SAMYCH OBRAZÓW:

... czyli pseudoimitacja systemu vesamenu.c32 Isolinuxa? Tylko pseudo. Felerem CD Shell jest fakt, że chcąc mieć obraz podkładowy pod opcjami, a opcje wyświetlone na = niestety, obraz przykrywa opcje (proszę porównać Isolinuxa = tam jest lux i to z transparentem). Trzeba się posunąć do wizualnego oszustwa, czyli zrobić sobie gotowe obrazy, które mają po prostu wydrukowane opcje z przypisanym klawiszem (to dokładnie oznacza to: na obrazku jest tekst). Następnie w pliku CD Shell tylko utworzyć proste sekcje + każdej przypisać osobny pasujący obraz (oczywiście musi być przekonwertowany na format *.csi) + dodać pod spodem tylko polecenia reagowania na klawisze. To upraszcza budowę pliku cdshell.ini, mniej do pisania. Tego już nie mam sił opisywać, dostępny cudzy tutorial w pliku PDF.

MODUŁY:

Jest jeszcze do CD Shella Bootable CD Wizard Module, który pozwala bootować przez swój własny system (patrz na opis Bootable CD Wizard) + bonusowo daje możność używania grafiki. Program BCDW jest programem wymarłym, na oryginalnej stronie autora jest stara niekompatybilna wersja, w drugim linku hack oryginału BCDW 2.01, projekt wygląda też na wymarły (brak strony domowej).

 

 

Sprawdzanie jak działa menu:

 

Menu możemy od razu sprawdzić, jak się zachowuje i jak wygląda. Umożliwia to symulacyjny tryb debug wywoływany przez plik cdshw.com z folderu BOOT:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ file.gifcdshw.com

Wystarczy ten plik uruchomić z dwukliku, a pojawi się okno konsolowe pokazujące nam działanie menu, po którym możemy się przemieszczać. Nie ma się co obawiać, że coś się zainstaluje. To tylko podróbkowa symulacja graficzna i nic poza tym, komendy nawet nie mogą się wykonać. Symulację opuszczamy wpisując w linii poleceń komendę EXIT lub zakańczając proces przez Alt+Ctrl+Del.


 

Przykładowe menu CD Shell:

 

No cóż, daję tu ciała maksymalnie, bo wystawiając ołtarzyk Isolinuxowi, opuściłam skrupulatną naukę języka programistycznego umożliwiającą uzyskanie bardzo skomplikowanych efektów poprzez tworzenie wysmakowanych warunków. Ktoś będzie chciał = nauczy się tego. Dlatego też wstydliwie podam mocno uproszczony kod menu (menu bez podmenu, każda pozycja od razu kieruje do wywołania instalki + wyświetlanie kluczy seryjnych instalek):

# Pytanie czy bootowac z DVD
BOOT:
cls
print "\n"
print "Press Enter to boot from DVD... \n"
getkey 5 boot 0x80
if $lastKey == key[enter]; then goto MENU
goto boot

# Sekcja wydruku opcji menu na ekranie
MENU:
set textColor= color[white on green]
set boldColor= color[black on green]
cls
print "\n"
print c "ÍÍÍÍÍÍÍÍÍÍÍ\c2CÍÍÍÍÍÍÍÍÍÍ\cXXÍÍÍÍÍÍÍÍÍÍ Multi-Boot DVD ÍÍÍÍÍÍÍÍÍÍ\c2CÍÍÍÍÍÍÍÍÍÍ\cxxÍÍÍÍÍÍÍÍÍÍÍ\n"
print c "\cXXßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß\n\n"
print l "\c2CR \cxx= Restart"; print c "\c2CESC \cxx= Boot dysku twardego"; print r "\c2CQ \cxx= Linia komend \n\n"
print c "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ\n\n"
print "\c2CÍÍÍÍÍÍ\c0A1\c2CÍÍÍÍÍÍ\cxx Instalacja Windows XP \n"
print "\c2CÍÍÍÍÍÍ\c0A2\c2CÍÍÍÍÍÍ\cxx Instalacja Windows 2000 \n"
print "\c2CÍÍÍÍÍÍ\c0A3\c2CÍÍÍÍÍÍ\cxx Instalacja Windows 2003 \n"
print "\c2CÍÍÍÍÍÍ\c0A4\c2CÍÍÍÍÍÍ\cxx Instalacja Windows 98 SE \n"
print "\c2CÍÍÍÍÍÍ\c0A5\c2CÍÍÍÍÍÍ\cxx Konsola Odzyskiwania \n"
print "\c2CÍÍÍÍÍÍ\c0A6\c2CÍÍÍÍÍÍ\cxx Bart's LiveCD XP \n"
print "\c2C \c0A \c2C \n"
print "\c2CÍÍÍÍÍÍ\c0A7\c2CÍÍÍÍÍÍ\cxx Klucze seryjne... \n\n"
print c "\cXXßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß\n\n"

# Sekcja przypisania opcjom menu akcji
MENU_KEY:
getkey 20 boot 0x80
if $lastKey == key[1]; then chain /2PRO.BIN
if $lastKey == key[2]; then chain /1PRO.BIN
if $lastKey == key[3]; then chain /3ENT.BIN
if $lastKey == key[4]; then memdisk /98.IMA
if $lastKey == key[5]; then chain /I386.BIN
if $lastKey == key[6]; then chain /BART.BIN
if $lastKey == key[7]; then goto KLUCZE
if $lastKey == key[r]; then reboot
if $lastKey == key[esc]; then boot 0x80
if $lastKey == key[q]; then end

# Sekcja wyswietlania SN Windows
KLUCZE:
cls
print c "\cXXKlucze seryjne instalacji \n"
type /KLUCZE.TXT
print c "\n\n"
print "\cXXWybierz dowolny klawisz... \n"
getkey
goto MENU


cdshell.gif

Menu można rozbudować o kolejne podmenu po prostu tworząc kolejne sekcje i kierując na nie przez polecenie goto SEKCJA.

Menu tekstowe mogą być o wiele bardziej rozbudowane. Porównawczo skrypty (które można sobie wziąźć i zmodyfikować pod kątem swoich potrzeb): przykład 1 / przykład 2 / przykład 3. Oczywiście też możecie skusić się na menu graficzne z tym trikiem wprowadzenia samych obrazów.
Odnośnik do komentarza

Extra


Dodanie Parted Magic


OK. Mamy instalki Windows, ale przydałby się niezależny system do partycjonowania dostępny z tego samego menu. Jeden do wszystkiego. Bez uciążliwego bootowania do każdej z instalacji NT proponującej swój własny ułomny system partycjonowania, ani boota do Konsoli odzyskiwania, której partycjonowanie to totalna dzicz. Mamy bardzo dobry darmowy program partycjonujący spokojnie zastępujący komercyjne wydania = GParted. W przykładzie zostanie zastosowana dystrybucja Parted Magic zawierająca ten partycjoner wraz z aplikacją do odzyskiwania danych TestDisk i innymi pomocnymi narzędziami (np. MHDD czy memtest).

Parted Magic



Aktualizacja 2012: Artykuł został napisany w roku 2008 w oparciu o strukturę płyty Parted Magic 2.2. Nowsze wersje wykazują znaczne różnice i omówiona tu metoda nie aplikuje się. Przesuwam ją do spoilera. Poniżej załączam zaktualizowane instrukcje tyczące wersji Parted Magic 2012.



1. Pobrany obraz ISO Parted Magic otworzyć w jakimś programie, który umie czytać ISO (np. Isobuster, UltraISO etc.). Zawartość ISO to:

pmagic.gif

2. Z ISO wyekstraktować zawartość. Folder pmagic umieścić obok folderu BOOT a luźny plik isolinux.cfg wsadzić do niego. Pozostałe dwa pliki *.cfg wywalić, nie są potrzebne.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
-------- folder.gifpmagic
------------ file.gifisolinux.cfg

3. Otworzyć w Notatniku plik Parted Magica isolinux.cfg i wykonać readaptację menu, tzn. w liniach APPEND zamienić wszystkie instancje słowa livecd na multiboot:

DEFAULT /pmagic/vesamenu.c32
F1 /pmagic/message.txt
F2 /pmagic/message2.txt
F3 /pmagic/message3.txt
PROMPT 0
TIMEOUT 200
ONTIMEOUT normal
MENU TABMSG The Linux LiveCD Partitioning Tool
MENU AUTOBOOT Automatic boot in # second{,s}...
MENU BACKGROUND /pmagic/splashpm.png
MENU TITLE Parted Magic Boot Options Menu (F1 for more options)
MENU color sel 7;37;40 #ffffffff #c00090f0 all
MENU color hotsel 1;7;37;40 #ffffffff #c00090f0 all

LABEL normal
MENU LABEL ^1. Default settings (Runs from RAM / Ejects CD)
TEXT HELP
* version: 2.2, ? 2008, Patrick Verner
* "http://www.partedmagic.com"
* Disclaimer: Author excluded from any liability.
ENDTEXT
KERNEL /pmagic/bzImage
APPEND noapic initrd=/pmagic/initrd root=/dev/ram0 init=/linuxrc ramdisk_size=200000 pmodules=/pmagic/pmodules squashfs=/pmagic/pmagic keymap=us livecd vga=791 quiet toram

LABEL live
MENU LABEL ^2. Low Memory (Cannot remove CD)
TEXT HELP
Select for computers with less than 256 MB of RAM
ENDTEXT
KERNEL /pmagic/bzImage
APPEND noapic initrd=/pmagic/initrd root=/dev/ram0 init=/linuxrc ramdisk_size=60000 pmodules=/pmagic/pmodules squashfs=/pmagic/pmagic keymap=us livecd vga=normal nogpm livemedia

LABEL normal-vga
MENU LABEL ^3. Safe Graphics Settings (vga=normal)
TEXT HELP
Disables splash screen and console frame buffer support
ENDTEXT
KERNEL /pmagic/bzImage
APPEND noapic initrd=/pmagic/initrd root=/dev/ram0 init=/linuxrc ramdisk_size=200000 pmodules=/pmagic/pmodules squashfs=/pmagic/pmagic keymap=us livecd vga=normal toram

LABEL failsafe
MENU LABEL ^4. Failsafe Settings
TEXT HELP
vga=normal, acpi=off, noapic, nolapic, nopcmcia, noscsi,
nogpm, & boots to console
ENDTEXT
KERNEL /pmagic/bzImage
APPEND noapic initrd=/pmagic/initrd root=/dev/ram0 init=/linuxrc ramdisk_size=200000 pmodules=/pmagic/pmodules squashfs=/pmagic/pmagic keymap=us livecd toram vga=normal acpi=off noapic nolapic nopcmcia noscsi nogpm consoleboot

LABEL console
MENU LABEL ^5. Console (boots to the shell)
TEXT HELP
Normal vga, verbose kernel messages, and
no automatic graphical environment
ENDTEXT
KERNEL /pmagic/bzImage
APPEND noapic initrd=/pmagic/initrd root=/dev/ram0 init=/linuxrc ramdisk_size=200000 pmodules=/pmagic/pmodules squashfs=/pmagic/pmagic keymap=us livecd toram vga=normal consoleboot


4. Wprowadzenie pozycji Parted Magica do menu. Wystarczy efektywna krótka edycja w pliku głównym pliku isolinux.cfg. Proszę sobie nie pomylić plików. Tu są dwa pliki isolinux.cfg. Jeden jest ogólnym konfigiem Isolinuxa (i to tu wprowadzamy pozycję Parted Magica), a drugi w folderze Parted Magic jego odrębną konfiguracją. Jeden plik wywołuje drugi w łańcuchu.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
---------------- file.gifisolinux.cfg
-------- folder.gifpmagic
------------ file.gifisolinux.cfg

Czyli w głównym pliku isolinux.cfg dopisać blok nowej labelki wywołujący menu Parted Magica - tylko tyle:

LABEL pmagic
MENU LABEL ^Parted Magic
KERNEL /pmagic/vesamenu.c32
APPEND /pmagic/isolinux.cfg


 

 

Ulokowanie elementów Parted Magic na DVD (zaktualizowana instrukcja):

 

1. Obok folderu BOOT utworzyć nowy folder o nazwie pmagic:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
-------- folder.gifpmagic

2. Pobrany obraz ISO Parted Magic otworzyć w jakimś programie, który umie czytać ISO (np. Isobuster, UltraISO, 7-zip etc.). Zawartość ISO:

pmagic.png

3. Z ISO wyekstraktować foldery boot i pmagic. Folder boot wstawić do utworzonego w punkcie 1 folderu pmagic, natomiast całą zawartość wyekstraktowanego folderu pmagic umieścić bezpośrednio w utworzonym wcześniej folderze pmagic. Finałowy układ:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
-------- folder.gifpmagic
------------ folder.gifboot
------------ folder.gifpmodules
------------ file.gifbzImage
------------ file.gifinitrd.img

4. Otworzyć w Notatniku plik konfiguracyjny Parted Magic:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
-------- folder.gifpmagic
------------ folder.gifboot
---------------- folder.gifsyslinux
-------------------- file.gifsyslinux.cfg

Wykonać readaptację menu do nowej konwencji ścieżek płyty DVD, tzn. przesunięcie ścieżek punktujących katalog boot i moduły zlokalizowane w tym katalogu o jeden poziom w dół. Jeśli jest punktowana ścieżka /boot, należy wymienić ją na /pmagic/boot. Jeśli występuje linia COM32 linux.c32, należy ją zmodyfikować na COM32 /pmagic/boot/syslinux/linux.c32. Dla przykładu blok:

LABEL mhdd
MENU LABEL ^E. MHDD
TEXT HELP
This software can make precise diagnostic of the mechanical part of a drive,
view SMART attributes, perform Low-level format, bad sector repair, different
tests and tens of other functions.
ENDTEXT
LINUX /boot/syslinux/memdisk
APPEND initrd=/boot/mhdd/mhdd.gz


... zostaje zmodyfikowany na:

LABEL mhdd
MENU LABEL ^E. MHDD
TEXT HELP
This software can make precise diagnostic of the mechanical part of a drive,
view SMART attributes, perform Low-level format, bad sector repair, different
tests and tens of other functions.
ENDTEXT
LINUX /pmagic/boot/syslinux/memdisk
APPEND initrd=/pmagic/boot/mhdd/mhdd.gz


4. Wprowadzenie pozycji Parted Magic do menu. I tu akcja zależy od tego czym posłużyliśmy się do budowy menu:

 

 

Dodanie pozycji Parted Magic do menu:

 

 

JEŚLI MENU JEST ZROBIONE ISOLINUXEM:

Wsadzenie tego do menu Isolinuxa to prościzna. Wystarczy efektywna krótka edycja w pliku głównym pliku isolinux.cfg. Ten ogólnym konfig Isolinux wywołuje w łańcuchu drugi konfig w folderze Parted Magic. Oryginalne menu Parted Magic, dające wybór bootowania określonej konfiguracji, jest zachowane.

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
---------------- file.gifisolinux.cfg
-------- folder.gifpmagic
------------ folder.gifboot
---------------- folder.gifsyslinux
-------------------- file.gifsyslinux.cfg

Czyli w głównym pliku isolinux.cfg dopisać blok nowej labelki wywołujący menu Parted Magica:

LABEL pmagic
MENU LABEL ^Parted Magic
KERNEL /pmagic/boot/syslinux/menu.c32
APPEND /pmagic/boot/syslinux/syslinux.cfg


Oczywiście uzgodnić sobie jak to ma leżeć pod kątem reszty menu, dopracować hotkey (tu dałam po prostu P jako najeżdżający na menu).




JEŚLI MENU JEST ZROBIONE CD Shellem:

Metoda nieefektywna. Niestety, to nie będzie tak ładnie i prosto jak w Isolinux. No cóż, skorelowanie tego z CD Shell jest pomysłem średnio trafionym (przestarzały isolinux CD Shella), a metoda wygląda dość "chałupniczo". Po licznych próbach wychodzi na to, że każda sekcja z syslinux.cfg Parted Magica musi być odrębnie specyfikowana w cdshell.ini przez polecenie isolinux kernel append (dane kernel + append brane właśnie z pliku syslinux.cfg Parted). Czyli sprowadza się do bardzo mozolnego ręcznego podrobienia całego menu startowego Parted Magica (proszę porównać metodę Isolinux = tam nic nie trzeba robić, tylko wywołać konfig!). To uproszczona podróbka i nie wygląda jak oryginał, a wszystkie reakcje klawiaturowe trzeba mozolnie rozpisać.

Odnośnik do komentarza

Wypalanie


Tak, czas na ostateczne posunięcie, czyli na właściwe wypalenie bootowalnego DVD. Jako, że struktura DVD jest bardzo pracochłonna i skomplikowana (a także jest fuzją komponentów Windows z Linuksoidalnymi), są możliwe pomyłki. Poza tym same systemy operacyjne mogą wariować i niestety nie bootować poprawnie z jakiś tam "dziwnych" względów. Musimy sobie dać szansę na poprawienie składników przyszłej DVD przed jej ostatecznym prawdziwym transportem na realną płyteczkę. Dlatego najlepszy pomysł to zgranie struktury DVD do bootowalnego obrazu ISO, a nie bezpośrednio na DVD. ISO możemy przetestować w wirtualizerze i zawsze poprawić. Na początek kilka ważnych rzeczy:

1. Jako, że jest to typ bootowalny, bootsectorem płyty DVD jest:


Jeśli stosujecie ISOLINUX jest to plik isolinux.bin:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ folder.gifisolinux
---------------- file.gifisolinux.bin

Jeśli stosujecie CD Shell jest to plik loader.bin:

disc.gifG:
---- folder.gifDVD
-------- folder.gifBOOT
------------ file.gifloader.bin

Oba mają ustawienie na: bez emulacji i liczba sektorów na 4.



2. Esencjonalne! ustawienie dla płyty robionej przez ISOLINUX (ma nietypowy bootsector) = program wypalający musi obsługiwać patchującą opcję "boot-info-table", w przeciwnym wypadku DVD nie będzie startować. Ta restrykcja powoduje, że odpada wiele tradycyjnych programów wypalających (które mają opcję tworzenia bootowalnych płyt oraz generowanie ISO). Znak, że płyta jest nagrana z pominięciem tego ustawienia, to błąd sumy kontrolnej:

isolinuxerror.gif

3. Czym utworzyć ISO? Ze względu na to, że występują tu struktury paralinuxowe zalecałabym program konsolowy MKISOFS, gdyż: adresuje wszystkie haczyki, nie wymaga instalacji, jest za free. Dla ułatwienia daję nakładkę graficzną dla użytkowników początkujących, bardzo łatwo to ISO utworzycie. MKISOFS gwarantuje poprawność tak złożonego układu oprawionego przez "dziwny" loader. Zwłaszcza to tyczy ISOLINUXA.

 

 

 

Utworzenie ISO (w MKISOFS)

Dla ISOLINUX + CD Shell

UŻYTKOWNICY POCZĄTKUJĄCY:

Obsługa z linii komend może być nie do przejścia i tak łatwo popełnić błąd. Do MKISOFS są bardzo proste nakładki graficzne, które dedykują wymagany zbiór opcji: MKISOFS Tool / Bobby's GUI / MGISO. Wybrałam MKISOFS Tool, ponieważ już prościej się nie da, a program idealnie zawiera wymagane opcje. Przepakowałam zbiór załączając zarówno nakładkę jak i MKISOFS - do pobrania z naszego serwera:

MKISOFS + GUI

1. Pobraną paczkę wypakowujemy obok naszego katalogu DVD:

disc.gifG:
---- folder.gifDVD
---- fileexe.gifmkisofs.exe
---- fileexe.gifmkisofsgui.hta

2. Uruchamiamy plik mkisofsgui.hta i konfigurujemy:

  • Set Boot Sector: wskazujemy albo "BOOT/isolinux/isolinux.bin" (jeśli stosujemy Isolinux) albo "BOOT/loader.bin" (jeśli stosujemy CD Shell). Dokładnie tak: ukośniki idą w przeciwną stronę niż w Windows i ujęcie przez cudzysłów, w przeciwnym wypadku będzie błąd nie znalezienia bootsectora.
  • No Emulation Boot zaznaczone. Set Boot Sector Load Size musi być na 4. Jeśli menu robiliśmy Isolinuxem, zaznaczona dodatkowo opcja Set Boot Info Table (dla CD Shell nie trzeba tego zaznaczać).
  • Set ISO Level: wprowadzić poziom 4. Zaznaczyć Don't Translate Illegal ISO Characters.
  • Do uzgodnienia w zależności od Waszego układu: Volume ID (nazwa etykiety, może być dowolna), Source Directory (folder DVD), Output File (ścieżka dostępu + nazwa wynikowego ISO). Te wszystkie rzeczy należy ująć przez cudzysłów.
  • Optimize ISO opcjonalnie zaznaczone. To nie jest wymagane. Jeśli będzie jakikolwiek problem z utworzonym ISO, robić od początku z odznaczoną optymalizacją.

mkisofsgui.gif

3. Klik w Create, dostaniemy komunikat zatwierdzający linię poleceń. Następnie zainicjuje się okno linii komend z processingiem akcji. Tam będą widnieć alerty typu "Warning: ISO-9660 filenames longer than 31 may cause buffer overflows in the OS" czy "It is highly recommended to add Rock Ridge" = zignorować i nie przejmować się tym.

mkisofs.gif

Wynikowo mamy obraz ISO.

UŻYTKOWNICY ZAAWANSOWANI:

Skoro zaawansowani, to będą wiedzieć o co chodzi w tym poleceniu przystosowanym pod ISOLINUXA (i jak to przerobić pod CD Shell):

 

mkisofs -J -N -joliet-long -no-iso-translate -duplicates-once -iso-level 4 -no-emul-boot -boot-load-size 4 -boot-info-table -hide boot.catalog -hide-joliet boot.catalog -hide isolinux.bin -hide-joliet isolinux.bin -b "BOOT/isolinux/isolinux.bin" -V "DVD" -o "G:\DVD.ISO" "G:\DVD"

 

Czy w GUI czy z linii komend, wszędzie jest ustawienie na -iso-level 4. Poziom 4 oficjalnie nie istnieje, tutaj oznacza po prostu ISO-9660:1999 omijające ograniczenia (do poczytania w Wiki na ten temat i o wsparciu tego ustawienia ze strony systemów). W tym kontekście przypominam sprawę z Windows 98/ME (oraz dosowymi obrazami) - ten "poziom 4" implikuje problem. Mówiłam o tym na początku = musicie mieć wszystkie pliki + foldery tych Windowsów w CAPSLOCK, by nie było niespodzianek z błędami nie znalezienia plików. Pomyślnie zrobiłam DVD przez ISOLINUXA na powyższych ustawieniach, mające Windows 98 + Me, oba bootują bezbłędnie.



 

Utworzenie ISO (w CDImage)

Dla CD Shell

Alternatywny sposób to użycie konsolowego programu CDIMAGE 2.47 (to program Microsoftu), popularnie stosowanego do multi DVD mającej menu robione przez CDShell. Stawiam go jednak dopiero na drugim miejscu ze względu na niemożność prawidłowego skombinowania z techniką ISOLINUX (brak opcji bootinfotable). CDImage można stosować więc do DVD mającej menu robione przez CD Shell, ale nie ISOLINUX. Narzędzie jest obsługiwane z linii komend, jednakże jest do tego ułatwiająca nakładka graficzna:

CDIMAGE + GUI

1. Dla użytkowników początkujących: rozpakować i ustawić:

  • W sekcji Files zaznaczony parametr -h (uwzględnia ukryte pliki + foldery)
  • W sekcji File system jedyna opcja zaznaczona to -j1
  • W sekcji Boot zaznaczony parametr -b oraz wskazany plik bootsectora CD Shell G:\DVD\BOOT\loader.bin
  • W sekcji Signature / CRC zaznaczony parametr optymalizacji -o
  • W zakładkach Report i Test wszystko odznaczone
  • W zakładce Creation zaznaczyć parametr -m, oraz parametr -l i pod spodem wpisać dowolną etykietę dla DVD

2. Dla użytkowników zaawansowanych: z linii komend idzie sekwencja tego typu:
 

cdimage.exe -lDVD -t09/06/2008,09:00:00 -h -j1 -bG:\DVD\BOOT\loader.bin -o -m G:\DVD.iso

 

 

Utworzenie ISO (w "normalnych" programach)

 

Dla CD Shell - Proszę spojrzeć na drugi post tematu Wytwarzanie płyt startowych Windows na ustawienia w tradycyjnych programach wypalających. Wszystko idzie identycznie czyli: wskazanie bootsectora (w tym przypadku wskazujemy plik CD Shell czyli loader.bin), bez emulacji, liczba sektorów na 4. Do kompilacji przeciągamy całą zawartość folderu DVD (nie folder lecz jego zawartość) i wybieramy jako ostateczną opcję generowanie ISO. Na obrazkach tamtego tematu wszystko widać i nie ma potrzeby rozpisywać się nad tym po raz drugi.

Dla ISOLINUX - Z serii powyższych programów jedyny, który się nadaje, to komercyjny program UltraISO - jest przyjemny, prosty i prawidłowo obchodzi się z takimi strukturami. Posiada opcję "boot-info-table", niezbędną do stworzenia płyty bootującej przez ISOLINUX. Zakładka Bootable / Bootowalna > Generate Bootinfotable / Wygeneruj informację boot.

bootinfotable.gif


Moja końcowa uwaga: czasem lepiej zrobić ISO od początku, nawet jeśli jest tworzone z tych samych obiektów. Mówię o tym, ponieważ zdarzyła mi się dziwna rzecz. Tak wiele razy modyfikowałam obraz ISO, że chyba gdzieś nastąpił błąd struktury zapisu. Nowodogrywane rzeczy nie działały. Po zrobieniu ISO na nowo (z tych samych rzeczy i na tych samych ustawieniach) o dziwo wszystko zadziałało.

 

 

Test ISO i jego finałowe wypalenie

 

ISO utworzone przez jeden z powyższych sposobów montujemy jako wirtualną maszynę w jednym z programów symulujących (np. VirtualBox). Jeśli coś nie działa = niestety szukacie błędu i ISO robicie od początku. Jeśli wszystko gra = ISO można wypalać na płytce DVD. I tu już można się posłużyć dowolnym programem wypalającym, który umie nagrywać obrazy. Zamiast kombajnów prościutki programik:

Active ISO Burner

Na koniec DVD musi być sprawdzone z poziomu prawdziwego sprzętu. Test w wirtualu a rzeczywistość = dwie różne rzeczy. Zdarzają się wypadki, że ISO prawidłowo działa w wirtualizerze, a już nagrane na DVD i zastartowane w rzeczywistych warunkach nie (niekoniecznie rzecz dotyczy każdego peceta). Loteria jest do samego końca.

Odnośnik do komentarza
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...