
Ubuntu日本語フォーラム

ログインしていません。
いつもお世話になっております。
自作PCにxpとlinux(CentOS)の デュアルブート環境をubuntu7.10 Live CDで作成し、
grubでブートしていました。
先日、xubuntu 10.04 の USB起動メモリを作成しました。
終了後、PCを再起動したら、
grub rescue>
というメッセージが出て、どのOSも起動出来ません。
調べたところ、USB xubuntu を作成した際、grub のロード先をHDDにしてしまった
ことが原因だと分かりました。
そこで、多くのサイトで紹介している以下のコマンドを実行しました。
grub rescue> set prefix=(hd0,2)/boot/grub
grub rescue> insmod (hd0,2)/boot/grub/normal.mod
すると、
error: file not found.
というエラーが出てしまいます。
Live CDからマウントして調べると、grubディレクトリにnormal.modがありません。
そこで、他からnormal.modをコピーしてきて同様にコマンドを実行しましたが、
error: file not found.
と同様にエラーが出て先に進めません。
/hda2/grub でマウントできるので、
grub rescue> insmod (hd0,2)/boot/grub/normal.mod
は間違いないと思います。
grub rescue> ls
を実行すると、
(hd0) (hd0,3) (hd0,2) (hd0,1) (fd0)
また、fdisk -l
を実行すると、
root# fdisk -l
Disk /dev/hda: 81.9 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 7394 59392273+ 7 HPFS/NTFS
/dev/hda2 7395 7407 104422+ 83 Linux
/dev/hda3 7408 9964 20539102+ 8e Linux LVM
の結果です。
xpとlinuxを復旧する手段があるでしょうか?
以上よろしくお願いします。
オフライン
えーと、「xubuntu 10.04 の USB起動メモリ」が起動FDの様にブートローダのみの起動ディスクではなくて、xubuntuをUSBメモリにインストールしたものと理解して良いんですよね?
grub rescue> ls の結果にUSBメモリが含まれていませんので、USBメモリを挿して grub rescue> ls の結果を参照して
grub rescue> set prefix=(hd0,2)/boot/grub
grub rescue> insmod (hd0,2)/boot/grub/normal.mod
を実行してみてください。
現在指定されている(hd0,2)のGRUBとxubuntuで間違って書き込んでしまったGRUBとはバージョンが代わり全く別の仕組みが使われていますので(hd0,2)/boot/grub にはnormal.modは有りません。normal.modを使用する仕組み自体備わっていません。
xubuntuのインストールが成功しているのでしたらUSBメモリを挿してGRUB2が起動すると思いますがどうでしょうか?
事無くインストールに成功されているのでしたら、(色んなパターンが有りますが)xubuntuから
$ sudo fdisk -l
でUSBメモリのデバイスファイル名を確認して下さい。
$ sudo grub-install /dev/sd? #(/dev/sd? はUSBメモリのデバイスファイル名)
念の為に
$ sudo update-grub
も実行しておきましょう。
再起動して下さい。
Ubuntu7.07のエントリーを選択して起動させます。USBメモリは抜いてください、不要なエントリーが書き込まれてしまいます。
$ sudo grub-install /dev/hda
念の為に
$ sudo update-grub
# /dev/hda が内蔵HDDで有ることを確認してください(思い込みがミスを招くので)
もしUSBメモリへのインストールが上手く行えていない場合はライブCDからブートローダをインストールします。
/dev/hda が内蔵HDDとして書きます。
GPartedを起動して/dev/hda2 を右クリック、「フラグを編集」を選び、bootにチェックを入れます。
/dev/hda1のbootフラグが外れていることを確認してください。(付いて居れば外してください)
$ sudo apt-get uodate
$ sudo apt-get install lilo
何か聞かれたら全てyes、OKの類を選択して進んでください。
$ sudo lilo -M /dev/hda mbr
再起動後に7.07が起動しますので
$ sudo grub-install /dev/hda
(ちなみに7.07のGRUBはExt4 を理解できません)
必要であればbootフラグを元に戻しておいてください。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
いや、、、 私も読み間違っています、CentOSなんですね。
Ubuntu7.07では無く7.10だし、しかも7.10は問題に何も関与していないですね orz
まぁ、取りあえずブートローダを適切にインストールすれば解決します。
オフライン
hir0 様、kiyop 様 ご回答大変有難うございます。
hir0様の書かれた通り、xubuntuをUSBメモリにインストールしようとしました。
すべてはこれがいけなかったのです。Orz
usbメモリ起動のxubuntuを作って、ノートPCで使いたいと思ったことが、全てのはじまりでした。
さて、私の自作PCは、M/Bが古いためか (Aopen AX4PE MAX) usbメモリブートが出来ません。
よって、liveCDから起動して、GPartedを起動してbootフラグをチェックして、以下のコマンドを入力しました。
$ sudo apt-get update
$ sudo apt-get install lilo
$ sudo lilo -M /dev/hda mbr
そして、liveCDを抜いて、再起動すると以下のメッセージが出てしまいます。
No boot signature in partition
DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER
liveCD は、xubuntu10.04 を使ったのですが、これでよかったのでしょうか?
文章が大変読みずらくて大変申し訳ありません。
よろしくお願いします。
オフライン
それと、
# fdisk -l
の出力ですが、最初の投稿の時の出力は、 knoppix のliveCDで出力させたものを投稿したものでした。
改めて、xubuntu のliveCDからfdisk -l を実行すると、HDDがsda になっているではないですか。
よって、先ほどのhda は、xubuntuでは sdaになりますので、hir0 様の書かれたコマンドは
sdaに変えて実行しています。解りづらくて大変申し訳ありません。
以下に、xubuntu のliveCDで出した fdisk -l を添付します。
ubuntu@ubuntu:~$ sudo fdisk -l
ディスク /dev/sda: 82.0 GB, 81964302336 バイト
ヘッド 255, セクタ 63, シリンダ 9964
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x34273426
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 1 7394 59392273+ 7 HPFS/NTFS
/dev/sda2 * 7395 7407 104422+ 83 Linux
/dev/sda3 7408 9964 20539102+ 8e Linux LVM
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
Windwsはbootフラグを変更することで起動しますがLinuxを起動できるブートローダを入れないといけませんね。
/dev/sda2にブートローダが入っていないのでしたら、、、そうですね、もう一度ライブCDで(ライブCDは機動毎に初期化されてしまうので)
$ sudo apt-get update
$ sudo apt-get install lilo
内蔵HDDの/dev/sda2 をマウントして</dev/sda2のマウント先>/etc にlilo.confを作成します
$ sudo gedit
又、マウントした/dev/sda2 の/boot にあるカーネルのバージョンなどを確認してください。
管理者権限でテキストエディタが開きますので以下を適宜変更を加えてコピペして「lilo.conf」と名前をつけて/dev/sda2の/etcに保存します。
変更すべき項目は
image=/boot/vmlinuz-2.6.32-24-generic
#(/dev/sda2)/boot に有るカーネルの名称に変更してください。
initrd=/boot/initrd.img-2.6.32-24-generic
#(/dev/sda2)/boot に有るinitrdの名称に変更してください。
#複数有る場合は必ずカーネルとバージョンを合わせてください
https://forums.ubuntulinux.jp/viewtopic.php?pid=67856#p67856
$ sudo gedit /etc/lilo.conf
#config
boot=/dev/hda
prompt
timeout=70
lba32
#bitmap=/boot/sarge.bmp
#bmp-colors
menu-title="/dev/sda2"
image=/boot/vmlinuz-2.6.32-24-generic
label=sda2
initrd=/boot/initrd.img-2.6.32-24-generic
root=/dev/sda2
read-only
menu-title="/dev/hda2"
image=/boot/vmlinuz-2.6.32-24-generic
label=hda2
initrd=/boot/initrd.img-2.6.32-24-generic
root=/dev/hda2
read-only
other=/dev/sda1
label=sdaXP
boot-as=0x80
other=/dev/hda1
label=hdaXP
boot-as=0x80
(/dev/sda2)/etc/lilo.conf が出来上がれば(保存が完了すれば)端末から
$ sudo lilo
再起動して/dev/hda2 を選択してください。
起動できない場合は lilo.conf の2行目の boot=/dev/hda を boot=/dev/sda に変更して再度
$ sudo lilo
を実行します。
再起動して /dev/sda2 を選択してください。
(「$ sudo lilo」は変更が生じる毎に実行しなければいけません)
無事に起動すれば
$ sudo grub-install /dev/sda
$ sudo grub-install /dev/sda2
(sda2にも入れとけば安心)
lilo を使用するのは個人的に好ましくない(面倒くさい)のでGRUBに書き戻します。
デザインやカスタマイズ等に希望が無ければ何事もメンテナンスされたデフォルトのシステムを採用する方が何かと都合の良いことが多々あります。
lilo 以外のLinuxを起動できるブートローダは幾つか存在しますので安心してください。
今気がつきましたが、grub4dos を使用すると実績があるので簡単に解決してしまうのですが折角書いたので上記も投稿しておきます。
grub4dos ですがライブCDからGPartedでbootフラグをXPに書き戻してください。
grub4dos-0.4.4.zipをクリックしてダウンロードしたアーカイブをダブルクリックして解凍します。
「場所」からXPが有る/dev/sda1を開き、解凍されたgrub4dos-0.4.4フォルダに有る「grldr」を に保存してください。Cドライブに保存と同意です。
マウントされた/dev/sda1を開きgrldrを保存されましたら「boot.ini」をクリックしてテキストエディタで開き次の一行を追加して保存します。
C:\grldr="Linux"
念の為に/dev/sda2の/boot/grub/menu.lstをコピーして同名でCドライブ(/dev/sda1)に保存しておいてください。
再起動すると起動画面にLinuxの選択項目があるので選択すると起動できます。
問題が有るとすれば、文字コードの違いからCドライブに置く(置かなくても良いらしいが環境依存がありそう)menu.lstやboot.iniの変更などはXPから行った方が良いかもしれません、ノートパッド等を使用して編集してください。
オフィスソフト等の高機能なソフトは見えない装飾文字が埋め込まれてしまいます。
XP上ではboot.iniは隠しファイルになっていますのでフォルダオプションだったかな?から隠しファイルを表示する設定にしなければいけません。
#ところでkiyopさん、複数のアカウントを使用するのが悪いとは言わないけど同一トピックで一人二役?(とは少し違うな)は止めた方が良いですよ。
以前にも書いたような、書かれていたような気がしますが「間違えて古いアカウントを使っちゃった」のでしたらアカウントを削除すれば防げます、たまに複数アカウントを作った場合の削除依頼のような書き込みを見かけますので他のメンバはそうしている様です。
意図的に複数の名前を使い分けているのでしたらゴメンなさい。賛成はしませんが余計な口出しですね。
オフライン
hir0 様
大変有難うございます。
早速試して見たいと思います。
そもそも私か最初に、PCでデュアルブートの環境を構築したとき、
1、 1台のHDDから、パーティションを切って、普通にXPをインストールしました。
2、 ubuntu7.10 のliveCDから、空いているパーティションにubuntuをインストールしました。このときに、
PC起動時に、デュアルブート画面が出るようになった。
3、 CentOSのインストールCDで、ubuntuのパーティション領域を上書きする様に、Centosをインストールしました。
というやり方で、構築しました。その後、普通にデュアルブートで使用出来、何の問題も無かったので
ブートローダについては、気にしませんでした。
それと、気になっていたことで、今更ながらと思うかもしれませんが、bootフラグを付けたsda2ですが、
(/dev/sda2)/boot と(/dev/sda2)/etcのディレクトリが存在していないのですが良いのでしょうか?
念の為に、/dev/sda2 にマウントして (/dev/sda2)以下のファイルと、(/dev/sda2)/grub/grub.conf
の内容をコピペします。
ubuntu@ubuntu:sudo mkdir /mnt/hdd
ubuntu@ubuntu:sudo mount /dev/sda2 /mnt/hdd
ubuntu@ubuntu:/mnt/hdd$ ls
System.map-2.6.18-194.17.4.el5 initrd-2.6.18-194.el5.img
System.map-2.6.18-194.26.1.el5 lost+found(ディレクトリ)
System.map-2.6.18-194.el5 message
config-2.6.18-194.17.4.el5 symvers-2.6.18-194.17.4.el5.gz
config-2.6.18-194.26.1.el5 symvers-2.6.18-194.26.1.el5.gz
config-2.6.18-194.el5 symvers-2.6.18-194.el5.gz
extlinux (ディレクトリ) vmlinuz-2.6.18-194.17.4.el5
grub (ディレクトリ) vmlinuz-2.6.18-194.26.1.el5
initrd-2.6.18-194.17.4.el5.img vmlinuz-2.6.18-194.el5
initrd-2.6.18-194.26.1.el5.img
ubuntu@ubuntu:/mnt/hdd/grub$ ls
device.map grub.conf minix_stage1_5 stage2
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5
ffs_stage1_5 menu.lst stage1 xfs_stage1_5
ubuntu@ubuntu:/mnt/hdd/grub$ sudo more grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,1)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.26.1.el5)
root (hd0,1)
kernel /vmlinuz-2.6.18-194.26.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.26.1.el5.img
title CentOS (2.6.18-194.17.4.el5)
root (hd0,1)
kernel /vmlinuz-2.6.18-194.17.4.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.17.4.el5.img
title CentOS (2.6.18-194.el5)
root (hd0,1)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
title Other
rootnoverify (hd0,0)
chainloader +1
以上よろしくお願いします。
オフライン
LVMに付いては(詳しくない=知らない)システムが認識して書きこんだ設定(menu.lst)に
「/dev/VolGroup00/LogVol00」(通常なら/dev/sda3)が/のデバイスファイルであり、起動オプションにrhgb が必要で今まで起動できていたのですから大丈夫です。逆に情報が無ければ識者の方に助けを頂く事になりそうです。
/bootが / と別にインストールされていますね。
/dev/sda2 がboot で/dev/sda3 (/dev/VolGroup00/LogVol00)に有る空のbootディレクトリにマウントされるので問題は無いです。起動後/etc/fstabを確認してみてください。/dev/sda2 を/boot にマウントする記述がされているはずです。
menu.lst ではGRUBのルートは(hd0,1) ((hd0,1) = /dev/sda2) を指定して(hd0,1)/vmlinuz となっています。
最初の(hd0,1)はroot で指定されているので省略されています。
/ ディレクトリの場所(/dev/VolGroup00/LogVol00)、起動オプション、initrdの場所が書きこまれているので、後は「grub4dos」がこのmenu.lstを読み込んで記述通りにカーネルを起動します。
(lilo.conf は間違っていますね。/boot を分けずに /dev/sda2 が / パーティションとして書いています。)
オフライン
hir0 様
まことにありがとうございます。
もうこうなったら、この機会に、ブートローダの勉強もかねようとおもいます。
さて、liveCDから起動し、
ターミナルで
#sudo apt-get update
#sudo apt-get install lilo
#sudo mkdir /mnt/hdd
#sudo mount /dev/sda2 /mnt/hdd
#cd /mnt/hdd
#sudo mkdir etc
#cd etc
#sudo gedit lilo.conf で#9の lilo.conf の内容をカスタマイズして保存
#sudo lilo
と実行すると、
ubuntu@ubuntu:~$ sudo lilo
Fatal: Cannot open: /etc/lilo.conf
とエラーが出てしまいます。
ためしに、liveCD上の/etc にlilo.conf をコピーして、
#sudo lilo
を実行すると今度は
ubuntu@ubuntu:/etc$ sudo lilo
Fatal: Trying to map files from unnamed device 0x0010 (NFS/RAID mirror down ?)
とエラーが出てしまいます。
デュアルブートを構築したときはHDDは1台でしたが、
その後、HDDを増設し、centosのPVとして、VGを作成しています。(XPは関係ないです)
そのことと、関係あるでしょうか?
だいぶ、お手上げの状態になってきてしました。
もう grub4dos を使用するか、xp をのこして、centosを最初から入れ直した
方が良いかなとも思い始めています。
良い解決法はありますでしょうか?
オフライン
#10の内容から#11でも触れていますがマウントした/hdd つまり/dev/sda2はUbuntuでは有りません(抽象的な表現ですが)Ubuntuは/dev/sda3 に居ます。 /boot フォルダを分けてインストール方法を用いた結果。/boot 以下のファイルは/dev/sda2にインストールされています。
なので(/dev/sda3)/etc にlilo.cfgを置くのが正解ですが、#11に書いたようにLVMに明るく有りません。
/dev/sda3を上手くマウント出来れば良いのですが環境を持っていないために検証は出来ません。
その辺りも含めたliloは面倒くさいので起動後はGRUBを。です。
もう grub4dos を使用するか、xp をのこして、centosを最初から入れ直した
方が良いかなとも思い始めています。
書き込みを良くお読み下さい。
書き方が悪いのかもしれませんね。
一番簡単に解決するだろう方法が「grub4dos」で「liloはトピを読み違えてlilo.confは間違いですね」です。
そして「適切なブートローダをインストールすることが解決策であり、その種類は複数有ります」と言う意味を書いたつもりでしたが上手く伝わらなかった様です。
なので悲観的な方向に向かわなくても良いのでは?と思うのだけど。。。
オフライン
マウント出来ました。
centosでは、複数のHDDでVG(ボリュームグループ)を作って、それを切り分けて
LV(論理ボリューム)を作っていました。
xubuntu のliveCD から、lvm2をインストールして、
ubuntu@ubuntu:~$ sudo mount /dev/VolGroup00/LogVol00 /mnt/vhdd
で、マウント出来ました。
#13でhir0 様が書かれていた様に、/etc/fstabには、
ubuntu@ubuntu:/mnt/vhdd/etc$ more fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/VolGroup00/lvol0 /mnt ext3 defaults 1 1
と書かれておりました。
ここまでやりましたが、疑問なのはlilo.conf をこのマウントした /mnt/vhdd 下の
etcディレクトリに書き込んだときに
lilo を実行すると、lilo.conf を見にいけるでしょうか?
#sudo lilo はliveCDで実行すると思いますが違っておりますか?
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
書き忘れてしまいましたが、#8でご指摘されて通り、
Gpartedでbootフラグを/dev/sda1にすると、
windowsが起動する様になりました。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
お騒がせしました。無事復旧しました。
centosのインストールCDからrescureモードで起動して、
grub-installを実行したら、デュアルブートできるようになりました。
最初に、デュアルブート環境を構築するときに、ubuntu7.10でgrubを
/dev/hda(/dev/sda)にインストールし、その後、centosをインストールし、
grubも同じ場所にインストールしていたのだと思います。
てっきりubuntuのbrubからやり直さないとだめだと思っていました。
返事を下さった hir0様、kiyop様、kiyoshi様有難うございました。
今回の件では、ブートローダの知識がいかに無いかを思い知らされました。
もっと勉強しないとだめですね。
ちなみにcentosなのですが、参考程度に復旧方法を書きます。
1, CentOSインストールCDを入れて、PCを起動。
プロンプトが出たら :linux rescue を入力。
2, 言語設定 English を選択。
3, キーボード jp106 を選択。
4, シェルが起動するので # chroot /mnt/sysimage
5, # grub-install /dev/hda でHDDをインストールgrubをするを入力
6, # exit を2回入力すると、自動でリブートされます。
7, 再起動後、画面が表示されます。
以上です。協力してくださった方々、大変有難うございました。
オフライン
復旧良かったです。:)
lilo はlilo-M と違い簡単にはライブCDからは入れられ無い様です。中途半端な情報を書きこんで申し訳ないです。
途中で書き込んではいますが、何らかの方法で起動後は最終的にGRUBに戻した方が良いと書きましたが、ここまでは自力で解決されていますので、最後に grub-install /dev/sda3 (hda3かな) も実行しておくとMBRが壊れたときの保険になります。
終始お粗末で面目ないです。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン