1 #PowerVM build functions
3 pvm_setup_bootloader(){
5 parted -s $disk mklabel msdos
6 parted -s $disk mkpart primary ext2 0 $bootloader_size
7 parted -s $disk set 1 boot on
8 parted -s $disk set 1 prep on
9 parted -s $disk mkpart primary ext3 8M 100%
15 if [ -z "$SKIP" ];then
16 args=$(pvmctl scsi list -f ' ' -d VirtualDisk.udid ClientAdapter.loc_code --where VirtualDisk.name=$lv)
18 host=$(ls-vscsi | grep $loc_code| awk -F " " '{print $1}')
19 udid=$(echo $udid | cut -c 3-)
20 devid="/dev/disk/by-id/scsi-SAIX_VDASD_$udid"
21 until test -L $devid;do
23 echo "- - -" > /sys/class/scsi_host/$host/scan
25 dev=$(readlink -f $devid)
28 *root) test -z "$SKIP" && pvm_setup_bootloader "$dev";
30 *swap) VM_SWAP="${dev}";;
41 $(pvmctl lv list -d LogicalVolume.name | grep -q $dev) && SKIP=1
48 size_gb=`expr $size / 1024`
49 test -z $3 && target=$master_lpar
51 if [ -z "$SKIP" ];then
52 pvm_execute lv create --name $name --size $size_gb
55 pvm_execute scsi create --vg name=rootvg --type lv --lpar name=$target --stor-id $name
56 test -z "$SKIP" && pvm_getdiskname $name
59 pvm_lpar_is_running(){
60 state=$(pvmctl lpar list -d LogicalPartition.state --where LogicalPartition.name=$lpname |awk -F "=" '{print $2}')
61 CONSOLEPID=`pgrep -f "cat $hvcdev"`
62 if [ "$state" = "running" ];then
65 test -n $CONSOLEPID && kill -TERM $CONSOLEPID
71 while pvm_lpar_is_running $lpname;do
79 pvm_execute scsi delete --lpar name=$lpar --type lv --stor-id $lv
83 viosvrcmd --id 1 -c "rmbdsp -bd $1"
89 lparid=$(pvmctl lpar list -d LogicalPartition.id -i name=$name | awk -F "=" '{print $2}')
95 pvmutil -o create_vterm_dev --id $id
96 hvcsadmin -console $id
97 hvcdev=$(hvcsadmin -console $id|awk '{print $4}')
101 hvcdev=$(hvcsadmin -console $id|awk '{print $4}')
102 hvcsadmin -close $hvcdev
103 pvmutil -o delete_vterm_dev --id $1
107 pvm_execute lpar power-off --hard -i name="$VM_NAME"
112 cores=`echo 0.05 \* $cpus| bc -l`
113 pvm_execute lpar create --name $lpname --mem $VM_MEMSIZE --proc-unit $cores --proc $cpus --proc-type shared --sharing-mode uncapped --type $lpartype
115 vm_attach_root_pvm $lpname
116 vm_attach_swap_pvm $lpname
117 pvm_openconsole $lparid
118 pvm_execute lpar power-on -i name=$lpname
122 vm_detach_root_pvm $lpname
123 vm_detach_swap_pvm $lpname
126 vm_verify_options_pvm(){
127 test -z "$VM_WORKER_NR" && VM_WORKER_NR=1
128 lpname="worker-$VM_WORKER_NR"
131 rootlv="$lpname"-root
132 swaplv="$lpname"-swap
133 master_lpar=$(cat /proc/device-tree/ibm,partition-name)
136 vm_attach_root_pvm(){
138 pvm_createdev $rootlv $VMDISK_ROOTSIZE $target
141 vm_attach_swap_pvm(){
142 pvm_createdev $swaplv $VMDISK_SWAPSIZE $target
145 vm_detach_swap_pvm(){
147 test -z $lpar && lpar=$master_lpar
148 pvm_detachdev $swaplv $lpar
151 vm_detach_root_pvm(){
153 test -z $lpar && lpar=$master_lpar
154 pvm_detachdev $rootlv $lpar
159 pvm_closeconsole $lparid
160 vm_detach_root_pvm $lpname
162 vm_detach_swap_pvm $lpname
164 pvm_execute lpar delete -i name=$lpname
171 GRUBDIR=`mktemp -d /tmp/grubinstall.XXXX`
172 modules="ext2 part_msdos linux disk elf"
173 grubcfg="$GRUBDIR/grub.cfg"
174 grubimg="$GRUBDIR/grub.img"
175 cat <<'EOF' >> $GRUBDIR/grub.cfg
181 set root='ieee1275//vdevice/v-scsi@30000002/disk@8100000000000000,msdos2'
182 linux /.build.kernel.kvm init=/.build/build console=hvc0 root=/dev/sda2 rw elevator=noop
183 initrd /.build.initrd.kvm
186 grub2-mkimage -O powerpc-ieee1275 -o $grubimg -c $grubcfg $modules
187 dd if=$grubimg of=$bl_target