Τρίτη, Μαΐου 17, 2011

PXE booting

Το καινούριο πειραματόζωο home server μηχανάκι έφτασε, αλλά το flash disk που τάχα μου δήθεν είχα έτοιμο για εγκατάσταση Debian δεν παίζει (you can call me Captain Fail).

Σχέδιο Β': εγκατάσταση Debian μέσα από PXE booting και tftp.

Η λογική της διαδικασίας είναι το καινούριο μας μηχάνημα θα μιλήσει με τον tftp server, ο οποίος θα του δώσει μέσω δικτύου τα αρχεία που χρειάζεται για να κάνει boot. Ούτε flash disks, ούτε CDs, ούτε τίποτα.

Οπότε, βήμα πρώτο, πας στο BIOS του καινούριου μηχανήματος και ενεργοποιείς το PXE booting. ΟΚ, τελείωσαν οι ρυθμίσεις εδώ.

Χρειάζεσαι άλλο ένα μηχάνημα, το οποίο θα τρέχει τον tftp server. Το δικό μου ήταν το Debian netbook μου. Εγκατάσταση dhcp server και tftp server:

aptitude install tftpd-hda dhcpd3-server

Το configuration file του tftpd κατέληξε κάπως έτσι:
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-s"
TFTP_DIRECTORY="/var/lib/tftpboot"

Δημιουργία του directory που θα έχουμε τα αρχεία που θα μεταφέρονται στους tftp clients και τα σχετικά configs.
mkdir -p /var/lib/tftpboot/pxelinux.cfg
mkdir -p /var/lib/tftpboot/debian/stable/i386

Ώρα για configuration του tftp. Στο /var/lib/tftpboot/pxelinux.cfg βάλε τα εξής:
DISPLAY boot.txt

DEFAULT stable_i386_install

LABEL stable_i386_install
kernel debian/stable/i386/linux
append vga=normal initrd=debian/stable/i386/initrd.gz --
LABEL stable_i386_linux
kernel debian/stable/i386/linux
append vga=normal initrd=debian/stable/i386/initrd.gz --


PROMPT 1
TIMEOUT 0

Στο /var/lib/tftboot/boot.txt βάζουμε την μορφή του μενού που θα εμφανίζεται στον client:
- Boot Menu -
=============

stable_i386_install
stable_i386_linux

Ώρα να κατεβάσουμε τα απαιτούμενα αρχεία για boot.

cd /var/lib/tftpboot
wget http://ftp.uk.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/pxelinux.0

cd /var/lib/tftpboot/debian/stable/i386
wget http://ftp.uk.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/linux
wget http://ftp.uk.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz

Ο tftp server είναι (θεωρητικά) ρυθμισμένος. Υπάρχει όμως ακόμα το θέμα του πως θα δείξεις σε ποιο μηχάνημα έχεις τον tftp server. Την δουλειά αυτή την κάνει ένας dhcp server και σχεδόν 100% δεν μιλάμε για αυτόν στον router σου.

Στο /etc/dhcp/dhcpd.conf βάζεις τα εξής:
option domain-name-servers 8.8.8.8;
default-lease-time 86400;
max-lease-time 604800;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.70 192.168.1.100;
filename "pxelinux.0";
next-server 192.168.1.50;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

Όπου βλέπεις 192.168.1.50, είναι η IP του tftp server, 192.168.1.1 η IP του router σου. Ρυθμίζεις ανάλογα ;) Η όλη ιστορία με την εγκατάσταση του dhcp server είναι οι δύο γραμμές:
filename "pxelinux.0";
next-server 192.168.1.50;
που δίνουν τις οδηγίες για PXE booting και που σχεδόν σίγουρα δεν μπορείς να βάλεις στον σπιτικό dsl router σου.

Τώρα βέβαια, έχεις δύο dhcp servers στο δίκτυο σου: αυτόν που μόλις σέταρες και αυτόν που τρέχεις στον router σου. Ο δεύτερος πρέπει να κλείσει (ο dhcp server του router, όχι ο router).

Άντε, τελειώνουμε. Ξεκίνα τους δύο servers που μόλις ρύθμισες:
/etc/init.d/tftpd-hda start
dhcpd

Κάνε boot το καινούριο μηχανάκι. Αν όλα πήγαν καλά...
- το μηχάνημα θα κάνει PXE boot,
- θα μιλήσει με τον DHCP server που εγκαταστήσαμε
- θα πάρει network configuration αλλά και την διεύθυνση του TFTP server
- θα τραβήξει το installation image από τον TFTP server
- θα αρχίσει το installation.

Στο τελευταίο βήμα, χρειάζεται σύνδεση internet, και αυτός είναι ο λόγος που κλείνουμε μόνο τον DHCP server του router και όχι όλο τον router.

References:

2 σχόλια:

atmosx είπε...

Καλησπέρα,

Αφού είχες DHCPD στο δίκτυο γιατί δεν έκανες tftp boot από εκεί;

dtsomp είπε...

Ο dhcpd έτρεχε σε ρουτεράκι της κακιάς ώρας, δεν μπορείς να σετάρεις τέτοια πράγματα.