GRUB2およびXenカーネル

昨日新しいGRUB 2ブートローダーの小さなレビュアーを作成しましたが、 1つの不快な点に注意を引きました。 結局のところ、何も機能しない場合は、それに注意を払っていません。 そこで、Xenベースの仮想化を試すことにしました。 彼女は、修正されたカーネルのインストールを要求しました。 もちろん、開発者はそのような微妙な点についてまだ考えていないため、新しく追加したメニュー項目は機能しませんでした。 明らかに、2つのオプションがあります。 カーネルを正しく見つけてメニュー項目を正しく構成するスクリプトが必要です。または、/ boot / grub / grub.cfgにペンでメニュー項目を作成する必要があります。

当然、正しいメニュー項目がどのように見えるかを本当に理解していなかったので、Googleに行きました。 彼は、ダニエル・マテオスという名前のオーストラリア人のシンプルなブログに「debian etchでgrub2を使用したxen」書くように促しました。 ダニエルが彼のブログを破壊していなければ、記事は私を助け、すべてがうまくいくでしょう:)より正確には、彼はWordpressに疲れていて、彼は間違った方向に手を置き、djangoに新しいサイトを作成しました。 それが、彼の記事で議論されたものをここに書くことにした理由です。 より安全に。



GRUB2は、オーストラリアの管理者がGPT / EFIパーティションをサポートしていることを気に入っており、2TB以上のドライブを使用できます(5TBが必要)。 GRUB2のドキュメンテーションのトピックでGoogleを検索する人のように、彼らは非常に怒っていました。 彼女は違います。 したがって、彼らは以下があなたに利益をもたらすことを望んでいました。



0.クックGRUB



/etc/kernel-img.confを開いて編集し、次のフォームに移動します。

do_symlinks = yes

relative_links = yes

do_bootloader = no

do_bootfloppy = no

do_initrd = yes

link_in_boot = no

postinst_hook = update-grub

postrm_hook = update-grub






すべてのラインは直感的です。 configは、debパッケージから新しいカーネルをインストールするときのシステムの動作を決定します。 man kernel-img.confの詳細



さらなるアクション:

# mount /dev/sda1 /boot

# apt-get install grub-pc

# grub-install /dev/sda

# apt-get install linux-image-2.6.18-5-amd64








行ごとにデコード:

1.適切なディレクトリに目的のセクションをマウントします。 これは完全にオプションです。

2.実際には、GRUB 2をインストールします。まだお持ちでない場合は奇妙です。

3.ブートローダーをハードドライブのブートセクターに書き込みます。 これには時間がかかる場合があります。

4.カーネルをインストールします。 その後、GRUBはそれをメニュー自体に追加します。 カーネルは通常のものであり、Xen-ovskyではないため、問題はないはずです。



1. Xen Elementsのインストール



# apt-get install xen-hypervisor-3.2-1-amd64

# apt-get install xen-docs-3.2 xen-utils-3.2-1 xen-tools

# apt-get install libc6-xen

# apt-get install linux-image-2.6.18-5-xen-amd64

# apt-get install xen-linux-system-2.6.18-5-xen-amd64

# apt-get install xen-linux-system-2.6.18-5-xen-vserver-amd64








著者は、特定のアーキテクチャ(amd64)に特定のカーネルバージョン(2.6.18-5)をインストールすることに注意してください。 これらのコマンドを愚かにコピーする必要はありません。 システムと設定に従って調整してください。



2.1。 レコードをメニューに手動で追加する



すぐに思い出させてください:これはメニューを編集する正しい方法ではありません。 規則に従って、Xenの同様のエントリを自動的に構成するスクリプトを作成する必要があります。 しかし、システムの信頼性よりも長い時間が必要な場合は、そうすることができます。 すべては、次のブートローダーの更新まで機能します。

同様のエントリをgrub.cfgの最後に追加します。



menuentry “Xen 3.2″ {

multiboot (hd0,1)/xen-3.2-1-amd64.gz dom0_mem=256M

module (hd0,1)/vmlinuz-2.6.18-5-xen-amd64 root=/dev/sda2 ro

module (hd0,1)/initrd.img-2.6.18-5-xen-amd64

}








これで、再起動後、Xenハイパーバイザー内で実行されているdom0カーネルにいるはずです。



2.2問題の正しい解決策のスクリプト



このスクリプトは、ロジャー・スミスという男の投稿コメントで提供されています。 もちろん、改善する必要がありますが、基礎が築かれ、ここからスクリプトのロジックを理解できます。



#!/bin/bash

set -e



kernels=`ls /boot/vmlinuz-*-xen-*|sed s/”.*vmlinuz-”//` 2>/dev/null

initrds=`ls /boot/vmlinuz-*-xen-*|sed s/”.*initrd.img-”//` 2>/dev/null

xenimgs=`ls /boot/xen-*|sed s/”.*xen-”//|sed s/”.gz”//` 2>/dev/null

MODULE=”}”

for i in $xenimgs; do

for j in $kernels; do

echo “Found xen kernel and image: $j –> $i” >&2

echo “$initrds” | grep $j > /dev/null 2>&1

if [ $? -eq 0 ]; then

MODULE=”module ${GRUB_DRIVE_BOOT}/initrd.img-$j

}”

else

MODULE=”}”

fi



cat << EOF

menuentry “Xen ${i} kernel $j” {

multiboot ${GRUB_DRIVE_BOOT}/xen-$i.gz dom0_mem=256M

module ${GRUB_DRIVE_BOOT}/vmlinuz-$j root=/dev/sda2 ro console=tty0

${MODULE}

EOF

echo “”

done

done








必要なアクション:

1.スクリプトのファイルを作成します

#touch /etc/grub.d/10_xen







2.アクセス権を設定します:

#chmod 755 /etc/grub.d/10_xen







3.上記のスクリプトを/etc/grub.d/10_xenに追加します



以上です。 頑張って



All Articles