This HOWTO is not valid since Kiosk 3.1 release. please refer to a new one posted on porteus-kiosk.org:
Since version 2.0.5 Porteus Kiosk gained the ability of booting over network through the PXE protocol. From now on the kiosk can be easily deployed, and kept up to date, on multiple PC's without bothering to burn a dozen CD's or usb sticks. Certainly useful, but please be mindful that this feature brings some restrictions that are not present in the standard way of booting:
1) 'copy2ram' is forced by default as pxe components have to be downloaded from the server on the client PC during the initial booting phase. PXE firmware, kernel and initial ramdisks are unpacked 'on the fly' but xzm modules must be stored in tmpfs (RAM). This may affect PC's with low RAM so booting over a network is not recommended for machines with less than 128MB of memory.
2) Copying of files over a network does not preserve original permissions so /rootcopy folder can not be used when doing a PXE boot. Please use xzm modules (even for a single files) which can be kept in the /base or /modules folders as normal.
3) The same ISO image is shipped to every client PC so the 'static IP' feature can not be enabled during the wizard to avoid IP conflicts in the network. Please use 'DHCPC' option instead.
4) PXE boot requires a wired connection between the server and client.
5) PXE services are not included in kiosk (unlike our desktop edition). Admin probably needs additional software like network profiling/monitoring tools and such utilities always brings extra size to the ISO and could compromise security. It's better to use another operating system which should work as a server. You may use your favorite linux distribution (or even Windows) for this task. The only requirement is the presence of the following services:
a) dhcpcd - used for assigning IP addresses to the clients
b) tftpd - used for transporting PXE components (firmware, kernel, initrds)
c) httpd - used for transporting of xzm modules on client's PCs (http protocol is faster than tftp)
I recommend using any recent Porteus desktop edition as it has everything we need provided by default.
My server is up and running and has all required services active - what i need to do next?
a) Run the kiosk wizard and make sure that 'PXE client component' is enabled. Set other features to match the client PC's specification as the Kiosk will run on the client and not the server.
b) Unpack the ISO to some folder on the server. If you previously skipped answering the 'http server IP and port' question then please edit
/some_folder/boot/pxelinux.cfg/default and update 'http_server=' cheatcode like in this example:
NOTE: It is also possible to mount the ISO (mount -o loop porteus-kiosk.iso /path) instead of unpacking it.
Code: Select all
c) Point your dhcpc, tftp and http daemons to the folder where the ISO is unpacked. dhcpcd should be able to upload PXE firmware: /boot/pxelinux.0, tftpd should be able to transport vmlinuz and both initrds (/boot/vmlinuz, /boot/initrd.xz and /boot/pxelinux.cfg/initrdpxe.xz), and httpd should be pointed to the /porteus folder which holds xzm modules.
To automate the process of starting required services, I have prepared a script which I use in the Porteus standard edition (it should also work for any other linux distro).
Be aware that in porteus we are using 'dnsmasq' for dhcpcd and tftpd services and 'webfsd' which acts as http daemon. Both are small, fast and can be configured from a command line - perfect for scripting. If you are using different utilities then you have to tweak their configs according to my script.
Once services are started you need to check if they are actually working
Code: Select all
#!/bin/bash # Run services necessary for booting Porteus Kiosk over the network. # Path to folder where Kiosk ISO is unpacked/mounted: PXEDATA=/home/guest/kiosk-pxe # Server IP address: IP=192.168.1.34 # Port on which the HTTP daemon is listening: PORT=8090 # Start the DHCP server and the TFTP server: killall dnsmasq 2>/dev/null dnsmasq --enable-tftp --tftp-root=$PXEDATA/boot --dhcp-boot=pxelinux.0,"$IP",$IP --dhcp-range=$(echo $IP | cut -d. -f1-3).50,$(echo $IP | cut -d. -f1-3).250,infinite --log-dhcp # Start the HTTP server: killall webfsd 2>/dev/null webfsd -i $IP -p $PORT -r $PXEDATA/porteus -u nobody -g nogroup # Enable packet forwarding so pxe clients can connect to internet: echo 1 > /proc/sys/net/ipv4/ip_forward echo "PXE services for Porteus Kiosk should be started now."
Please run 'ps auxww' command in terminal and you should see similar lines to these:
You can also open your browser and navigate to the 192.168.1.34:8090 address and you should see /porteus folder being hosted there.
Code: Select all
nobody 3123 0.0 0.0 12824 696 ? S 15:16 0:00 dnsmasq --enable-tftp --tftp-root=/home/guest/kiosk-pxe/boot --dhcp-boot=pxelinux.0,192.168.1.34,192.168.1.34 --dhcp-range=192.168.1.50,192.168.1.250,infinite --log-dhcp nobody 3126 0.0 0.0 25272 472 ? Ss 15:16 0:00 webfsd -i 192.168.1.34 -p 8090 -r /home/guest/kiosk-pxe/porteus -u nobody -g nogroup
If service test passes then you can test the Kiosk ISO booted over PXE. You can do this directly on the server with the help of the virtualization software:
a) make sure that your firewall is not blocking anything PXE related
b) start VirtualBox and create new session with network interface set to the 'bridged mode'
c) launch virtual session -> press F12 to select booting device -> press 'l' for LAN
d) enjoy Porteus Kiosk booted over the network
Please use this thread to post about the difficulties you experience when setting up PXE server for Kiosk or suggest improvements to our PXE boot process.
Thanks for using Porteus and happy PXE booting!