Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 14: | Zeile 14: | ||
* Server-IP = 192.168.0.7 | * Server-IP = 192.168.0.7 | ||
* Server-Name = backend | * Server-Name = backend | ||
* Client-IP = 192 | * Client-IP = 192.168.0.5 | ||
* Client-Mac-Adresse: 00:1B:21:0A:FC:0C | * Client-Mac-Adresse: 00:1B:21:0A:FC:0C | ||
* Client-Name = frontend | * Client-Name = frontend | ||
Zeile 22: | Zeile 22: | ||
* Server-Verzeichnis für tftp: /tftpboot | * Server-Verzeichnis für tftp: /tftpboot | ||
Ich habe das mit Gentoo und Fedora Core 5 als Server getestet. Die Vorgehensweise ist praktisch identisch, ich beschreibe hier aber Gentoo. Außerdem ist bei mir der Server alles in einem (NFS-Server, DHCP-Server, TFTP-Server). | Ich habe das mit Gentoo und Fedora Core 5 als Server und jeweils Gentoo als Client getestet. Die Vorgehensweise ist praktisch identisch, ich beschreibe hier aber Gentoo. Außerdem ist bei mir der Server alles in einem (NFS-Server, DHCP-Server, TFTP-Server). | ||
==Installation des Servers== | ==Installation des Servers== | ||
Zeile 58: | Zeile 58: | ||
filename "pxelinux.0"; | filename "pxelinux.0"; | ||
} | } | ||
'''next-server''' gibt hier die IP-Adresse des tftp-Servers an. | |||
Dann: | Dann: | ||
rc-update add dhcpd default | rc-update add dhcpd default | ||
Zeile 79: | Zeile 81: | ||
emerge syslinux | emerge syslinux | ||
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ | cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ | ||
mkdir /tftpboot/ | cp /pxe/frontend/boot/kernel-genkernel-x86-2.6.23-gentoo-r3 /tftpboot/ | ||
cp /pxe/frontend/boot/initramfs-genkernel-x86-2.6.23-gentoo-r3 /tftpboot/ | |||
mkdir /tftpboot/pxelinux.cfg | |||
chmod 777 /tftpboot/pxelinux.cfg | |||
Beispiel für '''/tftpboot/pxelinux.cfg/01-00-1b-21-0a-fc-0c''' (der letzte Teil ist die Mac-Adresse des Clients, Kernelnamen und Kernelparameter sind entsprechend anzupassen.) mit Kernel < 2.6.27: | |||
default gentoo | |||
# gentoo | |||
label gentoo | |||
kernel kernel-genkernel-x86-2.6.23-gentoo-r3 | |||
append initrd=initramfs-genkernel-x86-2.6.23-gentoo-r3 ip=dhcp real_root=/dev/nfs nfsroot=192.168.0.7:/pxe/frontend vga=791 splash=silent,theme:livecd-2007.0 console=tty1 quiet | |||
implicit 0 | |||
say gentoo = Gentoo vom Server | |||
prompt 1 | |||
timeout 50 | |||
Optional (Bootoption für booten von einer lokalen Platte zu Debugzwecken durch Eingabe von "lokal"): | |||
# lokal | |||
label lokal | |||
localboot 0 | |||
Beispiel für '''/tftpboot/pxelinux.cfg/01-00-1b-21-0a-fc-0c''' (der letzte Teil ist die Mac-Adresse des Clients, Kernelnamen und Kernelparameter sind entsprechend anzupassen.) mit Kernel >= 2.6.27, NFS-Options in '''nfsroot''' ([[Linux/Tipps/Gentoo/Bugs#PXE_mit_NFS-Options_in_nfsroot_und_genkernel-3.4.10-r2|Bug]] beachten!): | |||
default gentoo | |||
# gentoo | |||
label gentoo | |||
kernel kernel-genkernel-x86-2.6.27-gentoo-r8 | |||
append initrd=initramfs-genkernel-x86-2.6.27-gentoo-r8 ip=dhcp root=/dev/nfs nfsroot=192.168.0.7:/pxe/frontend''',ro,nolock,rsize=8192,wsize=8192,nfsvers=3,tcp,intr''' vga=791 splash=silent,theme:livecd-2007.0 console=tty1 quiet | |||
implicit 0 | |||
say gentoo = Gentoo vom Server | |||
prompt 1 | |||
timeout 50 | |||
Optional (Bootoption für booten von einer lokalen Platte zu Debugzwecken durch Eingabe von "lokal"): | |||
# lokal | |||
label lokal | |||
localboot 0 | |||
==Installation des Clients== | ==Installation des Clients== | ||
Am besten installiert man den Client in einem Verzeichnis auf dem Server mit [[Linux/Tipps/Allgemein#chroot|chroot]]. Das geht natürlich unter Gentoo sehr gut mit einem [[Linux/Tipps/Gentoo/Installation#Mit_Stage3_Tarball|Stage 3 Tarball]]. Dabei wird prinzipiell normal installiert, bis auf den Bootloader. | Am besten installiert man den Client in einem Verzeichnis auf dem Server mit [[Linux/Tipps/Allgemein#chroot|chroot]]. Das geht natürlich unter Gentoo sehr gut mit einem [[Linux/Tipps/Gentoo/Installation#Mit_Stage3_Tarball|Stage 3 Tarball]]. Dabei wird prinzipiell normal installiert, bis auf den Bootloader. Dabei sind für PXE-Boot einige [[Linux/Tipps/Gentoo/Kernel#PXE|Kerneloptionen]] einzuschalten. | ||
Außerdem werden speziell für PXE folgende Konfig-Dateien modifiziert: | |||
'''/etc/conf.d/net''' (hier wird verhindert, dass eth0 nochmal initialisiert wird): | |||
config_eth0=( "noop" ) | |||
'''/etc/conf.d/rc''' (hier wird verhindert, dass der Client beim Runterfahren eth0 zu früh abschaltet): | |||
RC_PLUG_SERVICES="!net.*" | |||
'''/etc/fstab (Kernel < 2.6.27)''': | |||
192.168.0.7:/pxe/frontend / nfs nfsvers=3,tcp,intr,rw,nolock,rsize=8192,wsize=8192 0 0 | |||
'''/etc/fstab (Kernel >= 2.6.27)''': | |||
/dev/nfs / none rw,noatime 0 0 | |||
'''/etc/conf.d/local.start''' (hier wird verhindert, dass der Client einen Filesystem-Check beim Booten durchführt): | |||
touch /fastboot | |||
'''Achtung: Evtl. verhindert ein [[Linux/Tipps/Gentoo/Bugs#PXE_mit_baselayout-1.12.11.1_und_util-linux-2.14.1|Bug]] das Booten des Clients!''' | |||
/ | ==Swap über NFS== | ||
/ | Server (512 MB Swapfile): | ||
dd if=/dev/zero of=/pxe-root-path/swapfile bs=1024k count=512 | |||
mkswap swapfile | |||
Client (bei jedem Booten): | |||
losetup /dev/loop0 /swapfile | |||
swapon /dev/loop0 |
Aktuelle Version vom 8. Dezember 2010, 22:02 Uhr
Allgemeines
Quellen: http://www.gentoo.org/doc/en/altinstall.xml#doc_chap4 + http://www.linux-sxs.org/internet_serving/pxeboot.html
Mit PXE kann man einen Rechner (Client) über das Netzwerk von einem Server booten, sodass er selbst keine Festplatte benötigt.
Voraussetzungen
- bootfähige (PXE-fähige) Netzwerkkarte (onboard oder z.B. Intel Pro/1000 GT) im Client
- Server mit NFS-Share
- DHCP-Server
- TFTP-Server
Die letzten 3 Punkte können alle der selbe Rechner sein.
Hier wird von folgendem ausgegangen:
- Server-IP = 192.168.0.7
- Server-Name = backend
- Client-IP = 192.168.0.5
- Client-Mac-Adresse: 00:1B:21:0A:FC:0C
- Client-Name = frontend
- Gateway-IP = 192.168.0.1
- DNS-IP = 192.168.0.1
- Server-NFS-Verzeichnis für den Client: /pxe/frontend
- Server-Verzeichnis für tftp: /tftpboot
Ich habe das mit Gentoo und Fedora Core 5 als Server und jeweils Gentoo als Client getestet. Die Vorgehensweise ist praktisch identisch, ich beschreibe hier aber Gentoo. Außerdem ist bei mir der Server alles in einem (NFS-Server, DHCP-Server, TFTP-Server).
Installation des Servers
NFS
emerge nfs-utils
/etc/exports:
/pxe/frontend 192.168.0.5(rw,sync,no_root_squash)
Dann:
rc-update add nfs default /etc/init.d/nfs start
DHCP-Server
Wichtig ist, dass im Netz kein anderer DHCP-Server läuft (z.B. in einem Router).
emerge dhcp
/etc/dhcp/dhcpd.conf:
ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.3 192.168.0.254; default-lease-time 3600; max-lease-time 4800; option routers 192.168.0.1; option domain-name-servers 192.168.0.1; option subnet-mask 255.255.255.0; option domain-name "localdomain"; allow booting; allow bootp; next-server 192.168.0.7; } host frontend { hardware ethernet 00:1B:21:0A:FC:0C; fixed-address 192.168.0.5; option host-name "frontend"; filename "pxelinux.0"; }
next-server gibt hier die IP-Adresse des tftp-Servers an.
Dann:
rc-update add dhcpd default /etc/init.d/dhcpd start
TFTP
Das ist der Teil, von dem die Netzwerkkarte initial den Loader holt.
emerge tftp-hpa
/etc/conf.d/in.tftpd:
INTFTPD_PATH="/tftpboot" INTFTPD_USER="nobody" INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"
Dann:
mkdir /tftpboot chmod 777 /tftpboot rc-update add in.tftpd default /etc/init.d/in.tftpd start
pxelinux
Das ist der Teil, der per tftp als erstes an den Client geliefert wird. Es gibt auch noch pxegrub, aber das lief mit meinem Client-Rechner nicht.
emerge syslinux cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ cp /pxe/frontend/boot/kernel-genkernel-x86-2.6.23-gentoo-r3 /tftpboot/ cp /pxe/frontend/boot/initramfs-genkernel-x86-2.6.23-gentoo-r3 /tftpboot/ mkdir /tftpboot/pxelinux.cfg chmod 777 /tftpboot/pxelinux.cfg
Beispiel für /tftpboot/pxelinux.cfg/01-00-1b-21-0a-fc-0c (der letzte Teil ist die Mac-Adresse des Clients, Kernelnamen und Kernelparameter sind entsprechend anzupassen.) mit Kernel < 2.6.27:
default gentoo # gentoo label gentoo kernel kernel-genkernel-x86-2.6.23-gentoo-r3 append initrd=initramfs-genkernel-x86-2.6.23-gentoo-r3 ip=dhcp real_root=/dev/nfs nfsroot=192.168.0.7:/pxe/frontend vga=791 splash=silent,theme:livecd-2007.0 console=tty1 quiet implicit 0 say gentoo = Gentoo vom Server prompt 1 timeout 50
Optional (Bootoption für booten von einer lokalen Platte zu Debugzwecken durch Eingabe von "lokal"):
# lokal label lokal localboot 0
Beispiel für /tftpboot/pxelinux.cfg/01-00-1b-21-0a-fc-0c (der letzte Teil ist die Mac-Adresse des Clients, Kernelnamen und Kernelparameter sind entsprechend anzupassen.) mit Kernel >= 2.6.27, NFS-Options in nfsroot (Bug beachten!):
default gentoo # gentoo label gentoo kernel kernel-genkernel-x86-2.6.27-gentoo-r8 append initrd=initramfs-genkernel-x86-2.6.27-gentoo-r8 ip=dhcp root=/dev/nfs nfsroot=192.168.0.7:/pxe/frontend,ro,nolock,rsize=8192,wsize=8192,nfsvers=3,tcp,intr vga=791 splash=silent,theme:livecd-2007.0 console=tty1 quiet implicit 0 say gentoo = Gentoo vom Server prompt 1 timeout 50
Optional (Bootoption für booten von einer lokalen Platte zu Debugzwecken durch Eingabe von "lokal"):
# lokal label lokal localboot 0
Installation des Clients
Am besten installiert man den Client in einem Verzeichnis auf dem Server mit chroot. Das geht natürlich unter Gentoo sehr gut mit einem Stage 3 Tarball. Dabei wird prinzipiell normal installiert, bis auf den Bootloader. Dabei sind für PXE-Boot einige Kerneloptionen einzuschalten.
Außerdem werden speziell für PXE folgende Konfig-Dateien modifiziert:
/etc/conf.d/net (hier wird verhindert, dass eth0 nochmal initialisiert wird):
config_eth0=( "noop" )
/etc/conf.d/rc (hier wird verhindert, dass der Client beim Runterfahren eth0 zu früh abschaltet):
RC_PLUG_SERVICES="!net.*"
/etc/fstab (Kernel < 2.6.27):
192.168.0.7:/pxe/frontend / nfs nfsvers=3,tcp,intr,rw,nolock,rsize=8192,wsize=8192 0 0
/etc/fstab (Kernel >= 2.6.27):
/dev/nfs / none rw,noatime 0 0
/etc/conf.d/local.start (hier wird verhindert, dass der Client einen Filesystem-Check beim Booten durchführt):
touch /fastboot
Achtung: Evtl. verhindert ein Bug das Booten des Clients!
Swap über NFS
Server (512 MB Swapfile):
dd if=/dev/zero of=/pxe-root-path/swapfile bs=1024k count=512 mkswap swapfile
Client (bei jedem Booten):
losetup /dev/loop0 /swapfile swapon /dev/loop0