web-dev-qa-db-ja.com

UbuntuおよびWindows 7インストール用の起動可能(UEFI GRUB)USBを作成する

UbuntuとWindows 7をインストールするための起動可能なEFI USBを作成したい(多分 PartedMagic などのユーティリティを使用)。以前は MultiSystem を使用してそれを行いました。ただし、GPTを使用していて、GPTシステムにインストールするには、WindowsインストールをEFIモードで起動する必要があります。 GRUB EFIを代わりに使用する必要があると思いますか?GRUB EFIブート可能USBを作成するMultiSystemのようなアプリがない場合、どのようにして自分で作成できますか?

USBをGPTとしてフォーマットし、GRUB EFIをインストールする(方法は?)とします。次に、UbuntuをロードするためにGRUB EFIを設定する必要があります& Windows 7をEFIにインストールしますか?どうすればできますか?

[〜#〜]更新[〜#〜]

これが私が試したものです

  • USBに2つのパーティションを作成します(GPT、100 + MB FAT32(/ dev/sdc1、ブートフラグを設定)、残りのFAT32、/ dev/sdc2、インストール用)
  • Windows 7とUbuntu 11.10 isoを2つの異なるフォルダーのインストーラーパーティションに抽出します。
  • Sudo elilo -b /dev/sdc1 --autoconf --efiboot -v`を使用してみました

jiewmeng@JM:~$ Sudo elilo -b /dev/sdc1 --autoconf --efiboot -v
elilo: backing up existing /etc/elilo.conf as /etc/elilo.conf-
Loaded efivars kernel module to enable use of efibootmgr
elilo: Checking filesystem on /dev/sdc1...
elilo: Mounting /dev/sdc1...
e    lilo: 44298KB needed, 78781KB free, 42192KB to reuse
elilo: Installing primary bootstrap /usr/lib/elilo/elilo.efi onto /dev/sdc1...
elilo: Installing /tmp/elilo.k8NWXX on /dev/sdc1...
elilo: Installing /vmlinuz on /dev/sdc1...
elilo: Installing /vmlinuz.old on /dev/sdc1...
elilo: Installing /initrd.img on /dev/sdc1...
elilo: Installing /initrd.img.old on /dev/sdc1...
elilo: Updating EFI boot-device variable...
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: An error occured while updating boot menu, we'll ignore it
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: Installation complete.

Sudo modprobe efivarsは何も出力しませんでしたが、同じエラーが発生しました。EFIUbuntuを起動していないためです。

次に、USB起動ディスククリエーターを使用して、EFIモードでライブシステムを起動し、再試行します

[〜#〜]更新[〜#〜]

私はとても迷っていますが、Windowsが最初にインストールされているのですか?私はUNetBootInでUbuntu Alternate用の起動可能なUSBをフォーマットして作成しましたが、利用可能なカーネルがないという同じエラーで失敗しました。 Ubuntuデスクトップを作成した場合、aptソースを構成できません

Ubuntuデスクトップインストールのsyslog http://Pastebin.com/CdbUPXax

時間を無駄にせず、すぐにMBRに戻さないほうがいいと思います...どういうわけか、すべてのデータを最初にバックアップする必要があります...これが、最後の手段にそれを遅らせている理由です...

[〜#〜]更新[〜#〜]

ブートローダーをインストールできないことを除いて、正常にインストールされたBIOSモード(非EFI)でUbuntu 11.10代替を起動してみました。致命的なエラーが表示されます。その後、GRUB=リカバリモードでUSBを起動してインストールしました。動作しますが、起動しません。起動時に空白の画面が表示されます。リカバリモードに移行しようとすると(ubuntuがインストールされているHDDで) )、キーボードは故障しているようですが、マウスには光があります。

12
Jiew Meng

この質問/回答の更新に取り組んでいます。
これはエラーなしでは機能しませんが、@ jiewmengで作業していたときに、USBを使用してWindowsとUbuntuの両方を1つのハードドライブUEFIにインストールすることが目標であることがわかりました。
しばらくして、解決策を見つけましたが、質問と回答を整理する必要があります。
たぶん元の質問にも答えられるかもしれませんが、目標はインストール側にあるため、シングルブートUEFI USBはそれほど重要ではないように見えました。
現在、Windows用とUbuntu用の2つのUSBスティックを使用しています。
これは、できるだけ早く更新されるWIPです

私はこれに数日間取り組んできましたが、あちこちで時間を割いて、最後に単一のUSBを持っているので、起動してWindows 7とUbuntuのインストールを提供します。
私の構成は64ビット固有です。32ビットのインストールに対応するように変更することもできますが、ファイル名には多くの違いがあります。 32ビットが必要な場合はフォローアップしてください。それは言った...

GPTフォーマットのUSBからWindows 7をインストールすることはできません。
gdiskまたはpartedを使用して、GPT USBを作成できます。これは、UEFIを介して起動します
USBからWindowsインストーラーをロードするようにUEFIブートマネージャーを構成できますが、インストーラーはインストールの実行に必要なファイルとデータを検索し、GPT USBを認識しません。 MBR USBが見つかります。

ただし、UEFIがMBR/GPTとEFIパーティションを調べるので、これはほとんど重要ではありません。UEFIブートの Wikipediaエントリを参照してください

USBにstd MBRを使用しているにもかかわらず、UEFIを介してGPTディスクにインストールできます。

以下は、64ビットUEFI Asus Sabertoothで、64ビットインストールを使用して動作しました。
各マザーボードのファームウェアは非常に固有であり、各マザーボードのUEFIファームウェアはUEFIブートを異なる方法で検索します。マザーボードが起動データを見つけるのに問題があるかもしれませんが、以下は私のASUSで動作します。

これは、Windows 7 64ビットDVDとUbuntu ISO(この例では、11.10 64ビットデスクトップISO)のインストール可能なコピーを使用して起動可能なUSBを作成した方法です。

手元にあったのは16G USBだけです...
私のUSBが/ dev/sdcとしてインストールされている場合、関連する参照をUSBの適切なデバイスに変更します。
7Zipがインストールされていることを確認してください。

fdisk /dev/sdc
create new MBR, 'o' command
create new partition, part 1, size 8G, type ef, set bootable, write
mkfs.vfat -F32 /dev/sdc1
mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
insert Windows 7 x64 DVD, again, mine appeared as /media/UDF\ Volume, you need to change references below
# Extract/Copy the entire Windows DVD to the USB
cp -r /media/UDF\ Volume/* /mnt/USB
# I don't know what effect the following rename has, I copied blindly from another webpage.
mv /mnt/USB/sources/ei.cfg /mnt/USB/sources/ei.cfg_
cd /mnt/USB/efi/Microsoft/boot/
7z e /mnt/USB/sources/install.wim 1/Windows/Boot/EFI/bootmgfw.efi
cp -r /mnt/USB/efi/Microsoft/boot /mnt/USB/efi/
mv /mnt/USB/efi/boot/bootmgfw.efi /mnt/USB/efi/boot/bootx64.efi
# At this point I booted the USB, and installed Windows 7 to a GPT SSD
# Upon reboot I noticed the Windows Boot loader in my UEFI boot list (actually it made itself 1st).
# so, here we have a standalone Windows7 UEFI installer that will function correctly (64bit ASUS, at least).
# Now, on to adding Ubuntu
cd /mnt/USB
7z x /path2iso/ubuntu-11.10-desktop-AMD64.iso
# If 7z finds prexisting files with the same name, just allow always overwrite
# (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A

# At this point I booted the USB, and installed Ubuntu x64 to a GPT SSD
# we have a standalone Ubuntu 64bit installer that install Ubuntu 64

# Now, on to add a boot manager that will allow us to select between Windows 7 and Ubuntu

# Get the target UUID of the USB partition, using either blkid or the following command
grub-probe --target=fs_uuid /mnt/USB/efi/Microsoft/Boot/bootmgfw.efi  
will print YOUR_UUID # Substitute into the following references to YOUR_UUID

# Append the following menuentry to /mnt/USB/boot/grub/x86_64-efi/grub.cfg

menuentry "Microsoft Windows x86_64 UEFI-GPT Setup" {
    insmod usbms  
    insmod part_gpt  
    insmod part_msdos  
    insmod fat  
    insmod search_fs_uuid  
    insmod chain  
    search --fs-uuid --no-floppy --set=root YOUR_UUID # <- CHANGE THIS TO YOUR UUID
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi  
}

そして出来上がり!ブートマネージャーとしてgrubを使用するUSB​​スティック。UEFIインストールでGPTディスクにインストールできます。

エラーが発生した場合は、遠慮なくメッセージを送ってください。調査いたします。

8
bsd

私は質問に答えるために最善を尽くします。うまくいけば、私はあなたを正しい方向に導きます。

ご存知のとおり、GPTからのWin7 x64インストールはEFIからのみ可能です。さらに悪いことに、Win7 x64はハイブリッドディスクをレガシーMBRとして扱うため、ハイブリッドを使用できません。そのため、USBをGPTとして再ラベル付け/再分割する必要があります。このタイプのセットアップは、移植性の問題を考慮すると、USBには適していません。作成しないと言っているのではなく、自動化ツールが存在することを期待していません。ドライブをフォーマットしたら、マルチシステムを使用できるようになると私は実際に考えています。自動インストールされたGrub2にEFI/GPTサポートがない場合は、正しいバージョンのGrub2で上書きします。

だから、私はあなたが手動でいくつかのインストールをしなければならないかもしれないと仮定するでしょう、それは全体として、この答えの範囲を超えています。私はあなたを始めることができるはずですが...

現在のリリースのpartedを使用して、ドライブにGPTのラベルを付け直します。ディスクが/ dev/sdcにあると仮定すると、

 parted -s /dev/sdc mklabel gpt

ここで、ドライブをパーティション分割する必要があります。できれば、USBを単一のプライマリにする必要があります。私はいつもブータブルUSBのためにFAT32を使います。

parted -s /dev/sdc mkpart primary fat32 0 -1

partedmkpartは、mkpartfsのようにFSを作成しません。 partedの組み込みサポートではなく、mkfs DOCは適切なpartedを使用することをお勧めします。

mkfs.vfat /dev/sdc1

これでドライブはデータを処理する準備ができました。この時点で、マルチシステムを使用してドライブをセットアップできることを願っています。

これですべて完了したら... Grub2をセットアップする必要があります。明らかに、設定を保持するつもりです。マルチシステムmightはEFIから起動することができますが、モジュールの設定をいじる必要があります。

Grub2設定はboot/grub/grub.cfgにあります。一部のモジュールがコメント化されているはずです。 GPTに関するものを見たことがありますが、EFIについてはわかりません。私はいくつかのテストを見て、実行します。いくつかのGrub2ドキュメントを読むことを検討してください。

それでも問題が解決しない場合は、フォローアップの質問でコメントしてください。

3
J. M. Becker

非UEFIマシンでは、GRUB2を使用してUSBスティックを起動可能にすることができます。次に、GRUB2で「ntldr」コマンドを使用して、USBからWindowsを起動します。

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

私のブログで完全な回答を参照してください Linuxからの起動可能なWindows USBの作成

2
harish2704

上記のbdowningの答えから始め、次にParted Magicを追加するためにここに進みます。

これにはいくつかの方法がありますが、最も簡単な方法は、Parted Magic ISOからpmagicディレクトリをUSBディスクのルートにコピーして、メニューエントリを追加することです。

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
  linux /pmagic/bzImage
  initrd /pmagic/initrd.img
}

(完全に機能させるには、grub2のマニュアルを読む必要がある場合があります。先日これを行ったときにgrub1を使用しましたが、構成ファイルが異なります。)

ここでの欠点は、Windows、Ubuntu、Parted Magicのファイルを1つのファイルシステムに混在させることです。さらに悪いことに、EFIシステムパーティションに直接配置しました。動作しますが、オペレーティングシステムのすべての組み合わせで動作するわけではないので、実際にすべきことは、各OSのドライブに個別のパーティションを作成することです。これを行うには、適切なファイルシステムを検索するようにgrubに指示する必要があります。これは、guidによって実行できます。すべてのファイルシステムは、作成時に一意のGUIDを取得するため、grub-probe(または同様のツール)を使用してそのGUIDを見つける必要があります。次に、それをgrub構成の検索コマンドに挿入します。

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
    search --no-floppy --fs-uuid --set 8d2acb74-5216-4696-90a8-c76f92d5e4ee
    linux /pmagic/bzImage
    initrd /pmagic/initrd.img
}

お役に立てれば。

2
db48x

なぜGRUB2に悩むのですか?それは物事を複雑にするだけです。 EFIにUEFIシェルを追加して、ESP)からLinuxカーネルを起動するEFI STUBメソッドを使用するだけです。

1
fpmurphy