Creating an AIX 7.2 Virtual Machine on QEMU-KVM

AIX 7200-03-03-1913

qemu-system-ppc64 should support AIX 5.3/6.1/7.1.

Create VM disks.

qemu-img create -f qcow2 hdisk0.qcow2 20G
qemu-img create -f qcow2 hdisk1.qcow2 20G

Edit an VM xml file AIX_v7.2_install.xml.

<domain type="qemu">
<name>AIX_v7.2</name>
<memory unit="KiB">2097152</memory>
<currentMemory unit="KiB">2097152</currentMemory>
<vcpu placement="static">2</vcpu>
<os>
<type arch="ppc64" machine="pseries">hvm</type>
</os>
<cpu mode="custom" match="exact" check="none">
<model fallback="forbid">POWER7</model>
</cpu>
<boot dev='cdrom'/>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-ppc64</emulator>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/var/www/html/assets/tmp/AIX_v7.2_Install_7200-03-03-1913_DVD_1_of_2_052019.iso"/>
<target dev="sda" bus="scsi"/>
<readonly/>
<boot order="2"/>
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/home/jove/AIX_v7.2/hdisk0.qcow2"/>
<backingStore/>
<target dev="sdb" bus="scsi"/>
<boot order="1"/>
<address type="drive" controller="0" bus="0" target="0" unit="1"/>
</disk>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/home/jove/AIX_v7.2/hdisk1.qcow2"/>
<backingStore/>
<target dev="sdc" bus="scsi"/>
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</controller>
<controller type="scsi" index="0" model="ibmvscsi">
<address type="spapr-vio" reg="0x00002000"/>
</controller>
<controller type="pci" index="0" model="pci-root">
<model name="spapr-pci-host-bridge"/>
<target index="0"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
</controller>
</i><interface type="bridge">
<mac address="52:54:00:10:40:29"/>
<source bridge="br0"/>
<model type="spapr-vlan"/>
</interface>
<serial type="pty">
<target type="spapr-vio-serial" port="0">
<model name="spapr-vty"/>
</target>
<address type="spapr-vio" reg="0x30000000"/>
</serial>
<console type="pty">
<target type="serial" port="0"/>
<address type="spapr-vio" reg="0x30000000"/>
</console>
</i><input type="keyboard" bus="usb">
<address type="usb" bus="0" port="2"/>
</input>
</i><input type="mouse" bus="usb">
<address type="usb" bus="0" port="1"/>
</input>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x0"/>
</memballoon>
<panic model="pseries"/>
</devices>
</domain>

Define an VM.

virsh define AIX_v7.2_install.xml

Network. smit tcpip

# lsdev -Cc if
en0 Defined Standard Ethernet Network Interface
et0 Defined IEEE 802.3 Ethernet Network Interface
lo0 Available Loopback Network Interface
#
# lsdev -Cc adapter
ent0 Available Virtual I/O Ethernet Adapter (l-lan)
pkcs11 Available ACF/PKCS#11 Device
vsa0 Available LPAR Virtual Serial Adapter
vscsi0 Available Virtual SCSI Client Adapter

# chdev -l en0 -a netaddr=192.168.3.113 -a netmask=255.255.255.0 -a state=up
en0 changed

# ifconfig en0 up

# ifconfig -a
en0: flags=e084863,14c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,LARGESEND,CHAIN>
inet 192.168.3.113 netmask 0xffffff00 broadcast 192.168.3.255
tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
lo0: flags=e08084b,c0<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,LARGESEND,CHAIN>
inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
inet6 ::1%1/64
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1

LVM.

chdev -l hdisk1 -a pv=yes
mkvg -f -y'vg_data' -s'256' hdisk1
mklv -y'lv_data01' -t'jfs2' vg_data 40
mkdir /u01
crfs -v'jfs2' -d'lv_data01' -m'/u01' -A'yes'
mount /u01

Mount ISO.

mkdir -p /mnt/iso
mount -V cdrfs -o ro /dev/cd0 /mnt/iso
df -g /mnt/iso
mount | grep iso
umount /mnt/iso

# or

loopmount -i aix61_dvd.iso -o "-V cdrfs -o ro" -m /mnt/iso
loopumount -l loop0 -m /mnt/iso

Install X11 packages.

# installp -acgXYd /mnt/iso X11.base.rte
# installp -acgXYd /mnt/iso X11.apps

Troubleshooting

Issue: The '/usr/lpp/diagnostics/bin/diagd' command is not supported on this system. [STOP] DSO is not supported on KVM systems

Workaround:

Remove it from inittab.

rmitab diagd
rmitab aso

Issue: error: db4 error(22)

# rpm -qa
error: db4 error(22) from dbenv->open: A system call received a parameter that is not valid.
error: cannot open Packages index using db4 - A system call received a parameter that is not valid. (22)
error: cannot open Packages database in /opt/freeware/packages
error: db4 error(22) from dbenv->open: A system call received a parameter that is not valid.
error: cannot open Packages index using db4 - A system call received a parameter that is not valid. (22)
error: cannot open Packages database in /opt/freeware/packages

Workaround:

Append follow content to /etc/inittab file.

fixrpm:23456789:once:/fixrpm.sh > /dev/null 2>&1

/fixrpm.sh.

#!/usr/bin/ksh

cd /opt/freeware
rm -f *.rpm.packages.tar
tar -chvf `date +"%d%m%Y"`.rpm.packages.tar packages
rm -f /opt/freeware/packages/__*
/usr/bin/rpm --rebuilddb

exit 0

https://www.ibm.com/support/pages/understanding-aix-virtual-rpm-package-rpmrte
https://www.ibm.com/support/pages/how-resolve-rpm-dbrunrecovery-errors
https://www.ibm.com/support/pages/resolving-rpm-library-errors-rpmrte-41303-or-lower

Reference

https://github.com/mjsamp/AIX-on-qemu-ppc64