Skip to main content

AIX VM with qemu

Introduction

What can it be used for?

  • AIX Training and Practice
  • Testing/Developing Environment for AIX
  • Cybersecurity Lab for AIX
  • Running AIX on your laptop for whatever you want to accomplish

Prerequisities:

  1. QEMU Install
  2. aix_7200-04-00-1937_1of2_112019.iso
  3. Fedora 40 Linux Install (Recommended)

QEMU commands

PowerPC System Board-specific

qemu-system-ppc64 --machine help
cobra@fedora-vm:~$ qemu-system-ppc64 --version

QEMU emulator version 8.2.6 (qemu-8.2.6-3.fc40)
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

這版的 QEMU 已經修復了 ps, crontab, cron, java 指令問題。

Install AIX from CD-ROM

Create a VM disk

mkdir aix72VM
cd aix72VM
qemu-img create -f  qcow2  hdisk0.qcow2  20G

注意: AIX 版本必須 7200-03-00 以後版本才有支援。

aix_7200-04-00-1937_1of2_112019.iso

cd aix72VM
mv aix_7200-04-00-1937_1of2_112019.iso AIX72.iso

Boot from cd-rom

cd aix72VM

qemu-system-ppc64 -cpu POWER8 \
-machine pseries -m 4096 -serial stdio \
-drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-scsi-pci,id=scsi \
-device scsi-hd,drive=drive-virtio-disk0 \
-cdrom $PWD/AIX72.iso \
-prom-env "boot-command=boot cdrom:" \
-prom-env "input-device=/vdevice/vty@71000000" \
-prom-env "output-device=/vdevice/vty@71000000"

Type 1 and press Enter

aix_vm_1.png

Press Enter

aix_vm_2.png

Type 2

aix_vm_3.png

Type 4

aix_vm_4.png

Type 5

aix_vm_5.png

Type 0

aix_vm_6.png

Press Enter to install AIX

aix_vm_7.png

看到這畫面時,表示 AIX 作業系統已經完成安裝。

輸入 Ctrl + C 離開

aix_vm_8.png

Fix boot issue

Boot from cd-rom

cd aix72VM

qemu-system-ppc64 -cpu POWER8 \
-machine pseries -m 4096 -serial stdio \
-drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-scsi-pci,id=scsi \
-device scsi-hd,drive=drive-virtio-disk0 \
-cdrom $PWD/AIX72.iso \
-prom-env "boot-command=boot cdrom:" \
-prom-env "input-device=/vdevice/vty@71000000" \
-prom-env "output-device=/vdevice/vty@71000000"

Type 1 and press Enter

aix_vm_9.png

Press Enter

aix_vm_10.png

Type 3

aix_vm_11.png

Type 0

aix_vm_12.png

Type 1

aix_vm_13.png

Type 1

aix_vm_14.png

輸入修復開機指令

aix_vm_15.png

Fix boot issue

cd /sbin/helpers/jfs2
mv fsck64 fsck64.old
ln -s fsck fsck64

mv logredo64 logredo64.old
ln -s logredo logredo64

sync;sync;
halt

First boot from hdisk

cd aix72VM

qemu-system-ppc64 -cpu POWER8 \
-machine pseries -m 4096 -serial stdio \
-drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-scsi-pci,id=scsi \
-device scsi-hd,drive=drive-virtio-disk0 \
-cdrom $PWD/AIX72.iso \
-prom-env "boot-command=boot hdisk:" \
-prom-env "input-device=/vdevice/vty@71000000" \
-prom-env "output-device=/vdevice/vty@71000000"

Type vt100

aix_vm_16.png

Select: Accept License Agreements

Tips: 如果這裡的畫面出現沒有對齊的情況,且影響到後續的操作。按下 Ctrl + C 先中斷離開,將終端機的字形調更小,然後再重新執行步驟。

aix_vm_17.png

Select: Accept Software Maintenance Terms and Conditions

aix_vm_18.png

Select: Set root Password

Tip: 設定完密碼後,最後要選擇 Task Completed - Exit to Login。如果略過這,下次在開啟系統時,初始化的步驟仍會再出現。

aix_vm_19.png

用剛剛設定的 root 帳密登入

aix_vm_20.png

Post-tasks

- Disable some problematic services
rmitab diagd
rmitab rcnfs
rmitab aso
rmitab clcomd
rmitab pfcdaemon
stopsrc -s clcomd
stopsrc -s pfcdaemon
- Network setup

On Linux) 

net_tap.sh:

BRIDGE=virbr0
NETWORK=192.168.99.0
NETMASK=255.255.255.0
GATEWAY=192.168.99.1
DHCPRANGE=192.168.99.2,192.168.99.50
TAP=tap0

sudo ip link add $BRIDGE type bridge
sudo ip link set dev $BRIDGE up
sudo ip addr add dev $BRIDGE $GATEWAY/$NETMASK

sudo ip tuntap add $TAP mode tap
sudo ip link set $TAP master $BRIDGE
sudo ip link set up dev $TAP

# Uncomment the following lines to enable the DHCP server
#dns_cmd=(
#    dnsmasq
#    --strict-order
#    --except-interface=lo
#    --interface=$BRIDGE
#    --listen-address=$GATEWAY
#    --bind-interfaces
#    --dhcp-range=$DHCPRANGE
#    --conf-file=""
#    --pid-file=/var/run/qemu-dnsmasq-$BRIDGE.pid
#    --dhcp-leasefile=/var/run/qemu-dnsmasq-$BRIDGE.leases
#    --dhcp-no-override
#)
#echo ${dns_cmd[@]} | sudo bash

Run net_tap.sh

bash net_tap.sh

Allow access to internet

sudo firewall-cmd --permanent --zone=public --add-interface=tap0
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload

Boot with network interface tap0

qemu-system-ppc64 -cpu POWER8 \
  -machine pseries -m 4096 -serial mon:stdio \
  -drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
  -device virtio-scsi-pci,id=scsi \
  -device scsi-hd,drive=drive-virtio-disk0 \
  -cdrom $PWD/AIX72.iso \
  -net nic -net tap,script=no,ifname=tap0 \
  -prom-env "boot-command=boot disk:" \
  -nographic

On AIX)

# Check the network interface
lsdev -Cc if
lsdev -Cc adapter

# Set the ip
chdev -l en0 -a netaddr=192.168.99.100 -a netmask=255.255.255.0 -a state=up
route add 0 192.168.99.1
# Alternatively, using the following command instead 
/usr/sbin/mktcpip -h'aixvm' -a'192.168.99.100' -m'255.255.255.0' -i'en0' -g'192.168.99.1' -A'no' -t'N/A'

echo "nameserver 1.1.1.1" > /etc/resolv.conf
- Increase the filesystem size
lsdev -Cc disk
lscfg -vl hdisk0
chfs -a size=+1024M /home
chfs -a size=+2048M /opt
chfs -a size=+512M /tmp
chfs -a size=+2048M /usr
chfs -a size=+1024M /var
- Install OpenSSH
mount  -v  cdrfs  -o  ro  /dev/cd0  /mnt
mkdir   /tmp/ssh_install
cd  /mnt/installp/ppc
cp  openssh*  /tmp/ssh_install
cd  /tmp/ssh_install
installp -acgXYd . openssh.base openssh.license openssh.man.en_US openssh.msg.en_US
lssrc  -s  sshd
- Fix the RPM issue
error: cannot open Packages index using db4 - Invalid argument (22)
error: cannot open Packages database in /opt/freeware/packages
error: db4 error(22) from dbenv->open: Invalid argument

Solution: 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

Edit /etc/initab, insert the line after the rctcpip 

rctcpip:23456789:wait:/etc/rc.tcpip > /dev/console 2>&1 # Start TCP/IP daemons
fixrpm:23456789:once:/fixrpm.sh > /dev/null 2>&1 # Added by Alang
- Install AIX Toolbox

Download the files

cd /home/worktmp
uncompress openssl-1.1.2.2000.tar.Z
tar -xvf openssl-1.1.2.2000.tar
cd openssl-1.1.2.2000
installp -qaXFY -d . openssl.base openssl.license openssl.man.en_US
openssl version
cd /home/worktmp
rpm --rebuilddb
ksh dnf_aixtoolbox.sh -y
/opt/freeware/bin/dnf update
/opt/freeware/bin/dnf install bash
- Optional tasks

> Custom the prompt, create the profile /.profile

PS1="`whoami`@`hostname -s`:"'${PWD##*/}> '

> Timezone

smitty > System Environments > Change/Show Date and Time > Change Time Zone Using System

echo $TZ

> The ordering of certain name resolution services

修復 ping 本地主機名時會回應遲鈍問題。

Edit: /etc/netsvc.conf

hosts = local, bind4

> Set the environment variables

Edit: /etc/environment

# Fix for not properly displaying with smitty on the tmux 
TERM=xterm

其他管理工作

- 掛載 CD ISO 檔

修改qemu 啟動參數 -cdrom /path/to/your-cd.iso

qemu-system-ppc64 -cpu POWER8 \
  -machine pseries -m 4096 -serial mon:stdio \
  -drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
  -device virtio-scsi-pci,id=scsi \
  -device scsi-hd,drive=drive-virtio-disk0 \
  -cdrom $PWD/AIX72.iso \
  -net nic -net tap,script=no,ifname=tap0 \
  -prom-env "boot-command=boot disk:" \
  -nographic

AIX 掛載指令

mount  -v  cdrfs  -o  ro  /dev/cd0  /mnt
- 增加第2顆虛擬硬碟

在 Linux 主機:新增 5G 虛擬磁碟 hdisk1.qcow2

cd aix72VM
qemu-img create -f qcow2 hdisk1.qcow2 5G

修改啟動指令,新增兩行參數

-drive file=hdisk1.qcow2,if=none,id=drive-virtio-disk1 \
-device scsi-hd,drive=drive-virtio-disk1 \

完整啟動參數

qemu-system-ppc64 -cpu POWER8 \
  -machine pseries -m 4096 -serial mon:stdio \
  -cdrom $PWD/AIX72.iso \
  -device virtio-scsi-pci,id=scsi \
  -drive file=hdisk0.qcow2,if=none,id=drive-virtio-disk0 \
  -device scsi-hd,drive=drive-virtio-disk0 \
  -drive file=hdisk1.qcow2,if=none,id=drive-virtio-disk1 \
  -device scsi-hd,drive=drive-virtio-disk1 \
  -net nic -net tap,script=no,ifname=tap0 \
  -prom-env "boot-command=boot disk:" \
  -nographic -smp 2

在 AIX 主機:檢視硬碟 hdisk1

root@aixvm:> lspv
hdisk0          00000000375ffb46                    rootvg          active
hdisk1          none                                None

root@aixvm:> lsdev -Cc disk
hdisk0 Available 00-10 MPIO Other Virtio SCSI Disk Drive
hdisk1 Available 00-10 MPIO Other Virtio SCSI Disk Drive

root@aixvm:> lscfg -vpl hdisk1
  hdisk1           qemu_virtio-scsi-pci:0000:00:02.0-LW_0  MPIO Other Virtio SCSI Disk Drive

        Manufacturer................QEMU
        Machine Type and Model......QEMU HARDDISK
        Part Number.................
        ROS Level and ID............322E352B
        Serial Number...............
        EC Level....................
        FRU Number..................
        Device Specific.(Z0)........00000512FA000012
        Device Specific.(Z1)........
        Device Specific.(Z2)........
        Device Specific.(Z3)........
        Device Specific.(Z4)........
        Device Specific.(Z5)........
        Device Specific.(Z6)........


  PLATFORM SPECIFIC

  Name:  disk
    Node:  disk
    Device Type:  block
- 增加 vCPU

預設 QEMU 只有 1 vCPU,要改善 AIX 的效能,可以視硬體等級增加更多 vCPU。

qemu-system-ppc64 啟動參數加上

-nographic -smp 2,sockets=2,cores=1,threads=1
- 增加虛擬網卡裝置

qemu-system-ppc64 啟動參數設置兩個虛擬網卡

-net nic \
-net nic \
-net tap,script=no,ifname=tap0 \

如果要榜定 mac addr.

-net nic,macaddr=56:44:45:30:31:31 \
-net nic,macaddr=56:44:45:30:31:32 \
-net tap,script=no,ifname=tap0 \

References