7 our $magic = 0xF100747E;
9 our $config_file; #= 'pxelinux.cfg/default';
11 our $reboot_time; # 300 s
19 my ($ip,$config) = @_;
20 confess "$ip not IP" unless $ip =~ m{^\d+\.\d+\.\d+\.\d+$};
22 $path_prefix = (caller(1))[3];
23 $path_prefix = (caller(2))[3] unless $path_prefix =~ m{config::};
24 $path_prefix =~ s{config::}{} || warn "# caller isn't package config !";
27 warn "# $ip $path_prefix";
29 my $dir = "$server::base_dir/tftp";
30 $dhcpd::file = 'pxelinux.0';
31 symlink "/usr/lib/syslinux/pxelinux.0", "$dir/$dhcpd::file" unless -e "$dir/$dhcpd::file";
33 $dir .= "/$path_prefix";
34 mkdir $dir unless -d $dir;
36 mkdir "$dir/pxelinux.cfg" unless -e "$dir/pxelinux.cfg";
38 $config_file = 'pxelinux.cfg/' . uc sprintf "%02x%02x%02x%02x", split(/\./, $ip, 4);
39 warn "$ip config_file $config_file";
41 my $path = "$dir/$config_file";
42 write_file $path, $config;
44 warn "# config: $path ", -s $path;
50 my ( $ip, $boot, $append ) = @_;
52 my $default = client::conf $ip => 'default';
55 foreach my $kernel ( glob "$boot/vmlinuz*" ) {
56 my $ver = $1 if $kernel =~ m{vmlinuz(.+)};
57 $default ||= 'boot' . $ver;
62 kernel $ip/boot/vmlinuz$ver
63 append initrd=$ip/boot/initrd.img$ver $append
68 config_for_ip( $ip, qq{