2018年12月25日 星期二

Sparc Solaris on QEMU

Reference:
Running Solaris 2.6 (sparc) on qemu-system-sparc in Linux x86_64 (Mint 19)
QEMU on Linux hosts
Documentation/Platforms/SPARC
Solaris/sparc under qemu how-to
QEMU how to setup Tun/Tap + bridge networking
Configuring Guest Networking
QEMU/Networking
[Linux KVM] Linux KVM concept - Networking

QEMU 可以模擬其他種類的 CPU。
實測可以模擬 Sparc,但是 Sparc64 還做不出來。
模擬 Sparc CPU 我只做出 SunStation 5,測試其他機型也做不出來....

主要步驟:
  1. 安裝 CentOS 7.6
  2. 安裝 QEMU 3.1
  3. 透過 QEMU 安裝 Solaris
  4. 設定 CentOS network bridge 讓 Solaris 連外
  5. 啟動 Solaris
安裝 CentOS 7.6
  • 安裝時選擇 server with GUI,設定 static IP,disable security profile
  • 安裝後關閉 firewall,方便測試網路設定
    • systemctl stop firewalld
    • systemctl disable firewalld
    • vi /etc/selinux/config; SELINUX=disabled
    • setenforce 0
  • 安裝需要的軟體
    • yum install net-tools
    • yum install git glib2-devel libfdt-devel pixman-devel zlib-devel
    • yum install libaio-devel libcap-devel libiscsi-devel
安裝 QEMU 3.1
透過 QEMU 安裝 Solaris
  • download Solaris5.6 and ss5.bin (BIOS)
  • tar zxvf sol26.tar.gz
  • qemu-img create -f qcow2 disk.img 36G   # create disk file
  • 執行 qemu,指定用光碟開機

qemu-system-sparc -L . -m 128 -M SS-5 -bios ss5.bin \
  -drive file=disk.img,bus=0,unit=0,media=disk \
  -drive file=solaris-2.6-sparc.iso,bus=0,unit=6,media=cdrom \
  -display vnc=:1
  • connect to qemu VM by vncviewer (qemu-host:1)
  • boot to single user mode 指令:boot cdrom:d -vs

  • format disk 指令:format


  • select disk 0
  • disk type: other
  • cylinders: 24620
  • heads: 27
  • sectors/track: 107
  • disk type name: Qemu36GB
  • label disk 兩次,quit,reboot
  • 用 cdrom 開機,指令:boot cdrom:d
  • 開始安裝 Solaris
  • 安裝的最後一個畫面要注意!選 Manual Reboot
  • vi /a/etc/system
  • add set scsi_options=0x58
  • reboot
  • ok mode 指定硬碟開機指令: boot disk0:
  • 如果安裝其他版本的 Solaris 需要第二片光碟,用 Ctrl+C跳出qemu,再執行指令
qemu-system-sparc -L . -m 128 -M SS-5 -bios ss5.bin \
  -drive file=disk.img,bus=0,unit=0,media=disk \
  -drive file=sol-9-u7-sparc-v2.iso,bus=0,unit=6,media=cdrom \
  -display vnc=:1


設定 CentOS network bridge 讓 Solaris 連外
  • 新增 bridge 和 tap 讓 Solaris 網路卡可以連出來
  • CentOS 網路卡名稱可以用 ifconfig -a 查看 (Ex: enp0s25)
  • Solaris 開機前先執行以下的 script 設定 network bridge
  • CentOS 的 IP:192.168.10.178,Solaris 的 IP:192.168.10.177
ip link add br0 type bridge   # 新增 bridge 虛擬網卡
ip link set enp0s25 master br0   # 把 CentOS 實體網卡加入 bridge
ifconfig br0 up promisc   # 設定 br0 為 promiscuous mode
ifconfig enp0s25 0.0.0.0
ifconfig br0 192.168.10.178 netmask 255.255.255.0   # 把實體網卡的 IP 給 br0
ip tuntap add tap0 mode tap   # 新增 tap 虛擬網卡
ifconfig tap0 up promisc    # 設定為 promiscuous mode
ip link set tap0 master br0    # 把 tap0 加入 bridge
sysctl -w net.ipv4.ip_forward=1   # 讓 CentOS 可以 routing
route add -host 192.168.10.177 dev tap0   # 把 Solaris IP 送到 tap0


啟動 Solaris
  • 設定 tap0 的 MAC address,執行指令 (不會停在 ok mode,會直接開 Solaris)
qemu-system-sparc -L . -m 256 \
  -drive file=disk.img,bus=0,unit=0,media=disk \
  -net nic,macaddr=DE:AD:BE:EF:52:08 -net tap,ifname=tap0,script=no,downscript=no \
  -display vnc=:1


Update:
網路用promiscuous bridge mode,所以不適合放到VMware上。
如果要放到VMware必須開 promiscuous mode。

Update 2019/1/2:
安裝為 SunStation 20 的方法
但每次開機會停在 OK mode。
這一篇提到可以用 expect 試試看。


沒有留言:

張貼留言