Upload
ryo-onodera
View
440
Download
2
Embed Size (px)
Citation preview
2
NetBSD とは ?
➢ BSD (Berkeley System Distribution) の系統のオペレーティングシステムの一つ。
➢ 多くのアーキテクチャーに移植されているのが特徴。➢ Alpha, ARM, MIPS, PowerPC, m68k, 32/64-bit Sparc, SuperH, x86, x86_64, VAX
➢ OrenRISC 1000, RISC-V, 64-bit ARM とかもあるが…
➢ x86_64 アーキテクチャーで動くものは、 NetBSD/amd64 と呼ばれている。
3
Google Compute Engine とは ?
➢Google の提供する Google Cloud Platform の一つ。
➢IaaS (Infrastructure as a Service) 。➢VirtIO による準仮想化された仮想マシンが提供されます。
➢VirtIO に対応していないオペレーティングシステムは動かせないっぽい。
➢つまり、「遅くて良いので完全仮想化を使う」のは無理。
➢300 ドルまたは 60 日間の無料体験が可能 (2016-01-10 現在 ) 。➢標準では、各種 Linux distribution と Windows Server のイメージが提供されています。
4
NetBSD と Google Compute Engine
➢vioscsi(4) と言うのが NetBSD current にコミットされ
た。 Google Compute Engine にはこれが必須でした。
➢FreeBSD では、 virtio_scsi(4) がこれに相当するように思います。
10.0 以降含まれているようです。
5
Google Cloud SDK の導入と設定
➢pkgsrc/net/py-google-cloud-sdk から Google Cloud SDK をイン
ストールします。これは Python スクリプトです。
➢私は Python 2.7.11 で実行しました。
➢ウェブブラウザーをインストールします。➢私は Firefox 43.0.4 を使いました。 pkgsrc/www/firefox からインストールでき
ます。 Webkit ベースなものでも良いはずですが試してはいません。
➢/usr/pkg/py27-google-cloud-sdk/bin/gcloud auth login を実行します。
➢Firefox が立ち上がり、ユーザー認証の後、紐付けされます。
6
プロジェクトの作成とディスクイメージの準備
➢gcloud config set project netbsd-79925 のようにしてプロジェクトを作ります。
➢https://cloud.google.com/compute/docs/quickstart が参考になります。インスタンスは立ち上げる必要はありません。
➢NetBSD/amd64 current のディスクイメージを用意します。
➢cd /usr/src && ./build.sh release && ./build.sh live-image のようにすると、 NetBSD-7.99.25-amd64-live-sd0root.img が生成されます。
➢./build.sh live-image は、 gzip されたものを最終的に生成しますが、再度展開するのは面倒なので、中間生成物を使います。
➢NetBSD-7.99.24-amd64-live-wd0boot.img というのも作られますが、こちらは root ファイルシステム
がwd0 なので使えません。
➢これを作業ディレクトリーに disk.raw と言うファイル名でコピーしてきます。
7
ディスクイメージの調製
➢sudo vnconfig vnd0 disk.raw を実行して、 /dev/vnd0 にdisk.raw を割り当てます。
➢sudo mount /dev/vnd0 /mnt && sudo chroot /mnt /bin/sh としてディスクイメージの中身を調整します。
➢vioif0 でDHCP クライアントとして働くようにする。
➢/etc/rc.conf に ifconfig_vioif0=dhcp を追加する。
➢ユーザーを追加して、 ssh 公開鍵を配置する。
➢sshd が自動的に起動するようにする。
➢/etc/rc.conf に sshd=yes を追加する。
➢sudo umount /mnt && sudo installboot -e -o console=com0 /dev/rvnd0a を実行して、シリアルコンソールに起動メッセージを出すように設定します。
➢tar -Sczf netbsd79925.tar.gz disk.raw を実行して、ディスクイメージの雛形を作成します。
8
ディスクイメージのアップロードと仮想マシンの作成
➢Google Cloud Storage またはhttps な場所にnetbsd79925.tar.gz を置きます。
➢Google Cloud Storage にはgsutil コマンドでもウェブインターフェイスからでもアップロードできます。
➢gsutil cp netbsd79925.tar.gz gs://netbsd-compute-engine/netbsd79925.tar.gz
➢Google Cloud Storage に置いた場合には、gcloud compute images create netbsd79925 --source-uri gs://netbsd-compute-engine/netbsd79925.tar.gz のようにし仮想マシン生成用イメージを作成します。
➢netbsd79925 イメージをベースに仮想マシンを作成し起動させます。
➢gcloud compute instances create instance-1 --image netbsd79925 --zone us-east1-b --machine-type f1-micro➢自動的に起動します。
➢gcloud compute instances get-serial-port-output instance-1 --zone us-east1-b のようにして、ブートメッセージを得ることができます。ウェブインターフェイスからもダウンロードできます。
➢しかし、シリアルコンソール経由で操作をすることはできません。 ssh 経由で操作しないといけません。
9
起動メッセージ (1/2)
(snip)
pci0 at mainbus0 bus 0: configuration mode 1
pcib0 at pci0 dev 1 function 0: vendor 8086 product 7110 (rev. 0x03)
piixpm0 at pci0 dev 1 function 3: vendor 8086 product 7113 (rev. 0x03)
piixpm0: SMBus disabled
virtio0 at pci0 dev 3 function 0
virtio0: Virtio SCSI Device (rev. 0x00)
vioscsi0 at virtio0: Features: 0x0
vioscsi0: qsize 8192
scsibus0 at vioscsi0: 253 targets, 1 lun per target
virtio0: interrupting at ioapic0 pin 11
virtio1 at pci0 dev 4 function 0
virtio1: Virtio Network Device (rev. 0x00)
vioif0 at virtio1: Ethernet address 42:01:0a:f0:00:02
vioif0: Features: 0x30020<CTRL_VQ,STATUS,MAC>
virtio1: interrupting at ioapic0 pin 11
isa0 at pcib0
10
起動メッセージ (2/2)
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com0: console
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
attimer0 at isa0 port 0x40-0x43
pcppi0 at isa0 port 0x61
midi0 at pcppi0: PC speaker
sysbeep0 at pcppi0
attimer0: attached to pcppi0
acpicpu0 at cpu0: ACPI CPU
sd0 at scsibus0 target 2 lun 0: <Google, PersistentDisk, 1> disk fixed
sd0: fabricating a geometry
sd0: 2048 MB, 2048 cyl, 64 head, 32 sec, 512 bytes/sect x 4194304 sectors
sd0: fabricating a geometry
(snip)
11
おわり
https://creativecommons.org/licenses/by/4.0/
Copyright (c) 2016 Ryo ONODERA
CreativeCommons Attribution 4.0 International (CC BY 4.0)