Skip to content

Commit

Permalink
finally working with help of vsftp. Now only ks and kernel parameters…
Browse files Browse the repository at this point in the history
… parser to write left
  • Loading branch information
Esgariot committed Jan 8, 2017
1 parent 326d753 commit 31acb60
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 21 deletions.
36 changes: 26 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 ```/<distro>/<wypakowane-iso>/``` 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:
Expand Down
5 changes: 3 additions & 2 deletions pykickxe_conf.py
Original file line number Diff line number Diff line change
@@ -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/"
Expand Down
9 changes: 3 additions & 6 deletions tftproot/pxelinux.cfg/autoinstall.menu
Original file line number Diff line number Diff line change
Expand Up @@ -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
KERNEL centos/vmlinuz
APPEND initrd=centos/initrd.img method=ftp://192.168.0.1/centos/ISO devfs=nomount ip=dhcp
6 changes: 3 additions & 3 deletions tftproot/pxelinux.cfg/default
Original file line number Diff line number Diff line change
Expand Up @@ -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/?
Expand Down

0 comments on commit 31acb60

Please sign in to comment.