Betriebssysteme mit DS installieren. PXE Step-by-Step

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
Hallo,

die Möglichkeit die DS als PXE zu nutzen finde ich genial. Da aber die Infos etwas verstreut sind (siehe http://www.synology-forum.de/showthread.html?t=2323) versuche ich diese Infos hier zu bündeln.

Hier soll jeder seine Konfiguration/Installationsschritte bekannt machen können :)
Herauskommen soll eine Step-by-Step Anleitung, die auch für DS-Einsteiger nachvollziehbar sein wird.


Hintergrundinfo:
Mit PXE auf der DS ist es möglich, einem Client (z.B. PC) ein Betriebssystem über das Netzwerk zu installieren.
Vorteil: Man braucht keine Installations-CD zu suchen. Die notwendigen Dateien liegen auf der DS oder sogar im Internet :D

Voraussetzungen:
IPKG http://www.synology-wiki.de/index.php/IPKG
root-Zugriff per telnet
OPTIONAL:
zum testen habe ich einen PC mit Windows XP und VirtualPC installiert

Vorgehensweise:
Basisinstallation:
A) TFTP-Server
B) DHCP-Server
C) Syslinux

spezielle Installation, je nach Betriebssystem
D) keine Installation, starte Betriebssystem von Festplatte
E) Ubuntuinstallation von Internet


KONFIGURATION:
Heimnetz: 192.168.2.x
IP der DS: 192.168.2.30
TFTP-Verzeichnis: /opt/tftpboot



Ich möchte mich an alle Schreiber des Threads http://www.synology-forum.de/showthread.html?t=2323 bedanken!
Die Konfiguration stammt im wesentlichen von @oxidizer.
 
Zuletzt bearbeitet:

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
A)
TFTP-Server installieren:
Code:
ipkg install tftp-hpa

nicht notwendige Dateien löschen:
Code:
ipkg --force-depends remove xinetd

rm /opt/etc/xinetd.d -R

Datei aufrufen:
Code:
vi /etc/inetd.conf

und hinzuschreiben:
PHP:
tftp    dgram   udp     wait    root    /opt/sbin/in.tftpd      /opt/sbin/in.tftpd -s /opt/tftpboot -m /opt/etc/tftp_remap.conf

Datei öffnen:
Code:
vi /opt/etc/tftp_remap.conf
und hinzuschreiben (nur für Win-Installation notwendig):
PHP:
rg \\ /

restarten:
Code:
/usr/syno/etc/rc.d/S03inetd.sh restart
==============================================================================
Testvorbereitung

Testdatei erstellen:
Code:
cd /opt/tftpboot
echo 'hello world' >> test.txt
z.B. in Windows ein CMD-Fenser öffnen und folgendes eintippen:
Code:
tftp 192.168.2.30 get test.txt
Bringt als Ausgabe:
Transfer successful: 7 bytes in 1 second, 7 bytes/s
 
Zuletzt bearbeitet:

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
B)
DHCP-Server installieren
Code:
ipkg install dhcp

Datei öffnen:
Code:
vi /opt/etc/dhcpd.conf
ans Ende hinzuschreiben:
PHP:
ddns-update-style none;
ddns-updates off;

allow booting;
allow bootp;

# hier für gewöhnlich die Adresse des Routers eintragen.
option domain-name-servers 192.168.2.1;

# euer Subnetz und Maske
subnet 192.168.2.0 netmask 255.255.255.0 {

    option subnet-mask 255.255.255.0;
    option routers 192.168.2.1;
    option domain-name "OXI";
    option perform-mask-discovery false;
    option router-discovery false;

    # IP-Bereich den ihr für den DHCP-Server nutzen wollt
    range dynamic-bootp 192.168.2.100 192.168.2.200;
    default-lease-time 21600;
    max-lease-time 43200;
    # IP der Diskstation
    next-server 192.168.2.30;
    # Dateiname des Programmes für das Bootmenü
    filename "pxelinux.0";
}
dhcp-server restarten:
Code:
/opt/etc/init.d/S56dhcp

Jetzt kommt bei mir der Fehler, dass das Verzeichnis /opt/var/run/ nicht existiert.....also anlegen...
Code:
mkdir /opt/var/run/ -p
dann nochmal dhcp restarten:
Code:
/opt/etc/init.d/S56dhcp
 
Zuletzt bearbeitet:

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
C)
syslinux herunterladen und entpacken:
Code:
cd /tmp
wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.03.tar.gz

tar xvzf /tmp/syslinux-4.03.tar.gz
in TFTP-Verzeichnis kopieren
Code:
cp /tmp/syslinux-4.03/core/pxelinux.0 	    /opt/tftpboot
cp /tmp/syslinux-4.03/com32/menu/menu.c32   /opt/tftpboot
mkdir /opt/tftpboot/pxelinux.cfg -p

D)
Default-Konfigurationsdatei erstellen:
Code:
vi /opt/tftpboot/pxelinux.cfg/default
hineinschreiben:
PHP:
DEFAULT menu.c32
PROMPT 0
NOESCAPE 0
TIMEOUT 3000

MENU TITLE Bootmenue

LABEL local
MENU LABEL ^1 - Booten von lokaler Festplatte
LOCALBOOT 0

TEST:
Nun kann man testen ob die Installation und Konfiguration erfolgreich waren.
Mit VirtualPC kann man testen, ob beim virtuellen PC dieser eine IP-Adresse bekommt und ob ein blauer Bildschirm kommt.
Man kann auch den eigenen PC booten und "übers Netzwerk booten..." auswählen (ggf. im BIOS anpassen)
 
Zuletzt bearbeitet:

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
E)
Mit dieser Installation/Konfiguration ist es möglich Ubuntu zu installieren.
Die notwendigen Dateien werden während der Installation aus dem Internet geladen! (Netinstall)
Achtung:
Prozessor: i386

Zuerst braucht man die Netboot-Dateien.
Herunterladen und entpacken
Code:
cd /tmp
wget http://de.archive.ubuntu.com/ubuntu/dists/maverick/main/installer-i386/current/images/netboot/netboot.tar.gz
tar xvzf netboot.tar.gz
ins TFTP-Verzeichnis kopieren:
Code:
cp ubuntu-installer/ -R /opt/tftpboot

Konfigurations-Datei öffnen
Code:
vi /opt/tftpboot/pxelinux.cfg/default
ans Ende anfügen:
PHP:
LABEL Ubuntu
  MENU LABEL ^2 - aktuelles Ubuntu installieren i386 (Internet)
    kernel ubuntu-installer/i386/boot-screens/vesamenu.c32
    append ubuntu-installer/i386/boot-screens/menu.cfg
 
Zuletzt bearbeitet:

Matthieu

Super-Moderator
Teammitglied
Mitglied seit
03. Nov 2008
Beiträge
13.140
Punkte für Reaktionen
58
Punkte
344
Auch wenn hier teilweise noch Platzhalter stehen: TOLL! Kannst du das auch so ins Wiki exportieren? (Am besten über OpenOffice und das MediaWiki-plugin wenn du den Reintext schon vorliegen hast)

MfG Matthieu
 

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
Mit dieser Installation/Konfiguration ist es möglich Ubuntu zu installieren.
Die notwendigen Dateien werden während der Installation aus dem Internet geladen! (Netinstall)
Achtung:
Prozessor: amd64

Zuerst braucht man die Netboot-Dateien.
Herunterladen und entpacken
Code:
cd /tmp
wget http://de.archive.ubuntu.com/ubuntu/dists/maverick/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar xvzf netboot.tar.gz
ins TFTP-Verzeichnis kopieren:
Code:
cp ubuntu-installer/ -R /opt/tftpboot

Konfigurations-Datei öffnen
Code:
vi /opt/tftpboot/pxelinux.cfg/default
ans Ende anfügen:
PHP:
LABEL Ubuntu
  MENU LABEL ^2 - aktuelles Ubuntu installieren AMD64 (Internet)
    kernel ubuntu-installer/amd64/boot-screens/vesamenu.c32
    append ubuntu-installer/amd64/boot-screens/menu.cfg
 

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
Auch wenn hier teilweise noch Platzhalter stehen: TOLL! Kannst du das auch so ins Wiki exportieren? (Am besten über OpenOffice und das MediaWiki-plugin wenn du den Reintext schon vorliegen hast)

MfG Matthieu
Mit dem Wiki habe ich es nicht so...wenn mir das einer abnehmen könnte wäre ich sehr dankbar :)
Ich schicke gerne die Texte per PM oder mail zu

UPDATE:
die Dateien sind hier im Anhang
 

Anhänge

  • 0.Einführung.txt
    1,6 KB · Aufrufe: 33
  • 1.install_tftp.txt
    1 KB · Aufrufe: 23
  • 2.dhcp.txt
    1,2 KB · Aufrufe: 17
  • 3.syslinux.txt
    1.004 Bytes · Aufrufe: 25
  • 4.ubuntu_netinstall.txt
    856 Bytes · Aufrufe: 14
  • 5.ubuntu_netinstall_AMD.txt
    848 Bytes · Aufrufe: 13
Zuletzt bearbeitet:

papiga01

Benutzer
Mitglied seit
03. Jan 2009
Beiträge
75
Punkte für Reaktionen
0
Punkte
0
NetInstall ist ja ganz schön und gut, aber durch das downloaden aus dem Internet dauert die Installation auch ne zeitlang.
Man kann Ubuntu aus einem Verzeichnis bzw. aus einer .iso-Datei installieren.

Voraussetzungen:
PXE-Basisinstallation (die Topis 1-4 dieses Threads)
IPKG
telnet-Zugang als root
nfs-server
.iso-Dateien mounten

NFS-Server:
1) der NFS-Server sollte über die Synology Weboberfläche aktiviert werden
2) es sollte auch mal irgendein Gemeinsamer Ordner freigegeben werden, weil sonst existiert die Datei /etc/exports nicht. Gemeinsamen Ordner freigeben

Konfiguraion:
DS hat eine feste IP: 192.168.2.30

Vorgehensweise:
Die Ubunutu .iso-Datei aus dem Internet downloaden und dem TFTP-Verzeichnis zugänglich machen und dann das PXE konfigurieren.
Dabei kann man zwei Wege gehen. Entweder mountet man die .iso-Datei permanent ins TFTP-Verzeichnis oder man kopiert dessen Inhalt in ein separates TFTP-Verzeichnis. Ich habe mich für die erste Methode entschieden.

1)
ein Verzeichnis erstellen, welches die Ubuntu-iso-Dateien hält:
Code:
mkdir /opt/tftpboot/images -p
2)
und ein Verzeichnis erstellen, wohin das iso gemounted wird:
Code:
mkdir /opt/tftpboot/ubuntu -p
3)
Nun die Ubuntu iso-Datei herunterladen
Code:
cd /opt/tftpboot/images
wget http://ftp.heanet.ie/pub/ubuntu-releases/10.10/ubuntu-10.10-desktop-i386.iso
und mounten:
Code:
mount /opt/tftpboot/images/ubuntu-10.10-desktop-i386.iso /opt/tftpboot/ubuntu -o loop -t iso9660
4)
bei einem reboot der DS würde der mount verlorengehen. Damit der mount permanent bleibt, das Startscript aufrufen:
Code:
vi /usr/syno/etc/rc.d/S99isoinsmod.sh
und im Abschintt "START" nach den insmod-Befehlen folgendes hinzufügen:
Code:
mount /opt/tftpboot/images/ubuntu-10.10-desktop-i386.iso /opt/tftpboot/ubuntu -o loop -t iso9660
Ein Teilabschnitt der Datei sieht nun so aus:
PHP:
...
...
start)
  insmod /lib/modules/isofs.ko
  insmod /lib/modules/udf.ko
  #insmod /lib/modules/zlib_inflate.ko # ist schon installiert
  mount /opt/tftpboot/images/ubuntu-10.10-desktop-i386.iso /opt/tftpboot/ubuntu -o loop -t iso9660
;;
...
...
5)
und nun das Script restarten
(beachte: vorhandene nicht-permanente mounts gehen verloren):
Code:
/usr/syno/etc/rc.d/S99isoinsmod.sh restart
6)
nun die NFS-Freigabe...
dazu die Datei öffnen:
Code:
vi /etc/exports
Hier gebe ich eine NFS-Freigabe, für den Installtions-Ordner und für das Netz 192.168.2.xx frei:
Code:
/opt/tftpboot/ubuntu/ 192.168.2.*(no_root_squash,rw,async)
7)
NFS reexportieren...:
Code:
exportfs -rv
8)
nun das PXE konfigurieren:
Datei öffnen:
Code:
vi /opt/tftpboot/pxelinux.cfg/default
9)
ans Ende der Datei, anfügen:
PHP:
LABEL Ubuntu-10.10
Menu label ^Ubuntu 10.10
kernel ubuntu/casper/vmlinuz
append boot=casper vga=normal netboot=nfs nfsroot=192.168.2.30:/opt/tftpboot/ubuntu initrd=ubuntu/casper/initrd.lz

das wars....
das Booten kann man mit dem Programm "VirtualPC" getestet werden oder mit seinem eigenen PC "übers Netzwerk booten".
 

cunit

Benutzer
Mitglied seit
02. Jul 2010
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Ich mach einfach mal weiter mit den Step-by-Step Anleitungen.

Ein eigenes Win7PE über PXE booten

Zur Erklärung: Win7PE ist ein Windows 7 Live System basierend auf Microsoft Windows WinPE 3.0. Ein Win7PE DVD Image wird mit dem Winbuilder aus einer Originalen Windows 7 DVD erstellt. Dazu später mehr.

Voraussetzungen

Schritt 1: PXE Vorbereitungen
Folgendes wird auf dem Windows 7 Rechner durchgeführt, auf dem das WAIK installiert ist.

Notepad öffnen, folgendes als *.cmd-Datei abspeichern und anschließend "Als Administrator ausführen":
(vgl. Original-Skript)
Rich (BBCode):
@echo off

rem
rem Build WinPE3.0_4_PXE
rem
rem 20091127 v1.0 Build WinPE3.0_4_PXE from the source files
rem

set WORKDIR=%~dp0
set TEMPDIR=C:\WinPE_x86
set KITPATH=
if exist "C:\Program Files\Windows AIK" set KITPATH=C:\Program Files\Windows AIK
if exist "C:\Program Files\Windows OPK" set KITPATH=C:\Program Files\Windows OPK
if "%KITPATH%"=="" goto E_KITPATH

if exist C:\tftpboot rmdir /s /q C:\tftpboot
if errorlevel 1 goto E_DELTMP
if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP
md C:\tftpboot
if errorlevel 1 goto E_MDOUT
md C:\tftpboot\Boot
if errorlevel 1 goto E_MDOUT

call "%KITPATH%\Tools\PETools\copype.cmd" x86 "%TEMPDIR%"
cd ..

"%KITPATH%\Tools\x86\Servicing\Dism.exe" /mount-wim /wimfile:"%TEMPDIR%\winpe.wim" /index:1 /mountdir:"%TEMPDIR%\mount"
if errorlevel 1 goto E_MOUNT

copy "%TEMPDIR%\mount\Windows\Boot\PXE\*.*" C:\tftpboot\Boot
if errorlevel 1 goto E_COPY

"%KITPATH%\Tools\x86\Servicing\Dism.exe" /unmount-wim /mountdir:"%TEMPDIR%\mount" /commit
if errorlevel 1 goto E_UNMOUNT

copy "%KITPATH%\Tools\PETools\x86\boot\boot.sdi" C:\tftpboot\Boot
if errorlevel 1 goto E_COPY

copy "%TEMPDIR%\winpe.wim" C:\tftpboot\Boot
if errorlevel 1 goto E_COPY

bcdedit -createstore C:\BCD
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -create {ramdiskoptions} /d "Ramdisk Options"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdidevice boot
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
if errorlevel 1 goto E_BCD

for /f "tokens=1-3" %%a in ('bcdedit -store C:\BCD -create /d "WinPE 3.0 Boot Image" /application osloader') do set GUID1=%%c
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% systemroot \Windows
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% detecthal Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% winpe Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD

bcdedit -store C:\BCD -create {bootmgr} /d "Windows 7 Boot Manager"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} timeout 30
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} displayorder %GUID1%
if errorlevel 1 goto E_BCD

copy C:\BCD C:\tftpboot\Boot
if errorlevel 1 goto E_COPY

if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP

if exist C:\BCD del C:\BCD
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG del /a C:\BCD.LOG
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG1 del /a C:\BCD.LOG1
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG2 del /a C:\BCD.LOG2
if errorlevel 1 goto E_DELBCD

goto DONE

:E_KITPATH
set MESSAGE=Could not find the OPK/AIK folder!
goto END

:E_DELTMP
set MESSAGE=Could not delete temporary folder!
goto END

:E_MDOUT
set MESSAGE=Could not create output folder!
goto END

:E_MOUNT
set MESSAGE=Could not mount boot.wim!
goto END

:E_COPY
set MESSAGE=Could not copy this file(s) into the output folder!
goto END

:E_UNMOUNT
set MESSAGE=Could not unmount boot.wim!
goto END

:E_BCD
set MESSAGE=BCDEdit failed!
goto END

:E_DELBCD
set MESSAGE=Could not delete temporary BCD files!
goto END

:DONE
cls
set MESSAGE=Done
goto END

:END
echo.
echo %MESSAGE%
echo.
pause
exit

Die Ausführung dauernt ein bisschen. Warten bis das Skript fertig ist:
Rich (BBCode):
Done

Drücken Sie eine beliebige Taste . . .

Es wurden die Ordner C:\tftpboot und C:\WinPE_x86 angelegt. C:\WinPE_x86 kann getrost gelöscht werden.
In C:\tftpboot befindet sich der Ordner "Boot". Dieser muss nun direkt ins tftp root auf der Diskstation kopiert werden (also z.B. /volume1/tftpboot/Boot/)


Weiter gehts in der Shell auf der Diskstation. (/volume1/tftpboot/ ist mein tftp root)

Wie folgt zwei Links hinzufügen:
Rich (BBCode):
cd /volume1/tftpboot/
ln -s Boot/bootmgr.exe
cd Boot/
ln -s pxeboot.n12 pxeboot.0

In der tftpboot/pxelinux.cfg/default einen entsprechenden Menüeintrag hinzufügen:
Rich (BBCode):
LABEL WIN7PE
MENU LABEL ^2 - Win7PE SE
KERNEL Boot/pxeboot.0




Schritt 2: Eigenes Win7PE bauen
Derzeit existiert auf der Diskstation die Datei tftpboot/Boot/winpe.wim. Das ist das WinPE-Image vom AIK, welches zZt. geladen wird wenn ihr die Boot/pxeboot.0 bootet. Testet zu diesem Zeitpunkt ruhig mal, ob ein PXE-Boot fehlerfrei abläuft.

Die winpe.wim soll nun durch das eigentliche Win7PE Image ersetzt werden.

Wird auf dem Windows PC ausgeführt:
Entpackt/kopiert den Inhalt der Windows 7 DVD in einen Ordner, der keine Leerzeichen enthält (z.B. C:\WIN7DVD\).
Entpackt die Win7PE_SE_2011_01_17.7z und startet die WinBuilder.exe. Klickt oben auf "Source" und wählt den DVD Ordner (C:\WIN7DVD\).
Links können allerhand Einstellungen am zukünftigen Win7PE vorgenommen werden. Zu Anfang kann aber alles auf Standard bleiben.

Sicherstellen, ob eine Internetverbindung besteht und auf den großen blauen Play-Button oben rechts klicken. Warten bis der Vorgang abgeschlossen ist.

Anschließend im Unterordner \Target\Win7PE_SE\sources die boot.wim in winpe.wim umbenennen und die alte wim auf der Diskstation mit dieser ersetzen.

PXE-Boot testen und fertig!

PS:
  • Im Unterordner /ISO des Winbuilders findet ihr ein DVD Image für den normalen Gebrauch.
  • Theoretisch sollte jedes Image verwendet werden können, welches mit dem Winbuilder erstellt wurde. Der Winbuilder bietet allerhand Freiheiten und Möglichkeiten.. dazu bitte im Internet informieren.
 

Matthieu

Super-Moderator
Teammitglied
Mitglied seit
03. Nov 2008
Beiträge
13.140
Punkte für Reaktionen
58
Punkte
344
Wäre echt toll wenn das im Wiki landen würde. Leider ist der angehängte Text oben der aus dem Forum. Ich meinte eigentlich reinen Text ohne Anhängsel vom Forum.

MfG Matthieu
 

wilddog1806

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
52
Punkte für Reaktionen
0
Punkte
6
Einträge im WinPE Bootmanager umbenennen

Hallo zusammen.

Hab das ganze mal getestet und funzt auch nach einigen schwierigkeiten einwandfrei.
Nach einigem tüffteln und suche im internet hab ich es nun auch schon mal geschafft das ich zumindest 2 verschiedene .wim images booten kann. Mein problem ist jetzt das ich 2 gleiche Einträge ( "Ramdisk Options" ) im Bootmanager Menü habe.

hat jemand eine Idee wie ich das ändern kann ? :confused: Hab folgende schritte gemacht:

Rich (BBCode):
4. BCD erstellen

In diesem Kapitel werden wir die Boot-Konfiguration mit Hilfe von BCDedit erstellen.

Mit dem ersten Befehl wir die BCD-Datei erstellt in welche die nachfolgenden Einstellungen gespeichert werden.

C:\>bcdedit -createstore c:\work\bcd

Durch die nächsten Befehle werden die Einstellungen für die Ramdisk eingefügt.

C:\>bcdedit -store c:\work\bcd -create {ramdiskoptions} /d "Ramdisk Options"
C:\>bcdedit -store c:\work\bcd -set {ramdiskoptions} ramdisksdidevice boot
C:\>bcdedit -store c:\work\bcd -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

Nachdem die Ramdisk-Einstellungen gespeichert wurden, erstellen Sie einen Eintrag für das WinPE-Image.

C:\>bcdedit -store c:\work\bcd -create /d "WinPE 3.0 Boot Image" /application osloader
C:\>bcdedit -store c:\work\bcd -create /d "Notfall Boot Image" /application osloader

Dieser Befehl sollte nun eine Meldung ausgeben welche wie folgt aussieht.

Der Eintrag wurde erfolgreich in {b1cd684d-7331-11db-b049-dfaf511725d9} kopiert.

Den angezeigten Hex-Wert müssen Sie bei den nächsten Befehlen anstelle von %GUID1% eingeben.

Mit den folgenden Befehlen werden die Einstellungen für das WinPE-Image vorgenommen. Achten Sie bitte besonders auf die Schreibweise der Verzeichnis- und Dateinamen.
%GUID1%
C:\>bcdedit -store c:\work\bcd -set {af86a978-3e00-11e0-af7f-00164173c33d} systemroot \Windows
C:\>bcdedit -store c:\work\bcd -set {af86a978-3e00-11e0-af7f-00164173c33d} detecthal Yes
C:\>bcdedit -store c:\work\bcd -set {af86a978-3e00-11e0-af7f-00164173c33d} winpe Yes
C:\>bcdedit -store c:\work\bcd -set {af86a978-3e00-11e0-af7f-00164173c33d} osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
C:\>bcdedit -store c:\work\bcd -set {af86a978-3e00-11e0-af7f-00164173c33d} device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}

%GUID2%
C:\>bcdedit -store c:\work\bcd -set {22955541-3e13-11e0-a5c3-001aa0ca856a} systemroot \Windows
C:\>bcdedit -store c:\work\bcd -set {22955541-3e13-11e0-a5c3-001aa0ca856a} detecthal Yes
C:\>bcdedit -store c:\work\bcd -set {22955541-3e13-11e0-a5c3-001aa0ca856a} winpe Yes
C:\>bcdedit -store c:\work\bcd -set {22955541-3e13-11e0-a5c3-001aa0ca856a} osdevice ramdisk=[boot]\Boot\not7.wim,{ramdiskoptions}
C:\>bcdedit -store c:\work\bcd -set {22955541-3e13-11e0-a5c3-001aa0ca856a} device ramdisk=[boot]\Boot\not7.wim,{ramdiskoptions}


Zum Schluss werden noch die Einstellungen für den Bootmanager eingetragen.

C:\>bcdedit -store c:\work\bcd -create {bootmgr} /d "Windows 7 Boot Manager"
C:\>bcdedit -store c:\work\bcd -set {bootmgr} timeout 30
C:\>bcdedit -store c:\work\bcd -set {bootmgr} displayorder {ff2c5f35-3e11-11e0-a5c3-001aa0ca856a} {22955541-3e13-11e0-a5c3-001aa0ca856a}

ich sag schon mal danke im vorraus.

Gruß
wilddog
 

wilddog1806

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
52
Punkte für Reaktionen
0
Punkte
6
Hab jetzt selbe ne lösung gefunden. bin über ein script gestolpert welches ich noch an meine Bedürnisse angepasst habe.

das script in eine CMD datei packen und dann auf nem win7 pc, am besten in einem eigenen verzeichniss ausführen. anschliessend die BCD datei nach /tftpboot/boot kopieren.

Rich (BBCode):
rem BCD-Erstellung fuer PXE-Boot von WAIK-Windows-7
rem vgl. http://www.rrzn.uni-hannover.de/anl-waikpxe.html
rem 20100716-HH
del BCD
c:\windows\system32\bcdedit -createstore BCD
c:\windows\system32\bcdedit -store BCD -create {ramdiskoptions}
c:\windows\system32\bcdedit -store BCD -set {ramdiskoptions} ramdisksdidevice boot
c:\windows\system32\bcdedit -store BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
rem GUID #1
for /f " usebackq delims={} tokens=2" %%i IN (`c:\windows\system32\bcdedit -store BCD -create /d "WinPE Console Boot" /application osloader`) do set GUIDcons=%%i
rem GUID #2
for /f " usebackq delims={} tokens=2" %%i IN (`c:\windows\system32\bcdedit -store BCD -create /d "WinPE Notfall Boot" /application osloader`) do set GUIDnot7=%%i
rem GUID #3
for /f " usebackq delims={} tokens=2" %%i IN (`c:\windows\system32\bcdedit -store BCD -create /d "Win 7 xDark Install" /application osloader`) do set GUIDxdark=%%i
rem GUID #4
for /f " usebackq delims={} tokens=2" %%i IN (`c:\windows\system32\bcdedit -store BCD -create /d "Paragon Harddisk Manager" /application osloader`) do set GUIDphdm=%%i

rem Ausgabe am Bildschirm
rem GUID #1
echo GUID cons: %GUIDcons%
rem GUID #2
echo GUID not7: %GUIDnot7%
rem GUID #3
echo GUID xdark: %GUIDxdark%
rem GUID #4
echo GUID phdm: %GUIDphdm%


echo GUIDs gemaess bcdedit:

rem GUID #1
c:\windows\system32\bcdedit -store BCD -enum
c:\windows\system32\bcdedit -store BCD -set {%GUIDcons%} systemroot \Windows
c:\windows\system32\bcdedit -store BCD -set {%GUIDcons%} detecthal Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDcons%} winpe Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDcons%} osdevice ramdisk=[boot]\sources\boot.wim
c:\windows\system32\bcdedit -store BCD -set {%GUIDcons%} device ramdisk=[boot]\sources\boot.wim,{ramdiskoptions}

rem GUID #2
c:\windows\system32\bcdedit -store BCD -set {%GUIDnot7%} systemroot \Windows
c:\windows\system32\bcdedit -store BCD -set {%GUIDnot7%} detecthal Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDnot7%} winpe Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDnot7%} osdevice ramdisk=[boot]\sources\not7.wim
c:\windows\system32\bcdedit -store BCD -set {%GUIDnot7%} device ramdisk=[boot]\sources\not7.wim,{ramdiskoptions}

rem GUID #3
c:\windows\system32\bcdedit -store BCD -set {%GUIDxdark%} systemroot \Windows
c:\windows\system32\bcdedit -store BCD -set {%GUIDxdark%} detecthal Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDxdark%} winpe Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDxdark%} osdevice ramdisk=[boot]\sources\xdark.wim
c:\windows\system32\bcdedit -store BCD -set {%GUIDxdark%} device ramdisk=[boot]\sources\xdark.wim,{ramdiskoptions}

rem GUID #4
c:\windows\system32\bcdedit -store BCD -set {%GUIDphdm%} systemroot \Windows
c:\windows\system32\bcdedit -store BCD -set {%GUIDphdm%} detecthal Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDphdm%} winpe Yes
c:\windows\system32\bcdedit -store BCD -set {%GUIDphdm%} osdevice ramdisk=[boot]\sources\phdm.wim
c:\windows\system32\bcdedit -store BCD -set {%GUIDphdm%} device ramdisk=[boot]\sources\phdm.wim,{ramdiskoptions}

rem Create Bootmanager entrys
c:\windows\system32\bcdedit -store BCD -create {bootmgr} /d "Wilddog`s WinPE BootManager"
c:\windows\system32\bcdedit -store BCD -timeout 60
c:\windows\system32\bcdedit -store BCD -default {%GUIDcons%}
c:\windows\system32\bcdedit -store BCD -displayorder {%GUIDcons%} {%GUIDnot7%} {%GUIDxdark%} {%GUIDphdm%}

Müsst ihr euch nur die GUID's entsprechend anpassen und auf die groß und kleinschreibung achten. ich bin dazu übergegangen alles klein zu schreiben bei den pfade und dateinamen.

vielleicht hilft das ja jemandem weiter der genauso verzweifelt nach ner lösung sucht wie ich es getan habe....

gruß
wilddog
 

bvcbvcbc

Benutzer
Mitglied seit
28. Jul 2010
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Könnte einer bitte eine Anleitung für Win7 x64 schreiben? Ich mein damit nicht PE, sondern direkt die Installation von der Synology starten. Danke.
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
0
Hallo
Kann man damit auch Ubuntu booten und dann das Live System starten?
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0

bcdedit

Benutzer
Mitglied seit
01. Okt 2011
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo wilddog1806,

Nach einigem tüffteln und suche im internet hab ich es nun auch schon mal geschafft das ich zumindest 2 verschiedene .wim images booten kann. Mein problem ist jetzt das ich 2 gleiche Einträge ( "Ramdisk Options" ) im Bootmanager Menü habe.
Ich stehe absolut vor dem gleichen Problem und komme nicht weiter. Wie hast du es gelöst?

Die von dir gepostete Batch von [B]http://www.rrzn.uni-hannover.de/anl-waikpxe.html[/B] führt leider nicht zum Erfolg. Hast du es damit echt ernst gemeint? Deine Lösung vorher ist ja im Prinzip 1:1 die gleiche.
Ich habe bereits mehrere Varianten ausprobiert, die fehlerfrei verliefen, allerdings im Bootmenü werden anstatt der gesetzten Beschreibungen unter "Description" jeweils folgende Zeilen angezeigt: "Ramdisk Options (EMS Enable]". Bzw. etwas ähnlich, je nachdem wie ich halt den Eintrag bei der Erstellung benenne. Nur, warum muss eben diese Benennung im Bootmenü auftauchen und nicht die Namen der eigentlichen Einträgen, die unter unter "Description" gesetzt und angezeigt werden? Mit der Befehlszeile "bcdedit /enum all /v" wird alles ausführlich aufgelistet, da wird mir alles richtig angezeigt - unter "Description" stehen die eigentlichen Namen der jeweiligen Einträgen richtig zugeordnet.

Die jeweiligen Windows-Setup-Versionen können zwar ausgeführt werden, wenn einfach eine von mehreren "Ramdisk Options [EMS Enable]" Zeilen angewählt wird, aber es ist keine Zuordnung zu der Windows-Setup-Versionen im Bootmenü möglich. Ich muss mir eine extra Liste führen und dann die Zeilen abzählen - das ist ja langweilig. Wie hast du es gelöst? Es interessiert mich sehr.
Mit einem letzten Code geht es definitiv nicht.

Danke
 
Zuletzt bearbeitet:

winfreund

Benutzer
Mitglied seit
24. Dez 2011
Beiträge
235
Punkte für Reaktionen
0
Punkte
16
tftp funktioniert nicht?

hallo,
ich habe versucht meine DS212+ pxe boot fähig zu machen. soweit funktioniert es auch. der computer kriegt eine ip von der DS212+ und wenn er versucht die daten über tftp zu laden kommt nach ner zeit ein timeout. unter windows wenn ich die erstellte testdatei laden will kommt auch nur nach einer minute ein timeout. ich habe alles so gemacht wie es in der anleitung steht. wäre für hilfe dankbar.:)

MFG
 

wilddog1806

Benutzer
Mitglied seit
08. Nov 2009
Beiträge
52
Punkte für Reaktionen
0
Punkte
6
Hallo Winfreund,

vielleicht kannst Du mal Deine configs posten, die DHCP config wäre besonders interessant,
weil für mich hört sich das so an als würde der tftp Server den Pfad nicht finden.

Welchen dhcp Dienst und welchen tftp Server benutzt Du ?

Gruß wilddog
 

winfreund

Benutzer
Mitglied seit
24. Dez 2011
Beiträge
235
Punkte für Reaktionen
0
Punkte
16
hallo wilddog,

erstmal danke für die schnelle antwort. ich nutze den tftp-hpa von ipkg und ebenfalls von ipkg den dhcp server, so wie es in der anleitung steht.

hier die DHCP config:
Rich (BBCode):
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet 10.152.187.0 netmask 255.255.255.0 {
}

# This is a very basic subnet declaration.

subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20;
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;
  option broadcast-address 10.254.239.31;
  option routers rtr-239-32-1.example.org;
}

# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;
  filename "vmunix.passacaglia";
  server-name "toccata.fugue.com";
}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address fantasia.fugue.com;
}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

class "foo" {
  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}

shared-network 224-29 {
  subnet 10.17.224.0 netmask 255.255.255.0 {
    option routers rtr-224.example.org;
  }
  subnet 10.0.29.0 netmask 255.255.255.0 {
    option routers rtr-29.example.org;
  }
  pool {
    allow members of "foo";
    range 10.17.224.10 10.17.224.250;
  }
  pool {
    deny members of "foo";
    range 10.0.29.10 10.0.29.230;
  }
}
ddns-update-style none;
ddns-updates off;

allow booting;
allow bootp;

# hier f�r gew”hnlich die Adresse des Routers eintragen.
option domain-name-servers 192.168.178.1;

# euer Subnetz und Maske
subnet 192.168.178.0 netmask 255.255.255.0 {

    option subnet-mask 255.255.255.0;
        option routers 192.168.178.1;
            option domain-name "OXI";
                option perform-mask-discovery false;
                    option router-discovery false;
                    
                        # IP-Bereich den ihr f�r den DHCP-Server nutzen wollt
                            range dynamic-bootp 192.168.178.100 192.168.178.200;
                                default-lease-time 21600;
                                    max-lease-time 43200;
                                        # IP der Diskstation
                                            next-server 192.168.2.27;
                                                # Dateiname des Programmes f�r das Bootmen�
                                                    filename "pxelinux.0";
                                                    }

und die inetd.conf:
Rich (BBCode):
#telnet	stream	tcp	nowait	root	/usr/sbin/telnetd	telnetd
tftp    dgram   udp     wait    root    /opt/sbin/in.tftpd      /opt/sbin/in.tftpd -s /opt/tftpboot -m /opt/etc/tftp_remap.conf
telnet	stream	tcp6 nowait	root	/usr/sbin/telnetd	telnetd
printer	stream  tcp6 nowait	root	/usr/syno/sbin/cups-lpd cups-lpd -T /var/services/printer/tmp

PS: entschuldigung für den langen beitrag, aber ich weiss nicht ob es hier auch die spoiler funktion gibt.
 
Zuletzt bearbeitet: