Wishlist: remote install GUI

Andreas Thienemann andreas at bawue.net
Thu Aug 31 22:16:59 UTC 2006


On Thu, 31 Aug 2006, Arthur Pemberton wrote:

> Along the path of alternate install methods ... how feasible is it to
> say PXE book a remtoe machine, then have the install process start on
> it somehow. I am not familiar with the require technologies, but they
> seem to already exist.
No problem there.
We are using PXE to reboot a machine in another datacenter, which is our 
secondary DNS server.
There's a Cyclades TS100 connected to the serial port, onto which we 
installed a statically linked dnsmasq binary for the dhcp server.

It hands the box it's ip address and tells it to get the pxelinux file 
from our main tftpd in our own datacenter.
By changing the pxelinux config file for this machine, we can make it do 
different things such as booting a rescue system, an installer et al.


The configuration is pretty simple:

/etc/dnsmasq.conf (only the important part)

# The DNS Entry in question, in this case we're only handing out a single 
# address. Adapt that to your requirements
dhcp-range=111.222.333.444,static,255.255.255.224,45m
dhcp-host=00:11:22:33:44:55,leelo,111.222.333.444

# Netmask
dhcp-option=1,255.255.255.0
# Broadcast
dhcp-option=28,111.222.333.255
# Nameserver
dhcp-option=6,111.222.333.1

# NTP Server
dhcp-option=42,111.222.333.1

# Set the default route
dhcp-option=3,111.222.333.1

# Set the mftp option for the PXEClient to 0.0.0.0 as we do not have a 
# multicast tftp
dhcp-option=vendor:PXEClient,1,0.0.0.0

# Set the boot filename and tftpd server name and address
# for BOOTP. You will only need this is you want to
# boot machines over the network.
dhcp-boot=/pxelinux.0,your.tftp.server.name,12.34.56.78


As an alternative, you can use the isc server:
/etc/dhcpd.conf

allow booting;
allow bootp;

option space PXE;
option PXE.mtftp-ip               code 1 = ip-address;
option PXE.mtftp-cport            code 2 = unsigned integer 16;
option PXE.mtftp-sport            code 3 = unsigned integer 16;
option PXE.mtftp-tmout            code 4 = unsigned integer 8;
option PXE.mtftp-delay            code 5 = unsigned integer 8;
option PXE.discovery-control      code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr   code 7 = ip-address;

class "pxeclients" {
    option PXE.mtftp-ip 0.0.0.0;
    filename "pxelinux.0";
    next-server 12.34.56.78;
}

# the rest of your network definitions

        group install {
                filename "pxelinux.0";
                next-server 12.34.56.78;

                host server { hardware ethernet 00:01:02:03:04:05; }
	}
}



That way, the host in question will get instructed, to load the pxe file 
and boot it via tftp from the next-server ip.


There you have to put pxelinux.0 from the syslinux package into your 
tftproot, /tftpboot and create a config file, e.g. 
/tftpboot/pxelinux.cfg/default or a more specific
/tftpboot/pxelinux.cfg/01-00-01-02-03-04-05:

# we want a serial console
serial 0 115200 0xab3

# Always prompt
prompt 1

# Default bootoption, local for boot from hd or your preferred install 
# target
default install-fc5

# Boot automatically after 30 seconds in tenths of a second
timeout 300

label local
        localboot 0

# Install fc5 via serial console
label install-fc5
  kernel fc5/vmlinuz
  append ramdisk_size=16384 load_ramdisk=1 console=tty0 console=ttyS0,115200n8r initrd=fc5/initrd.img network text serial

# Install fc5 via vnc
label install-fc5-vnc
  kernel fc5/vmlinuz
  append ramdisk_size=16384 load_ramdisk=1 initrd=fc5/initrd.img network vnc vncpassword=secret



Put the PXE boot files into /tftpboot/fc5 and make your installation tree 
available via nfs, http, ftp or something similar.

And voila, you can install systems remotely without ever having to access 
their cd drives.

The installation task can even be simplified by feeding a kickstart file 
to the anaconda installer, answering all questions or only things like 
installation repository location et al.



regards,
 andreas




More information about the devel mailing list