uniwersalna instalacja/PXE

edytuj

Wymagania

edytuj

Komputer musi posiadać kartę sieciową z obsługą protokołu PXE, posiada ją wiele kart firmy 3com. Potrzebny będzie również BIOS umożliwiający uruchamianie z PXE.

Ustawienia serwera

edytuj

Tworzymy katalogi, w których system do uruchamiania bezdyskowego będzie przechowywany. Zaczynamy od katalogu /diskless, który będzie macierzystym. Przez resztę opisu będziemy pracować na kliencie "eta".

# mkdir /diskless
# mkdir /diskless/eta
# mkdir /diskless/eta/boot

Następny etap to konfiguracja DHCP i TFTP. Klient będzie korzystał z serwera TFTP do pobrania wybranych plików.

W przypadku dhcpcd uruchamiamy po prostu polecenie emerge dhcp (do wybór jest jeszcze kilka innych serwerów DHCP). Należy się upewnić, że ustawiony jest poprawny interfejs w pliku /etc/conf.d/dhcpd, a jego zwartość jest dostosowana do naszych potrzeb. Następnie, dodajemy poniższe linie do pliku /etc/dhcp/dhcpd.conf.

option option-150 code 150 = text ;
ddns-update-style none ;
host eta {
hardware ethernet 00:00:00:00:00:00;
fixed-address ip.add.re.ss;
option option-150 "/eta/boot/grub.lst";
filename "/eta/boot/pxegrub";
}

Należy teraz skonfigurować odpowiednio interfejs w /etc/conf.d/net tak, aby prawidłowo uruchamiał się przy starcie systemu. Więcej informacji można znaleźć w pliku /etc/conf.d/net.example

(Należy zamienić eth0 nazwą odpowiedniego interfejsu)

config_eth0=( "noop" )

W celu zainstalowania serwera TFTP należy zainstalować pakiet app-admin/tftp-hpa oraz umieścić w pliku /etc/conf.d/in.tftpd następujące informacje:

INTFTPD_PATH="/diskless"
INTFTPD_USER="nobody"
INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"

Kolejny krok to konfiguracja GRUB. Należy go skompilować samodzielnie i włączyć flagę USE netboot. Kiedy plik binarny zostanie skompilowany, należy go skopiować do katalogu boot w katalogu uruchomieniowym klienta. Ostatnia czynność to edytowanie pliku konfiguracyjnego grub.lst.

# echo "sys-boot/grub netboot" >> /etc/portage/package.use
# emerge -av grub
# cp /usr/lib/grub/pxegrub /diskless/eta/boot/pxegrub
default 0
timeout 30
title=Diskless Gentoo
root (nd)
kernel /eta/bzImage ip=dhcp root=/dev/nfs
nfsroot=ip.add.re.ss:/diskless/eta
# Jeśli chodzi o nfsroot, to adres IP jest adresem serwera, a katalog

to jest to miejsce na serwerze, w którym znajdują się pliki dla klienta.

Kolejny krok to konfiguracja NFS, która jest dość prosta. Ogranicza się do dodania w pliku /etc/exports następującej linii:

# nano -w /etc/exports
# /etc/exports: NFS file systems being exported.  See exports(5).

/diskless/eta eta(rw,sync,no_root_squash)

Kolejna czynność to uaktualnianie hostów w pliku /etc/hosts tak, aby pasowały do konkretnej sytuacji.

127.0.0.1 localhost
192.168.1.10 eta.example.com eta
192.168.1.20 sigma.example.com sigma

Budowa systemu na serwerze

Może być konieczne ponowne uruchomienie serwera w celu wczytania płyty instalacyjnej Gentoo, można jednak również zainstalować je bezpośrednio z obecnego systemu. Należy postępować zgodnie ze zwykłą procedurą instalacji, uwzględniając jednak następujące fakty: podczas montowania systemu plików trzeba wykonać wypisane poniżej czynności (hdaX to partycja na której znajduje się katalog /diskless). Nie trzeba montować żadnych żadnych partycji, ponieważ wszystkie pliki znajdują się w katalogu /diskless/eta.

# mount /dev/hdaX /mnt/gentoo

Później musimy zająć się plikami stage i chrootowaniem. W przykładzie użyjemy tarballa stage3. Po pierwsze należy zamontować /proc w katalogu diskless i wchrootować się do środka. Następnie należy kontynuować proces instalacji zgodnie z opisem aż do momentu, kiedy trzeba będzie skompilować kernel.

# cd /mnt/gentoo/diskless/eta/
# tar -xvjpf  /mnt/cdrom/gentoo/stage3-*.tar.bz2
# mount -t proc /proc /mnt/gentoo/diskless/eta/proc
# cp /etc/resolv.conf /mnt/gentoo/diskless/eta/etc/resolv.conf
# chroot /mnt/gentoo/diskless/eta/ /bin/bash
# env-update
# source /etc/profile

Kolejna czynność to konfiguracja jądra. Po wykonaniu polecenia make menuconfig należy zaznaczyć następujące ustawienia:

- Your network card device support (Należy wbudować to na stałe, nie jako moduły!)

- Under "Networking options" :

[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support


- Under "File systems --> Network File Systems" :

<*> NFS file system support
[*] Provide NFSv3 client support
[*] Root file system on NFS

Kernel należy zapisać w katalogu / w chroocie (nie w /boot), wynika to z wcześniejszych ustawień pxegrub. Kolejny krok to konfiguracja pliku /etc/fstab klienta.


# nano -w /etc/fstab
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs nodev,nosuid,noexec 0 0

Należy zapobiec sprawdzaniu dysku.

# touch /fastboot
# echo "touch /fastboot" >> /etc/conf.d/local.start

Kolejna czynność to instalacja pakietu nfs-utils, z którego aktywnie będzie korzystał klient.


# emerge nfs-utils

Następna czynność to instalacja programu ładującego. Nie należy instalować nic nowego. Mamy już taki program, pxegrub. Instalację kończy się poprzez ponowne uruchomienie serwera. Potem należy uruchomić wszystkie usługi wymagane przez klienta: DHCP, TFTPD i NFS.

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

Uruchamianie klienta

edytuj

Aby klient uruchamiał się prawidłowo należy skonfigurować BIOS i kartę sieciową tak, by używały protokołu PXE jako pierwszego urządzenia, z którego będą uruchamiać system. Powinien się on znajdować przed napędem CD-ROM czy stacją dystkietek na odpowiedniej liście. Jeśli sprawia to problem należy się zapoznać z instrukcjami obsługi sprzętu. Karta sieciowa powinna pobierać adres za pomocą DHCP i obraz GRUB PXE za pomocą TFTP. Następnie powinien pojawiać się czarny ekran z białym menu GRUB, z którego można wybrać jądro i uruchomić system za pomocą klawisza ENTER. Jeśli wszystko jest ustawione prawidłowo, kernel się uruchomi, podmontuje główny system plików za pomocą NFS i pojawi się znak zachęty. To wszystko.