> > Isn't better to use rewrite/file remapping instead of hacking pxeboot? > > If an i386 machine would request /etc/boot.conf via tftp you could rewrite > > it to (based on fact you know that that machine is i386 - during > > provisioning) > > /etc/i386/boot.conf. For the client I suppose it would still think it gets > > /etc/boot.conf.
A POC... j. ~~~ #!/usr/bin/perl -w use IO::Socket::UNIX; my $socket_path = '/tmp/tftpd_rewrite.sock'; unlink $socket_path if -e $socket_path; my $socket = IO::Socket::UNIX->new( Local => $socket_path, Type => SOCK_STREAM, Listen => SOMAXCONN, ); die "Can't create socket: $!" unless $socket; while (1) { next unless my $connection = $socket->accept; $connection->autoflush(1); while (my $line = <$connection>) { chomp($line); # XXX # conditionals here if ($line =~ /^127.0.0.1 read \/etc\/boot.conf$/) { print $connection "/etc/boot.conf.i386\n"; } elsif ($line =~ /^\S+ read \/etc\/boot.conf$/) { print $connection "/etc/boot.conf\n"; } } } ~~~ $ ./tftpd_rewrite $ doas chgrp _tftpd /tmp/tftpd_rewrite.sock ; doas chmod g+w /tmp/tftpd_rewrite.sock $ doas tftpd -v -r /tmp/tftpd_rewrite.sock /home/vm $ tftp 127.0.0.1 tftp> get /etc/boot.conf Received 38 bytes in 0.0 seconds $ syslogc daemon | tail -n1 Jan 29 01:51:49 t440s tftpd[626]: 127.0.0.1: read request for '/etc/boot.conf' $ cat boot.conf set tty com0 boot tftp:/bsd.rd.i386