うつ病双極性感情障害を抱えたけんけんFedoraFreeBSD勉強日記。
Linux/Unixデスクトップ用途として使う秘訣お教えします。
 since 2006年2月16日(木)

kernel

Linuxカーネル3.0でのXen Dom-0とDom-Uの最新の動向、事の成り行き。

この記事をクリップ!
共通テーマ:
Linuxに関する運用 テーマに参加中!

前置き

記事更新停止と言いながら、更新開始。 ただし、今までみたいに丁寧に解説しながらじゃなく、 走り書き。つまり、自分用メモ。

Linux 3.0 Xenの取り込み

先日、Linux カーネル3.0には、仮想化ソフトウェア、 XenのDom-0及びDom-U機能がマージされると発表がありました。 RHEL6では、Xenを捨ててKVMへ推奨としていたので、 仮想化関連の情報としては、衝撃的な発表になったと思う。

2011年 7月 31日 日曜日 15:02:15 JST 現在、世界で一番早い!? Linux kernel 3.0のXen のDomain-0(Dom-0) 機能を試してみた。 [結論:動作しない]にて、実際にLinux kernel 3.0をビルドしてみたが、Domain-0としての機能を実装できておらずbootしないことを、検証した。

Xenについて

仮想化の説明は、もういいかな?最近は。 Xenとは、PC(というかCPU?)との間に仮想的なOSを実現するためのクッション材を間に挟む機能を含むハイパーバイザー型の仮想化ソフトウェアです。

で、Windowsでデスクトップ目的に仮想化するソフトウェアといえば、VMware Playerとか、Virtual Boxが有名どころでしょうけど、 Linuxでは、XenとKVMが有名かと。

そして、Xenだと、所謂仮想化を支える方のOSをホストOSというけど、Dom-0と呼び、 仮想化されている側のOSをDom-Uと呼びます。

ホスト、ゲストと呼ばないのは、ホストーゲスト型の仮想化ソフトウェアではなく、 ハイパーバイザー型だから。 しかも、VMware ESixでしたっけ?の完全ハイパーバイザー型ではない。 あくまで、Dom-Uを管理するために、Dom-0であるLinuxカーネルが必要。 よって、ホストOSは、Linuxに限定される。 CitrixのXenserverは、たぶん管理するための機能をWindowsから Dom-0を操ってるだけ。 仮想化を本当に管理しているのは、Linux。 使ってないからあくまで予測。

で、RHEL6からXenを見捨てKVMに切り替えた時代、 何故今さらXenをとりあげたかというと、 KVMでは、CPUに仮想化支援機構が実装されているものでないと使えないという弱点があるから。

そして、CPUの仮想化支援機構があるPCであってもKVMよりXenの方が高速な仮想化を実現出来る可能性があるから。

で、もう少しXenの事に触れます。 Xenには、大きく別けて2つのゲストOS(Dom-U)の扱い方があります。

それは、完全仮想化(HVM:Hardware Virtual Machine)と準仮想化(PV:para Virtulization)というモード。 (本当は、xen4系列から準仮想化をさらに強化したpvopsというのが加わる。)

完全仮想化とは、CPUの仮想化支援機構が必要ではあるが、 KVMのようにほぼどんなOSでも仮想化することができる。 (実際は、どんなOSでもとは、言えないけども。)

そして、準仮想化とは、CPUの仮想化支援機構がなくても、 仮想化を実現できるモード。 ただし、Dom−U側のカーネルに修正が必要。 (主に、Linux、BSDあたりは動作する。Windowsはほぼ不可能。準仮想化用のドライバが2008だけあったような情報を メーリングリストで見たことがある。)

ここで、ややしこいのですが、一見準仮想化の方が不利なようですが、 カーネルの修正さえ対応していれば、完全仮想化より高速に動作するということ。 (もちろん、CPUの仮想化支援機構があっても準仮想化を使えばさらに高速に動作させられる。) なので、今回のDom-Uの扱い、機能追加というのは、 主にこの準仮想化機能について恩恵が預けられる機能なのです。。

Xenの本当の動き

一番トップのリンク先を見ると、今までXenはLinuxカーネルに取り込まれていなかったのか。と 思っている方がたぶん多いと思うので、ちゃんと事の経緯を書いて起きます。

本当は、XenのDom-0機能は、2.6.37から一部Linuxカーネル本体に取り込まれることが宣言されていたし、 実際に.configにもDOM-0の項目も追加されてた。
ただし、ブートしてもkernel panicになったかなんかでうまく動かず。 Dom-0に必要な色々なドライバが含まれていないためだそう。 ソースは探してくださいませ。

さらに、 Dom-Uの機能はとっくにLinuxカーネルの本体に取り込まれているのに、 取り込まれたぞ!!とタイトルに付けられている。 xen.orgの元ソースですら。 まあ、完全じゃなかったからそう書いたのかもしれないけど。 (元記事もしっかりは読んでないし。)

Dom-Uの機能がLinux カーネル本体にいつから取り込みか忘れたけど、たぶん、Fedoraでいうとたぶんf10から。
某サーバー/os/images/xen/のディレクトリがなくなってる。 その辺もFedoraのリリースノートで確認してください。 あやふやです。

FedoraをDom-Uにするだけなら、少なくともF7の頃にはdom-U用のカーネルをビルドする必要すら無い。
CentOSも5系列、RHEL5系列とそのクローンならOKかと。 kernel-xenパッケージがDom-Uとして働く。

Linux カーネル3.0でのDom-0の最近の動向

で、一番重要なLinux 3.0でのXen Dom-0での動きをTiwtterで 自分が呟いた情報を適当に貼り付け。

私は、鯖管でもなければ、Redhatの社員でもなければ、 IT系の研究室でもなかったけど、 たぶんどこよりも早くLinux 3.0でのXen Dom-0の情報を追っかけてるはず。 ただし、あくまでwebとchangelog飲みの判断でソースコードまで読んでいない。アンドそもそも読めない。) (2011年 6月 25日 土曜日 16:58:26 JST 現在)

2011/06/25 13:45:46
Linux カーネルになんでXen のサポート強化が採用されたのかと思ったら、oracleが提案したのか。oracle vmってxenだもんね。で、推測だけど、今はxen3系列(カーネルじゃなくハイパーバイザーが)で、xen4系列が4.1.1とstableに入った。なんとかせいと
2011/06/25 10:49:22
Linux kernel 3.0にxen dom-0が正式採用ってニュース流れてたけど、changelog見る限りじゃちっとも導入されてないぞ。 #kernel #Xen
2011/06/23 20:31:53
i check changelog about Linux kernel not shown jeremy, is Dom-0 commiter。konrad is Dom-U commiter. *訳changelog見たけど、Dom-0(所謂仮想化のホストOS)の管理人jeremyの名前が見当たらない。konradさんはDom-U(ゲストOS)の管理人だし。#Xen #Linux #kernel #redhat #redhatjp
2011/06/23 20:31:14
http://t.co/rRN34KG Do Linux kernel 3.0 is really involved Xen Dom-0?  本当にLinux カーネル3.0にXen Dom-0カーネルの機能が(全て)実装されるの?#Xen #kernel #redhatjp

P.S. あれ?結局普段と変わらず割と丁寧に書いてしまった。 くれぐれもこの記事丸々を信用しないこと。 動向ばかり書いてどうこうしようと思っているの?(おやじギャグ)

Xen徹底入門 第2版 (CD-ROM付)
Xen徹底入門 第2版 (CD-ROM付)
クチコミを見る
KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド
KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド
クチコミを見る

Linuxカーネル2.6.34リリース!!

この記事をクリップ!
The Linux Kernel Archives


Linuxカーネル2.6.34がリリースされました。
Fedora 13に取り込まれる楽しみです。
カーネル再構築をチャレンジすることで導入することができます。
動かないデバイスがある方はチャレンジしてみるといいでしょう。

[高速化]、[軽量化]Linuxカーネルkernelの再構築 on Fedora 12 13 14

この記事をクリップ!
Linuxでデバイスが動かなくて困った。
といった経験ないでしょうか?

また、
高速化したい。軽量化したい。
というご要望ありませんか?

そんな要望に答える最終手段。
カーネルの再構築に挑戦しましょう。

カーネルソースのダウンロード


まずは、Linuxカーネルのソースをダウンロードしましょう。
The Linux Kernel Archives
から右上のLatest Stable Kernel:の下のバージョン番号を
クリックしてダウンロードしてください。
2010年 2月 9日 火曜日 時点では、2.6.32.7がStableバージョンです。

ファイルの展開



cd ~/Downloads/
tar xvjf linux-2.6.32.7.tar.bz2

(2.6.32.7は現在のダウンロードしたバージョンに置き換えて下さい。
linux-まで入力したら[tab]キーで補完すれば間違いないでしょう。

必要なパッケージのインストール


開発ツールのインストール



カーネルをコンパイルするために開発ツールをインストールします。

su
(パスワード入力)
yum groupinstall 開発ツール



mkinitrdのインストール



カーネルのRAMディスクを作るために
mkinitrdパッケージをインストールします。

yum install mkinitrd


dracutがRAMディスクを作成してくれます。

ncurses-develのインストール



カーネルのパラメータ等を設定するメニューを
表示させられるようにncurses-develをインストールします。

yum install ncurses-devel


root権限からログアウト



無事必要なパッケージをインストール出来たら、

exit

して、root権限からログアウトします。


カーネルパラメータの設定



make oldconfig


カーネルパラメータ等を設定します。

cd linux-2.6.32.7
cp /boot/config-2.6.31.12-174.2.3.fc12.i686.PAE .
make oldconfig

すると、config-2.6.31.12-174.2.3.fc12.i686.PAEの
設定が読み込まれます。
さらに、Linuxカーネルは日々進歩しているので、
2.6.31.12カーネルから変化したカーネルパラメータについての
ON、OFF、モジュールかするかどうかについて質問されます。
DEBUGはn
m、もしくはMにできるもの(モジュールに出来るもの)は、
それぞれ、mMを選択。
それ以外は、yを選べば問題ないと思われます。

make menuconfig




make menuconfig

して、カーネルパラメータの設定をします。
CPUタイプの設定をするだけでかなり高速化されます。
また、KVMやXenやVMwareなどの仮想化を使わないならば、
VirtualizationをOFFにしてしまいましょう。

コンパイル



カーネル、カーネルモジュールをコンパイルするには、

make

と入力するだけです。
数時間かかるので寝る前にでも実行しましょう。


インストール



コンパイルしたカーネル、カーネルモジュールをインストールするには、

su -c "make modules_install install ; mkinitrd -f initramfs-2.6.32.7.img 2.6.32.7"
(パスワード入力)

2.6.32.7の所はダウンロード、コンパイルしたカーネルバージョンに
置き換えること。

grub.confの設定



make installしたことで、
/etc/grub.confに新しいカーネルが登録されます。
しかし、デフォルトで起動する設定に変更されていない。
そのまま再起動したままだと、
以前(Fedoraもしくはディストリビュータ)が
用意したカーネルが起動してしまうので、
新しく再構築したカーネルを起動させるために

default=1

となっている箇所を

default=0

としておく。
(環境によっては、
default=の後の数字が1意外になっているかもしれない。)


再起動



システムを再起動してください。
新しいカーネルで起動できたら、

uname -r

を実行して、

2.6.32.7

など自分がコンパイルしたカーネルのバージョンとして
表示しているか確認してください。

もし、nvidiaなどのグラフィックカードのドライバを
インストールする必要がある場合は、
新しいカーネルで起動した後、
make、make installなどして
ドライバをコンパイルし、
modprobeでモジュールを読み込んでください。


起動できない、
コンパイルできない!!といった場合は、コメントもしくは、
Twitterへ。

Fedoraが不安定なときに安定させる方法。on Fedora 12

この記事をクリップ!
Fedora 12になって、
色々と不安定な事が多くなりました。
特に私の環境では、
ndiswrapperというNDISというMicrosoft社が定めたネットワークドライバ
をLinuxで扱うためのモジュールを組み込んでいます。
このような場合、
従来の方法ではモジュールをインストールするだけで
安定して高速に無線LANの接続ができました。
しかし、Fedora 12での無線LANの接続が異常に遅くなりました。

ですが、initramfsをdracutを用いることで安定に、
そして高速に無線LANを接続することが可能になりました。

ndiswrapperだけでなくnvidiaのドライバモジュール
kmod-nvidiaを使った場合にも恐らく有効でしょう。

また、何故かcompiz-fusionも安定して動作するようになりました。

とりあえず、なんだか不安定だなと思ったら以下のコマンドを
実行してみてください。


$ su
(パスワード)
# cd /boot
# cp initramfs-2.6.31.9-174.fc12.i686.PAE.img initramfs-2.6.31.9-174.fc12.i686.PAE.img.orig
# dracut --force initramfs-2.6.31.9-174.fc12.i686.PAE.img 2.6.31.9-174.fc12.i686.PAE
# reboot


上記のようにコマンドを実行してください。

概要としては、/bootディレクトリに移動して、
initramfsをdracutで作り直したときに起動しなくなっては困るので、
initramfsの元ファイルをコピーします。
そして、dracut--forceオプションを付けて実行します。
ただし、ファイル名は、お使いのバージョンに合わせてください。
ファイル名の入力を間違わないようにするために、
initramfsまで入力したら、
[tab]キーを何回か押しながら、ファイル名の補完をすると間違いの確率が
減るでしょう。

カーネル再構築 on Fedora 7(Kernel recompile on Fedora 7 Fedora7)

この記事をクリップ!
カーネル(OSの中心部分)の再構築してみた。

目的は
あまりに古いPC(Celeron 500 Mhz,メモリ398 MB)を
カーネルの軽量化、高速化、最適化、
PCカードを使用する際に弊害となる4k stackの制限を外すため。続きを読む
ブログ内の検索
Google

WWW を検索
このblog内を検索
私がPixivで描いたイラスト
うつ病の治療に効果がある可能性があるらしい
FedoraにオススメのPC、周辺機器(動作保証するものではありません)




tweet
コンピューター オススメ
Linuxオススメ本
コマンド本
さらにLinux/UNIX上級者になりたい方へ
NAVERまとめ
livedoorトピックワード
livedoor 天気
アクセスカウンター

    はてブリスト - 現在
    倉木麻衣ちゃん
    はてブリスト - 前のドメイン名
    • ライブドアブログ