はじめに
Solaris 10 と 11 の動作検証環境を仮想マシン KVM 上に作成してみました。
元々 macOS の VirtualBox で Solaris の仮想マシンを動かしていたのですが、遅まきながら macOS 13 (Ventura) にアップデートしたら、VirtualBox 6 系が非対応で、最新の VirtualBox 7 系にアップデートしたら、(Solaris 10 は動くのに)Solaris 11 が動かなくなって、どちらも Oracle 製品のくせになんでやと思いながら、諦めて Ubuntu 22.04 の KVM で Solaris を動かすことにしたという経緯です。ちなみに Ubuntu 23.04 がリリースされてるのに 今更 22.04 なのは LTS だからです(頻繁に物理マシンの OS をアップデートしたくない人)。
Solaris を仮想マシン上で動かすのは難しい印象で Windows 10 の Hyper-V でも Solaris 動かなかったんですよね(Windows もまだ 11 にアップデートしていない)。今思うと最初から KVM で構築していればよかったのですが、検索しても KVM で Solaris が動くのかどうかはっきりせず、試すのが面倒で放置していたのですが、やってみたら思ったよりもすんなり動きました。
前提
基本コンセプトは「最小の設定項目で実現する」です。
- ホストOS: Ubuntu Server 22.04.2 LTS
-
virsh
やvirt-install
コマンドを使い可能な限り CLI で作業を行う - ゲスト OS のインストール時は VNC 接続で行う
-
- ゲストOS: Solaris 10 1/13 と Solaris 11.4.42 CBE
- ネットワーク内の他のマシンから接続できるようにブリッジ接続にする
- ゲストOSのIPアドレスはルータのDHCPサーバーから固定のIPアドレスを割り当てる
Ubuntu マシンは以前は Windows マシンが壊れたときに代替のデスクトップマシンとして使えるように Desktop 版をインストールしていたのですが、Mac マシンもあるし使うのはいつも ssh 経由の CLI のみで GUI デスクトップを使うことはほとんどなかったので、少し前に更新を兼ねて Server 版に入れ替えました。
というか Ubuntu 18.04 から普通に do-release-upgrade
したら起動しなくなったんですよ。 FakeRAID 周りが変更されていて SSD が認識しなくなり・・・、こちらには重要なデータは入ってなかったので再インストールしました。
ホスト OS (Ubuntu) の設定
Ubuntu 22.04.2 Server を再インストールしているので、ホスト OS の環境設定から行っています。ホスト OS 側の設定は、一般的な仮想マシンサーバーとしての設定で Solaris に関連するものはありません。
KVM 関連のパッケージのインストール
$ sudo apt install qemu-kvm libvirt-daemon-system # KVM サーバー関連
$ sudo apt install libvirt-clients virtinst libosinfo-bin # CLI ツール
$ sudo apt install virt-top bridge-utils guestfs-tools # 便利ツール(なくても良い)
IPv6 の無効化
IPv6 のアドレスは長くて覚えられず、セキュリティに関する追加の考慮事項が増えてしまうので無効にしています。IPv6 を無効にしない場合はこの設定は不要です。IPv6 を無効にする方法はいくつかありますが、今回は grub の設定で行うことにしました。
GRUB_CMDLINE_LINUX="ipv6.disable=1"
設定ファイルの変更を有効にするために以下のコマンドを実行し再起動します。
$ sudo update-grub
ネットワーク(ブリッジ)の設定
Ubuntu では 17.10 から Netplan を使ったネットワーク設定が行われています。Ubuntu のインストール時にインストーラー(subiquity) によって 00-installer-config.yaml
が生成されているのでそれを書き換えます。新たに別のファイルを追加しても良いのですが、内容がそれほど多くもなく頻繁に変更するようなものでもないので、今回は生成された設定ファイルを以下のように変更しました。Netplan の設定項目については Netplan documentation を参照してください。
network:
version: 2
ethernets:
eno1:
dhcp4: true # IP アドレスは DHCP サーバー側で設定する
optional: true # ネットワーク未接続時に起動が遅くなることの回避
bridges:
br0:
interfaces:
- eno1
dhcp4: true
optional: true
設定ファイルに IP アドレスをごちゃごちゃ書きたくないので、DHCP サーバーで一元管理しており IPアドレスを MAC アドレスから静的に割り当てています。optional
はマシン起動時にネットワークケーブルが抜けていたりすると、ネットワーク設定のタイムアウトで起動が遅くなるために入れています。上記の設定ファイルには省略していますが、実はこのマシンはネットワークアダプタが二つ付いていて、片方はケーブルを接続していないので必ずタイムアウトで起動が遅くなってしまうのです。eno1 は通常はケーブルが接続されているからなくてもよいのですが、マシンのメンテナンスでケーブルを外した状態で起動したりする場合に備えています。
ブリッジの設定に関する注意点ですが、デフォルトでは元のネットワークインターフェース (eno1) とは異なる IP アドレスがブリッジ (br0) に割り当てられてしまいます。これはブリッジに元のネットワークインターフェースとは異なる MAC アドレスが割り当てられてしまうからです。対策の一つは br0 の MAC アドレスを元のネットワークインターフェースの MAC アドレスと同じに設定することですが、設定ファイルに MAC アドレスを書きたくなかったので、元のネットワークインターフェースの MAC アドレスをブリッジに継承させることにしました。
ブリッジに新しい MAC アドレスを割り当てる動作は systemd で行われています。この動作に関するデフォルトの設定ファイルは /usr/lib/systemd/network/99-default.link
ですが、このファイルはパッケージに含まれているファイルなので直接編集してはいけません。パッケージの更新時などで置き換えられてしまう場合があります。正しいやり方は /etc
以下に上書き用の設定ファイルを作成します。今回は設定ファイル全体を変更するのではなく、一部の項目のみを変更するので差分のドロップインファイルを新規作成しています。元の設定ファイルの名前に .d/任意の名前.conf
をつけた名前が、元の設定ファイルのドロップインファイルとして扱われます。
[Link]
MACAddressPolicy=none
元の設定ファイルと合わせて正しくファイルが認識されているかは、systemd-analyze cat-config
で確認することができます。
$ systemd-analyze cat-config systemd/network/99-default.link
# /usr/lib/systemd/network/99-default.link
(内容は省略)
# /etc/systemd/network/99-default.link.d/mac-address-policy.conf
[Link]
MACAddressPolicy=none
正しくブリッジが作成されていれば以下のような出力が得られるはずです。今回作成したブリッジは br0
です。virbr0
は KVM がデフォルトで作成する NAT 用のブリッジでそのまま残していますが、おそらく私は使用しないでしょう。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.e840f20bbcb1 no eno1
virbr0 8000.525400b29734 yes
ゲスト OS 用の VNC サーバーの設定 (qemu.conf)
ゲスト OS の通常利用には ssh を利用しますが、最初のインストール時となにかのメンテナンスで使用するための VNC の標準設定を /etc/libvirt/qemu.conf
に以下の設定を加えました。この内容は私が必要だったので設定したもので必要ない人には不要です。またここに設定を加えなくても仮想マシン側の設定で行うこともできます。
# メンテナンス用に使う仮想マシンではVNC接続用のデフォルトのパスワード
# 動作検証用の仮想マシンで自分しか使わないので共通のパスワードで十分
vnc_password = "password" # 実際には自分が決めたパスワード
# VNCで使用するポート番号をデフォルトの 5900 ではなく 5901 以上に変更
# 5900 は別の用途で使用しているのでスキップする
remote_display_port_min = 5901
qemu.conf
を変更した後に再起動する
$ sudo systemctl restart libvirtd
なお VNC を使うのはメンテナンス時のみなのでポート番号は自動割当にし、必要なときにその都度調べることにします。ゲスト OS に割り当てられた VNC サーバーのポート番号を調べるには virsh vncdisplay
を使います。以下の場合、VNC サーバーのポート番号が 5900 を加えた 5902 になります。
$ virsh vncdisplay solaris11
:2
ホストOS再起動時のゲストOSの停止と起動の設定 (libvirt-guests)
ホスト OS を再起動する時にゲスト OS の起動状態を考えたくないので、ホスト OS の停止時に自動的にゲスト OS をサスペンドし、ホスト OS の起動時にゲスト OS を復旧するように変更しました。設定ファイル /etc/default/libvirt-guests
に以下の項目を追加(修正)しています。
ON_BOOT=start
ON_SHUTDOWN=suspend
仮想マシンの作成とゲストOSのインストール
仮想マシンは virt-install
コマンドを使って作成します。ゲスト OS は --cdrom
指定してをISO イメージからインストールし、インストール作業は VNC で接続して行います。これが Linux であれば --location
を指定してディレクトリツリーや URL からシリアルコンソール経由でインストールできるのですが、Linux 以外だと頑張ればできるのかもしれませんが大変そうです。VNC を使うのはインストール時と想定外の問題が出た時のメンテナンスのときぐらいなので諦めます。
まずゲスト OS の ISO イメージを置くディレクトリを決めます。場所はどこでも良いのですが libvert のプロセスがアクセスできる必要があります。 Ubuntu では以前はホームディレクトリのデフォルトのパーミッションが 755 だったのが、Ubuntu 21.04 から 750 に変更されており、ホームディレクトリ以下に置いた ISO イメージを libvert のプロセスが読み取ることができません。/tmp
以下に置いたりすればよいのですが、この際 ISO イメージを置くディレクトリを作成することにします。というのも ISO イメージを置くディレクトリは libvert のストレージプールとして管理対象になってしまうからです。さすがに /tmp
ディレクトリをストレージプールとして扱いたくはないなあと言った所です。ISO イメージを置く場所は /var/isos
にしました。もちろんパーミッションは 755 です。あとは Solaris の ISO イメージを /var/isos
ディレクトリにおいて virt-install
コマンドを実行するだけです。
Solaris 11.4 のインストール
最新版である Solaris 11.4 のインストールは実に簡単です。
仮想マシンの作成
まず Oracle のサイトから Oracle Solaris 11.4 の ISO イメージをダウンロードます。現時点で 2018年8月にリリースされた 11.4.0 GA と、2022年2月に更新された 11.4.42 CBE の二つのバージョンが配布されています。バージョンについての詳細は「Solaris 10の延長サポート終了が2025年に伸びていた話とSolarisのバージョンのまとめ」を参照してください。インストールに必要なファイルは以下のとおりです。 Oracle Solaris 11.4.42 CBE のファイル名は分かりづらいのでダウンロードした後に変更しています。
-
Oracle Solaris 11.4.0 GA (2018年8月版)
- x86 Text Installer (742 MB)
- ファイル名:
sol-11_4-text-x86.iso
- solaris パブリッシャーのロケーションの初期値
http://pkg.oracle.com/solaris/release/
-
Oracle Solaris 11.4.42 CBE (2022年2月版)
- Oracle Solaris 11.4.42.111.0 Interactive Text Install ISO (x86)
for (Oracle Solaris on x86-64 (64-bit)), 890.5 MB - ファイル名
V1019840-01.iso
- → わかりやすく
sol-11_4_42-text-x86-V1019840-01.iso
に変更する
- → わかりやすく
- solaris パブリッシャーのロケーションの初期値
-
https://pkg.oracle.com/solaris/support/
(SRU用) - パッケージをインストールするにはサポート契約が必要
-
- Oracle Solaris 11.4.42.111.0 Interactive Text Install ISO (x86)
Solaris 11 は 11.3 まで Live イメージとテキストインストーラーがあったのですが、11.4 ではテキストインストーラーのみに変更されています。テキストインストーラーには GUI デスクトップは含まれておらず、必要な場合は OS のインストール後に pkg install solaris-desktop
でネットワークからインストールします。
通常は 11.4.42 CBE をインストールすると良いと思うのですが、solaris パブリッシャーのロケーションのデフォルトが support になっているので注意が必要です。これは SRU 用のロケーションでパッケージをインストールするのにサポート契約が必要になるので、無償で使う場合は release に切り替える必要があります(11.4.0 GA では最初から release です)。また 11.4.42 CBE はインストール時に 4GB ではメモリ不足になったので、多めのメモリを割り当てて(必要なければ)後から減らす必要があります。時間がかかりますが 11.4.0 GA をインストールしてからアップデートする方法もあります。具体的な方法については後述しています。
以下の方法でインストールします。11.4.0 GA、11.4.42 CBE どちらか好きな方を選んでください。もちろん両方インストールしても構いません。その場合は --name
を別々のものに変更してください。
# Solaris 11.4.0 GA の場合
virt-install --name sol11 --osinfo solaris11 \
--vcpus 1 --memory 4096 --disk size=20 --network bridge=br0 \
--cdrom /var/isos/sol-11_4-text-x86.iso \
--graphics vnc,listen=0.0.0.0,keymap=ja --noautoconsole
# Solaris 11.4.42 CBE の場合
virt-install --name sol11 --osinfo solaris11 \
--vcpus 1 --memory 6144 --disk size=20 --network bridge=br0 \
--cdrom /var/isos/sol-11_4_42-text-x86-V1019840-01.iso \
--graphics vnc,listen=0.0.0.0,keymap=ja --noautoconsole
# 参考 Solaris 11.3 の場合(ISO ファイル以外同じ)
virt-install --name sol11.3 --osinfo solaris11 \
--vcpus 1 --memory 4096 --disk size=20 --network bridge=br0 \
--cdrom /var/isos/sol-11_3-text-x86.iso \
--graphics vnc,listen=0.0.0.0,keymap=ja --noautoconsole
もし作成途中で失敗したり作り直したいときには、次のコマンドで削除できます。
# 起動している仮想マシンの強制停止と仮想マシン(データ含む)の削除
virsh destroy sol11; virsh undefine sol11 --remove-all-storage
インストール開始
Solaris 11.4 のインストーラーは簡素で簡単な説明に答えていくだけです。パーティションはデフォルトで、すべて /
に割り当ててくれるので、それでよければ何もする必要はありません。動作検証環境としては十分です。
インストール完了後
インストールが完了した時点で sshd
が起動しており、インストール時に一般ユーザーを作成したならば、ssh
でログインでき sudo
コマンドも使える状態になっています。Solaris に割り当てられた IP アドレスは ifconfig
コマンドで調べることができます(IP アドレスは下記の 10.0.0.131
。私は覚えやすくグループを作りやすいのでクラスAのプライベートIPアドレスを使用しています)。
$ ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
net0: flags=100001004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4,PHYSRUNNING> mtu 1500 index 2
inet 10.0.0.131 netmask ffff0000 broadcast 10.0.255.255
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
inet6 ::1/128
net0: flags=120002004841<UP,RUNNING,MULTICAST,DHCP,IPv6,PHYSRUNNING> mtu 1500 index 2
inet6 fe80::5045:ff:fe61:3ce1/10
11.4.42 CBE をインストールした場合は、パッケージをインストールできるように solaris パブリッシャーのロケーションを release に変更します。11.4.0 GA をインストールした場合は、必要なら 11.4.42 CBE にアップデートします。
# パブリッシャーの確認
$ sudo pkg publisher
PUBLISHER TYPE STATUS P LOCATION
solaris origin online F https://pkg.oracle.com/solaris/support/
# 11.4.42 CBE の solaris のパブリッシャーをreleaseに変更する
$ sudo pkg set-publisher -G '*' -g http://pkg.oracle.com/solaris/release/ solaris
# パッケージをインストールする方法
$ sudo pkg install git
# 11.4.0 GA から 11.4.42 CBE にアップデートする方法
$ sudo pkg update --accept
Solaris 10 1/13のインストール
Solaris 10 系がリリースされたのは 2005年1月31日です。最終バージョンの Solaris 10 1/13 でも 2013年2月と 10 年前なので今更インストールする意味はあまりないのでしょうが、現時点でまだサポートが切れておらず(延長サポートは 2025年まで)、今も Bourne シェルが /bin/sh
として使われている数少ない OS の一つで、POSIX シェルのベースとなった ksh88 が使える環境であるため、私にとってはシェルスクリプトの最も古い動作検証環境という点で重要な意味があります。
仮想マシンの作成
まず Oracle のサイトから Oracle Solaris 10 1/13 の ISO イメージをダウンロードし、/var/isos/sol-10-u11-ga-x86-dvd.iso
に保存します。そして次のコマンドでインストールを開始します。
virt-install --name sol10 --osinfo solaris10 \
--vcpus 1 --memory 4096 --disk size=20 --network bridge=br0 --video=qxl \
--cdrom /var/isos/sol-10-u11-ga-x86-dvd.iso \
--graphics vnc,listen=0.0.0.0,keymap=ja --noautoconsole
もし作成途中で失敗したり作り直したいときには、次のコマンドで削除できます。
# 起動している仮想マシンの強制停止と仮想マシン(データ含む)の削除
virsh destroy sol10; virsh undefine sol10 --remove-all-storage
--video
(ビデオデバイス)に関して少し注意点があります。Solaris 10 のデフォルトの vga
の場合、マウスカーソルの位置が VNC と仮想マシンの中の画面とでズレてしまいます。その結果画面の左上以外をクリックするのが困難になってしまいます。タブレットを追加すれば直るみたいな話をみたのですが、標準で追加されている状態で問題が発生しています。実際の所、私は GUI を使うことはほぼ無いのですが、このようなことを調べる人も少なそうなのでついでに回避方法を調べました。結論を言うと qxl
か virtio
を使えば良さそうです。それぞれ調べた結果を以下にまとめておきます。
video model | 症状 | video model | 症状 | |
---|---|---|---|---|
vga , vmvga
|
ずれる |
xen , vbox , gop
|
指定できない | |
qxl , virtio
|
問題なし |
bochs , ramfb
|
起動しない、画面が広い | |
cirrus |
実行時エラー | none |
vga として扱われる? |
LAN ケーブルに問題があったようです。qxl
でも virtio
でも時々一時的に画面が固まる症状が出ているのですが、これは私の環境の問題の可能性があり~ます(熱?で時々ネットワークが不調になるので)。
インストール開始
インストールを開始すると次のような画面になるので、一番上の「Oracle Solaris」を選択します。
GNU GRUB version 0.97 (639K lower 7 3144576K upper memory)
Oracle Solaris
Oracle Solaris Serial Console ttya
Oracle Solaris Serial Console ttyb (for 1x50, v6Ox and v65x)
Use the ↑ and ↓ keys to select which entry is highlighted.
Press enter to boot the selected 0S, ’e’ to edit the
commands before booting, or ’c’ for a command-line.
次の画面で 1 を選ぶと GUI(日本語可)によるインストールが可能です。ZFS を使いたい場合は 3 または 4 になるようです。3 を選ぶと GUI が起動した上でターミナル上でテキストインストーラー(日本語可)が動作し、4 を選ぶとテキストでのインストールになります。私は一番軽そうな 4 を選びましたが、どうもパーティションの設定メニューがおかしな挙動をしているような感じがするので 1 を使うのが簡単でしょう。1 の方が細かいカスタマイズもできるようです。
SunOS Release 5.10 Version Gener ic_147148-26 64-bit
Copyright (c) 1963, 2013, Oracle and/or its affiliates. All rights reserved.
Configuring devices.
1. Oracle Solaris Interactive (default)
2. Custom JumpStart
3. Oracle Solaris Interactive Text (Desktop session)
4. Oracle Solaris Interactive Text (Console session)
(Select option 3 or 4 to install a ZFS root file system)
5. Apply driver updates
6. Single user shell
Enter the number of your choice.
インストーラーの設定内容はありきたりなものですし、探せば他に解説しているところもあるので詳細は省略します。以下を参照してください。
簡単な注意点のみを羅列します。
- ネームサービスはおそらく「None」で良いと思います。
- 日本語設定のデフォルトは「EUC (ja_JP.eucJP)」です。「C.UTF-8」は無いようです。
- 日本語 UTF-8 を使う場合は明示的に「ja_JP.UTF-8」を追加する必要があります。
インストールパッケージの選択
インストールするパッケージは予め用意された構成から選びます。以下のインストール構成が用意されています(文章は「Solaris 10 10/09インストール ガイド(基本編)」からの引用です)。GUI インストールの場合はこの構成を元に細かいカスタマイズができるようです。
- 全体ディストリビューションと OEM サポート(推奨 6.8G バイト)
- 全体ディストリビューションのパッケージに加え、追加のハードウェアドライバが含まれています。これには、インストール時にシステムに存在していないハードウェアのドライバも含まれます。
- 全体ディストリビューション(推奨 6.7G バイト)
- 開発者システムサポートのパッケージに加え、サーバーに必要な追加のソフトウェアが含まれています。
- 開発者システムサポート(推奨 6.6G バイト)
- エンドユーザーシステムサポートのパッケージに加え、ソフトウェア開発用の追加のサポートが含まれています。ソフトウェア開発のサポートとして、ライブラリ、インクルードファイル、マニュアルページ、プログラミングツールなどが追加されています。ただし、コンパイラは含まれていません。
- エンドユーザーシステムサポート(推奨 5.3G バイト)
- ネットワークに接続された Solaris システムと共通デスクトップ環境 (CDE) の起動と実行に必要な最小限のコードを提供するパッケージが含まれています。
- コアシステムサポート(推奨 2.0G バイト)
- ネットワークに接続された Solaris システムの起動と実行に必要な最小限のコードを提供するパッケージが含まれています。
- 限定ネットワークシステムサポート(推奨 2.0G バイト)
- ネットワークサービスのサポートが限定された Solaris システムを起動および実行するために必要な最小限の コードを提供するパッケージが含まれています。Reduced Networking サポートは、テキストベースのマルチユーザーコンソールと、システム管理ユーティリティーを提供します。このソフトウェアグループを使用すると、システムでネットワークインタフェースを認識できますが、ネットワークサービスがアクティブになることはありません。
「全体ディストリビューション(と OEM サポート)」をインストールするのがお手軽だと思いますが、CLI だけが必要な場合、GUI が起動して無駄にメモリを消費してしまいます。CLI のみにしたい場合は「コアシステムサポート」以下ですが、sshd などを自分でインストールして設定する必要があります。私はコアシステムサポートを選んでみました(あとで挫折して入れ替えるかもしれませんが)。C 言語開発などで Oracle Developer Studio が必要な場合はインストーラーが要求するため GUI デスクトップ環境が必要になるかもしれません。
パーティションサイズの再設定
自動レイアウトだとルートパーティションのサイズは選択したインストール構成が入るちょうどぐらいのサイズに調整され、残りをすべて /export/home
に割り当てるようです。そのため後からパッケージを追加する余裕がないので自分で設定する必要があります。動作検証用なので /export/home
を削除し、20 GB のディスクのうち、/
に 16GB、swap
に 4GB 割り当てました。overlap
はよくわかっていませんが、自動レイアウトで配置され、これを消したら インストール中に「cannot install bootblock」とか言われてエラーになったのでなにかの管理のために必要なのだと思います(サイズと名前から全体をラップしてるパーティションでこの先頭に見えないbootパーティションを作ってる?)。
Slice | Mount Point | Size (MB) |
---|---|---|
0 | / | 16323 |
1 | swap | 4102 |
2 | overlap | 20449 |
インストール完了後のbashとsshdの設定
インストールが完了したら最低限の設定として、bash と sshd のインストールと設定を行います。この作業は「開発者システムサポート」以上の構成であれば不要です。
まずログインしてすぐに気づくのが、Backspace キーを押すと ^H
という文字が出力され文字が消せないということです。代わりに Delete キーを使えば削除することができます。この動作は bash を使えば解消するのですが、気になる場合は stty erase '^H'
を実行すれば文字を消せるようになります。.profile
に書いておくと良いでしょう。
パッケージのインストールは OpenCSW project から最新のオープンソース版をインストールする方法もありますが、今回は Solaris 10 標準のパッケージをインストールすることにします。
- OpenCSW project からインストールする場合
標準のパッケージはインストールに使用した DVD に含まれているので、それを仮想マシンに接続して使うことにします。インストールが完了したらおそらく DVD は排出されているはずなので再挿入します。
$ virsh attach-disk sol10 /var/isos/sol-10-u11-ga-x86-dvd.iso hdb --type cdrom
DVD をマウントする必要がありますが、そのためには DVD のデバイスを調べる必要があります。これには iostat
コマンドを使用します。
# iostat —En
c0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Model: QEMU HARDDISK Revision: Serial No: QM00001 Size: 21.476B <21474754560 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0
c0t1d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: QENU Product: QEMU DVD-ROM Revision: 2.5+ Serial No:
Size: 2.25GB <2254110720 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
真ん中あたりに c0t1d0
という文字が見えますが、これが DVD のデバイス名です。DVD をマウントするにはデバイス名の後ろに s0
をつけた /dev/dsk/cOt1d0s0
を次のようにマウントします。
# mount -F hsfs -o ro /dev/dsk/c0t1d0s0 /mnt
マウントした後はディレクトリからパッケージをインストールすることができます。bash をインストールするした後は bash を使用すると良いでしょう。標準の Bourne シェルはものすごく使いづらいです。ksh88 も標準でインストールされているのですが同様に使いづらいです。
# cd /mnt/Solaris_10/Product/
# pkgadd -d . SUNWbash SUNWsshcu SUNWsshdr SUNWsshdu SUNWsshr SUNWsshu
インストールが完了したら、sshd_config
を変更して root のログインを許可し公開鍵認証を使えるようにします。動作検証用マシンなので root でのログインを許可していますが、気になる人はあとで削除してください。
PermitRootLogin yes # root でのログインを許可
PubkeyAuthentication yes # 公開鍵認証を使えるようにする
「コアシステムサポート」で構成した場合、sshd の HostKey が生成されておらず、以下のようなエラーが出てログインできません。
Unable to negotiate with x.x.x.x port 22: no matching key exchange method found.
Their offer: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==
以下の方法で HostKey を生成します。
# ls /etc/ssh # HostKey がない
moduli ssh_host_dsa_key ssh_config
# /lib/svc/method/sshd -c # HostKey の生成
# ls /etc/ssh # HostKey の生成の確認
moduli ssh_host_dsa_key ssh_host_rsa_key sshd_config
ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key.pub
最後に sshd サーバーを再起動します。
# svcadm enable ssh
# svcadm restart ssh
ssh クライアント側の設定
比較的最近の Ubuntu や macOSからだと SSH 経由で Solaris 10 に接続できません。これはセキュリティが強化され、古いプロトコルのサポートが無効になっているためです。そこで有効にするための設定を ~/.ssh/config
に追加します。この設定は ssh
コマンドを実行するクライアント側の設定です。
Host <Solaris 10のホスト名またはIPアドレス>
KexAlgorithms +diffie-hellman-group1-sha1
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
以上で、SSH 経由で Solaris 10 を使うことができるようなりました。authorized_keys
をコピーすれば公開鍵認証でのログインでもできます。ただし /bin/sh
が Bourne シェルのためか ssh-copy-id
が使えないので手動でコピーする必要があります。その他のパッケージの追加も bash や ssh などと同じ方法でインストールできるので、あとは普通の Unix マシンです。
おまけ Oracle Developer Studio のインストール
Oracle 標準の開発環境(cc
コンパイラなど)が必要な場合、Oracle Developer Studio をインストールする必要があります。もしかしたら Oracle Developer Studio をインストールするには GUI デスクトップ環境が必要かもしれません。まず Oracle Developer Studio をダウンロードし、以下のコマンドを実行して任意の場所に展開します。
Verify checksum:
digest -a sha256 /OracleDeveloperStudio12.6-solaris-x86-pkg.tar.bz2
Unpack distribution:
cd <installation_directory>
bzcat <download_directory> /OracleDeveloperStudio12.6-solaris-x86-pkg.tar.bz2 | /bin/tar -xf -
展開したディレクトリの中に install_patches.sh
があるのでまずそれを実行し再起動します。次に(GUI デスクトップ環境から)developerstudio.sh
を実行するとインストールが開始されます。インストールが完了すると cc
コマンドなどが使えるようになっているはずです。ただしなぜか私の環境では GUI の IDE が起動しませんでした。コンパイラは使うかもしれませんが、Solaris 10 で IDE を使うことはないのでこれ以上追求しません。
さいごに
この記事を書く前に再度調べましたが、やっぱり KVM で Solaris を動かすという情報は少ないですね。いや Solaris 全体の情報が少ないか。パッケージをインストールする方法まで調べたのでこれで一応の動作検証はできると思います。