diff --git a/README.md b/README.md index 8bbfa5d..552e390 100644 --- a/README.md +++ b/README.md @@ -12,24 +12,40 @@ This will become a beautiful parser and generator for preseed file for debian an [HOWTO](http://linuxdocs.org/HOWTOs/KickStart-HOWTO.html) * Setting up PXE server on debian [PXE Client & Server](https://wiki.debian.org/PXEBootInstall#Installing_Debian_using_network_booting) - * https://www.server-world.info/en/note?os=CentOS_7&p=pxe&f=2 - * Building Ubuntu's system-config-kickstart under Debian [Debian system-config-kickstart](https://verahill.blogspot.com/2013/05/428-system-config-kickstart-on-debian.html) + * [RHEL/CentOS PXE setup](http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/) + * Multi-distro PXE Server. From what I've seen this wouldn't work, but the pxelinux menu structure are valid example + [Setting Up A PXE Install Server For Multiple Linux Distributions](https://www.howtoforge.com/ubuntu_pxe_install_server_p6) + * Syslinux.org, some mailing lists, dnsmasq & vsftp.conf man pages, bit of StackOverflow + +###Sprawozdanie: +1. Wstęp - żeby uruchomic sieciowo instalacje systemu potrzebne jest + * wsparcie dla PXE, + * serwer, który będzie udostępniał kernel i ramdisk, + * obraz kernela pxelinux.0 + * drzewo konfiguracje pxelinux.0 w drzewie katalogów pxelinux.cfg + * poprawne wpisy do pxelinux.cfg/default - ścieżki do plików na serwerze, parametry kernela po APPEND + + w folderze tftproot znajdują się powyższe, z wyjątkiem plików związanych z dystrybucjami. + +2. Po pobraniu uruchomieniu kernela i załadowaniu ramdisku z serwera tftp uruchomionego przez dnsmasq system szuka drzewa katalogów związanych z dystrybucją. + Znajduje wszystko, czego potrzebuje dzięki serwerowi vsftp (z jakiegoś powodu dnsmasqowy tftp nie udostępnia plików jako "normalny" ftp, tylko dla PXE). + W korzeniu serwera ftp jest katalog ```///``` z którego pobiera pliki host na którym jest uruchomiona instalacja. Można też przeprowadzić instalację przez Internet i nie udostępniać całej dystrybucji na serwerze, ale ma to bardzo małe szanse powodzenia przez duże opóźnienie, które nie jest brane pod uwagę przez dracut +3. Żeby to wszystko zautomatyzować do parametrów kernela RedHatowych dystrybucji dodaję ```ks= <ścieżka-do-pliku-kickstart>``` +4. Wszystko powyższe można zrobić manualnie, mój skrypt pykickxe.py dąży do zautomatyzowania tego ( z różną skutecznością ). Np. wybór pliku kickstart, kernela i parametrów + kernela odbywa się na zasadzie złożenia pliku kickstart, znalezieniu znaczników do zastąpienia zaczynających się od ```$``` w ```/pxelinux.cfg/autoinstall.menu``` i skopiowania pliku kickstart do ```/util/``` + + + -###TODO: -[x] Boot using PXE -[x] Make preseed file available -[ ] Generating pxelinux.cfg-valid entry and appending it to default.cfg -[ ] Add automatic locale setting in above in kernel params -[ ] write parser for preseed options -Założenia: +###Założenia: TEMAT INDYWIDUALNY Robert Marciniak -1. Serwer PXE + ~~kickstart~~ -> preseed +1. Serwer PXE + ~~kickstart~~ -> ~~preseed~~ -> jednak kickstart 2. Narzędzie generuje wyjściowy skrypt (preseed i post-install) z kilku "kawałków". Mogą nimi być np. zestaw pakietów, polecenie tworzenia katalogów dla usera, polecenie instalacji jakiegoś środowiska graficznego. Niektóre rzeczy mogą się wykluczać (np środowiska graficzne). Przykładowe scenariusze: diff --git a/pykickxe_conf.py b/pykickxe_conf.py index c860911..d293e28 100644 --- a/pykickxe_conf.py +++ b/pykickxe_conf.py @@ -1,8 +1,9 @@ -# TODO: Write a parser and make this a .conf file or something #p3 +# TODO: WRewrite #p1 lastCheckedDate = '03.01.17' -tftpRoot = '/svr/tftp/' +tftpRoot = '/srv/tftp/' pxe_cfgPath = './pxeappend.cfg' ks_cfgPath = './ks.cfg' + distroList = ['debian', 'fedora'] fedoraURL = ( "http://ftp.icm.edu.pl/pub/Linux/fedora/" diff --git a/tftproot/pxelinux.cfg/autoinstall.menu b/tftproot/pxelinux.cfg/autoinstall.menu index 83ef832..e744711 100644 --- a/tftproot/pxelinux.cfg/autoinstall.menu +++ b/tftproot/pxelinux.cfg/autoinstall.menu @@ -3,11 +3,8 @@ PATH util/ DEFAULT util/menu.c32 TIMEOUT 20 ONTIMEOUT Proceeding -ONERROR Reboot +ONERROR COM32 reboot.c32 LABEL Proceed - KERNEL $kernel - APPEND $append - -LABEL Reboot - COM32 reboot.c32 \ No newline at end of file + KERNEL centos/vmlinuz + APPEND initrd=centos/initrd.img method=ftp://192.168.0.1/centos/ISO devfs=nomount ip=dhcp diff --git a/tftproot/pxelinux.cfg/default b/tftproot/pxelinux.cfg/default index dae8703..cf2c96a 100644 --- a/tftproot/pxelinux.cfg/default +++ b/tftproot/pxelinux.cfg/default @@ -10,15 +10,15 @@ LABEL autoinstall LABEL Debian KERNEL debian/linux - APPEND ftinitrd=debian/initrd.gz + APPEND initrd=debian/initrd.gz LABEL Fedora KERNEL fedora/vmlinuz - APPEND initrd=fedora/initrd.img inst.repo=https://ftp-stud.hs-esslingen.de/pub/fedora/linux/releases/25/Everything/x86_64/os/ + APPEND initrd=fedora/initrd.img inst.repo=ftp://192.168.0.1/fedora/ISO devfs=nomount LABEL CentOS KERNEL centos/vmlinuz - APPEND initrd=centos/initrd.img method=ftp://192.168.0.2/centos/CentOS_ISO/ devfs=nomount ip=dhcp + APPEND initrd=centos/initrd.img method=ftp://192.168.0.1/centos/ISO devfs=nomount ip=dhcp LABEL OpenSUSE KERNEL opensuse/?