質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

KVM

KVM【Kernel-based Cirtual Machine】は、 Linux上で仮想化環境を利用するためのソフトウェアです。 1台のPC上で複数のOSを同時に動作させるために必要な制御を行う 仮想化環境の仕組みを提供します。

Q&A

解決済

1回答

3887閲覧

legacy os のkvm仮想化について

hiim

総合スコア1689

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

KVM

KVM【Kernel-based Cirtual Machine】は、 Linux上で仮想化環境を利用するためのソフトウェアです。 1台のPC上で複数のOSを同時に動作させるために必要な制御を行う 仮想化環境の仕組みを提供します。

0グッド

0クリップ

投稿2016/09/29 03:27

編集2016/09/29 06:53

###前提・実現したいこと
古いLinux (Red Hat Linux 6.2E Zoot 2000年3月27日リリース)を
centOS6.8上のKVMで
ゲストOSとして起動させたい。

今までの経緯
https://teratail.com/questions/49563

###発生している問題・エラーメッセージ
物理サーバー(Red Hat Linux 6.2E)からddで抽出したrawイメージを
kvmのゲストとしてインストール

lang

1 virt-install 2 -n hogesv 3 -r 1024 4 --os-variant rhel2.1 5 --disk /var/lib/libvirt/images/hogesv.img,device=disk,bus=virtio,cache=none \ 6 --network bridge=br0,model=virtio 7 --import 8 --prompt

でインストールをしました。パラメータ--os-variantには本来OSの種類を指定ですが、

lang

1 virt --os-variant list

で指定できる種類を確認したところ、一番古いもので
rhel2.1 : Red Hat Enterprise Linux 2.1
generic24 : Generic 2.4.x kernel
のどちらかしか存在しません。
Red Hat Linux 6.2Eはkernelが2.2.19
ですがしかたなくrhel2.1を指定しインストール

lang

1virsh start hogesv

で起動しすると

lang

1virsh list

には起動中としてステータス表示されるが、

lang

1virsh shutdown hogesv

は受け付けず

lang

1virsh destroy hogesv

でしか停止できない状態。

lang

1virsh start hogesv 2virsh console hogesv

起動経過を確認したく起動してすぐにconsole接続してみると

以下のステップで止まっている様でした。

Booting from Hard Disk... LILO boot: Loading linux....................

virt-install のパラメータとして
--os-variantに今回のような古いOSを指定してゲスト追加する方法、
もしくは
別手段でのゲスト追加方法でも構いません。

レガシーOSのkvmによるP2Vをされた方がいらっしゃいましたらアドバイスいただけると助かります。

補足)virt−P2Vはまだ試してはいません

少し進展があり、
virsh consoleではなく
virt-manager
からゲストOS起動&起動経過を確認したところ、
以下の箇所でkernel panicになり止まっている事までわかりました。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

over

2016/09/29 03:34

> 物理サーバー(Red Hat Linux 6.2E)からddで抽出したrawイメージ 上記についてですが、ddで出力したイメージはKVM用コンバート等はしているのでしょうか? それとも、コンバートしないでもKVMで動作するとの根拠があって、コンバートしていないとかでしょうか?
hiim

2016/09/29 03:42

今回KVMは初めて使用しているのですが、自分なりに調べた現時点での認識は kvmに使用するイメージは qcow2 raw(スパースあり) raw(スパースなし) などが可能で ddで抽出したrawイメージはraw(スパースなし)と理解していたのですが 違うのでしょうか? 勉強不足ですみませんが、qemu-img convertで変換が必要となると #qemu-img convert -O raw hogesv.img hogesvout.img のような変換が必要あるのでしょうか?
over

2016/09/29 03:48

すいません。興味があって聞きました。 では、ddで出力したイメージがkvm上で動作することは確認済みということですね。
hiim

2016/09/29 04:02

> 確認済みということですね。 すいません、私自身の手では実際に確認はできておりません。ただ、ここ1日ほど色々国内・海外のサイトをみていると同じもの?という扱いに読み取れた為、そう理解しておりました。さきほど、上記のqemu-img convert -O raw hogesv.img hogesvout.img にて変換したイメージを使用しましたが、結果は同じでした。時間のある時に一度、新しいOSのddイメージをkvmのrawイメージとして動作可能か試してみます。
guest

回答1

0

ベストアンサー

virsh について

virsh shutdown できないのは、Red Hat Linux 6.2 側で acpid が動いていないからだと思います。

virsh console は Red Hat Linux 6.2 側でシリアルコンソールの設定が必要で、kernel の起動オプションに "console=tty0 console=ttyS0,115200n8" を追加すれば、ログインプロンプトが出る前までの出力は見られると思います。
ただし、virsh では lilo の起動オプションは操作できないので、virt-manager を使うか、Spice や VNC で起動画面を見た方がいいと思います。

Red Hat Linux 6.2 について

kernel は UP(1 CPU)用と SMP(複数CPU)用で独立していて、1 CPU機では UP、複数CPU機では SMP でないと起動できなかったと思います。

LILO プロンプトで <TAB> キーを押すと、起動できる kernel (のラベル)が表示されます。
linux-up が UP、linux が SMP です。
何も入力せず <Enter> キーを押すと、1つ目の kernel で起動します。
KVM 仮想マシンの CPU 数に合った kernel で起動してください。

LILO boot:: <TAB> linux linux-up boot: linux-up console=tty0 console=ttyS0,115200n8<Enter>

(2016/09/29 20:27) 追記
runlevel 3 で停止するのは、ネットワークがつながらないため、DNS タイムアウト待ちになっているのではと思います。
KVM 側の NIC の virtio や e1000 は RHL 6.2 ではサポートしていない(NICドライバがない)ので、legacy なものにする必要があります。
例えば、KVM 側の NIC を pcnet にし、RHL 6.2 の /etc/conf.modules に alias eth0 pcnet32 と設定するなど。

投稿2016/09/29 05:33

編集2016/09/29 11:27
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiim

2016/09/29 06:46

詳しくアドバイスありがとうございます。 kvmホストにcent0S6.8をCUIでインストール、macのターミナルからsshで操作しておりましたので、xwindw等使えなかった為、環境構築に時間がかかりお返事遅くなりました。 mac側からsshでX11送ってvirt-managerを使用したところ、lilo boot;以降も処理が進みました。 的確なアドバイスありがとうございました。アドバイスいただいた通り、virt−managerならばliloの起動オプションが指定できました。 しかし途中で kmod:failed to exec /sbin/modprobe -s -k block-major-3,errno=2 VFS:Cannot open root device 03:05 Kernel panic:VFS:Unable to mout root fs on 03:05 でkernel panicで現在止まっております。
TaichiYanagiya

2016/09/29 07:45

Partition check: のところでパーティションが見えていないので、kernel がディスクを認識していないようです。 KVM 側の設定で、IDEディスクになっていますでしょうか?
hiim

2016/09/29 08:08 編集

ありがとうございます。 virt-managerで確認するとご指摘のとおり、Disk設定がIDEになっておらず、virsh install 時に指定したままVirtioになっておりました。 ですが、IDEに変更後、起動させると今度は hda: lost interrupt hda: lost interrupt hda: lost interrupt hda1 hda2 < hda: lost interrupt hda5hda: lost interrupt 。。。。。 というようなエラーが出てそれ以上進まない状態となりました。
hiim

2016/09/29 08:18

liloに渡した、起動オプション console=tty0..... の後ろにnoapic を追加するともう少し進みました。
hiim

2016/09/29 10:05

その後ですが、各initスクリプトを実行し、物理サーバーならばあとはログインプロンプトが表示されるのみ、という所までは進んだのですが、ログインプロンプトが表示されなかったため、rc3.dやrc.localの独自起動を一旦実行されないようにして起動を試みましたが、まだログインプロンプトは表示されず。 eth0が存在しない等のメッセージもでていたので、最小構成での起動の為liloに起動オプションとして linux 1 console=tty0 console=ttyS0,115200n8 noapic で起動してみると bash# とプロンプトが表示されました。 まだrunlevel3では正しく起動はできておりませんが、色々アドバイスをいただいたおかげでかなりの前へ進む事ができました。
hiim

2016/09/30 03:19

追加でのアドバイスありがとうございます!!m(_ _)m 先にご報告からですが、無事起動する事ができました!! 本当に多くの的確なアドバイスありがとうございました。 すごくしっくりくる説明でした。 KVM側のNICをpcnetにして、ホスト側でrawイメージをマウントし、 /etc/modules.conf にalias eth0 pcnet32 とし編集後、起動、しかし挙動がおかしく、再度、ホストから/etc/modules.confを確認すると全く別の内容に書き換わっている?? NICをrtl8132にし、/etc/modules.conf にalias eth0 rtl8132も試しましたが同様 それ以外にも起動ごとに各パーティションが「正しくumontされませんでした、force check」が走りかなり時間がかかる事もあり、現在まで使っていた仮想マシンを一旦破棄し、今度はvirsh installではなくvirt-managerからGUIで仮想マシンを作成いたしました、virsh insatll よりはるかにわかりやすかったです。 その後、/etc/modules.confをホストから書き変えず、今度はコンソールをVCNで起動、eth0はエラーのままですがプロンプトが表示される所まで行けました。 前回はホストからゲストのイメージを編集して挙動がおかしかったので、今度はゲストOSからゲストの/etc/modules.confを 編集し、alias eth0 pcnet32とし再起動してみるとeth0も正常に認識し、ホスト側のブリッジを使用し、操作端末のmacからもpingが届く状態まで起動いたしました。 本当に色々とアドバイスいただきありがとうございますm(_ _)m もう一点ご教授いただければ幸いなのですが、最初に回答いただいた時におっしゃっていた > virsh shutdown できないのは、Red Hat Linux 6.2 側で acpid が動いていないからだと思います の部分ですが、こちらはvirt−managerのshutdownも相変わらず受け付けず、「強制的に電源OFF」しか仮想マシンを停止にする方法がわかりません。 一応、プロンプトからhaltして終了してから「強制的に電源OFF」をしているのですが、これはそういうものなのでしょうか?
TaichiYanagiya

2016/10/03 03:18

> こちらはvirt−managerのshutdownも相変わらず受け付けず、「強制的に電源OFF」しか仮想マシンを停止にする方法がわかりません。 RHL 6.2 には acpid がなく、おそらく kernel も未対応なので、ACPI での shutdown はできないと思います。 "--mode" オプションで acpi の他に、agent などを選べるようですが、RHL 6.2 だと qemu-guest-agent のインストールも難しいと思います。 > 一応、プロンプトからhaltして終了してから「強制的に電源OFF」をしているのですが、これはそういうものなのでしょうか? linux-up だとコマンドプロンプトから poweroff で電源OFF までいきます。 linux (SMP)だと "Power down." で止まってしまいますね。「強制的に電源OFF」しかないと思います。
hiim

2016/10/05 00:48

解決後も回答いただきましてありがとうございます。 SMPですので、今の方法しかないという事ですね。。。 おかげさまで、社内向けのサーバーもう一台も仮想化し、あと数日動作確認できれば物理サーバーは撤去できそうです。 的確なアドバイスありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問