- ベストアンサー
Linuxの入ったHDDをUSBから起動したい
元々デスクトップPCにて内蔵で使っていたHDDを、 変換ケーブルでUSB接続にてノートPCに繋いでいます(CentOS5)。 BIOSの設定でそのHDDから起動するようにし、 まずGRUBが立ち上がり、OSの選択画面にはいけるようになりました。 そこでOSを選択し、起動時の、ログがたくさんブワワーっと流れるところで エラーが出てしまい、そこで止まってしまいます。 途中で止まってしまうので全てのログを見る事はできませんが、 止まった時に画面に表示されているログは下記のようになっております。 ------------------------------------------------------ input: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-0000:00:1d.1-2 Making device-mapper control node Scanning logical volumes Reading all physical volumes. This may take a while... No volume groups found Activating logical volumes Volume group "VolGroup00" not found Trying to resume from /dev/VolGroup00/LogVol01 Unable to access resume device. Creating root device. Mounting root filesystem. mounnt: could not find filesystem '/dev/root' Setting up other filesystems. Setting up new root fs setuproot: moving /dev failed: No such file or directory no fstab.sys, mounting internal defaults setuproot: error mounting /proc: No such file or directory setuproot: error mounting /sys: No such file or directory Switching to new root and running init. unmounting old /dev unmounting old /proc unmounting old /sys switchroot: mount failed: No such file or directory Kernel panic - not syncing: Attempted to kill init! ------------------------------------------------------ 一見すると、 VolGroup00 /dev /proc /sys 等のファイルやディレクトリが見つからなくて、 マウントできませんでした、というエラーの様です。 しかし、こちらのHDDを再度デスクトップPCに SATAでの接続をして起動すると、きちんとOSが立ち上がり、 正常動作してくれます。 USB接続のHDDからブートさせるには、 BIOSの設定以外にしなければならない事などありますでしょうか? 宜しくお願い致します。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
本当にやるつもりであれば、MBRの書き換え、それに伴う単純化 しておく必要はないか等の調査が必要なように思います。 LVMでできるのかどうかの調査。 今までに分かっていること。 デスクトップのときは、内蔵HDDとして、MBRも、第一パーティションの、 /boot/grub/grub.confをリンクして、問題なく起動していた。 同じ状態で、USB接続とした場合に、何が問題となるか。 ノートの内蔵HDDに、正規のMBRを持ち、かつ外付けUSB接続にも、 MBRを持つ環境にどう対処してパソコンが動こうとしているのか、 分析する必要がある。 map命令により、grub.confのコール命令の前に何らかの手を打てば、 可能かどうか。 title CentOS 5 (2.6.18-8.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 たとえば、 title CentOS 5 (2.6.18-8.el5) map (hd0) (sd0) map (sd0) (hd0) makeactive root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 とやってできるか。 ただし、正しく記述する必要があり、 map (sd0) (hd0) の間は、半角ブランクを入れること。 何かここまでやって起動しなかったら、試行錯誤は、 環境をお持ちの、質問者さんにお任せします。
その他の回答 (8)
- yakan9
- ベストアンサー率54% (2244/4125)
> root (sd0,0) > として起動させてみました。 > が、GRUBが起動し、OSを選択したあとにHDDが見つからないという旨 > のエラーが発生しました。 この状態の時というか、USB接続の他のデバイスがないか、 もしないようであれば、やはり基本的なデザインである、架け替え可能デバイスに、起動を制御する、grub.confを置けないという、 大前提に立った処置のように思います。
- furaijin
- ベストアンサー率54% (12/22)
astronautさんの言うようにLVMが原因のようです。 VolGroup00が見つからない→VolGroup00/LogVol01にアクセスできない。 結果、VolGroup00/LogVol01にマウントされるべき/procや/sysが見つからない。 ですから、pvscanなどを使ってVolGroup00がどのように構成されているかを調べてみるといいかと思います。
- astronaut
- ベストアンサー率58% (303/516)
補足ありがとうございます。 fstabでは、デバイス名で決め打ちしてませんから、ここを編集してもダメですね。 もう一度起動ログをみると、 > Volume group "VolGroup00" not found > Trying to resume from /dev/VolGroup00/LogVol01 > Unable to access resume device. というところが原因のようです。(procとかsysは関係ないと思う) LVMがらみのエラーだとすると、CentOSのインストールディスクで、レスキューモードで起動して何とかできるかもしれません。(LVMは詳しくないので、この程度まで) こういうときにLVMは面倒なので、私はいつも手動でパーティショニングしています。
補足
いえいえ、こちらこそどうもありがとうございます。 LVM、便利な様で、こんな不便なところがあったんですね。 もう少し詳細に調査してみます。 原因が分かり、非常に助かりました。 ありがとうございました。
- yakan9
- ベストアンサー率54% (2244/4125)
> USB接続した状態でそのHDDにCentOSの再インストールを試みたのですが、 > HDDが壊れているのかUSB接続のHDDにはインストールできないのか、 > 途中でエラーで止まってしまいます BIOSで、USB接続を起動デバイスとして認めていないので、 だめな場合(古いマシンの場合)と、 USB接続は、リムーバブル(かけ替え可能デバイス)であるため、 インストールデバイスに適さないというデザインでだめという こともあると思います。 古いマシンだと、USB接続を起動デバイスとして、認めていないと思います。 壊れているのではなく、USB接続のため、接続されていない場合、 起動さえできないことを考慮してインストールを控えさせている のだと思いますよ。 /bootパーティションを内蔵HDDに取れば、起動はできますので、 うまくインストールすると思われます。 /bootパーティションを分けておく理由は、起動だけは確保する ために壊されないようにすることと、上記の理由もあると思います。
補足
なるほど、とても参考になります。 /bootだけを内蔵HDDにとっておけば、 環境の変更やOSの再インストールなどの後、 "/"となるディレクトリをコピーすることにより、即座に復旧できそうですね。
- yakan9
- ベストアンサー率54% (2244/4125)
USB接続は、sdaが基本です。 よって、grub.confは root (sd0,0) で試してください。 /etc/fstabは、変更はないと思います。 経験的には、IDEの内蔵HDD搭載のマシンは、時代的にSATAが なかっつたので、hda,hdbで、その他は、全てsda,sdb,です。 しかし、SATAが主流になってきた今は、Linuxの ディストリビュションにより、SATAの内蔵HDDを、hdxとする派と、 保守的に、sdxとがあります。 しかし、USB接続のHDDは、sdxと変更がないと思います。
補足
root (sd0,0) として起動させてみました。 が、GRUBが起動し、OSを選択したあとにHDDが見つからないという旨のエラーが発生しました。 IDEの内蔵HDDがhdxになるのですね。 ネット等で参考にするサイトにhda等の記述が多いのは、 その様な経緯があったのですね。 参考になりました、ありがとうございます。
- yakan9
- ベストアンサー率54% (2244/4125)
起動するときに、BIOSをそのたびに変更かけますか。 面倒でしょう。 私だったら、再インストールして、ノートPC用に作り変えるでしょうね。 ただし、/bootパーティションだけを、ノートの内蔵HDDに、100MB ほどとり、他の/や、swapファイルは、USB HDDにとります。 CentOSの、grubを利用し、デュアルブートにして、規定値を、 Windowsに設定しておくでしょう。 理由は、BIOSの変更をそのつど変更するのは面倒。 CentOSを普段使わないので、USB接続デバイスの電源をオフにしておける。 CentOSを使うときだけ、USB接続デバイスの電源を入れ、OS選択する だけでよい。 ただ、windowsの単独起動のために、いまのMBRをセーブして 保存しておくことも忘れないように実行するでしょう。 Linuxを使わなくなったときは、セーブしていた、MBRをリストアする だけでよいように。
補足
ありがとうございます、参考になります。 私も、ゆくゆくはデュアルブートで起動できるようにしたいです。 ただ、現状はとりあえず起動確認を取ろうと思い、 BIOSを変更して実行をしております。 きちんと起動ができれば、 grub-install でMBRにGRUBをインストールする予定です。 やはり再インストールが一番起動する確率が高そうですね。。 一台HDDが余っており、それをテスト用として使用していまして、 USB接続した状態でそのHDDにCentOSの再インストールを試みたのですが、 HDDが壊れているのかUSB接続のHDDにはインストールできないのか、 途中でエラーで止まってしまいます(^-^;
- astronaut
- ベストアンサー率58% (303/516)
HDDを別のPCに付け替えて利用する場合は、#1さんご指摘の grub の設定のほか、/etc/fstabの内容も、新しいPCのハードウェア環境にあわせて変更しておく必要があります。
補足
/etc/fstab の内容を確認してみました。 /proc や /sys という文字列があったので、一瞬あ、ここだと思ったのですが、 hd0やsdaなどの、環境によって変更しなければならない項目が見当たりませんが、 こちらも変更する必要があるのでしょうか? 下記、/etc/fstabの内容なります。 ----------------------------------------------------- /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0
- furaijin
- ベストアンサー率54% (12/22)
GRUBの設定じゃないですか? デスクトップPCでは、最初のハードディスク(hd0とかhdaとか)と認識されていたのが、ノートPCに接続することで2番目のハードディスク(hd1とかhdbとか)として認識されて/devや/procなどが見つからないとか。 GRUBの設定ファイルは /boot/grub/grub.confとか /boot/grub/menu.lstとかなどです。 GRUBの設定ファイルの例 http://park15.wakwak.com/~unixlife/linux/boot-grub.html
補足
Knoppix からgrub.confの設定を確認・変更してみました。 hd0,0 となっているところを hd1,0 としてみたのですが、 GRUBが立ち上がりOSを選択した直後にすぐにエラーが出ました(HDDが見つからないという類のエラー)。 hd0,0ではある程度ログが流れた後、kernel panicで止まります。 (BIOSの設定で、ノートPCのデフォHDDはオフにできるのでhd0,0で動作するのだと思います) また、デスクトップの方ではこのHDDはsdaとして認識されており、 ノートPCの方でも同じくsdaで認識されております。 (ノートの方の内蔵HDDはhdaとして認識されています) 下記grub.confの内容ですが、この設定でデスクの方では動作致します。 -------------------------------------------------- # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 5 (2.6.18-8.el5) root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-8.el5.img
補足
ありがとうございます。 LVM関係のコマンドを実行してみました。 -------------------------------------------------------- # pvscan PV /dev/sda2 VG VolGroup00 lvm2 [297.97 GB / 0 free] Total: 1 [297.97 GB] / in use: 1 [297.97 GB] / in no VG: 0 [0 ] # vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup00" using metadata type lvm2 # lvscan ACTIVE '/dev/VolGroup00/LogVol00' [296.03 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit -------------------------------------------------------- sda2と関連付いているのを見て思い出したのですが、 KNOPPIXから起動した時、hda1、hda2、sda1、sda2が見えていたのですが、 sda2のみ何故かマウントできない状態でした。 CentOSの起動時も、この様なマウントの失敗が発生し、 結果、VolGroup00が無くて起動に失敗しているのでしょうか? さらに原因を明確にするため、 正常に動作するデスクトップの方にHDDを移し、 KNOPPIXからマウントしようとすると、何故かこちらも同じく mount: I could not determine the filesystem type, and none was specified と出て、マウントに失敗しました。 この事からsda2がマウントできない事による失敗では無いと判断し、 さらに調査を進めました。 BIOSとか各種パーツの問題なのではと、 会社用のノートPCを持って帰ってきて、USB-HDDを接続して起動させようとしたところ、 やはりkernel panicの同じエラーで止まってしまいました。 この事からパーツの問題による可能性も低くなったと思います。 さらに、同じ様な体験をした方がいるのではないかと思い、 しばらく検索して下記の2つの記事が引っかかりました。 http://cgi39.plala.or.jp/campus-n/bbs_vinelinux/patio.cgi?mode=view&no=2280&p=2 http://monoist.atmarkit.co.jp/fembedded/articles/softhard/01/softhard01c.html 双方とも、USB-HDDの起動後のkernel panicで止まってしまう現象について、 USBのHDDのドライバーが必要だという内容が記載されております(どちらもVine Linux 4.2ですが)。 なので、同じくサンプルを元にして作ったshのバッチを作り、 正常起動させたCentOS上からそのバッチを実行してみました。 が、、やはりエラーは変わらず同じ内容で止まってしまいます。 しばらく、不可能なのではないかと考えながらノートPCで何度か起動しようと試みていたのですが、 kernel立ち上げ時に、高速で流れるログの中で TOSHIBAという文字とhdaという文字がprintされている事に気づきました。 このTOSHIBAというのは内蔵HDDのメーカーです。 BIOSで接続をオフにできるのですが、 Linux立ち上げ時に何故か復活してるようなのです。 GRUB起動時にはhd0,0で外付けHDDを認識していたのですが、 もしかしたらKernelのロード時にはhd1,0扱いになっているのかもしれませんね。