
Ubuntu日本語フォーラム

ログインしていません。
タイトルの通りの症状で、
grubというものが理解できていれば回復できると思うのですが、
まだ初心者なので難しいです。
どなたか外付けHDDをはずしても起動できるよう設定変更する方法をご教授ください。
eee-pc901にUbuntu10.10をインストールしてあり、
さきほど、ライブUSBを使って
外付けHDD(40GB)にUbuntu10・10をインストールしました。
外付けHDDに同じ10・10をインストールしたのは、
もしも内蔵HDDのUbuntuが具合が悪くなった時のためにすぐUbuntuを使おうと
思ったので、あまり普段から頻繁に使用する形ではないので
普段ははずしておきたいと思っています。
まんまと初心者的間違いをしてしまったようです。
外付けHDDをはずしても起動できる変更方法をおしえてください。
端末でのコマンドも、なんとかつかえるようになってきました。
よろしくお願いします。
オフライン
内蔵HDDのMBRが書き換えられ、
外付けHDD内のGRUBを起動するようになってしまったようです。
内蔵HDDのMBRを復旧する必要があるようです。
少し調べたところ、grub-installというコマンドが使えそうです。(これであってるかな?)
復旧作業に失敗すると、面倒なので確かな情報に基づいて作業する必要があります。
どなたか詳しい方がいらっしゃったら、加筆お願いします。
オフライン
お使いのeee-pc901にはOSはUbuntuしかインストールされていないのでしょうか?
Windows用のリカバリ領域などは存在しませんか?
とりあえず、外付けHDDを装着した状態で、内蔵のUbuntuを起動して、
ターミナルから、下記のコマンドを実行した結果をお知らせください。
sudu fdisk -l
-l の l は小文字のLです。
その結果を基に、内蔵HDDにGrubをインストールすることになろうかと思います。
オフライン
ありがとうございます!
PCにはUbuntuしか入れておりません。
ご指示頂いたものを表示しますと
以下のようになります。
よろしくお願いします。
ディスク /dev/sda: 4034 MB, 4034838528 バイト
ヘッド 109, セクタ 2, シリンダ 36149
Units = シリンダ数 of 218 * 512 = 111616 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000c94b2
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 10 36141 3938304 83 Linux
ディスク /dev/sdb: 8069 MB, 8069677056 バイト
ヘッド 249, セクタ 36, シリンダ 1758
Units = シリンダ数 of 8964 * 512 = 4589568 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000e6abf
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 1759 7878656 83 Linux
ディスク /dev/sdc: 40.0 GB, 40007761920 バイト
ヘッド 255, セクタ 63, シリンダ 4864
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00028808
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdc1 1 4659 37419008 83 Linux
/dev/sdc2 4659 4864 1648641 5 拡張領域
/dev/sdc5 4659 4864 1648640 82 Linux スワップ / Solaris
ディスク /dev/sdd: 16.3 GB, 16306405376 バイト
ヘッド 255, セクタ 63, シリンダ 1982
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000752ed
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdd1 * 1 1872 15035816 c W95 FAT32 (LBA)
/dev/sdd2 1873 1961 705537 5 拡張領域
/dev/sdd5 1873 1961 705536 82 Linux スワップ / Solaris
オフライン
何だか沢山ありますね。
/dev/sda が内蔵ディスクで4GB、ディスク全体を/dev/sda1にしてUbuntu。
/dev/sdb は何だろ? 8GB全部/dev/sdb1 でLinux
/dev/sdc これが問題の外付けHDDで/dev/sdc1にUbuntuですね。
/dev/sdd これは何なのだろう? swapとして機能させているのかな。
ディスクの内訳はこんな感じで合って入るでしょうか。
/dev/sda1 がトピックの#1に出てくる内蔵のUbuntuで/dev/sdc1が外付けのHDDのUbuntu。
間違いなければ、外付けのHDDを挿して、内蔵HDDのUbuntuを起動させてください。
そして、もう一度 $ sudo fdisk -l を実行します。
理由はデバイスファイル名の[sda][sdb][sdc][sdd][sde]等は認識された順番で名称が変わるために、毎回外付けHDDが/dev/sdc で有るとは限らないので作業前には要確認です。
以下は外付けHDDが/dev/sdcで有る事を前提に書きます。
(内蔵HDDのUbuntuから起動している状態で、もちろん外付けHDDは挿したままにしておいてください)
$ sudo grub-install /dev/sda
$ sudo update-grub
$ sudo umount /dev/sdc
$ sudo mount /dev/sdc /mnt
$ sudo grub-install --root-directory=/mnt /dev/sdc
これで、内蔵HDD内のGRUBと内蔵HDDのMBRがセットに、外付けも同じ様になっているので別のPCに差し込んでも起動出来ます。
その前に、今度は同じPCで再起動して外付けHDDのUbuntuを起動させて
$ sudo update-grub
を実行させる必用が有ります。
(書いていて頭が混乱してきた orz)
オフライン
hir0さん、いつも本当にありがとうございます!!
おっしゃる通りにやってみて、無事、外付HDDをはずした状態で起動できました!
同じPCなら外付けのUbuntuも起動できるので、本当にありがたいです。
まだ、他のPCに挿して起動できるか確認できていないのですが、
明日にでも確認したいと思います。
ありがとございました!
physitronさんもTsuzukiさんも、本当にありがとうございます。
オフライン
本日、外付けHDDを他のPCにつなげてみたところ デバイスがみつかりません。
grub rescueという表示になってしまいました。
hir0さんのご指示の
hir0さん による投稿:
これで、内蔵HDD内のGRUBと内蔵HDDのMBRがセットに、外付けも同じ様になっているので別のPCに差し込んでも起動出来ます。
その前に、今度は同じPCで再起動して外付けHDDのUbuntuを起動させて
$ sudo update-grub
を実行させる必用が有ります。
(書いていて頭が混乱してきた orz)
の通りやってみたのですが、
eee-pcだと問題なく起動できるのですが、
他のPCだとうまくいきません。
申し訳ございませんが、
他のPCでも起動できる設定変更を教えて頂けないでしょうか?
オフライン
一度、外付けのHDDのUbuntuを起動した状態で、
$ sudo update-grub
は実行されでしょうか?
オフライン
#8は無し。
原因と現状の憶測は抜きにして単純で通常なら確実な方法を、、、
eee-PCでUSB-HDDを起動させてください。
端末を開き
$ df
一番上に、" / " のマウントされているデバイス名が表示されます。
/dev/sdXX <数字> <数字> <数字> <%> /
これは現在 ルート( / )がマウントされているデバイスファイル名、つまり起動しているUbuntuのデバイスファイル名が分かります。
先頭の /dev/sdXX 最後の数字はパーティションナンバーです。
パーティションナンバーを取り除いた/dev/sdX の部分がUSB-HDDを表します。Xの部分はa,b,c,d,e,fと変わりますので確認して下さい。
ここでは/dev/sda と仮定して書き込みます。
$ sudo grub-install /dev/sda
$ sudo update-grub
デバイスファイル名は確実に確認して下さい。 間違えて内蔵HDDのデバイスファイル名を指定すると#1の状態に戻ってしまいます。
ここからは蛇足です。
GRUB2の設定ファイルに記載されるデバイスファイルの指定方法はUUIDです。
UUIDは固有のIDですが、パーティションサイズの変更やファイルシステムの変更を行った際にUUIDも変更されてしまいます。
変更された場合は $ sudo update-grub を実行して設定を更新する必用が有ります。
デバイスファイル名での指定も出来ます。
数年前までは普通でしたがデバイスファイル名で指定します/dev/sda2 や /dev/sdc1 等です。
内蔵HDD等、通常は接続したままのデバイス環境では問題ないですがUSB等、抜き差しする場合はその都度に認識される順に/dev/sd 以降が a,s,c,d, と変更されてしまいますので使用状況によっては好ましく有りません。
もう一つはデバイスにラベルを付ける方法です。
任意の名称を付ければUUIDやデバイスファイル名の指定の様に勝手に変更されることはありませんがラベルに使用する名前はユニーク(唯一)でなければいけません。
オフライン
hir0さん、詳しいご教授、本当にありがとうございます!
教えて頂いた方法でやり直したら、無事できました。
本当にありがとうございます。助かりました。
オフライン