PowerPC64 환경에서 CentOS7

Ubuntu 환경 위에서 qemu-system-ppc를 통해 CentOS 7을 실행한다.

하루를 삽질했다…ㅠ

1. 설치

1) CentOS7 minimal 다운로드

ppc 아키텍쳐 버전의 CentOS7은 다음 사이트에서 다운 받는다.

http://isoredirect.centos.org/altarch/7/isos/ppc64/

원하는 미러 사이트에서 CentOS-7-ppc64-Minimal-1908.iso을 내려 받으면된다.

나는 http://mirror.xtom.com.hk/centos-altarch/7.7.1908/isos/ppc64/ 이 미러에서 받았다. 가장 빨랐다.

2) qemu 설치

  • qemu 설치

    sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-bin -y
    
  • ppc용 설치

    sudo apt install qemu-system-ppc openbios-ppc -y
    

3) 브릿지 설정

  • 설치

    sudo apt install bridge-utils uml-utilities -y
    
  • 브릿지 설정

    브릿지 할 인터페이스는 enp3s0를 기준으로 함

    # 브릿지 br0 인터페이스 생성
    sudo brctl addbr br0
      
    # enp3s0의 IP 클리어
    sudo ip addr flush dev enp3s0
      
    # br0를 enp3s0와 브릿지
    sudo brctl addif br0 enp3s0
      
    # tap 인터페이스 생성
    sudo tunctl -t tap0 -u `whoami`
      
    # br0를 tap0와 브릿지
    sudo brctl addif br0 tap0
    
  • 인터페이스 활성화

    ifconfig enp3s0 up
    ifconfig tap0 up
    ifconfig br0 up
    
  • 브릿지 확인 및 br0에 ip 할당

    brctl show && sudo dhclient -v br0
    

4) 가상 디스크 생성

가상 디스크를 생성한다. qcow2 방식의 20G로 생성한다.

qemu-img create -f qcow2 powerpc32.img 20G

5) VNC 클라이언트 설치

윈도우의 경우 TigerVNC를 사용하고 우분투인 경우 아래와 같이 설치한다.

Remmina는 기본적으로 ssh, vnc, rdp를 지원하는 원격 접속 클라이언트이다.

sudo apt install remmina -y

6) 에뮬레이터 실행

여러 가지 옵션으로 진행했기에 입맛에 맞춰 진행해야한다.

[진행]

  • 가상 디스크에 OS 설치 전

    sudo qemu-system-ppc64 \
    -m 1024 \
    -boot d \
    -hda powerpc32.img \
    -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device 
    -cdrom CentOS-7-ppc64-Minimal-1908.iso \
    -vnc 0.0.0.0:5 \
    -usbdevice tablet
    
  • 가상 디스크에 OS 설치 후

    OS 설치가 완료됬기 때문에 CD를 빼는 것 처럼 두 개의 옵션을 제거 한다. -boot, -cdrom

    sudo qemu-system-ppc64 \
    -m 1024 \
    -hda powerpc32.img \
    -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device e1000,netdev=mynet0,mac=52:54:00:fa:ce:11 \ 
    -vnc 0.0.0.0:5 \ 
    -usbdevice tablet
    

[옵션]

옵션이 너무나도 많기에 옵션을 정리해둔다.

-m 1024: 메모리 1024MB 할당, 최대 2047MB

-hda powerpc32.img: 특정 가상 디스크 파일을 가상 드라이브로 설정

-boot d: CD-ROM을 우선 부팅(c 인 경우 첫번째 가상 드라이브 우선 부팅)

-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device : 가상 네트워크 케이블(TAP)를 통해 QEMU 게스트 OS와 연결, 호스트에서는 브릿지된 tap0가 먼저 설정되어야 함

-vnc 0.0.0.0:5: 게스트 OS의 화면을 VNC로 중계, 0.0.0.0:5은 모든 네트워크로 포트 5번을 의미. 만약 127.0.0.1이라면 QEMU를 실행중인 호스트OS만 접근이 가능

-usbdevice tablet: 이중 커서 문제를 해결하기 위함, 이 옵션을 지정하지 않으면 VNC 연결시 호스트 OS 커서와 게스트 OS 커서 두 개가 생김

참고

qemu 설치: https://www.unixmen.com/how-to-install-and-configure-qemu-in-ubuntu/

네트워크 관련: https://gist.github.com/nstarke/c6593da117c459c18c255395211fa311

네트워크 관련: https://www.linux-kvm.org/page/Networking

ppc 구동 관련: https://gmplib.org/~tege/qemu.html

virt-manager 관련: https://moriskim.wordpress.com/2014/02/24/virtio_with_kvm/

커널, initrd 관련: https://gist.github.com/nstarke/c6593da117c459c18c255395211fa311

qemu 옵션들: https://wiki.gentoo.org/wiki/QEMU/Options#Boot_order