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) = @_;
=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';
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
});
});
}
+
+# 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;