スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

Grub2の復旧とか

Ubuntu9.10で標準で採用されてるGrub2ですが、いまいちよく分かってないままだったのでちょっと色々調べてみました。
どうやらパッケージとしてgrub-pc,grub2が入ってるかgrubが入ってるかの違いだけで、復旧、MBRへのインストールなどはほぼ同じっぽい。
一番の違いはやはりmenu.listがgrub.cfgになってることですが、これは単なる復旧であれば触る必要がないところだし。(画面やら表示順を変えるときにいじるもの)
参考にしたのは
Grub 2 入門
Ubuntu Documentation Grub2
GNU GRUB 2 Manual

Grubのバージョン確認

$ grub-install -v
grub-install (GNU GRUB 1.97~beta4)


GrubのMBRへのインストール。sdbってとこは俺の環境なので、環境次第でsdaやらsdcに変わります。

$ sudo grub-install /dev/sdb
[sudo] password for tmin:
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0) /dev/sda
(hd1) /dev/sdb


これは以前にもやったけど、設定反映のときなど、grub.cfgを自動で生成してくれます。

$ sudo update-grub
Generating grub.cfg ...
Found Debian background: moreblue-orbit-grub.png
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found linux image: /boot/vmlinuz-2.6.31-13-generic
Found initrd image: /boot/initrd.img-2.6.31-13-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Ubuntu 8.10 (8.10) on /dev/sdb2
done



試しにpurgeしようとしてみると。

$ sudo apt-get purge grub-pc
[sudo] password for tmin:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
grub-pc* startupmanager*
アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 0 個。
この操作後に 2,884kB のディスク容量が解放されます。
続行しますか [Y/n]? n


ここでやめてしまいましたが、この容量からみるにたぶん大量の設定ファイルが削除されるんでしょう。
これでyにした上で$ sudo apt-get install grub で旧grubインストールして、$ sudo grub-install /dev/sdb でMBR書き換えて、$ sudo update-grubでmenu.list生成すれば旧grubに戻すことも出きるっぽいです。たぶん。

さて、一番覚えておきたいのがLiveCDからの復旧。
Reinstalling from LiveCD
なお、以下の操作はHDDにインストールしたUbuntuから行ったものなので、LiveCDだとちょっと違うところがあるかもしれません。まぁ、大丈夫だとは思うけど。
最初にあるfdiskってのがよく分からなかった(これってパーティション切るときのじゃないの?)んですが、-lつけて今のパーティション構成を確認してるだけっぽい。

$ sudo fdisk -l

ディスク /dev/sda: 500.1 GB, 500107862016 バイト
ヘッド 255, セクタ 63, シリンダ 60801
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0xab0710b2

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 12748 102398278+ 7 HPFS/NTFS
/dev/sda2 12750 60419 382909275 7 HPFS/NTFS

ディスク /dev/sdb: 250.1 GB, 250059350016 バイト
ヘッド 255, セクタ 63, シリンダ 30401
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0x2a7cfcdb

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 8999 72284436 83 Linux
/dev/sdb2 * 9000 11653 21318255 83 Linux
/dev/sdb3 11654 30401 150593310 5 拡張領域
/dev/sdb5 11654 29951 146978653+ 83 Linux
/dev/sdb6 29952 30401 3614593+ 82 Linux スワップ / Solaris


で、こっちだとextなパーティションだけ拾ってくれるのか?

$ df -Th
ファイルシステムのタイプ サイズ 使用 残り 使用% マウント位置
/dev/sdb1 ext4 68G 8.9G 56G 14% /
udev tmpfs 1.9G 296K 1.9G 1% /dev
none tmpfs 1.9G 1.1M 1.9G 1% /dev/shm
tmps tmpfs 1.9G 3.9M 1.9G 1% /tmp
none tmpfs 1.9G 236K 1.9G 1% /var/run
none tmpfs 1.9G 0 1.9G 0% /var/lock
none tmpfs 1.9G 0 1.9G 0% /lib/init/rw
tmps tmpfs 1.9G 0 1.9G 0% /var/tmp
/dev/sdb5 ext4 138G 109G 23G 83% /home
/dev/ram9 tmpfs 2.0G 2.4M 2.0G 1% /mnt/ramdisk


ここでgrub.cfgが置いてあるパーティションがどこかを確認しとくわけだ。
で、そのパーティションをマウント。

$ sudo mount /dev/sdXX /mnt # Example: sudo mount /dev/sda1 /mnt


俺の場合はsdb1にUbuntuが入ってるので、sudo mount /dev/sdb1 /mnt になるはず。
もちろんgrubの設定ファイルが置いてあるところをマウントしなくちゃいけないので、/bootを別パーティションに分けてるときなんかはそのパーティションをマウントするんでしょう。

デバイスをマウントして権限変更?

$ sudo mount --bind /dev/ /mnt/dev
$ sudo chroot /mnt


これはいまいち必要性が分からないんだけど、上のマウント含めてここまではGUIで行けそうな気もしますが。
もしかしたら9.10でWindowsのパーティションとか、別のOSのパーティションにアクセスするのに認証が必要になってたから、そのせいだろうか?

ここまでやって、いよいよGrub本体のインストール。

$ sudo grub-install /dev/sdX


俺の環境ではsdbの先頭に入れたい(sdaの先頭にはVistaのブートローダーが入ってるはず)ので
$ sudo grub-install /dev/sdb 
になるはず。
で、ちゃんと入ってるかチェック。

$ sudo grub-install --recheck /dev/sdX


マウントしてたとこのアンマウント

$ sudo umount /mnt/dev
$ sudo umount /mnt


これもGUIでできそうな気もしますが?Nautilusから。
で、再起動と。

結局、非常時に役立ちそうなのは
$ sudo grub-install /dev/sdX Grub本体のインストール
$ sudo update-grub 設定ファイルの再生成
$ sudo grub-install --recheck /dev/sdX ちゃんとインストールされてるかチェック
この辺りさえ覚えておけばある程度のトラブルには対処できそうな感じです。
RC辺りからstartupmanagerもある程度対応してくれてるみたいなので。

関連記事
Ubuntu9.10の設定色々。Grub2&日本語版セットアップヘルパ&ibusをSCIMに変更
Ubuntu 9.10(Grub2)でスプラッシュに起動過程を表示しようか
GRUB2の設定がいみふ
Ubuntu9.10(GRUB2)ではstartup managerは鬼門なのかな?
Grubの設定変更
転ばぬ先に覚えときたいGrub再インストール
Grub2とStartupmanager。あとアップグレードした時の旧Grubとの共存とか置き換えとか
【Project】GRUB2のOS選択画面背景変更【Mikunchu】
Ubuntuをインストールする前に・・・MBRの存在を知っておこう。
やはりよく使うLiveCDからのGRUB2再インストール
Ubuntu Alternate版のレスキューモードは結構使えるかも。
関連記事
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

286:
fdisk -l で、物理的なドライブのパーティションを確認。
df で、どのドライブ(パーティション)が、どこにマウントされているのか確認、ってところなんじゃないですかね。
dfだとマウントされてないパーティションは表示されないし。

sudo mount --bind /dev/ /mnt/dev は、これから/を変更するので、その際に、/devにアクセスできなくなると困るので、/devをマウントしていて、
sudo chroot /mnt で、/mntを/にしているんだと思いますよ。

ここまでやって初めて、sudo grub-install /dev/sdXが正しく期待通りに動作することになると思います。

そうじゃないと、起動したLiveCDの/dev/とかmbrを見に行くようになってしまうので。
chrootで、指定ドライブから起動したことにするんじゃなかったかな?
#確か、そんな感じ。詳細は調べていただくとして。(^^;
287:
なるほど。いつもお世話になります。
詳しいご説明ありがとうございます。

> sudo mount --bind /dev/ /mnt/dev は、これから/を変更するので、その際に、/devにアクセスできなくなると困るので、/devをマウントしていて、
> sudo chroot /mnt で、/mntを/にしているんだと思いますよ。
このあたりの操作を一番疑問に思ってたんですが納得です。
LiveCDからHDD上のシステムを/mntに置いて、それを/とみなすようにいじってやるってことですね。
確かに言われてみれば普通にやってしまうとLiveCDのシステムが反映されちゃいますね。

調べようと思うとまだまだGrub2の日本語のTipsは少なめかなぁ?とか。(ま、コマンドコピペなら問題ないんですがw
もう少しすると充実してくるかと期待してみたり(他人頼みw
975:No title
参考になりました。有益な情報ありがとうございました。
976:No title
コメントありがとうございます。
ちと古い情報ですが、参考になったのなら本望です。

コメントの投稿

管理者にだけ表示を許可する
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。