Ja, das ist sehr gut möglich. Die Art des Systems, das Sie booten können, hängt davon ab, wie das System funktioniert.
Normalerweise werden Sie feststellen, dass sehr einfache Systeme (wie DOS oder Win98) und sehr komplexe Systeme (wie moderne Linux-Distributionen) problemlos über das Netzwerk booten können.
Die Art und Weise, wie dies bei den beiden Systemtypen erreicht wird, ist sehr unterschiedlich.
Sehen wir uns beide Möglichkeiten genauer an. Ich nehme an, Sie bereits einen haben PXE Boot - Server - Setup ; Wenn Sie es nicht tun, machen Sie es einfach.
Ich gehe auch von einem dnsmasq
Setup auf einem Linux-Server mit tftproot aus /var/lib/tftpboot
, aber Sie sollten in der Lage sein, die Anweisungen an jedes andere Setup anzupassen.
Für einfache Systeme
Bei einfachen Systemen laden Sie einfach das Image (ISO) in den Arbeitsspeicher und verleiten das System zu der Annahme, dass es sich um eine tatsächliche Einheit handelt. Dies geschieht mit Hilfe des BIOS und eines Softwaremoduls namens memdisk .
Das System, das Sie über das Netzwerk laden möchten, ist freedos:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
Das wars so ziemlich. Die ersten Zeilen sind Menüzeilen; Die wichtigsten Bits sind die letzten vier Zeilen: Laden Sie die Memdisk mit der angegebenen ISO.
Für komplexe Systeme
Moderne Systeme mit ausgefallenen Funktionen wie guter Speicherverwaltung und richtiger Hardwareerkennung ignorieren so ziemlich alles, was das BIOS zu sagen hat.
Dies macht den memdisk
oben verwendeten Ansatz so gut wie unbrauchbar, denn wenn Sie die ISO auf diese Weise geladen haben, nachdem der Kernel von der ISO gelesen und in den Speicher geladen wurde (dies geschieht durch den Bootloader in der ISO; Bootloader beachten das BIOS). , die ISO-Daten wären weg.
Was machst du dann? Nun, Sie laden die ISO-Datei nicht aus dem Netzwerk, sondern teilen dem System mit, dass es von dort aus auf die erforderlichen Dateien zugreifen kann.
Extrahieren Sie bei Linux-Systemen den ISO-Inhalt irgendwo im tftproot, laden Sie den Kernel und initrd direkt und überlassen Sie es diesen, das Root-Dateisystem zu finden und es bereitzustellen.
Hier ist ein Beispiel für die erstaunliche System Rescue-CD . Ich habe die gesamte ISO tatsächlich in das Stammverzeichnis des TFTP-Servers extrahiert, da sie genau in meine Verzeichnisstruktur passt und die Kernel also darin enthalten sind /syslinux
.
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
Das wichtigste ist hier die APPEND
Linie. Siehst netboot=
du das am Ende? So weiß das Betriebssystem, wo sich sein Root-Dateisystem befindet. Die Syntax lautet <protocol>://<server>:<path>
.
Ich hatte bequem einen DNS-Namen pxe
für meinen Server festgelegt. Wenn Sie das nicht haben, würden Sie eine IP-Adresse für den Server verwenden.
Außerdem ist sysresccd eines der einfachsten, da es ein Squashfs-Image für sein Root-Dateisystem verwendet, das mit jeder Methode einfach heruntergeladen und in den Arbeitsspeicher geladen werden kann. Hier benutze ich nbd; Sie können auch tftp, nfs und http verwenden .
Für andere Distributionen, wie Ubuntu, kann man meines Erachtens nur nfs verwenden.
Für Windows-Systeme ist dies etwas komplexer . Der Umriss ist:
- Installieren Sie Windows 7 in einem freigegebenen Ordner auf dem Server
- Verfügen Sie in Ihrem TFTP-Stammverzeichnis über eine vollständige Windows PE-Umgebung auf dem Server
- Lassen Sie den Clientcomputer WinPE über das Netzwerk laden und drücken Sie F12, um eine Eingabeaufforderung zu erhalten
- Ordnen Sie den freigegebenen Ordner mit der Windows 7-Installation einem Laufwerksbuchstaben zu
- Starten Sie die Installation aus dem zugeordneten Ordner
Ich habe das noch nie ausprobiert und es scheint, dass es bei manchen Menschen nicht funktioniert. Für NT-Versionen älter als Vista denke ich, dass es nicht einmal möglich ist. Für Windows vor NT (95, 98, ME usw.) können Sie den Memdisk-Ansatz verwenden, aber das Booten ist schlecht für Ihre Gesundheit :-p