PXELinux

Aus xinux wiki
Wechseln zu: Navigation, Suche

Mit PXELinux kann man ein System über ein Netzwerk booten oder auch installieren.

Installation tftp-Server

root@xinux-desktop:/# apt-get install tftpd-hpa

Start über inetd

  • /etc/inetd.conf : udp -> udp4 ändern
tftp           dgram   udp4     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

Start als alleinstehender Server

  • /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -s"

Starten

root@xinux-desktop:~# service tftpd-hpa restart

Kontrolle

  • Ist der tftp Port geöffnet
root@ubuntu-server:/etc/dhcp3# netstat -lnu | grep 69
udp        0      0 0.0.0.0:69              0.0.0.0:*
  • Installation tftp Client
root@lydia:~# apt-get install tftp
  • Kann man einen Datei ziehen?
root@lydia:~# tftp 192.168.11.50
tftp> get 1545_sender
Received 900983 bytes in 0.6 seconds
tftp> quit

Installation DHCP-Server

root@xinux-desktop:~# apt-get install dhcp3-server

Anpassen der dhcpd.conf

  • /etc/dhcp3/dhcpd.conf
subnet 192.168.242.0 netmask 255.255.255.0 {
      range 192.168.242.170 192.168.242.180;
      default-lease-time 600;
      max-lease-time 7200;
      option domain-name-servers 192.168.240.21;
      option broadcast-address 192.168.242.255;
      option subnet-mask 255.255.255.0;
      filename "/pxelinux.0";
      next-server 192.168.242.140;
      option root-path "192.168.242.140:/pxeroot";
  
      host pxeclient {
              hardware ethernet 00:0c:29:99:25:91;
              fixed-address 192.168.242.171;
              option host-name "pxeclient";
      }
}

Starten

root@xinux-desktop:~# /etc/init.d/dhcp3-server start

Stoppen

root@xinux-desktop:~# /etc/init.d/dhcp3-server stop

Neustarten

root@xinux-desktop:~# /etc/init.d/dhcp3-server restart

Kontrolle

root@xinux-desktop:~# netstat -nplu | grep 67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           3515/dhcpd3

Bootimage vorbereiten

root@xinux-desktop:~# apt-get install syslinux
root@xinux-desktop:~# cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/

PXELinux mit debootstrap

Minimales virtuelles System erstellen

Installation von debootstrap

root@xinux-desktop:~# apt-get install debootstrap

Debian

root@xinux-desktop:~# mkdir /pxeroot
root@xinux-desktop:~# cd /pxeroot
root@xinux-desktop:~# debootstrap etch /pxeroot

Ubuntu

root@xinux-desktop:~# mkdir /pxeroot
root@xinux-desktop:~# cd /pxeroot
root@xinux-desktop:~# debootstrap intrepid /pxeroot


Hostname setzen

root@xinux-desktop:~# echo pxeboot > /pxeroot/etc/hostname
root@xinux-desktop:~# cp /etc/hosts /pxeroot/etc/hosts
root@xinux-desktop:~# vi /pxeroot/etc/hosts
127.0.0.1       localhost pxeboot

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Escape :wq zum Speichern und Beenden

fstab anpassen

/dev/ram0  /       ext2   defaults    0   0
proc            /proc           proc    defaults        0       0
tmpfs      /tmp       tmpfs  defaults    0   0

Virtuelles System anpassen

root@xinux-desktop:/pxeroot/etc# chroot /pxeroot

Kernel installieren

xinux-desktop:/# apt-get install linux-image

Die Warnung, dass keine Bootloader installiert sind, kann ignoriert werden. Wenn das Skript fragt, ob abgebrochen werden soll mit no antworten.

Ramdisk auf NFS anpassen

xinux-desktop:/# sed -i.bak -e "s/BOOT=local/BOOT=nfs/" /etc/initramfs-tools/initramfs.conf
xinux-desktop:/# sed -i.bak -e "s/MODULES=most/MODULES=netboot/" /etc/initramfs-tools/initramfs.conf
xinux-desktop:/#update-initramfs -vu 


Tastatur einstellen

xinux-desktop:/# dpkg-reconfigure keyboard-configuration

Passwort setzen

xinux-desktop:/# passwd 
exit

mit NFS

PXE boot konfigurieren

root@xinux-desktop:~# cd /var/lib/tftpboot
root@xinux-desktop:~# cp /pxeroot/vmlinuz .
root@xinux-desktop:~# chmod 644 vmlinuz 
root@xinux-desktop:~# cp /pxeroot/initrd.img .
root@xinux-desktop:~# mkdir pxelinux.cfg
root@xinux-desktop:~# vim pxelinux.cfg/default

  • /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT linux
LABEL linux
    kernel vmlinuz
    append vga=normal initrd=initrd.img ramdisk_size=14332 root=/dev/nfs nfsroot=192.168.242.140:/pxeroot ip=dhcp rw --
PROMPT 0
TIMEOUT 0

nfs server konfigurieren

root@xinux-desktop:~# apt-get install nfs-kernel-server
  • /etc/exports
/pxeroot    192.168.0.0/255.255.0.0(rw,sync,no_root_squash,no_subtree_check)

Neustarten

/etc/init.d/nfs-kernel-server restart

mit RAMdisk

Bootstrap erstellen mit debootstrap

als loopdevice

Leere Datei erstellen

  • dd if=/dev/zero of=/mnt/initrd bs=1M count=768

Leere Datei formatieren

  • mkfs.ext2 -i 1024 -b 1024 -m 5 -F -v /mnt/initrd

Datei mounten

  • mount /mnt/initrd /mnt/ubuntu -o loop

Ubuntu in das loop Device installieren

  • debootstrap trusty /mnt/ubuntu

proc, sys , dev mounten

  • mount -o bind /dev /mnt/ubuntu/dev
  • mount -o bind /proc /mnt/ubuntu/proc
  • mount -o bind /sys /mnt/ubuntu/sys

In das Verzeichnis changerooten

  • chroot /mnt/ubuntu

Wir sind im LOOP DEVICE

Platz freimache

  • apt-get clean

Kernel installieren

  • apt-get install linux-image-3.13.0-24-generic

Modulabhängikeiten erstellen

  • depmod -a 3.13.0-24-generic

Keboard und Locale

  • dpkg-reconfigure keyboard-configuration

Rootpasswd setzen

  • passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Diverse Dateien anpassen

hosts
  • echo "127.0.0.1 localhost" > /etc/hosts
  • echo "127.0.1.1 ramlinux.xinux.org" ramlinux >> /etc/hosts
resolv.conf

echo "nameserver 192.168.240.200" > /etc/resolv.conf echo "search xinux.org taribo.lan" >> /etc/resolv.conf

hostname

echo ramlinux > /etc/hostname

interfaces

cat<<HERE > /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

HERE

Raus aus dem LOOP Device

  • exit

Wir sind nicht mehr im LOOP DEVICE Kernel kopieren

  • cp /mnt/ubuntu/vmlinuz /var/lib/tftpboot/loop-vmlinuz
  • chown +r /var/lib/tftpboot/loop-vmlinuz

umounten

  • umount /mnt/ubuntu/proc
  • umount /mnt/ubuntu/sys
  • umount /mnt/ubuntu/dev
  • umount /mnt/ubuntu

ZWEI MÖGLICHKEITEN

umkomprimiert

  • cp /mnt/initrd /var/lib/tftpboot/loop-initrd
  • cat /var/lib/tftpboot/pxelinux.cfg/default
LABEL loop
  MENU LABEL ^loop
  kernel loop-vmlinuz
  append vga=normal initrd=loop-initrd ramdisk_size=1024000  root=/dev/ram0 rw --

komprimiert

  • gzip -c /mnt/initrd > /var/lib/tftpboot/loop-initrd.gz
  • cat /var/lib/tftpboot/pxelinux.cfg/default
LABEL loop-gz
  MENU LABEL loop-^gz
  kernel loop-vmlinuz
  append vga=normal initrd=loop-initrd.gz ramdisk_size=1024000  root=/dev/ram0 rw --

Quellen

http://www.pieczewski.de/?page_id=51

http://forum.ubuntuusers.de/topic/pxe-image-bauen/

http://www.howtoforge.com/pxe_booting_debian