
Ubuntu日本語フォーラム

ログインしていません。
お世話になります。
MacBook Pro に 11.10 をインストールしているのですが、別のディストロを入れるために gParted でパーティションの縮小及び移動したところ、Ubuntu が起動しなくなってしまいました。
現在、LiveCD から、boot=casper を root=/dev/sda2 として起動している状態です。
rEFIt を再インストールしてみましたがダメで、grub-install /dev/sda したところ、guid パーティションテーブルにはインストール出来ない!みたいな感じに怒られてしまいました。
この、起動できなくなったパーティションを復旧させるにはどうしたら良いでしょうか。
お知恵を拝借いただけると幸いです。
オフライン
UEFIでの起動の場合、grubの第1ステージ(?)がいらなくなって、その代わり、第2ステージ(?)がgrub.efiというファイル名でEFIシステムパーティションに配置されている必要がある と、最近読んだ気がします。このgrub.efiというefiアプリケーションが、直接、UEFIから起動されることで、grub2が動く と。
grub-efiのパッケージを導入し、/boot/efiに、EFIシステムパーティションをマウントして、grub-installするとうまくいったりしないでしょうか?(UEFI環境の場合、インストール先デバイスやパーティションの指定自体がオプションとして存在しなかった(/boot/efi固定)ような気が。微妙に利用可能なオプションがことなるので、今インストールされているgrub-installのhelpを参照してみると区別がつくかもしれません。)
※パーティションを移動するとダメということは、grub.efiの中にgrub-install時点でセクタリストが埋め込まれる作りなのかも。
UEFIではなく、MBRからの起動の場合は、bios_grub属性のついたパーティションが必要です。ここに、第2ステージ(?)が直接書き込まれます(GPTでは、MBRの後ろに隙間が無いため、専用のパーティションとして場所を確保しておくことが必要)
(まだUEFI環境を持っていなくて、全くの未検証。VirtualBoxとかの仮想環境でUEFIという環境がほしい・・・)
オフライン
weyk さん、アドバイスありがとうございます。
grub-efi パッケージをインストールしてから、grub-install /dev/sda したところ、
Installation finished. No error reported.
となって、grub のインストールは成功?しました。
が、依然として、LiveCD からでないと起動できません。
それと、/boot/efi は存在しませんでした…。
オフライン
LiveCDからの起動のため/boot/efiがマウントされていないのではないでしょうか。
/etc/fstabにマウント情報が記載されていないでしょうか。
あれば、/boot/efiにEFIブートパーティションをマウントして再度試してみて下さい。
それでもだめなら
sudo dpkg-reconfigure grub-efi
でどうでしょうか。
余談ですが、最近のVBoxは試験的実装ながらUEFIに対応しています。
上記は先日、VBoxでいろいろ試したときの経験からの情報なので、Mac上でどこまで通用するかちょっと自信はありません。
もしかしたらrEFIt側でもなにか処理が必要になるかも。
さらに余談になりますが、VBoxのUEFIモードは何故かVRAM<=64MBにするか、MEM<2GBにしないと起動に失敗するようです。
オフライン
ff
LiveCDからの起動のため/boot/efiがマウントされていないのではないでしょうか。
/etc/fstabにマウント情報が記載されていないでしょうか。
あれば、/boot/efiにEFIブートパーティションをマウントして再度試してみて下さい。
それでもだめなら
sudo dpkg-reconfigure grub-efi
でどうでしょうか。
hmatsue さん、アドバイスありがとうございます。
帰宅したら確認してみます。
ところで、rEFIt 自体が起動しなくなってしまったのですが、grub-efi パッケージの導入と関係ありそうでしょうか?
Mac(マシン自体) を再起動すると MacOSX が起動してしまい、Option キーを押しながら起動すると、rEFIt のブートメニューが出ず、Machintosh HD、Windows(Ubuntu)、Windows(CD-ROM) のセレクト画面になってしまいます。
オフライン
Mac OS XのUpdateが流れた場合に、起動時に実行されるプログラムの指定が戻ってしまうことがある という記事を見かけました。
Mac OS Xでは、どのEFIプログラムを最初に実行するかを管理しているらしく、MAC OS Xのローダーであるboot.efiを選択している場合、Mac OSの起動専用になります。
再び、rEFItを最初に起動したい場合は、下記のサイトのManual Installation on the Mac OS X volume
の3を実行すると良いかと思います。
http://refit.sourceforge.net/doc/c1s1_install.html
※EFIシステムパーティションにrEFItを導入している場合は、Manual Instalationではなく、Installing on the EFI System Partitionを参照してみてください。
今メニューに出ているUbuntuはおそらく、先のgrunb-installで入ったMBRのものですね。元は構成が少し気になります。
(rEFIt経由でEFI起動?bootcamp相当にとるMBR起動?)
これは、EFI版のgrub-intallの場合は、EFIシステムパーティションにしか書き込むつくりのため、デバイスの指定をするとエラーになるようなため、grub-intall --helpにて、「Install GRUB on your EFI partition.」と出るかどうか確認してみてください。
インストール先のデバイス指定がエラーとならず、かつ、インストール先でディスク全体をさしてGPTで成功しているとすると、実はbios_grubパーティションの有る構成なのかなぁ という気もしてきました。
(もしかして、この辺がうまくできれば、Mac miniにもうまくゆくのでしょうか)
オフライン
matsue さん、weyk さん、アドバイスありがとうございます
/etc/fstab に記載は無いようです。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=a70fb30f-e35f-487a-949a-32b1f7df0633 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda3 during installation
UUID=5b1144e9-a0d0-47b7-a700-02c3f0349315 none swap sw 0 0
sudo dpkg-reconfigure grub-efi
については、効果がありませんでした。
fEFIt が起動しない件は、
cd /efi/refit
./enable.sh
で、解決しました。
rub-intall --help の結果は、
Install GRUB on your drive.
となりました。
オフライン
rEFIt のメニューから確認してみたところ、
Error : Not Found returned from gptsync.efi
というメッセージを発見しました。
これは、参考になるでしょうか。
オフライン
うーん。weykさんが御推察のように、
もともとのUbuntuの起動方式はUEFIではなく、
BIOSエミュレーション方式だったのでしょうか。
UEFI方式なら、
http://mac.linux.be/content/problems-refit-and-grub-after-installation
あたりで復旧させられそうに思えますが。。
sudo fdisk -l sudo parted -l
するとどのように表示されますでしょうか。
オフライン
petit@petit-Mac:~$ sudo fdisk -l
[sudo] password for petit:
警告: GPT (GUID パーティションテーブル) が '/dev/sda' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。
Disk /dev/sda: 500.1 GB, 500107862016 bytes
ヘッド 255, セクタ 63, シリンダ 60801, 合計 976773168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x6dd06dd0
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 1 409639 204819+ ee GPT
/dev/sda2 409640 391034639 195312500 af HFS / HFS+
/dev/sda3 * 391034880 859783167 234374144 83 Linux
/dev/sda4 937709568 976773119 19531776 82 Linux スワップ / Solaris
Disk /dev/sdb: 250.1 GB, 250059350016 bytes
ヘッド 255, セクタ 63, シリンダ 30401, 合計 488397168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x4c953fbc
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 * 1 1269544 634772 ab Darwin ブート
petit@petit-Mac:~$
petit@petit-Mac:~$ sudo parted -l
モデル: ATA TOSHIBA MK5055GS (scsi)
ディスク /dev/sda: 500GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 210MB 200GB 200GB hfs+ Macintosh HD hidden
2 200GB 440GB 240GB ext4 UBUNTU boot
3 480GB 500GB 20.0GB linux-swap(v1) SWAP
モデル: Hitachi HTS542525K9SA00 (scsi)
ディスク /dev/sdb: 250GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 512B 650MB 650MB primary hfs+ boot
警告: /dev/sr0 を読み書き可能な状態にオープンできません(読み込み専用ファイルシステムです)。/dev/sr0
は読み込みのみ可能な状態でオープンされました。
エラー: パーティションテーブルが不正です。再帰的なパーティションが /dev/sr0 にあります。
無視(I)/Ignore/取消(C)/Cancel?
となりました。
オフライン
UEFIモードVBoxに、Ubuntuを自動パーティショニングでインストールした場合の出力結果を下記に示します。
hmatsue@ubuntu-efi:~$ sudo fdisk -l [sudo] password for hmatsue: 警告: GPT (GUID パーティションテーブル) が '/dev/sda' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 Disk /dev/sda: 21.5 GB, 21474836480 bytes ヘッド 255, セクタ 63, シリンダ 2610, 合計 41943040 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 1 41943039 20971519+ ee GPT hmatsue@ubuntu-efi:~$ sudo parted -l モデル: ATA VBOX HARDDISK (scsi) ディスク /dev/sda: 21.5GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 17.4kB 20.0MB 20.0MB fat16 boot 2 20.0MB 19.3GB 19.3GB ext4 3 19.3GB 21.5GB 2145MB linux-swap(v1)
partedで1番目にきているパーティションがEFIブート(システム)パーティションです。
petitbootangさんの環境での実行結果と比べると、
1. fdiskの出力で0xEEの領域がハードディスク全域をカバーしていない
2. partedの出力でFAT領域が検出されていない
などの差があり、どうもEFIブート方式では無いように思えます。
となると、どうやってシステムブートしているのかが疑問に感じますが、fdiskで/dev/sda1として認識されている領域になにか仕掛けがあるものと思われます。
元々のUbuntuインストール時の手順、方法など、詳細情報を投稿いただけますでしょうか。
オフライン
これまでの流れを再確認してみました。
やはり、fdiskだけで見えているパーティションがEFIシステムパーティションのように思えます。
https://wiki.archlinux.org/index.php/GRUB2#Install_to_UEFI_SYSTEM_PARTITION
のMACの場合の項目を参照して、MAC OS Xから、このパーティションの中身をみることは可能でしょうか。
もし、マウント可能で中にUbuntuのEFIアプリケーションがみつかるようであれば、
http://www.komoto.org/etc/grub2-efi.html
を参照してgrub.efiを再生成し、MAC OS Xから再生成したものに置き換えてみると起動できるようになりますでしょうか。
# 上記が見当外れっぽい場合は、やはり、Ubuntuのインストール方法や手順から現在の状態を
# 推測していくのがよいかもです。
オフライン
hmatsue さん、お手数をおかけします。
Ubuntu をインストールした手順ですが、
①500GB フルで使っていた MacOSX をディスクユーティリティで 230GB に縮小。
②空いた領域に、MS-DOS フォーマットで、250GB と 20GB でパーティション作成。
③11.10 の LiveCD のインストーラで、250GB を / (ext4) に、20GB を /swap に指定、フォーマット。
このとき、gparted は利用していません。
④インストール完了後、MacOSX に rEFIt を導入(デフォルトのまま)。
⑤Options キーを押しながら起動、rEFIt メニューより MacOSX と Ubuntu が起動することを確認。
のような感じで、特別変わったことはしていないと思います(あまり自信なくなってきた)。
パーティション操作については、
①ディスクユーティリティで、MacOSX を200GB に縮小。
②11.10 LiveCD のgparted で、Ubuntu を 240GB に縮小、前方(MacOSX 側) に寄せる。
空いた領域に別のディストロを導入するつもりだったが、その前に Ubuntu が起動しなくなったので中断。
と言う感じです。
オフライン
hmatsue さん、ありがとうございます。
https://wiki.archlinux.org/index.php/GR … _PARTITION
のMACの場合の項目を参照して、MAC OS Xから、このパーティションの中身をみることは可能でしょうか。
もし、マウント可能で中にUbuntuのEFIアプリケーションがみつかるようであれば、
http://www.komoto.org/etc/grub2-efi.html
を参照してgrub.efiを再生成し、MAC OS Xから再生成したものに置き換えてみると起動できるようになりますでしょうか。
帰宅したら確認してみます。
オフライン
hmatsue さん
# cd /Volumes
# mkdir efi
# mount -t msdos /dev/disk0s1 /Volumes/efi
してみたところ、
mount_msdos: /dev/disk0s1: Resource busy
と怒られてしまいました。
Mac で df -h してみたところ、下記のような感じですが、あまり参考にはならないでしょうか。
petitMac:Volumes petit$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s1 186Gi 164Gi 22Gi 89% /
devfs 187Ki 187Ki 0Bi 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% /net
map auto_home 0Bi 0Bi 0Bi 100% /home
/dev/disk1 3.6Gi 3.6Gi 0Bi 100% /Volumes/Ubuntu oneiric 2
オフライン
念のため、
http://www.insanelymac.com/forum/index.php?showtopic=145729
参照して、diskutil infoの結果も確認してみて下さい。
# disk0s0とかいないかなぁ。。
もし、disk0s0がいたら、それをマウントして中身を確認してみて下さい。
disk0s0もマウントできないようであれば、見込み違いだったのかも知れません。
そうなると、どうやってシステム起動を開始しているのか理解できませんが。。
# MBR Boot schemeとかいうやつなのかしら。
ところで、
https://forums.ubuntulinux.jp/viewtopic.php?pid=87341#p87341
に示されている手順としては、
Ubuntuインストール後に、
rEFItインストール、
のようですが、Ubuntuインストール時のgrubのインストール先はどうされましたでしょうか。
オフライン
hmatsue さん
念のため、
http://www.insanelymac.com/forum/index. … pic=145729
参照して、diskutil infoの結果も確認してみて下さい。
# disk0s0とかいないかなぁ。。
もし、disk0s0がいたら、それをマウントして中身を確認してみて下さい。
明日、確認してみます。
ところで、
https://forums.ubuntulinux.jp/viewtopic … 341#p87341
に示されている手順としては、
Ubuntuインストール後に、
rEFItインストール、
のようですが、Ubuntuインストール時のgrubのインストール先はどうされましたでしょうか。
はい、grub のインストール先はインストーラのデフォルトのままです。
オフライン
hmatsue さん、
diskutil list の結果は下記のようになりました。
petitMac:~ petit$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk0
1: Apple_HFS Macintosh HD 200.0 GB disk0s1
2: EFI 240.0 GB disk0s2
3: Linux Swap 20.0 GB disk0s3
4: Microsoft Basic Data 39.9 GB disk0s4
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Ubuntu oneiric 2 *3.9 GB disk1
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *250.1 GB disk2
1: Apple_Boot Recovery HD 650.0 MB disk2s1
disk0s0 は無いですね。
試しに、disk0s2 でやってみたところ、
mount_msdos: Unsupported sector size (0)
と怒られてしまいました。
mount_hfs も試してみましたが、Resource busy でした。
オフライン
すみません。。
いろいろ思い込みや勘違いがありました。。
http://en.wikipedia.org/wiki/EFI_System_partition#Apple.E2.80.93Intel
を見ると、Intel MacではEFIシステムパーティションは使用されないようです。
じゃあ、どうやって起動するんだろう、
というところが分からなかったのですが、
http://www.komoto.org/etc/grub2-efi.html
を見ると、rEFItインストール時に、Mac OS Xのパーティションに/efiが作成されてい、ここにEFIアプリケーションが格納されるようです。
と、いうか、このサイト、先日見つけたところですね。。
grub-mkimage -O x86_64-efi -o grubx64.efi -d /usr/lib/grub/x86_64-efi
のような感じでイメージを生成しなおし、既存の差し替えてみて下さい。
ただ、x86_64-efiが妥当かわからないので、既存のgrubのEFIアプリケーションのタイプをfileで確認するなどして、適切な出力形式を選択して下さい。
詳細は、grub-mkimage --helpで確認して下さい。
ただ、grub-mkimageの使い方がいまひとつ理解できていません。。
grub-mkimage -o grub.efi boot chain configfile echo ext2 fat fs_uuid part_gpt help hfsplus linux minicmd normal search sh
など試しているのですが、どうもうまく動かないです。VBoxとMacでもまた、挙動が違うのかも知れませんが。。
オフライン
いまごろになって気付きましたが、grub-efiとかのpost-instスクリプトとかを追いかけた方が早いのかしら。
今日はそろそろ限界で、時間がとれるのは来週末ぐらいになるかもです。。
オフライン
hmatsue さん
色々ありがとうございます。
ダメ元で、Recovery Mode を試してみたところ起動するので、fsck と grub を走らせ、Resume Normal Boot してみたところ、一応正常に起動するようになりました。
ただ、起動が始まるまでに異様に時間がかかる(20秒位)ようになってしまったので、これはこれで何とかしたいですが。
何度か試してみて、時間がかかる以外は正常のようなので、ちゃんとした解決とは言い難いと思っていますが、一応直ったということにしたいと思います。
ただ、これからもパーティション操作することを予定しているので、また問題が起きたらポストするかも知れません。
貴重なお時間を何度も割いていただいて本当に感謝しています。
どうもありがとうございました。
オフライン
リリースノートの既知の問題に記載されている
https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes/ja#A.2BjXdS1TD7MKQw8zC5MMgw.2FDDrMPswojDDMNcwsDDsMPwwyTD7Uh1W3o13UtVmQjBuYxlS1Q-
'ガイドによるリサイズ'でパーティション分けを行うとMacのシステムが起動しなくなります。回避策はLive CDを使って最初の起動パーティションから起動し、gpttoolをインストールした上でgpttools /dev/sdaを実行し、再起動してください。(856826)
多分これにヒットしているのでは?
https://bugs.launchpad.net/ubuntu/+source/partman-base/+bug/856826
パーティション操作はMacOS側で全部やった方が良さそうな気がしますよ。
オフライン
デフォルトでインストールしたUbuntuは、EFIシステムパーティションを用いた形だったのではないかと思います。rEFItは、EFIシステムパーティション内のefiアプリケーションも列挙して選択できるツールだったかと思います。
1つ気になるのは、GPTのパーティションテーブル上にEFIシステムパーティションが見えていないことでしょうか。あちこちの情報を見ていると、ここに1つパーティションが存在しそうな気がします。msdosパーティションではGPT領域(0xee)として200MBytesほど見えている(デフォルトらしいです)ので、EFIシステムパーティション(0xef)もこの中に含まれていて存在しているのでは と思っています(msdosパーティションからは参照できなくても良いので、載っていなくても問題ない。たぶん。)
今回の一連の現象(rEFItとUbuntuの起動がうまくゆかない)は、このパーティションが見えなくなったことによる影響と考えると、一通りしっくりくるのかなぁ という気がします。もともとがどうなのか というのが解らないため、なんともいえないところなのですが・・。
Hybrid MBRにしたうえで、PBRを指定してGRUBをインストールすれば、GPT環境でもbios_grubやEFIシステムパーティションが無くても起動が可能なように思いますので、いまはこの構成なのかもしれません。この場合に、EFI起動とどちらが速そうなのかは、不明です(EFIのほうが速そうな気がしますが、セクタリストを用いる旧来の方のが変化には弱いものの速いのかもしれません)
なお、EFIアプリケーション(grub.efiとか)を64bitsにするか、32bitsにするかは、Macのターミナルから、
ioreg -l -p IODeviceTree | grep firmware-abi
とすると、EFIが32bits版なのか、64bits版なのか、解るそうなので、ここが32であるなら、32でなければいけない ということになると思います(x86_64-efi か、i386-efi のいずれか。)
grub.efiの生成周りは、本来は、grub-efi-*のパッケージに含まれるgrub-installがうまくやってくれるはずのようです。
(grub-efi-ia32やgrub-efi-amd64は、grub-pcと排他なようです。grub-installは別物になっちゃいますしね。)
EFIの32bits/64bitsは、Macだと、(Appleの思惑も絡んで)結構微妙なようですね。ここが32bitsだと、EFIを使った場合に起動できるOSも32bitsになっちゃうようですし(PC/ATでは、UEFIで32bits版というのは無い気がしますね)
オフライン
rohizuka による投稿:
リリースノートの既知の問題に記載されている
https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes/ja#A.2BjXdS1TD7MKQw8zC5MMgw.2FDDrMPswojDDMNcwsDDsMPwwyTD7Uh1W3o13UtVmQjBuYxlS1Q-'ガイドによるリサイズ'でパーティション分けを行うとMacのシステムが起動しなくなります。回避策はLive CDを使って最初の起動パーティションから起動し、gpttoolをインストールした上でgpttools /dev/sdaを実行し、再起動してください。(856826)
多分これにヒットしているのでは?
https://bugs.launchpad.net/ubuntu/+source/partman-base/+bug/856826
パーティション操作はMacOS側で全部やった方が良さそうな気がしますよ。
rohizuka さん、コメントありがとうございます。
今回、起動しなくなったのは MacOS ではなくて Ubuntu の方です。
また、Mac のディスクユーティリティでは Ubuntu のパーティション操作をすることが出来なかったので、gParted でやりました。
オフライン
weyk さん
追加情報ありがとうございます。
少し研究してみたいと思います。
オフライン