2008-01-27
■[comp] Xenのメモリ制限(2)
これの続き
http://d.hatena.ne.jp/ieee802dot1q/20070916/1202013457
CentOS5.0でxenカーネルを使うとメモリが4GB以上あっても3.3Gぐらいしか認識しなかった件だが、解決さくが見つかった
http://pc11.2ch.net/test/read.cgi/linux/1195800848/160-
http://lists.xensource.com/archives/html/xen-users/2007-06/msg00602.html
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=419994
https://bugzilla.redhat.com/show_bug.cgi?id=250299
うんでリンク先にあるようにgrubの再構築をすれば良さそうである。
うんでCentOS5.1/x86_64で試してみたのだが、grubの再構築がなかなかうまくいかない。rpmbuildは成功するのだが、実行出来ないバイナリが生成される。配布版のbinary rpmはどうやって作ってあるのだ?
x86_64であってもgrubはi386のバイナリを生成するようであるので、Cross compile回りで細かい問題が発生しているのではと予想。
試したPCはx86_64とi386とのdual bootになっていたので、i386側でrpmbuildをしたら成功した。しかしboot loaderをMBRに書き込んでいるのはx86_64側である。
困ったな・・i386側から無理矢理MBRに書き込んだら成功したなり。
トリッキーすぎて素人には勧められない。
とりあえずCentOS5.1で4GB以上メモリを積んでxenを使う場合は、x86_64とi386のdual bootにするのがお勧めである。
手順
x86_64とi386のdual bootと仮定。x86_64のgrubのboot loaderが /dev/sdaにインストールされている。
i386側で起動して、x86_64側を /x86_64 にmountする。i386側から/dev/sdaにgrubを書き込む。
wget ftp://ftp.example.jp/CentOS/5.1/os/SRPMS/grub-0.97-13.src.rpm rpm -i grub-0.97-13.src.rpm cd /usr/src/redhat/SPECS rpmbuild -bb grub.spec cd /usr/src/redhat/BUILD/grub-0.97/stage2 cp common.c common.c.ORG vi common.c # リンク先を参考に編集 cd /usr/src/redhat/BUILD diff -c grub-0.97/stage2/common.c.ORG grub-0.97/stage2/common.c \ > ../SOURCES/grub-0.97-over4g.patch cd /usr/src/redhat/SPECS cp grub.spec grub.spec.ORG diff grub.spec.ORG grub.spec --- 109a110,112 > # fix over4g > Patch1999: grub-0.97-over4g.patch > 189a193,194 > %patch1999 -p1 -b .over4g > --- rpmbuild -bb grub.spec cd /usr/src/redhat/RPMS/i386 rpm -i --force grub-0.97-13.i386.rpm grub-install --root-directory=/x86_64 /dev/sda
結果
無事8G認識。
x86_64
$ dmesg|grep ^Memory Memory: 7888880k/8130760k available (2357k kernel code, 233040k reserved, 1326k data, 172k init)
i386
$ dmesg|grep ^Memory Memory: 8030372k/8189280k available (2049k kernel code, 149484k reserved, 844k data, 168k init, 7443816k highmem)