Erstellen eines Linux-Images zum Booten über das Netzwerk. Ubuntu über ein Netzwerk per PXE installieren

Vor ziemlich langer Zeit habe ich einen Artikel über die Netzwerkinstallation von Ubuntu geschrieben, über ein lokales Netzwerk, ohne Verwendung verschiedener Medien, nur PXE-Booten und das war’s. Dieses Mal habe ich beschlossen, den Artikel zu aktualisieren und ihn näher an die moderne Realität anzupassen und vor allem die Funktionalität zu erweitern. Alles wird am Beispiel von Ubuntu 14.04 durchgeführt!

Für unterschiedliche Anforderungen muss es unterschiedliche Lösungen geben, der Haupthaken ist, dass wir oft nicht ein Betriebssystem, sondern mehrere benötigen. Deshalb habe ich beschlossen, einen Artikel zu diesem Thema zu schreiben. Den vorherigen Artikel finden Sie unter dem Link.
Die Hauptidee besteht darin, dass wir die Möglichkeit haben, das zu installierende Betriebssystem und dessen Bittiefe auszuwählen. Tatsächlich haben wir ein Startmenü, nachdem wir das System über das lokale Netzwerk geladen haben.
Dies alles werden wir am Beispiel des gerade erschienenen Ubuntu 14.04 umsetzen

Für diejenigen, die es nicht verstehen: Alles wird so gestartet, dass es möglich wird, auszuwählen, welches Betriebssystem installiert werden soll, sowie dessen Bitkapazität, d. h. Es sollte ein Menü erscheinen, in dem alle zur Installation über das Netzwerk verfügbaren Betriebssysteme angezeigt werden, das wie folgt aussieht:

Ubuntu_14.04x86
Ubuntu_14.04amd64
Für die Arbeit benötigen wir:
Notwendig!
1) Konfigurieren Sie das Gateway beispielsweise im folgenden Artikel:
2) DHCP-Server, zum Beispiel können Sie den Artikel verwenden:
3) Konfigurieren Sie den TFTP-Server zum Laden des PXE-Bootloaders. Verwenden Sie den Artikel:

Optional!
3) Ein zusätzlicher, aber nicht zwingender Punkt, kann ein konfigurierter DNS-Server sein, ein Beispiel finden Sie im Artikel

Es wird davon ausgegangen, dass Sie ein Gateway, einen DHCP- und einen TFTP-Server konfiguriert und außerdem ein PXE-Startmenü hinzugefügt haben, weil Auf diesen Punkt werde ich nicht näher eingehen.

Fahren wir mit der Einrichtung des zu installierenden Systems fort.
Zunächst erstellen wir einen Installationspunkt für Ubuntu 14.04x86, wofür wir eine Installationsdiskette mit der entsprechenden Kapazität benötigen. Wir müssen es herunterladen und mounten, um die Bootloader- und Systeminstallationsdateien zu extrahieren.
Weil Die Netzwerk-Bootloader-Datei befindet sich im Verzeichnisverzeichnis /var/lib/tftpboot/ Von dort, wo sie vom TFTP-Server abgerufen werden, müssen wir darin ein Ubuntu-Verzeichnis erstellen, um die Dateien von den Installationsdisketten darin abzulegen. Lassen Sie uns Folgendes tun:
mkdir /var/lib/tftpboot/ubuntu
Im Uubntu-Verzeichnis erstellen wir zusätzliche Verzeichnisse für die OS-Installer-Loader-Dateien für x86-Bit-Systeme bzw. ADM64.
mkdir /var/lib/tftpboot/ubuntu/x86 mkdir /var/lib/tftpboot/ubuntu/amd64

Jetzt müssen wir die Installationsdiskette herunterladen. Sie können sie hier ansehen: Mirror.yandex.ru/ubuntu-releases/14.04/
Wir werden die x86-Version für den Server herunterladen, weil... sie wiegt weniger
wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-i386.iso
Nachdem der Download des ISO-Images abgeschlossen ist, müssen wir es mounten, um die benötigten Dateien zu extrahieren, und zwar im Verzeichnis /Medien Wir werden ein Verzeichnis erstellen iso, Lass uns das tun:

Mkdir/media/iso
Mounten Sie das Disk-Image in diesem Verzeichnis:
Sudo su
mounten Sie ubuntu-14.04-server-i386.iso /media/iso/
Das System zeigt an, dass die Festplatte im Lesemodus gemountet ist:

mount: Warnung: /media/iso/ scheint schreibgeschützt gemountet zu sein.
Lasst uns den Bootloader- und Installer-Kernel besorgen:
cd /media/iso/install/netboot/ubuntu-installer/i386/

Wir sind an 2 Dateien interessiert Linux Und initrd.gz, die wir abholen und in das Verzeichnis verschieben müssen /var/lib/tftpboot/ubuntu/x86
lasst uns sie kopieren:
cp linux /var/lib/tftpboot/ubuntu/x86 cp initrd.gz /var/lib/tftpboot/ubuntu/x86

Das war’s, wir brauchen das Installationsimage nicht mehr, lasst es uns zunächst aus dem ISO-Verzeichnis aushängen:
umount /media/iso/

Danach kann das ISO-Image gelöscht werden.
Wir führen ähnliche Schritte für das Installations-Disk-Image mit x64-Bit-Tiefe durch, ich werde nicht beschreiben, was und wo, ich gebe nur eine Auflistung der Befehle, die Schritte sind die gleichen, nur die Pfade unterscheiden sich geringfügig, steht geschrieben Dort amd64

Wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso

Mounten Sie ubuntu-14.04-server-amd64.iso /media/iso/

CD /media/iso/install/netboot/ubuntu-installer/amd64/

Cp linux /var/lib/tftpboot/ubuntu/amd64 cp initrd.gz /var/lib/tftpboot/ubuntu/amd64

Umount /media/iso/

Wir sind mit den Installationsdateien fertig, jetzt konfigurieren wir das PXE-Startmenü.

Konfigurieren des PXE-Startmenüs
Fügen wir zunächst einen Menüpunkt mit dem Namen hinzu Linux-Installation, dazu müssen wir die Datei bearbeiten:
nano /var/lib/tftpboot/pxelinux.cfg/default

Fügen Sie am Ende der Datei einen Eintrag hinzu:
LABEL Linux-Installation MENÜ LABEL ^Linux-Installation KERNEL vesamenu.c32 APPEND pxelinux.cfg/linux.menu

Wie Sie dem Eintrag entnehmen können, werden wir eine weitere Seite mit der Auswahl der zu installierenden Distributionen haben, erstellen wir sie:

Nano /var/lib/tftpboot/pxelinux.cfg/linux.menu

Fügen wir dazu die Namen der Download-Punkte mit der Möglichkeit hinzu, das zu installierende Betriebssystem auszuwählen, während dies der Fall sein wird Ubuntu 14.04 x86 Und amd64 die Architektur:
LABEL Ubuntu 14.04x86 installieren MENÜ-Label ^Ubuntu 14.04x86 KERNEL ubuntu/x86/linux APPEND initrd=ubuntu/x86/initrd.gz LABEL Ubuntu 14.04amd64 installieren MENÜ-Label ^Ubuntu 14.04amd64 KERNEL ubuntu/amd64/linux APPEND initrd=ubuntu/ amd64 /initrd.gz

An diesem Punkt ist das Setup abgeschlossen, Sie können den Client-Rechner verbinden und versuchen, über PXE zu booten. Als Ergebnis erhalten wir nach dem Booten des Systems über das Netzwerk ein Menü wie dieses:

Wir wählen aus, was wir installieren möchten, die Installation beginnt automatisch und folgen dann einfach den Anweisungen des Systeminstallationsprogramms.
Andere Betriebssysteme werden auf ähnliche Weise hinzugefügt.
Hier werde ich wahrscheinlich für heute Schluss machen.
Na ja, wie immer gilt: Bei Fragen gerne einen Kommentar hinterlassen, bei Fehlern eine persönliche Nachricht oder E-Mail an mich schreiben.

In Serverräumen finden sich zunehmend Server ohne CD/DVD-Laufwerke. Von Zeit zu Zeit müssen sie ein Betriebssystem installieren, und die Installation über ein Netzwerk kann dabei sehr hilfreich sein. Sie schalten einfach den Server ein und beginnen mit der Installation. Die Netzwerkkarte muss die PXE-Technologie unterstützen. PXE – Pre-Boot Execution Environment – ​​ermöglicht das Booten über das Netzwerk.

Aber PXE reicht nicht aus, um vollkommen zufrieden zu sein; eine Technologie, die die Installation vollständig automatisiert, ist Kickstart (entwickelt von Red Hat). Das Wesentliche ist einfach: Wir kompilieren im Voraus eine Datei mit den Werten aller Optionen, die während der Installation möglicherweise benötigt werden. Darüber hinaus können wir unsere Skripte vor und nach der Installation ausführen und so die Einstellungen für das zukünftige Betriebssystem festlegen.

Die Installation eines typischen Linux-Kits mit Kickstart dauert 5–7 Minuten.

Der Installationsserver erfordert 3 Dienste und 1 Paket.


  • DHCP stellt Clients Netzwerkanmeldeinformationen bereit

  • TFTP ist eine einfache Möglichkeit, Dateien über das Netzwerk auszutauschen

  • Syslinux enthält den Bootloader pxelinux.0 und einige andere Dateien

  • NFS ermöglicht den Dateisystemzugriff über das Netzwerk
Der Installationsprozess kann in Phasen unterteilt werden:

  1. pxe – Die pxe-Firmware beginnt zu funktionieren, wenn wir im BIOS die Installation über das Netzwerk festlegen oder wenn der MBR nicht auf der Festplatte gefunden wird.

  2. DHCP-Phase 1 – Der Client erhält Netzwerkdetails und die Adresse des TFTP-Servers sowie den Namen der Loader-Datei (pxelinux.0). Standardmäßig ist der TFTP-Server ein DHCP-Server.

  3. TFTP – der pxelinux.0-Loader kontaktiert den TFTP-Server und fordert von ihm initrd.img (Initial RAM disk, temporäres Dateisystem), den Linux-Kernel, an.

  4. Kernel – Übergabe der Kontrolle an den Linux-Kernel.

  5. DHCP-Phase 2 – Der Linux-Kernel stellt eine Anfrage an den DHCP-Server, um Netzwerkdetails und anschließend die NFS-Serveradresse zu erhalten.

  6. NFS – die Phase, in der die NFS-Partition gemountet wird

  7. init – /sbin/init wird gestartet und die Kontrolle wird darauf übertragen. Init ist der Hauptprozess im System, andere Prozesse sind untergeordnete Prozesse von init.
Frei gesagt:

Der DHCP-Server wartet auf Bootp-Anfragen in seinem Netzwerk. Nachdem es eine Anfrage erhalten hat, prüft es die Quell-MAC-Adresse, und wenn es einen entsprechenden Eintrag für diese MAC-Adresse hat, beginnt es damit zu arbeiten. Der DHCP-Server stellt dem Client Netzwerkdetails (IP-Adresse, Gateway, DNS-Server usw.) zur Verfügung und sendet das Boot-Image pxelinux.0 mithilfe des TFTP-Protokolls. Dieses Bild reicht aus, um das Betriebssystem-Auswahlmenü anzuzeigen.

Nachdem wir das Betriebssystem ausgewählt haben, beginnen wir mit dem Laden des Kernels und beginnen mit der Installation. Dabei wählen wir die Installationsquelle aus – den NFS-Server. Sie müssen den vorbereiteten Inhalt des zukünftigen Betriebssystems auf den NFS-Server hochladen und sicherstellen, dass die entsprechenden Verzeichnisse exportiert werden.

DHCP

Installieren Sie DHCPD und fügen Sie es zum Start hinzu:
# yum -y DHCP installieren
# chkconfig dhcpd on

Erstellen Sie die Datei /etc/dhcpd.conf wie folgt:

Interim im Ddns-Update-Stil;
Client-Updates ignorieren;
Subnetz 192.168.146.0 Netzmaske 255.255.255.0 (
Option Router 192.168.146.1;
Option Subnetzmaske 255.255.255.0;
Option Domänenname „domain.local“;
Option Domain-Name-Server 192.168.146.1;
Standard-Lease-Zeit 21600;
maximale Mietzeit 43200;
Booten zulassen;
Booten zulassen;
Host-Unixbox (
Hardware-Ethernet 00:0c:29:77:9c:9c;
feste Adresse 192.168.146.128;
Dateiname „pxelinux.0“;
Option Hostname „unixbox“;
Nächster Server 192.168.146.1;
}
}

Starten Sie DHCPD oder starten Sie neu, falls es ausgeführt wurde:
# Dienst-DHCPD-Neustart

Deaktivieren Sie die standardmäßig aktivierte Firewall (andernfalls erhält der Zielcomputer beim Booten die Fehlermeldung „ICMP-Ziel nicht erreichbar (Host administrativ verboten)“):
# Dienst iptables gestoppt
# chkconfig iptables aus

TFTP

Installieren Sie das TFTP-Server-Paket aus dem Repository:
# yum -y installiere den TFTP-Server

Jetzt müssen Sie tftp in der xinetd-Konfiguration aktivieren; ändern Sie dazu in der Datei /etc/xinetd.d/tftp „disable = yes“ in „disable = no“ und aktivieren Sie xinetd:
# Dienst xinetd starten

Wir überprüfen, ob der TFTP-Server-Port lauscht (TFTP läuft auf Port 69):
# netstat -nlp | grep:69
udp 0 0 0.0.0.0:69 0.0.0.0:* 3105/xinetd

Syslinux

Das Paket enthält eine Reihe von Dateien zum Herunterladen über das Netzwerk. Wir benötigen pxelinux.0, das uns per DHCP als Boot-Image dient, und menu.c32, mit dem ein ansprechenderes Benutzermenü gezeichnet wird. (Für CentOS 4 muss das aktualisierte Syslinux mit Abhängigkeiten von rpmfind.net heruntergeladen werden.)

# cp $(rpm -ql syslinux | grep menu.c32) /tftpboot/
# cp $(rpm -ql syslinux | grep pxelinux.0) /tftpboot/

NFS

Standardmäßig verfügt das System höchstwahrscheinlich über NFS. Wenn nicht, installieren Sie es mit yum.
# chkconfig nfs on

Fügen Sie der Datei /etc/exports einen Eintrag hinzu:
echo „/var/install-server/ *(ro,no_root_squash)“ >> /etc/exports

Starten Sie den NFS-Server:
# Dienst-NFS-Start

Wir prüfen, ob das Verzeichnis exportiert wurde:
#exportfs
/var/install-server

Wir erstellen die Struktur des TFTP-Servers und fügen Inhalte zum Server hinzu:
# mkdir -p /tftpboot/(pxelinux.cfg,centos5_x86)
# mkdir -p /var/install-server/centos5_x86

Wir mounten unsere DVD mit CentOS 5 und laden den Inhalt nach /var/install-server/centos5_x86 hoch:
# mount /dev/cdrom /mnt/
# cp -r /mnt/* /var/install-server/centos5_x86/
# cp /var/install-server/centos5_x86/images/p xeboot/* /tftpboot/centos5_x86/

Erstellen Sie im Verzeichnis /tftpboot/pxelinux.cfg eine Standarddatei und füllen Sie sie wie unten gezeigt aus:
Standardmenü.c32

Eingabeaufforderung 0
Zeitüberschreitung 100

Kernel /centos5_x86/vmlinuz
initrd=/centos52_x86/initrd.img anhängen
Beschriften Sie „Beenden“.
localboot 0

Installieren des Betriebssystems über das Netzwerk

Nach all den oben beschriebenen Manipulationen können wir mit der Installation des Betriebssystems beginnen. Wir starten unsere Maschine mit der MAC-Adresse 00:0c:29:77:9c:9c und ermöglichen so den Netzwerkstart im BIOS. Wenn die Installation beginnt, machen wir alles auf die übliche Weise, außer dass Sie in der Liste, wo das Betriebssystem installiert werden soll, NFS auswählen und dann, wenn Sie dazu aufgefordert werden, Folgendes angeben müssen:
NFS-Servername: 192.168.146.1
CentOS-Verzeichnis: /var/install-server/centos5_x86

Automatisieren Sie die Installation mit Kickstart

Zur Automatisierung müssen Sie eine Datei erstellen, die alle erforderlichen Informationen enthält, die möglicherweise während des Installationsvorgangs erforderlich sind. Eine solche Datei wird vom Programm system-config-kickstart (GUI-Tool) in jedem CentOS mit X Window erstellt:
# yum -y installiere system-config-kickstart
# system-config-kickstart

Nachdem wir die Datei mit system-config-kickstart erstellt haben, muss sie auf den Install-Server übertragen und über eines der Protokolle HTTP, NFS oder FTP verfügbar gemacht werden. Da der Installationsserver NFS aktiv nutzt, werden wir es verwenden.

In meinem Fall befindet sich die Kickstart-Datei in /var/install-server/centos5_x86/centos5_ x86_ks.cfg .

Zur Datei /tftpboot/pxelinux.cfg/default müssen Sie lediglich die ks-Direktive hinzufügen, die den Speicherort der Kickstart-Datei angibt. Beispiel mit Kickstart-Datei:
Standardmenü.c32
Menütitel Linux Install Server. Bitte wählen Sie das zu installierende Betriebssystem aus.
Eingabeaufforderung 0
Zeitüberschreitung 100
Label CentOS 5 x86 Benutzerdefinierte Installation
Kernel /centos5_x86/vmlinuz
initrd=/centos5_x86/initrd.img anhängen
label CentOS 5 x86 Kickstart-Installation
Kernel /centos52_x86/vmlinuz
Hängen Sie initrd=/centos5_x86/initrd.img ks=nfs:192.168.146.1:/var/install-server/c entos5_x86/centos5_x86_ks.cfg an
Beschriften Sie „Beenden“.
localboot 0

Nachdem wir nun im Betriebssystem-Auswahlmenü „CentOS 5 x86 Kickstart Install“ ausgewählt haben, müssen wir nur noch auf den Server warten, auf dem das Betriebssystem installiert ist.

Unten finden Sie ein Beispiel meiner Kickstart-Datei. Ich wollte, dass das installierte Betriebssystem in den SSHD-Einstellungen die Option „PermitRootLogin ja“ hat. Mit der Kickstart-Datei können Sie nicht nur Betriebssystem-Installationsparameter festlegen, sondern auch Skripte vor der Installation (%pre) und nach (%post) ausführen. Auf diese Weise können Sie viele Tuning-Skripte schreiben und in 5–10 Minuten nach der Installation ein vollständig fertiges Betriebssystem erhalten.

#Plattform =x86, AMD64 oder Intel EM64T
# Informationen zur Systemautorisierung
auth --useshadow --enablemd5
# System-Bootloader-Konfiguration
Bootloader --location=mbr
# Löschen Sie den Master Boot Record
Zerombr
#Informationen zum Löschen der Partition
clearpart --all --initlabel
# Installation im Textmodus verwenden
Text
# Firewall-Konfiguration
Firewall --disabled
# Führen Sie den Setup-Agenten beim ersten Start aus
firstboot --disable
# Systemtastatur
Tastatur uns
# Systemsprache
lang en_US
# In
Protokollierung --level=info
# Verwenden Sie NFS-Installationsmedien
nfs --server=192.168.146.1 --dir=/var/install-server/centos5_x86
# Netzwerkinformationen
Netzwerk --bootproto=dhcp --device=eth0 --onboot=on
#Root-Passwort
rootpw --iscrypted $1$Bz09jb2I$hfzh2vApqMjG0sEPsAwNr/
# SELinux-Konfiguration
selinux --disabled
# Konfigurieren Sie das X-Window-System nicht
Skipx
# Systemzeitzone
Zeitzone Europa/Moskau
# Betriebssystem installieren statt aktualisieren
Installieren
# Informationen zur Festplattenpartitionierung
Teilaustausch --bytes-per-inode=4096 --fstype=“swap“ --size=512
Teil / --bytes-per-inode=4096 --fstype=“ext3“ --grow --size=1

%post --interp /bin/bash
PATH=/somework
/bin/mkdir$PATH
/bin/sed -e ‘s/#PermitRootLogin ja/PermitRootLogin ja/g’ /etc/ssh/sshd_config > $PATH/sshd_config_edited
/bin/cp $PATH/sshd_config_edited /etc/ssh/sshd_config
/bin/rm -rf $PATH

In diesem Artikel wird die Installation von Ubuntu Linux aus einem Netzwerk-Boot-Repository behandelt.

Daher installieren wir Ubuntu 10.04 auf Client-Computern vom Server 192.168.0.3, der den Netzwerk-Boot-Server und DHCPd hostet. Zur Installation muss das Repository über ein Verzeichnis dists/lucid/main/debian-installer verfügen. Wenn Sie ähnliche Verzeichnisse für andere Repositorys (Multiversum, Universum, eingeschränkt) hinzufügen, wird die Liste der Software in der Phase „Software auswählen und installieren“ größer. In diesem Leitfaden werde ich diese Option berücksichtigen. Wenn Sie einen Debmirror-Spiegel erstellt haben, verfügen Sie höchstwahrscheinlich überhaupt nicht über diese Verzeichnisse. Sie können sie beispielsweise von ftp://mirror.yandex.ru herunterladen. Außerdem greift das Installationsprogramm während der Installation unabhängig vom ausgewählten Repository häufig auf security.ubuntu.com zu.

Schritt 1: Serverinstallation

Installation notwendiger Anwendungen:

apt-get install tftpd-hpa openbsd-inetd

Laden Sie das Image herunter und entpacken Sie es für die Netzwerkinstallation:

tar -xvzf netboot.tar.gz -C /var/lib/tftpboot/

chown -R niemand:nogroup /var/lib/tftpboot

Für den Netzwerkstart müssen Sie zwei Parameter an den Client übergeben: den Namen der Startdatei und den Startdateiserver (in dhcpd sind dies der Dateiname und die Parameter für den nächsten Server):

nächster Server 192.168.0.3;
Dateiname „pxelinux.0“;

Der Server ist installiert, Sie können das System installieren.

Schritt 2: Systeminstallation

Um das System von einem Server im Netzwerk zu installieren, müssen Sie den Netzwerkstart (PXE) im BIOS aktivieren. Wenn Ihr BIOS das Boot-Menü unterstützt, ist es besser, es zur Auswahl des Boot-Geräts zu verwenden – damit es keine Probleme gibt, wenn Sie vergessen, die Boot-Reihenfolge zu ändern.

Wenn alles in Ordnung ist, wird der Begrüßungsbildschirm des Installationsprogramms angezeigt:

  • Grundlegender Ubuntu-Server
  • Nameserver (DNS)
  • Edubuntu-Server
  • LAMP-Server
  • Mail-Server
  • OpenSSH-Server
  • PostgreSQL-Datenbank
  • Druck Server
  • Samba-Dateiserver
  • Ubuntu Enterprise Cloud
  • Host der virtuellen Maschine
  • 2D/3D-Erstellungs- und Bearbeitungssuite
  • Audio-Erstellungs- und Bearbeitungssuite
  • Edubuntu KDE-Desktop
  • Edubuntu-Desktop
  • Kubuntu-Desktop
  • Kubuntu-Netbook
  • LADSPA- und DSSI-Audio-Plugins
  • Große Auswahl an Schriftartenpaketen
  • Mythbuntu zusätzliche Rollen
  • Mythbuntu-Frontend
  • Mythbuntu-Master-Backend
  • Mythbuntu-Slave-Backend
  • Ubuntu-Netbook
  • Ubuntu-Desktop
  • Suite zur Videoerstellung und -bearbeitung
  • Xubuntu-Desktop
  • Manuelle Paketauswahl

Heutzutage werden immer mehr Aufgaben automatisiert und Virtualisierung wird zunehmend eingesetzt, um die Effizienz von Servern zu maximieren. Sie müssen aber noch Betriebssysteme installieren. Jeder macht es auf seine eigene Art: Einige haben Taschen voller verschiedener Bilder für alle Gelegenheiten, andere tragen eine „Geldbörse“ mit Scheiben oder sogar zwei, auf die altmodische Art und Weise. Administratoren erledigen diese Arbeit in der Regel mit wenig Freude. Schauen wir uns an, wie man die Zeit für triviale Aufgaben verkürzt und wie man Computern beibringt, Systeme selbst zu installieren, ganz ohne die Beteiligung eines Administrators und nur über ein lokales Netzwerk.

Heute lernen wir also: Windows und Linux über das Netzwerk installieren, kleine ISO-Images laden, nützliche Software (alle Arten von Kaspersky, Acronis, WinPE, Memtests), Thin Clients bereitstellen und verwalten. Damit zum Beispiel eine Buchhalterin, die mit 1C über RDP arbeitet, Sie nicht verprügelt, weil ihr Windows abgestürzt ist und der Bericht gestern erstellt werden musste... Oder ein geiziger Chef, der seinen Computer nicht aktualisieren möchte, bewundert Sie Professionalität, wann wird man sehen, wie Windows 8 auf alten Computern fliegt... Ein Server, der Boot über das Netzwerk (PXE) ermöglicht, wird uns helfen, unsere heimtückischen Ziele zu erreichen.

Jeder Systemadministrator hat ein universelles USB-Laufwerk für die Notfall-Wiederbelebung des Computers in seinem Vorrat. Stimmen Sie zu, es wäre viel besser, die gleiche Funktionalität mit nur einer Netzwerkkarte zu haben. Zu beachten ist auch, dass es möglich ist, gleichzeitig mit mehreren Knoten gleichzeitig zu arbeiten. Basierend auf unseren Anforderungen haben wir zwei Lösungen: Verwendung von PXE oder LTSP.

LTSP ist für uns nicht sehr geeignet: Es ist darauf ausgelegt, das auf dem Server selbst installierte Betriebssystem über das Netzwerk zu laden, was die Verwendung von LTSP-Serveranwendungen ermöglicht. Das ist nicht genau das, was wir brauchen. PXE ist ein Tool zum Booten eines Computers über ein Netzwerk, ohne lokale Speichermedien zu verwenden, genau wie LTSP. Mit PXE können Sie ein Multi-Boot-Boot-Menü organisieren, ähnlich einem universellen „USB-Beatmungsgerät“.


Was werden wir umsetzen?

Alles begann mit der Notwendigkeit, ein Tool für die Remote-Installation von Ubuntu/Debian Server über das Netzwerk zur Hand zu haben, mit der Möglichkeit, eine Live-CD eines kleinen Systems wie SliTaz oder Kolibri OS zu starten.
Wie man sagt, kommt der Appetit mit dem Essen: Wir hatten keine Zeit, unsere Pläne umzusetzen, und dem Plan wurden eine Reihe von „Wünschen“ hinzugefügt. Infolgedessen erwies sich die Liste als recht beeindruckend.

  1. Thinstation Linux-basierte Thin Clients.
  2. Linux-Bereich.
    1. Installation von Ubuntu 14.04 x86.
    2. Installation von Ubuntu 14.04 x64.
    3. Ubuntu 12.04 x86 installieren.
    4. Installation von Ubuntu 12.04 x64.
  3. Windows-Partition.
    1. Installation von Windows 2012.
    2. Installation von Windows 7.
  4. Acronis.
    1. Windows PE mit einem Paket nützlicher Software.
    2. Acronis True Image.
      1. Legacy-BIOS.
      2. UEFI.
    3. Acronis Disk Director.
      1. Legacy-BIOS.
      2. UEFI.
  5. Kaspersky Rescue v 10.
  6. ERD Commander von 5 auf 8 über ISO-Image.
  7. Memtest.

Wir bauen alles zusammen und fahren los

Als Distribution für den Server fiel die Wahl auf Ubuntu Server 14.04.2 LTS. Sie können jedes andere Betriebssystem wählen, der einzige Unterschied besteht in der Syntax. Also lasst uns anfangen. Wir benötigen TFTP, DHCP (nicht unbedingt auf demselben Server installiert; ein Router kann als DHCP-Server fungieren), einen Dienst zum Organisieren eines NFS-Netzwerkdateisystems. Wir werden nur die Einstellungen berücksichtigen, die uns innerhalb des Themas interessieren. Lassen Sie uns zunächst alles installieren, was Sie benötigen, nachdem wir alle Updates durchgeführt haben:

Die Fortsetzung steht nur Mitgliedern zur Verfügung

Option 1: Treten Sie der „Site“-Community bei, um alle Materialien auf der Site zu lesen

Durch die Mitgliedschaft in der Community innerhalb des angegebenen Zeitraums erhalten Sie Zugriff auf ALLE Hacker-Materialien, erhöhen Ihren persönlichen kumulativen Rabatt und können eine professionelle Xakep-Score-Bewertung erwerben!

Jeder, der auch nur gelegentlich Verwaltungsaufgaben übernimmt, musste mindestens einmal ein Betriebssystem auf seinem Computer installieren. Und oft passiert alles so: Das Image wird heruntergeladen, auf eine Diskette oder ein Flash-Laufwerk geschrieben, geladen und installiert. Es kann sich jedoch herausstellen, dass Sie kein Flash-Laufwerk oder keine Diskette zur Hand haben und die Installation gestern abgeschlossen werden muss ... Dann können Sie über das Netzwerk booten, und es gibt diesbezüglich keine besonderen Probleme mit Linux. Eine typische Konfiguration ist ein Haufen DHCP, TFTP Und NFS. Aber ich hatte es nicht zur Hand NFS, aber da war Samba. Also musste ich herausfinden, wie man es benutzt Samba anstatt NFS.

Es schien nichts zu sein, ich habe die Einstellungen geändert und das war's, aber irgendetwas funktionierte zunächst nicht, ich musste herumbasteln ...

Aber ich fange hier ganz von vorne an. Zuerst müssen Sie sich also ein Verteilungskit besorgen. Da haben wir gesetzt Linux Mint Wir suchen ein frisches Image. Laden Sie die Distribution herunter, die zu uns passt (ich habe die installiert mit KUMPEL, aber das spielt offensichtlich keine Rolle). Nachdem Sie das Bild heruntergeladen haben, müssen Sie Zugriff auf die Bilddateien erhalten. Einige Anleitungen empfehlen, das Image zu entpacken, aber ich sehe darin keinen Sinn, daher unterstütze ich die Meinung, das Image als zu mounten Schleife. Um die bestehende Reihenfolge nicht zu beeinträchtigen, erstellen wir einfach ein neues Verzeichnis, in dem wir das Image mounten:

# mkdir /mnt/mint
# mount -o loop /home/user/download/linuxmint-17-mate-64bit-v2.iso /mnt/mint

Als Nächstes müssen Sie die Dateien über das Netzwerk verfügbar machen, damit das Installationsprogramm sie lesen kann. Wie ich oben sagte, verwende ich zu diesem Zweck Samba. Öffnen Sie daher die Konfigurationsdatei und fügen Sie eine neue Freigabe hinzu, indem Sie den folgenden Abschnitt hinzufügen:


Pfad = /mnt/mint
verfügbar = ja
durchsuchbar = ja
öffentlich = ja
beschreibbar = nein

Sollte über die Standardeinstellungen funktionieren Samba. Wenn es nicht funktioniert, haben Sie höchstwahrscheinlich selbst etwas geändert, was bedeutet, dass Sie einen Weg finden werden, das Problem zu lösen. Also haben wir den Ball hinzugefügt Minze, über den Sie Dateien zur Installation aus dem Netzwerk abrufen können. Vergessen Sie nicht, neu zu starten Samba um die neuen Einstellungen zu übernehmen.

Für Archlinux:

# systemctl startet smbd neu
# systemctl restart nmbd

Für Gentoo:

# /etc/init.d/samba Neustart

Als nächstes müssen Sie einen Netzwerk-Bootloader vorbereiten. Das Programm wird uns dabei helfen tftp-hpa. IN Archlinux und in Gentoo So heißt das Paket. Sie müssen die Loader-Dateien im Arbeitsverzeichnis des FTP-Servers (in arch /srv/tftp). Kopieren Sie den Kernel und die initrd aus dem dort gemounteten Image:

# cp /mnt/mint/casper/(vmlinux,initrd.lz) /srv/http

# cp /usr/lib/syslinux/bios/(pxelinux.0,menu.c32,ldlinux.c32,libutil.c32) /srv/http

STANDARD-Menü.c32
LABEL LinuxMint
KERNEL vmlinuz
APPEND showmounts toram root=/dev/cifs boot=casper netboot=cifs nfsroot=//192.168.0.1/mint NFSOPTS=-oguest,ro initrd=initrd.lz nosplash

Wo 192.168.0.1 - unsere IP-Adresse relativ zu dem Computer, auf dem wir installieren werden. Ach ja, und ungefähr nfs dort - das ist kein Tippfehler in der Arbeitsweise cifs, Sie müssen Typoptionen wie folgt übergeben nfs, Ich kann nicht sagen warum. Besonderes Augenmerk sollte auf die Toram-Option gelegt werden, da ohne sie alles auf halbem Weg zusammenbricht und wir nicht booten können (vielleicht sind das Funktionen von Samba). Bei dieser Option müssen Sie jedoch bedenken, dass der Zielcomputer über genügend RAM verfügen muss, um das Installationsprogramm dorthin zu kopieren. Der TFTP-Server muss gestartet werden. Für Archlinux:

# systemctl tftpd.socket start

Für Gentoo:

# /etc/init.d/in.tftpd start

Jetzt muss das BIOS des Zielcomputers irgendwie erkennen, woher es lädt. Das wird uns helfen dnsmasq(Obwohl dies nicht erforderlich ist, können Sie einen anderen DHCP-Server verwenden. Hier beschreibe ich, was zur Hand war.) IP-Verteilung einrichten (optional). DHCP-Bereich) nach eigenem Ermessen für Ihr eigenes „Netzwerk“ zwischen Maschinen. Für die Installation sind uns nur drei Möglichkeiten wichtig:

Dhcp-boot=/pxelinux.0
dhcp-option=vendor:PXEClient,6,2b
pxe-service=x86PC, „Linux installieren“, pxelinux

Sie müssen zur Konfiguration hinzugefügt werden dnsmasq, und natürlich starten (oder neu starten).

Für Archlinux:

# systemctl starte dnsmasq

Für Gentoo:

# /etc/init.d/dnsmasq start

Denken Sie daran, dass die Ports aktiviert sein müssen, damit alles funktioniert DHCP(UDP 67,68), TFTP(UDP 69), Samba(UDP 137.138, TCP 139.445) muss geöffnet sein; berücksichtigen Sie dies unbedingt in Ihrer Firewall-Konfiguration. Wenn keine Firewall vorhanden ist oder die Schnittstelle vollständig geöffnet ist, sollte es funktionieren.

Notiz: Aufgrund der Tatsache, dass Systeme ständig aktualisiert werden, kann es sein, dass die angegebenen Dateipfade ungültig sind, sich also von denen auf Ihrem System unterscheiden. Schauen Sie sich daher die Paketstruktur Ihres Systems genau an.