BOOTable CD oder DVD erstellen, allgemeine Fragen

pit234a

Well-Known Member
Hi.

Das größte Problem, das sich mir derzeit stellt, ist wohl eher ein ganz allgemeines und weniger eines, das FreeBSD bezogen ist. Es stellt sich mir natürlich mit FreeBSD.

Aus speziellen Gründen (die nicht illegal sind), muss ich aus zwei Windows-XP InstallationsCDs eine machen. Teile von einer, müssen also auf die andere. Das ist kein großes Problem (außer, dass ich die .isos nicht mounten kann und direkt von CDs arbeiten muss).
Nun habe ich ein verzeichnis, das alle richtigen daten enthält und wenn ich das auf CD branne, bootet die erwartungsgemäß nicht. Sie kann gelesen werden und ich konnte damit mein Problem etwas umständlicher lösen, aber es war nicht das, was ich eigentlich wollte.
Eigentlich hatte ich von dieser CD booten wollen.

Da kommt nun das, was ich gar nicht durchblicke: wie bekomme ich eine CD bootable?
http://linuxtuneup.blogspot.com/2006/01/slipstreaming-windows-cd-under-linux.html
schien mir weiter zu helfen.
Da sieht es aus, als müsse eine Art Master-Boot-Rekord auf der CD vorhanden sein und am einfachsten nimmt man den von der CD, die man ja verändern möchte?
Mein erster Versuch damit ist jedenfalls gescheitert.
eee# hexdump -C cd_boot.img | grep fa\.33
0000a4a0 fa 33 c0 8e d0 bc 00 7c 8b f4 8e c0 8e d8 fb eb |ú3À.ÐŒ.|.ô.À.Øûë|
000130e0 fa 33 3d 4b 76 b9 0c 63 07 dd 2c 8d 03 4b 34 28 |ú3=Kv¹.c.Ý,..K4(|
000292c0 dc ae df fa 33 76 d2 0a 20 54 9f 53 2d e3 19 9a |Ü®ßú3vÒ. T.S-ã..|
000bfda0 fa 33 c0 8e d0 bc 00 7c fb 8c c8 8e d8 52 e8 00 |ú3À.ÐŒ.|û.È.ØRè.|
da sind allerdings mehere Stellen, die mit dem genannten Code anfangen und im Text ist ja beschrieben, einfach den nächsten zu probieren, naja, das kann ja ganz schön dauern.

In einem anderen Artikel stand etwas, dass man ein boot-image einer Floppy nehmen soll (2880B groß) und dieses für die CD benutzen?

Könnte ich dann etwa auch einen Festplatten-MBR nehmen und an den Anfang einer CD stellen?

Und was bedeutet boot-lade-segment und boot-lade-Größe, die laut eines weiteren Artikels auf bestimmte Werte gebracht werden müssen?

Ich verstehe das Thema einfach zu wenig und blicke deshalb nicht durch.
Die CD hat ja auch ein eigenes Dateisystem.
Könnte ich den Inhalt etwa auf eine bootable Partition eines Sticks (etwa mit UFS oder DOS Filesystem) kopieren und davon booten? oder kann ich einen Stick auch als cd9660 System anlegen und wie sieht dann mein MBR aus?

Wie gesagt, wohl eher ganz grundsätzliche Fragen, die vielleicht nicht hier beantwortet werden können. Aber vielleicht gibt es ein paar Links mit passenden Informationen. Was ich bisher fand ist immer ziemlicher Dödelkram, der keineswegs auf Grundlagen eingeht und in den meisten fällen beschreibt, wie ein ISO gebrannt werden kann.
 
Hi, Danke.

Ich glaube, mit meinem geliebten k3b als Brennprogramm habe ich ganz komfortable Einstelloptionen. Das sollte wohl zu handhaben sein, wenn man erst mal weiß, was man macht und worauf es ankommt.
Diese bootdatei ist wahrscheinlich das entscheidende und ich habe siemir nochnicht angesehen. Was die aber beschreiben ist ähnlich dessen, was ich auch gefunden habe, nur, es erklärt mir die Sache auch nicht.

Gerade mache ich mal noch einen Brennversuch, es könnte sein, dass mein 2048B großes file durch falschen gebrauch von dd falsch gewesen ist.

Muss aber nun weg und später weiter sehen.
 
Nun habe ich einige Dinge probiert und Erfolg damit gehabt. Trotzdem bleibt das unbefriedigend, denn allein durch wildes probiern eine Lösung zu finden, ist nicht sehr elegant. Der Stapel an verbrannten CDs den ich hier vor mir habe, belgt dies!

Was funktionierte, will ich trotzdem kurz beschreiben.
Die Optionen für das Filesystem der CD, das ich auf DOS gesetzt hatte (es gab auch DOS und Linux und nur Linux und vielleicht auch mehr zur Auswahl, die ich alle nicht probiert habe), zeige ich im Bild anbei.
Den CD Label wählte ich gleich der Ursprungs-CD, was vermutlich nichts zu sagen hat.
Als "Bootabbild" (so hieß das glaube ich bei k3b und ist unter Profekte zu finden) nahm ich die 2048B große Datei aus dem Beitrag, den zuglufttier erwähnte, wählte dann keine Emulation (nicht Floppy und nicht Festplatte) und brannte dann die CD.
Das ging also, die CD ist bootable und stürzt nicht ab, aber vollständig getestet habe ich sie nicht. Mein ursprüngliches Problem war ja bereits beim Start des Beitrags gelöst und ich wollte nicht neu installieren.

Bisheriges Fazit:
mit einem passenden "Bootsektor" aus dem Internet, konnte ich eine bootable CD herstellen.

Mit dem von mir gewonnenen "Bootsektor" aus dem iso einer vorhandenen CD, funktionierte das nicht.


Das Problem könnte sein, dass mein Suchkriterium nicht auf feste Stellen (nimm Byte bnm bis vcx vom Anfang der CD) angelegt war, sondern innerhalb einer beliebig gewählten Anzahl von Bytes vom Anfang der CD nach einer bestimmten Folge von Werten suchte. Gemäß Anleitung sollte man diese Kombination finden: fa 33 c0 8e d0 bc 00 7c und beginnend damit 2048B nehmen.
Wenn das nicht funktioniert, solle man den nächsten Punkt nehmen, der mit dieser Kombination beginnt.

Diese Vorgehnsweise ist für mich sehr befremdend. Wie weit gehe ich denn da, um die passende Stelle zu finden?
Tatsächlich haben alle "bootsektor" Dateien, die ich testete, genau diesen Anfang und auch die nun erfolgreiche beginnt exakt so. Falsch ist die Anweisung deshalb wohl kaum, aber es bleibt für mich unverständlich.
Deshalb denke ich, wenn ich verstehe, wie CDs überhaupt bootfähig werden und wprauf zu achten ist, dass ich mr dann nächstes Mal besser helfen kann.
Bisher scheint es ja geradezu, dass ein passender Eintrag "irgendwo" am Anfang der CD zu finden ist. Das ist vollkommen anders, als der geregelte Aufbau eines MBR!

Wie geht das mit diesen CDs?


Nebenbei: wieso kann dd nicht aus CDs lesen? sdd auch nicht:
senyo# dd if=/dev/cd0 of=/home/pit/Desktop/NFS/files/raid1/Exports/Pit-Filme/XP/XP_SP2_dd.iso
dd: /dev/cd0: Invalid argument
0+0 records in
0+0 records out
0 bytes transferred in 0.000239 secs (0 bytes/sec)

senyo# sdd if=/dev/cd0 of=/home/pit/Desktop/NFS/files/raid1/Exports/Pit-Filme/XP/XP_SP2_dd.iso
sdd: Invalid argument. Error reading '/dev/cd0'.
sdd: Read 0 records + 0 bytes (total of 0 bytes = 0.00k).
sdd: Wrote 0 records + 0 bytes (total of 0 bytes = 0.00k).

Weil das nicht geht, nehme ich nämlich aus k3b erstellte .iso und die sind scheinbar nicht geheuer!
Sie werden jedenfalls von FreeBSD nicht als gültig erkannt und können nicht gemountet werden. Merkwürdig.
Vielleicht funktioniert aber genau deshalb nicht meine Suche nach dem "MBR" der CD, weil das iso eben nicht in Ordnung ist?

Ihr seht, sehr viele Fragen und wenn ich es schaffe, die Grundlagen zu kapieren (vielleicht auch nur ein wenig besser asl nun), hoffe ich, dass viele als unsinnig einfach verschwinden.
 

Anhänge

  • k3b.png
    k3b.png
    28,5 KB · Aufrufe: 336
mode-1-CDs haben eine Blockgröße von 2048. Wenn Du den Standard bei dd nimmst (512) dann geht das in die Hose.
 
Ja, du brauchst einen passenden Bootsektor e.t.c., der anschließend von einer bestimmten stelle "irgendeinen" Programmcode lädt der dann vermutlich das Betriebsystem weiter lädt - das sollte nicht sonderlich überraschend sein, bei *BSD e.t.c. sieht das vermutlich auch nicht anders aus.

BTW - ist nlite villeicht was für dich?
 
Man kann einen Bootsektor bei mkisofs mit "-b" angeben (Hier ist eine Falle! Der Pfad hier ist relativ zum CD-Root und nicht im lokalen Dateisystem!).

Das was Du da gelesen hast, wegen "Floppy" war, dass CDs auf verschiedene Weisen gebootet werden. Übrigens, nicht alle CD-ROM-Laufwerke können heutzutage noch Floppy-Emulation-Boot (deswegen gab es auch ein Theater bei einem früheren FreeBSD-Release). Schau Dir die Flags bei mkisofs an.

Ich weiß leider nicht wie die Datei heißt, die bei Windows-XP im Bootsektor landen muss. Ich weiß nicht ob es sie auch dort gibt und auch nicht wo man sie herkriegt.
 
Danke! Das ist dann natürlich klar!
Kann es sein, dass GNU(Linux) dd default die bs=1 nimmt?
Bei FreeBSD bin ich schon häufiger darüber gestolpert, dass dd nicht unter 512 geht und nehme deshalb schon lieber sdd, was aber eine geringfügig andere Syntax an manchen Stellen hat (klar, es ist eben auch ein wenig anders und komfortabler).

Ich werde mir mal ansehen, was ich aus den dd-isos machen kann und wie sie sich von den k3b-isos unterscheiden.
 
Die Optionen von mkisofs kann k3b sehr gut nachbilden und diesem Falle konnte ich mich nie an die langen Befehle gewöhnen, die da enstehen und nutze dieses grafische frontend zum Brennen. Es nutzt die cdrtools von Jörg Schilling und funktioniert sehr gut, kann eben auch ein "boot-Image" einsetzen und bietet dabei die Wahl zwischen Floppy-Emu und Festplatten Emu und kein Emu-Mode.
Keine Emulation war für mich, was ich wollte.
Das Problem ergibt sich daraus, dass ich keinen passenden Bootsektor aus der CD extrahieren konnte. Dieser ist irgendwie nicht an einer bestimmten Stelle am Anfang der CD zu finden, sondern allem Anschein nach muss eine bestimmte Codefolge gefunden werden.
Die vermeintlichen bootsektoren, die ich aus dem k3b-isos extrahierte, funktionierten bei mir alle nicht.
Ein File aus dem Internet (auf das zugluftier hinweist), funktioniert allerdings.

Das Vorgehen und die Technik sind nun also schon mal bekannt, bleibt noch die Frage, weshalb ich keinen Erfolg hatte, die Bootsektoren selbst zu extrahieren und zum Laufen zu bringen.
Das werde ich mir nochmal ansehen.
 
dd und blockorientierte Devices (die es ja unter FreeBSD gar nicht gibt) sind etwas eigentümlich. Bei Linux hat man die Unterscheidung zwischen Block- und Character-Devices. Bei FreeBSD musst Du die richtige Blockgröße selbst raten. Das ist übrigens eine Neuerung und ist auch in Ordnung, dass man wenn man nicht einfach so tut als ob ein Device alles schluckt, wenn es doch sowieso was anderes tun soll.

Welche Standardgröße verwendet wird, bei dd steht in der Man-Page. Wahrscheinlich aber auch 512. Nur eben muss Linux dann 4x den gleichen Block lesen, um einen Sektor von der CD zu lesen (wahrscheinlich ist das sowieso intern gecacht, dann macht das nicht so viele Performanzverluste).
 
Also ich weiß nur, dass ich vor geraumer Zeit dieses Bootimage mal selber aus einer Windows 2003 CD extrahiert habe, frag mich aber bitte nicht wie ;) War auf alle Fälle unter Windows.

Dieser Fall tritt meistens auf, wenn man Service Packs und Patches in eine Installations-CD integrieren möchte, deshalb auch schon mehrfach der Hinweis auf nLite, welches aber nur unter Windows seinen Dienst verrichten sollte. Dieses Programm erstellt dir auf alle Fälle eine bootbare CD und man kann über eine nette Oberfläche noch diverse andere Dinge integrieren.
 
Ok, was ich heute gelernt habe, will ich mal zusammenschreiben.

Nochmal: ich hatte zwei CDs, beide mit einem bootfähigen XP. Eine war bereits älter und hatte einen SP2, die andere war aktuell mit SP3 und passenden Treibern für die HW eines Netbooks. Aus Inhalten beider wollte ich nun eine einzige CD bauen, die Hintergründe führen zu weit weg vom Thema.
Das erste, was ich mit beiden CDs machte, war eine "Klon-Kopie" brennen. Das dabei automatisch entstandene Image entfernte ich nicht, sondern wollte es wie gewöhnlich nutzen, mounten und meine Dateien zusammenführen, die zusammen kommen sollten.

Die erste und wichtigste Lehre: ISO-Images, die so von k3b erzeugt werden, sind irgendwie anders und werden nicht als cd9660 Abbilder erkannt und behandelt!
xp_sp2.iso kam von k3b, xp_sp2_dd.iso ist mit dd und bs=2048 erzeugt.
Code:
senyo# file -s xp_sp2.iso
xp_sp2.iso: data

senyo# file -s xp_sp2_dd.iso
xp_sp2_dd.iso: ISO 9660 CD-ROM filesystem data 'XP_SP2                         ' (bootable)


senyo# isoinfo -d -i xp_sp2.iso
CD-ROM is NOT in ISO 9660 format

senyo# isoinfo -d -i xp_sp2_dd.iso
CD-ROM is in ISO 9660 format
System id: Win32
Volume id: XP_SP2
Volume set id:
Publisher id:
Data preparer id:
Application id: MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 302624
El Torito VD version 1 found, boot catalog is in sector 679
Joliet with UCS level 3 found
NO Rock Ridge present
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff 2AB [B]683[/B]
Die letzte Information aus isoinfo ist genau der skip-wert, um den "bootsektor" auszuschneiden. Das habe ich am ISO gemacht, nicht direkt von CD.
Code:
senyo# dd if=xp_sp2_dd.iso of=xp_sp2_boot.bin bs=2048 count=1 skip=683
1+0 records in
1+0 records out
2048 bytes transferred in 0.000096 secs (21367996 bytes/sec)
Wenn isoinfo geht, ist dies der einfache und zuverlässige Weg. Dann ist es nicht nötig, die Blöcke der CD vom Anfang an zu lesen und die Codefolge
Code:
fa 33 c0 8e d0 bc 00 7c  fb 8c
zu suchen. Wenn isoinfo nicht geht, dann liegt das wahrscheinlich daran, dass es "kein gutes" ISO File ist und dann misslingt die Suche nach der Codefolge jedenfalls!

Nebenbei: die "schlechten ISO-Files können sauber mit k3b gebrannt werden und die dd-erzeugten ebenfalls!

Nun funktioniert trotzdem ein so gewonnener "Bootsektor" nicht immer!
Bei meinen beiden CDs funktionierte er von der älteren Version und dieser Sektor war auch absolut identisch mit der Datei aus dem Internet (siehe Post von zugluftier).
Bei der neueren Version erhielt ich eine BOOTMGR missing Fehlermeldung. Ich zeige mal zum Vergleich, oben kommt Fehler, unten geht es:
Code:
[FONT="Courier New"]00000790  00 00 00 00 00 00 00 00  00 00 00 00 53 45 54 55  |............SETU|
000007a0  50 4c 44 52 2e 42 49 4e  42 4f 4f 54 4d 47 52 42  |PLDR.BIN[B]BOOTMGR[/B]B|
000007b0  4f 4f 54 46 49 58 2e 42  49 4e 42 4f 4f 54 49 33  |OOTFIX.BINBOOTI3|
000007c0  38 36 41 4d 44 36 34 3b  31 00 00 00 00 00 00 00  |86AMD64;1.......|
000007d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000007e0  00 00 00 00 00 00 ff ff  ff ff 00 00 00 00 00 00  |......ÿÿÿÿ......|
000007f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............Uª|

00000470  00 00 00 00 00 00 00 00  00 00 00 00 00 00 53 45  |..............SE|
00000480  54 55 50 4c 44 52 2e 42  49 4e 42 4f 4f 54 46 49  |TUPLDR.BINBOOTFI|
00000490  58 2e 42 49 4e 49 33 38  36 00 00 00 00 00 00 00  |X.BINI386.......|
000004a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|[/FONT]

zusammengefasst:
Von solchen ISOs aus den CDs mittels dd erstellt (oder auch direkt von der CD) lassen sich die Bootsektoren extrahieren (ebenfalls mit dd) und die notwendigen Schnittinformationen mittels isoinfo erhalten.
Die ISO-Files, die so mit dd erstellt wurden, können auch einem md-device zugewiesen werden und als cd9660 gemountet werden (was mit k3b iso nicht gelang).
Wenn kein funktionierender "Bootsektor" gewonnen werden kann, funktionierte einer aus dem Internet.
Ein passender Bootsektor ist jedenfalls zwingend erforderlich und muss mit auf den Weg gegeben werden. Die Bedienung der Programme mag unterschiedlich sein, es ist keine Emulation zu wählen.
Als Dateisystem funktionierte DOS und dann nahm ich diese Custom Settings vor: Jolliet-Erweiterungen erzeugen, Versionsnummern in ISO 9660 Namen weglassen, Iso 9660 Namen mit 31 Zeichen erlauben und ~ und # zulassen.

Der Anhang ist der gültige Bootsektor aus dem internet, lediglich als txt umbenannt. Er ist identisch zu dem selbst-erstellten, der dann bei mir funktionierte.
 

Anhänge

  • bootsektorxp.txt
    2 KB · Aufrufe: 287
Hallo pit234a,

vielen Dank für Deine Forschungsarbeit.

Um die Ergebnisse dieser Arbeit auch für die Zukunft immer griffbereit zu haben, würde ich vorschlagen, dass Du Dein erarbeitetes Wissen im Wiki verankerst.

Oder hat jemand etwas gegen diesen Vorschlag?

Nochmals, vielen Dank!
 
Hallo pit234a,

vielen Dank für Deine Forschungsarbeit.

Um die Ergebnisse dieser Arbeit auch für die Zukunft immer griffbereit zu haben, würde ich vorschlagen, dass Du Dein erarbeitetes Wissen im Wiki verankerst.

Oder hat jemand etwas gegen diesen Vorschlag?

Nochmals, vielen Dank!


Vielen Dank für die Blumen: du siehst mich erröten!

Nein. Ich halte das weder für Wiki-Relevant, noch tauglich.
Das Problem, eine Windows-CD bootable zu bekomen, ist nicht unbedingt Thema für das Wiki und wie ich auch schon zu Eingang bemerkte, ging es mir nicht generell um die Lösung meines Problems, sondern um das Verständnis der Hintergründe.
Dieses hat sich noch nicht eingestellt!
Wie soll ich einen Wiki-Beitrag liefern, wenn ich nicht mal weiß, worüber ich da schreibe? Ich halte mich da für bei weitem nicht kompetent genug.

Natürlich steht die Benutzung von allem, was ich in diesem Forum veröffentliche, natürlich jederzeit für andere zur Verfügung, also auch, wenn jemand daraus einen Beitrag für das Wiki machen möchte.

Für mich wäre es aber beschämend, eine pure Folge von Handlungen zu beschreiben, ohne deren Sinn begriffen zu haben. Das möchte ich nicht.
Ohne Hintergrund-Wissen müsste ich aber erhebliche Zeit aufwenden, um vielleicht weitere Erkenntnisse zu gewinnen. Das geht nicht. Zumal ich da nicht neue Erkentnisse erziele, sondern nur herausfinden kann, was andere längst wissen und für selbstverständlich halten.

Insbesondere verschlossen bleibt mir noch immer, warum ein PC von manchen Medien booten kann und von anderen nicht und was dazu jeweils auf diesen Medien wo installiert sein muss.
Dies gilt ganz besonders für CD/DVD, bei Floppy und Stick oder HD habe ich bereits eine gewisse Vorstellung und finde auch Information, bei CD tappe ich weiter im Dunkeln.
 
Manchmal ist es nötig, einfach einen Artikel zu schreiben, damit die Besserwisser endlich erscheinen und alles korrigieren.

Fazit:
Mach einfach. Solange man kein besseres Verfahren kennt, ist jede Art von Information nützlich.
 
Zurück
Oben