ABCコンパイラのコンパイル方法

オフィシャルサイトから手順に合わせてインストールする。

Antがインストールされていなければインストールして使えるようにする。

JAVA_HOMEをjava1.6のパスにしておく

1.Polyglotをオフィシャルサイトからダウンロードする

    • lib内にjava_cup.jarとJFlex.jarを保存しておく。(自分でダウンロードしてくる。)
    • ant polyglot-jar を実行する。
    • lib/polyglot.jarが生成されているのを確認する。

2. Jasminをオフィシャルサイトからダウンロードする

    • cp ant.settings.template ant.settings を実行する。
    • ant.settingsファイルを開き、java_cup.jarにjava_cup.jarのある場所を指定する。
    • ant を実行する。
    • lib内にjasminclasses-(指定したバージョン).jarファイルが作成された確認する。
    • classesフォルダに移動し、jar -cvf ../lib/jasminclasses-sable-nocup.jar jas/ jasmin/ scm/ を実行する。
    • lib内にjasminclasses-sable-nocup.jarファイルが作成されたか確認する。

3. Sootをオフィシャルサイトからダウンロードする

    • cp ant.settings.template ant.settings を実行する。
    • ant.settingsファイルを開き、それぞれにjarファイルのある場所を指定する。eclipse.locにはeclipseフォルダを指定する(jarファイルがたくさん入っているフォルダだったはず。)。soot.versionとrelease.locはデフォルトでいい。
    • ANT_OPTS=-Xmx256 を ~/.antrcファイルに書き込んで保存する。
    • ant を実行する。
    • lib内にsootclasses-(指定したバージョン名).jarファイルが作成されたか確認する。

4. abc-1.3.0-src.tar.gzをオフィシャルサイトからダウンロードする

    • cp ant.settings.template ant.settings を実行する。
    • ant.settingsファイルを開き、それぞれにjarファイルのある場所を指定する(ないものはオフィシャルサイトからダウンロードする)。
    • 後で拡張できているか確認するためにMain.jarにSystem.out.printlnで目印を書いておくとあとでわかりやすい。
    • ant jars を実行する。
    • lib内にjarファイルが作成されたか確認する。

5. abc-1.3.0-bin.tar.gzをオフィシャルサイトからダウンロードする

    • JAVA_HOMEをjava1.7のパスに変更しておく。
    • ABC_HOMEを指定しておく。
    • /bin/csh abc.bat を実行する。(doc内にマニュアルが載っているので参考にする。)
    • lib内のjarファイルを4で作成されたjarファイルのものと置き換える。
    • /bin/csh abc.bat を実行する。(doc内にマニュアルが載っているので参考にする。)
    • 自分が書いた目印が反映されているか確認する。

以上です。

Xenをインストールし,準仮想化

オフィシャルサイトに従い,Ubuntu Server 14.04 64bitを使ってUbuntu 14.4をdomUとしてインストールする

1. Ubuntu Serverをインストールする

    • 普通にインストールよいが,パーティションのところで”Guided  - use the entier disk and setup LVM”を選択し,Dom0(つまり今インストールしているUbunu Server)の領域を最小限サイズにして残りをLVMボリュームとして残しておく.これを失敗するとXenの中でdomUに割り当てる領域が確保できなくなる.
    • インストール後,以下のコマンドでaptをアップデート.
      • $sudo apt-get update
      • $sudo apt-get upgrade

2. Xenのインストール

    • 以下のコマンドを実行
      • sudo apt-get install xen-hypervisor-amd64
      • sudo reboot
    • うまくいっていれば,リブート後,ブートローダーでXenのメニューが出てくる.また,ブートの途中のメッセージが変わる.
    • ログイン後,以下のコマンドで確認
      • $sudo xl list
    • これで”Domain-0″が見えていれば,今起動しているのはXenからdom0として起動したUbuntuということになる.

3. ネットワークの設定

以下の前提で話を進める.

      • ホスト側物理IP:172.21.33.20
      • ホスト側物理インタフェース:em1
      • デフォルトゲート: 172.21.33.1
    • bridge-utilsのインストール
      • $sudo apt-get install bridge-utils
      • ただし,これは既にインストールされているかもしれない.
    • ブリッジインタフェースの定義(重要). xenbr0という仮想インタフェースを作成し,em1でブリッジする
        • $sudo vi /etc/network/interfaces

      # The loopback network interface
      auto lo
      iface lo inet loopback
      # The primary network interface
      auto em1 xenbr0       –> xenbr0を加える
      iface em1 inet static  –> ホスト側インタフェース(em1)の設定
      address 172.21.33.20
      netmask 255.255.255.0
      network 172.21.33.0
      broadcast 172.21.33.255
      gateway 172.21.33.1
      dns-nameservers 172.21.33.16
      dns-search fd.ise.shibaura-it.ac.jp

      まちがい.これは行う必要はない.

      iface xenbr0 inet static   –> ブリッジインタフェースの作成.
      address 172.21.33.22
      netmask 255.255.255.0
      network 172.21.33.0
      broadcast 172.21.33.255
      gateway 172.21.33.1
      dns-nameservers 172.21.33.16
      bridge_ports em1      –> em1にこのインタフェース(xenbr0)を加える.
      iface em1 inet manual   –> この意味は不明.これは,xenbr0を実行する物理的なインタフェースがem1で,そこにはIPはふらないのでこの設定が必要.

    • 定義した変更を反映
      • $sudo ifdown em1
      • sudo ifup xenbr0
      • sudo ifup em1
    • ifconfigなどでxenbr0が作成され,IPが付いているかを確認する

4. 論理ボリュームの作成

    • 論理ボリュームブループ(vgs)に論理ボリューム(lv)を作成する.まず,論理ボリュームグループを確認する
      • $sudo vgs

                                      Screen Shot 2015-05-15 at 09.17.49

                                      この例ではxen-vgという論理ボリュームグループが確認できる

    • 論理ボリュームをlv_vm_ubuntuという名前で作成する
      • $sudo lvcreate -L 30G -n lv_vm_ubuntu /dev/xen-vg
    • 作成された論理ボリュームを確認する
      • $sudo lvs

Screen Shot 2015-05-15 at 09.25.43

                                     この例では,lv_vm_ubuntuという名前で30G確保されていることがわかる.

5. ゲストのインストール

    • domUにインストールするイメージを取得する
      • $sudo mkdir -p /var/lib/xen/images/ubuntu-netboot/trusty14LTS
      • $cd /var/lib/xen/images/ubuntu-netboot/trusty14LTS
      • $wget http://ftp.riken.jp/Linux/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/vmlinuz
      • $wget http://ftp.riken.jp/Linux/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/xen/initrd.gz
    • 設定ファイルの準備.Xenでは,インストールイメージの指定,CPUの数,メモリ量などを設定ファイルに記述し,xlコマンドを使ってインストールや起動を行う.以下は,ゲスト名dom0, 仮想cpu2, メモリ1024MBの設定を行う例.設定ファイルはubun1.cfg
      • $cd /etc/xen
      • $sudo cp xlexample.pvlinux ubud1.cfg
      • $vi ubud1.cfg

# Guest name
name = “dom1″  –> ゲストのホスト名

# Kernel image to boot
kernel = “/var/lib/xen/images/ubuntu-netboot/trusty14LTS/vmlinuz” –>ダウンロードしたイメージの場所

# Ramdisk (optional)
ramdisk = “/var/lib/xen/images/ubuntu-netboot/trusty14LTS/initrd.gz” –> ダウンロードしたイメージの場所
#bootloader = “/usr/lib/xen-4.4/bin/pygrub”                      –> 作成したイメージから起動する場合にはコメントを外す

# Kernel command line options
extra = “root=/dev/xvda1″   –> 意味不明

# Initial memory allocation (MB)
memory = 1024                      –> メモリサイズ

# Maximum memory (MB)
# If this is greater than `memory’ then the slack will start ballooned
# (this assumes guest kernel support for ballooning)
#maxmem = 512

# Number of VCPUS
vcpus = 2                                 –> CPUの数

# Network devices
# A list of ‘vifspec’ entries as described in
# docs/misc/xl-network-configuration.markdown
vif = [ 'bridge=xenbr0' ]       –> ゲストが利用する仮想インタフェースの名前.
disk = [ '/dev/xen-vg/lv_vm_ubuntu,raw,xvda,rw' ]  –> ディスクイメージの設定.xen-vmとlv_vm_ubuntuを指定

    •  ゲストをインストールするときにはkernel, ramdiskを指定し,インストールして作成したイメージから起動するときにはbootloaderのコメントを外し,kernel, ramdiskをコメントアウトする
    • インストールの実行.編集した設定ファイルを指定してゲストを起動する.今回はインストールになる.
      • sudo xl create -c /etc/xen/ubud1.cfg
      • インストールの途中,インターフェースの指定では,ホストと同一ネットワークを指定し,IPアドレスは変更する.
    • インストールが終わると再起動されるが,そのままホストのコンソールに戻される.動いているかどうか確認するには以下のコマンドを実行
      • xl list
      • これでDomain-0だけでなく,dom1(指定した名前)のゲストが見えるはず

6. ゲストの起動と確認

    • ゲストを落とす
      • $sudo xl shutdown ubud1
    • ゲストをインストールしたイメージから起動する
      • 前述したように,設定ファイルのbootloaderのコメントを外し,kernel, ramdiskをコメントアウトする
      • $sudo xl create -c /etc/xen/ubud1.cfg
    • ゲストにリモートからログイン
      • ホストにログインし,ゲストのIPを指定してsshなどを行ってみる.
      • $ssh 172.21.33.22
      • ログインできていたら成功

7.  2台目以降の仮想マシン

これから仮想マシンを増やすときには,論理ボリュームを作成,設定ファイルの作成し,xl createで作ればよい.ブリッジインタフェースは使いまわすこと!

8. domUをバックアップして再利用

//スナップショットを取る(-s)
lvcreate -L 5G -s -n ‘pracb1_2′ /dev/xen-vg/prac1_2

//イメージを作る
dd if=/dev/xen-vg/pracb1_2 of=/home/hiroaki/snapshot.img bs=1k

//消す
lvremove /dev/xen-vg/pracb1_2

//論理ボリュームを作る
lvcreate -L 5G -n ‘pracb1_2′ /dev/xen-vg

//イメージから戻す
dd if=/home/hiroaki/snapshot.img of=/dev/xen-vg/pracb1_2 bs=1k