diff --git a/xCAT-server/lib/xcat/plugins/debian.pm b/xCAT-server/lib/xcat/plugins/debian.pm index 96225a518..c7a5ac399 100644 --- a/xCAT-server/lib/xcat/plugins/debian.pm +++ b/xCAT-server/lib/xcat/plugins/debian.pm @@ -663,6 +663,11 @@ sub mkinstall my $prescript = "$::XCATROOT/share/xcat/install/scripts/pre.$platform"; my $postscript = "$::XCATROOT/share/xcat/install/scripts/post.$platform"; + + # for powerkvm VM ubuntu LE# + if ($arch =~ /ppc64/i and $platform eq "ubuntu") { + $prescript = "$::XCATROOT/share/xcat/install/scripts/pre.$platform.ppc64"; + } if (-r "$prescript"){ $preerr = @@ -687,6 +692,12 @@ sub mkinstall $callback->({node =>[{name => [$node], error => [$errtmp], errorcode => [1]}]}); next; } + + if ($arch =~ /ppc64/i and !(-e "$pkgdir/install/netboot/initrd.gz")) { + $callback->({error => ["The netboot initrd not found in $pkgdir/install/netboot, pls download first"], + errorcode=>[1]}); + next; + } my $tftpdir = "/tftpboot"; # create the node-specific post scripts @@ -697,7 +708,7 @@ sub mkinstall if ( ( - $arch =~ /x86/ and + ($arch =~ /x86/ and ( ( -r "$pkgdir/install/netboot/ubuntu-installer/$darch/linux" and $kernpath = "$pkgdir/install/netboot/ubuntu-installer/$darch/linux" @@ -710,6 +721,14 @@ sub mkinstall and $initrdpath = "$pkgdir/install/netboot/initrd.gz" ) ) + ) or ( + $arch =~ /ppc64/i and ( + -r "$pkgdir/install/vmlinux" + and $kernpath = "$pkgdir/install/vmlinux" + and -r "$pkgdir/install/netboot/initrd.gz" + and $initrdpath = "$pkgdir/install/netboot/initrd.gz" + ) + ) ) ){ diff --git a/xCAT-server/share/xcat/install/scripts/pre.ubuntu.ppc64 b/xCAT-server/share/xcat/install/scripts/pre.ubuntu.ppc64 new file mode 100644 index 000000000..12564e0a2 --- /dev/null +++ b/xCAT-server/share/xcat/install/scripts/pre.ubuntu.ppc64 @@ -0,0 +1,148 @@ +#!/bin/sh + +if [ ! -c /dev/vcs ]; then + mknod /dev/vcs c 7 0 +fi + +debconf-get open-iscsi/targets > /tmp/q + +cat >/tmp/foo.sh </dev/null) + + if [ -z "\$output" ]; then + output="installing prep" + fi + + echo "\$output" + ;; +esac + +exit 0 +EOF + +chmod 755 /tmp/foo.sh + +/tmp/foo.sh >/tmp/foo.log 2>&1 & + + + +if [ -d /sys/firmware/efi ]; then + echo "ubuntu-efi ::" > /tmp/partitioning + echo " 512 512 1024 fat16" >> /tmp/partitioning + echo ' $iflabel{ gpt } $reusemethod{ } method{ efi } format{ }' >> /tmp/partitioning + echo " ." >> /tmp/partitioning +else + echo "ubuntu-boot ::" > /tmp/partitioning + + echo "8 1 1 prep" >> /tmp/partitioning + echo ' $primary{ } $bootable{ } method{ prep }' >> /tmp/partitioning + echo " ." >> /tmp/partitioning + + echo "100 50 100 ext4" >> /tmp/partitioning + echo ' $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ /boot }' >> /tmp/partitioning + echo " ." >> /tmp/partitioning +fi +echo "500 10000 1000000000 ext4" >> /tmp/partitioning +echo " method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ / }" >> /tmp/partitioning +echo " ." >> /tmp/partitioning +echo "2048 512 300% linux-swap" >> /tmp/partitioning +echo " method{ swap } format{ }" >> /tmp/partitioning +echo " ." >> /tmp/partitioning +exit 0 +