Bootable DVD erstellen

pit234a

Well-Known Member
Ich habe das Problem, dass ich ein zu großes iso habe. Es ist bootbar, passt aber nicht auf eine DVD. Nun brauche ich nicht alles, was in dem iso enthalten ist. Daher die Idee, ein neues iso bzw dann eine DVD mit weniger Dateien zu erstellen. Die muss aber wieder bootfähig sein und daran scheitere ich gerade.

Hier https://www.bsdforen.de/threads/bootable-cd-oder-dvd-erstellen-allgemeine-fragen.25556/#post-217982 war mir das Thema für CDs untergekommen und ich versuchte nun, mit der DVD ganz ähnlich zu verfahren. Alle Versuche scheiterten bislang. Ich erhalte einen Fehler: "cannot start from cd: code 5".

Um nicht unnötig viele DVDs zu verbrennen, schreibe ich nun nur noch das .iso und versuche in der VirtualBox dieses zu starten. Die Fehlermeldung erhielt ich aber auch auf echter HW. Das zu große iso, meine Ausgangsdatei, bootet in der VM.

Ich habe versucht, unterschiedlich große Bootimages zu benutzen. 2K, 4K, 1440K und 2880K. Dann habe ich mit den großen Images Diskettenemulation benutzt (wobei es eine andere Fehlermeldung gibt, es könne nicht vom Medium gelesen werden) und ohne Emulation gearbeitet. Dann habe ich von anderen bootfähigen iso-Files ebenfalls Images in unterschiedlicher Größe getestet und ich habe das alte aus dem Link oben benutzt. Es will einfach nichts werden.

Die Idee, das Iso auf einen Stick zu legen und von dort zu booten, hatte ich auch schon. Aber, es wird zu beginn eine Routine mit einem HW-Check durchlaufen und es sieht so aus, dass dringend das DVD-Laufwerk erkannt werden muss, von dem aus gestartet wurde.

Im Grunde ist meine Aufgabe also, Dateien aus dem iso zu entfernen und anschließend eine DVD daraus zu brennen, die bootet. Hört sich eigentlich einfach an. Vielleicht hat noch jemand einen Tip.
Die isos erzeuge ich mit k3b, was mkisofs benutzt.
Ein Befehl sieht in etwa so aus:
Code:
/usr/local/bin/mkisofs -gui -graft-points -volid MEIN-PROJEKT -volset  -appid K3B THE CD KREATOR (C) 1998-2010 SEBASTIAN TRUEG AND MICHAL MALEK -publisher  -preparer  -sysid FREEBSD -volset-size 1 -volset-seqno 1 -sort /tmp/kde-pit/k3be36286.tmp -no-cache-inodes -iso-level 1 -path-list /tmp/kde-pit/k3bR36286.tmp -eltorito-boot boot/w2k.bin -no-emul-boot -eltorito-catalog boot/boot.catalog
iso-level 1 kommt von den letzten Versuchen mit einem nochmal geänderten Dateisystem für die DVD. Ich glaube, dass ich ziemlich alle Möglichkeiten schon durchprobiert habe.

Vielleicht hat jemand spontan eine gute Idee.
 
ein klein wenig mehr Ordnung in den Fehlermeldungen, aber keinen Nutzen daraus:

Bootimages < 4K erzeugen "cannot start from cd: code 5"
Bootimages > 512K erzeugen eine Fehlermeldung, dass von dem Medium nicht gelesen werden könne und dazwischen gibt es den Fehler, dass der BOOTMGR nicht gefunden werden kann. CDBOOT: Couldn´t find BOOTMGR.
Es gibt da eine Datei bootmgr.
Wie gesagt, noch nicht weiter gekommen.
 
ja, das ist exakt die gleiche Aufgabenstellung. Hättest du da weiter gemacht, dann wäre dir irgendwann das Problem mit dem Bootsektor für die DVD auch untergekommen.

Mein iso ist in ISO 9660 format und hat ein El Torito bootimage und benutzt keine Joliet Erweiterungen.
Eigentlich müsste der Bootsektor gut auszumachen sein. isoinfo(8) gibt einem die passenden Informationen und ich habe mit hexdump(1) jeweils nachgesehen, ob die magischen "fa 33 c0 8e d0 bc 00 7c" auch tatsächlich am Anfang stehen. Soweit ich das sehe, würde ein 4K großer Ausschnitt Sinn machen, weil da nach einigen sinnvollen Zeilen eine Reihe von Nullen kommt und dann mit einem "55 aa" abgeschlossen wird.
Leider gibt es darüber keine Information (ich finde nichts) und unser eigener /boot/cdboot ist gerade mal etwas größer, als 1K (und fängt noch nicht mal mit der magischen Byte-Kombination an).
Ich habe nicht nur versucht, den passenden Sektor aus meinem Original-Image zu ziehen, sondern auch von einem Windows.iso. Der unterscheidet sich ein wenig, ergibt aber gleiche Resultate.

Für mich scheint damit hier vorerst Schluss zu sein. Ich brauche die DVD morgen und habe keine Idee mehr.
Allerdings hatte ich auch versucht, mittels -overburn das zu große Image doch zu brennen. Das ergab zwar Fehler, lieferte mir aber eine bootfähige DVD, auf der nach erstem Ansehen alle Dateien drauf sind. Vielleicht sehe ich sie mir noch genauer an, vielleicht wage ich es einfach damit und erfahre, was passiert.
 
ich muss mich korrigieren. Wenn man so viel versucht, kann man schon mal verwirrt sein.
Die 4K Ausschnitte aus meinem iso und dem Windows.iso sind identisch.
Die 2K Ausschnitte sind unterschiedlich zu dem 2K File aus meinem zuerst verlinkten Beitrag von damals und wie ich gerade sehe, endet dieses alte Image ebenfalls mit "55 aa". Das halte ich mal für einen Hinweis.

Allerdings: es hat mit keiner Version funktioniert. Was mich echt ratlos macht.
 
kannst du uns mal etwas Kontext geben, was du da überhaupt booten willst?

ja, wobei mir das ja selbst nicht ganz klar ist, weil ich die DVD noch nicht in Aktion erlebt habe.
Es ist die SW für eines unserer Geräte und die installiert sich quasi von selbst, non-interaktiv. Es gibt da keine Tastatur und Maus und auch nur eingeschränkt einen Monitor.
Was ich sehe ist, dass auf der DVD drei Ghost-Dateien liegen und laut deren Namen sind die für unterschiedliche PC-Typen gedacht. (ist Ghost allgemein bekannt? Vielleicht heißt das nur bei uns so. Es ist eine Datenträger-Sicherungs-SW). Ich habe aber nur einen dieser PCs und dachte deshalb, dass ich auf die beiden zusätzlichen Ghost-Abbilder verzichten kann. Es befinden sich außerdem noch eine Reihe von Treibern auf der DVD. Und eben die Installationsmagie.
Ich sehe den Start der Wiederherstellungs-SW, die dann aber in meiner Umgebung abbricht, weil die HW nicht passt. Deshalb kann ich nur ein wenig mutmaßen, was genau die DVD macht.
Im Endeffekt ist dieses Ghost nichts anderes, als das Booten eines Windows und diese Version hat offenbar ein neueres Windows als XP. Es wird dann das ausgewählte Image auf den PC spielen und anschließend die Treiber installieren.
 
http://www.unawave.de/windows-7-tipps/code-5-error.html

Ah, sieht gut aus. Die VM bootet und ich brenne gerade eine echte Scheibe.
Zu dem Problem habe ich unzählige Beiträge gelesen und meist sind die nicht brauchbar. Als ich diesen überflog, schien er mir auch nur die Bedienung eines weiteren Brennprogramms zu zeigen. Was mir aber dann wichtig aufgefallen ist: er wählt iso 9660 und UDF. Ich hatte mir gedacht, das dies sich gegenseitig ausschließt und nicht, dass es sich ergänzen kann.
Wenn man sich nicht auskennt!

Also, mein nun erfolgreiches iso wurde mit einem Befehl wie diesem erstellt:
Code:
/usr/local/bin/mkisofs -gui -graft-points -volid Projekt-Name -volset Mein-Projekt -appid  -publisher -preparer  -sysid  -volset-size 1 -volset-seqno 1 -sort /tmp/kde-pit/k3bn72624.tmp -no-cache-inodes -udf -full-iso9660-filenames -no-iso-translate -iso-level 3 -path-list /tmp/kde-pit/k3bB72624.tmp -eltorito-boot boot/b4k.bin -no-emul-boot -eltorito-catalog boot/boot.catalog

Und die gebrannte Scheibe tut es auch.
 
Zuletzt bearbeitet:
Abschließend möchte ich das nochmal zusammenfassen, für den Fall, dass mal jemand in eine ähnliche Lage kommt.

Dabei möchte ich die Admins bitten, den Thread vielleicht umzubenennen, denn, was ich Anfangs ja noch nicht wirklich wusste, es geht tatsächlich um bootfähige DVD's für Windows > XP.
In dem alten Thread: https://www.bsdforen.de/threads/bootable-cd-oder-dvd-erstellen-allgemeine-fragen.25556/#post-217982 war es um bootfähige CD's für Windows XP gegangen.
Windows XP benutzt den NTLOADER und man kann leicht im Bootcode sehen:
Code:
000001b0  0a 00 43 44 42 4f 4f 54  3a 20 43 6f 75 6c 64 6e  |..CDBOOT: Couldn|
000001c0  27 74 20 66 69 6e 64 20  4e 54 4c 44 52 0d 0a 00  |'t find NTLDR...|
Und entsprechend nun, bei den neueren Windows Versionen, den BOOTMGR:
Code:
000001b0  65 3a 20 33 0d 0a 00 43  44 42 4f 4f 54 3a 20 43  |e: 3...CDBOOT: C|
000001c0  6f 75 6c 64 6e 27 74 20  66 69 6e 64 20 42 4f 4f  |ouldn't find BOO|
000001d0  54 4d 47 52 0d 0a 00 43  44 42 4f 4f 54 3a 20 4d  |TMGR...CDBOOT: M|
Wie man den "Bootblock" in einem iso findet, ist gleich geblieben und hier war ich ziemlich unbedarft, weil ich zunächst geglaubt hatte, jeder Bootblock müsse immer mit der Bytefolge "fa 33 c0 8e d0 bc 00 7c" beginnen. Nun sehe ich, dass dies nur für Windows-CD/DVD gilt und offenbar hat sich das nicht geändert seit XP.
Ich machte also ein
Code:
hexdump -Cv -n 100000000 Mein.iso | grep "fa 33 c0 8e d0 bc 00 7c"
und fand einige Stellen am Anfang:
Code:
00008a00  fa 33 c0 8e d0 bc 00 7c  8b f4 8e c0 8e d8 fb eb  |.3.....|........|
00014000  fa 33 c0 8e d0 bc 00 7c  fb 8c c8 8e d8 52 b4 0f  |.3.....|.....R..|
003c6800  fa 33 c0 8e d0 bc 00 7c  fb 8c c8 8e d8 52 e8 00  |.3.....|.....R..|
00014000 ist genau 81920 und das fällt exakt mit der Ausgabe von isoinfo zusammen:
Code:
pit@Celsius ~:- > isoinfo -d -i Mein.iso
Setting input-charset to 'UTF-8' from locale.
CD-ROM is in ISO 9660 format
System id:
Volume id: DER NAME
Volume set id: EIN NAME
Publisher id: MICROSOFT CORPORATION
Data preparer id: MICROSOFT CORPORATION, ONE MICROSOFT WAY, REDMOND WA 98052, (425) 882-8080
Application id: OSCDIMG 2.55 (01/01/2005 TM)
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: 2367920
El Torito VD version 1 found, boot catalog is in sector 19
NO Joliet present

No SUSP/Rock Ridge present
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID 'Microsoft Corporation'
    Cksum 4C 49 OK
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 8
        Bootoff 28 40
Den echten Namen habe ich immer geändert, also nicht wundern, falls das nicht konsistent ist. Was ich hier ganz unten sehe, ist der Bootoff und die zweite Zahl, genau wie damals bei der XP-CD, gibt den Offset in Blöcken an und weiter oben sehe ich, dass die Blocksize 2048 ist und deshalb 40*2048=81920.

Mit dieser Information konnte ich mir diesen Bereich nun mit hexdump ansehen, tat es aber nicht.
Eile mit Weile wäre besser gewesen. Ich nahm einfach einen Block von 2K, wie damals und versuchte mein Glück damit. Als dies nicht funktionierte, nahm ich 4K und so weiter.
Erst im Laufe meiner wilden Probiererei sah ich genauer hin und fand dann, wie oben beschrieben, dass der 4K Block mit "55 aa" endet und das war bei dem alten 2K Block für die XP-CD ebenso. Dies machte mich zuversichtlich, dass 4K gut ist und ich probierte nur noch damit, zumal sich dann ja auch gezeigt hatte, dass dieser Block identisch zu einem Block aus einem Win10-iso war.
Ein guter Befehl zum Gewinnen des Bootblocks ist also:
Code:
dd if=Mein.iso of=b4k.bin bs=2048 count=2 skip=40
Damit kann man einfach die Angabe aus isoinfo direkt benutzen. Wer lieber in 1K Blöcken denkt, kann mit bs=1024 count=4 und skip=80 fahren. Aber das ist ja eh klar.

Letztendlich hatte ich also Glück, dass der Bootblock von Windows immer noch mit "fa 33 c0 8e d0 bc 00 7c" beginnt und mit "55 aa" endet und dass ich euren Hinweis auf UDF dann verstand, als ich den oben verlinkten Beitrag genauer angesehen hatte.

Die restlichen Eigenschaften, also ohne Joliet und ohne Rock Ridge, ahmte ich einfach der Ausgabe von isoinfo gemäß nach.

Und wie vor Jahren, anbei noch der extrahierte Bootblock, der also zum Erstellen von bootfähigen DVDs für Windows > XP genommen werden kann, falls das jemand mal brauchen sollte.
 

Anhänge

  • b4k.txt
    4 KB · Aufrufe: 259
Die restlichen Eigenschaften, also ohne Joliet und ohne Rock Ridge, ahmte ich einfach der Ausgabe von isoinfo gemäß nach.
und habe das eben mal noch in der VM getestet und nun, nachdem man weiß, woran es lag, bootet auch ein iso mit Joliet und Rock Ridge. Hatte mich eben gewundert und deshalb nochmal getestet.
 
Zurück
Oben