boot systemrescue 1.6.1
[pxelator] / lib / PXElator / config.pm
index ce56653..4bf5816 100644 (file)
@@ -18,7 +18,13 @@ our $mounted;
 our $server;
 our $server_ip;
 
-sub available { qw/katalog debian_live webconverger debirf tinycore nfsroot openvz printer wrt clonezilla ubuntu memdisk vyatta android/ };
+sub available { qw/
+       katalog debian_live webconverger
+       debirf tinycore nfsroot
+       openvz printer wrt
+       clonezilla ubuntu memdisk vyatta android
+       systemrescue
+/ };
 
 sub debian_live {
        my ($ip) = @_;
@@ -70,10 +76,19 @@ L<http://webconverger.org/>
 
 =cut
 
+sub _glob_first {
+       my ( $dir, $path ) = @_;
+       my @glob = glob "$dir/$path";
+       my $first = $glob[0] || die "no $dir/$path";
+       $dir   =~ s{iso/*$}{};
+       $first =~ s{^\Q$dir\E}{}g;
+       return $first;
+}
+
 sub webconverger {
        my ($ip) = @_;
 
-       $mounted->{"webconverger/$ip"} ||= upstream::iso( 'http://download.webconverger.com/webc-5.5.iso' );
+       $mounted->{"webconverger/$ip"} ||= upstream::iso( 'http://download.webconverger.com/webc-6.2.iso' );
 
        my $hostname = client::conf( $ip => 'hostname' ) || 'webconverger';
 
@@ -82,12 +97,17 @@ sub webconverger {
        my $fetch    = client::conf( $ip => 'webconverger/fetch'
                , default => "http://$server_ip:7777/webconverger/iso/live/filesystem.squashfs" );
 
+       my $mnt = "$server::base_dir/tftp/webconverger/iso";
+       warn "# mnt: $mnt\n";
+       my $kernel = _glob_first $mnt => 'live/vmlinuz*';
+       my $initrd = _glob_first $mnt => 'live/initrd.img*';
+
        pxelinux::config_for_ip( $ip, qq{
 
 default webconverger
 label webconverger
-       kernel iso/live/vmlinuz-2.6.30-backports.1-486
-       append initrd=iso/live/initrd.img-2.6.30-backports.1-486 fetch=$fetch boot=live quiet nosudo splash video=vesa:ywrap,mtrr vga=788 nopersistent username=webc hostname=$hostname union=aufs homepage=$homepage locale=hr noprompt kioskresetstation=10
+       kernel $kernel
+       append initrd=$initrd fetch=$fetch boot=live quiet nosudo splash video=vesa:ywrap,mtrr vga=788 nopersistent username=webc hostname=$hostname union=aufs homepage=$homepage locale=hr noprompt kioskresetstation=10
 
        });
 
@@ -250,6 +270,28 @@ label android-1.6-donut
        });
 }
 
+
+# http://www.sysresccd.org/Sysresccd-manual-en_PXE_network_booting
+sub systemrescue {
+       my $ip = shift;
+       my $path = upstream::iso( 'http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/1.6.1/systemrescuecd-x86-1.6.1.iso/download' );
+
+       my $dir = "$server::base_dir/tftp/systemrescue";
+       symlink '/usr/lib/syslinux/memdisk', "$dir/memdisk" unless -e "$dir/memdisk";
+
+       client::conf $ip => 'kvm.boot' => "n -cdrom $path";
+
+       pxelinux::config_for_ip( $ip, qq{
+
+default systemrescue
+label systemrescue
+
+       kernel iso/isolinux/rescuecd
+       append initrd=iso/isolinux/initram.igz dodhcp netboot=http://$server::ip:7777/systemrescue/iso/sysrcd.dat
+
+       });
+}
+
 sub in_chroot {
        my ( $dir, $command ) = @_;
        write_file "$dir/tmp/inside.sh", $command;