web-dev-qa-db-ja.com

Windows 8.1のアップグレードでUbuntuマシンが破壊された

Toshiba Portege Z935でWin 8とUbuntu 12.04を平和的に共存させました。 EFIモード、Grub2、セキュアブートオフでは、元のUbuntuのインストール後にブートを機能させるために、ブート修復ツールで「推奨修復」を使用する必要がありました。約10か月間すべてが幸せになるまで....

Windowsを8.1に更新するというMSの提案を愚かに受け入れました。アップグレード後、各ブートで「grub rescue>」プロンプトが表示されました。各ブートでgrubメニューに戻るための長い回避策を実行できましたが、修正が必要でした。

そこで、ボックスがまったく起動しなくなるまで、Boot-Repairを何度もいじり始めました(「コマンドファイルでディスクを挿入」などで画面が黒くなるだけです)。

Win 8を再インストールして、8.1にアップグレードしてから、Ubuntuを再インストールしました。同じ結果-まったく起動しません。 8.1にアップグレードせずに8を再インストールしようとしましたが、同じ結果になりました。 JUST Ubuntuのインストールを試みました。同じ結果。

最後に、ボックスをUEFIからCSMに設定し、Ubuntuを再度インストールしました。起動しました!そのため、上記の1つ以上のアクションによってUEFIが何らかの形で「ファームウェア」に組み込まれていると推測しています。

直し方?私はアイデアを失い、EFIを取り戻したいです。ありがとう!!!

2
Jon

更新:スクリプトを更新しました

ユーザーがWindows 8.1およびLinuxを起動できるようにするスクリプトを作成しました。 Linuxスクリプトではないのではないかと思いますが、Linuxでも同様のことができると確信しています...

このスクリプトは、S:\パーティションの一部を変更します。管理者として実行する必要があります。

この例では、SuSE 12.1を使用しており、「プライマリ」HDD上のWindows 8.1で2つの個別のHDDを使用しています。これはHPマシン用にも設計されていますが、HPディレクトリはそれほど重要ではないため、「HP」をS:\パーティションにある他のディレクトリに変更するだけです。私が現在持っているのは

S:\ EFI S:\ Boot.old

REFindをダウンロードして抽出し、REFINDSOURCEPATHがその場所に設定されていることを確認する必要があります。

何をしているのかわからない限り、これをしないでください!

::Setup Refind script version 04/01
echo off
CHOICE /C YN /M "Have you already attempted copy of files since last losing the boot manager? Y/N"
IF %ERRORLEVEL% EQU 1 SET _FIRSTRUN=Yes
IF %ERRORLEVEL% EQU 2 SET _FIRSTRUN=No
echo on
::Mount partition
mountvol S: /S
::Set paths
::You might want to modify these for your system?
set REFINDSOURCEPATH=C:\refind-bin-0.7.4\refind
set REFINDSPATH=S:\EFI\refind
set SBOOTPATH=S:\EFI\Boot
set REFINDCONFIG=C:\refind.conf
::Rename refind directory if it's already present
rename %REFINDSPATH% refind.old
::Copy to S:\ assuming refind is located at %REFINDSOURCEPATH%
IF "%_FIRSTRUN%" == "Yes" (
echo a | xcopy /E %REFINDSOURCEPATH% %REFINDSPATH%
)
IF "%_FIRSTRUN%" == "No" (
echo d | xcopy /E %REFINDSOURCEPATH% %REFINDSPATH%
)
::Rename old boot HP files - we don't need the HP directory!
rename S:\EFI\HP HP.old
::Rename boot directory - we will recreate this ourselves below
rename  %SBOOTPATH% Boot.old
::Stop this file from being detected/set as default boot - this can still be detected by Windows otherwise.
rename S:\EFI\Boot.old\bootx64.efi bootx64.efi.old

::Recreate the boot directory
mkdir %SBOOTPATH%
::Put refind into the boot directory
IF "%_FIRSTRUN%" == "Yes" (
echo a | xcopy /E %REFINDSOURCEPATH%  %SBOOTPATH%
)
IF "%_FIRSTRUN%" == "No" (
echo d | xcopy /E %REFINDSOURCEPATH%  %SBOOTPATH%
)

::Rename/overwrite the file so it will always boot refind
rename %SBOOTPATH%\refind_x64.efi bootx64.efi
::This is a dirty hack to stop Microsoft finding their EFI file and setting as default boot
IF "%_FIRSTRUN%" == "Yes" (
copy S:\EFI\Microsoft\boot\bootmgfw.efi S:\EFI\Microsoft\boot\bootmgfw.efiold
rename S:\EFI\Microsoft\boot\bootmgfw.efi bootmgfw_.efi
)
::This is a dirty hack to stop Microsoft finding their EFI file and setting as default boot
IF "%_FIRSTRUN%" == "No" (
::I'm assuming we don't have to do anything different at this point. Error may be thrown but should not cause issues.
copy S:\EFI\Microsoft\boot\bootmgfw.efi S:\EFI\Microsoft\boot\bootmgfw.efiold
rename S:\EFI\Microsoft\boot\bootmgfw.efi bootmgfw_.efi
)

::Copy the config file.
copy /Y %REFINDCONFIG%  %REFINDSPATH%\refind.conf
::Set the boot manager (doesn't always work)

bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi
echo off
pause

CHOICE /C YN /M "Press Y to destroy the S:\EFI\Boot.old directory"
IF %ERRORLEVEL% EQU 1 SET _BOOT=Yes
CHOICE /C YN /M "Press Y to destroy the S:\EFI\refind.old directory"
IF %ERRORLEVEL% EQU 1 SET SET _REFIND=Yes
CHOICE /C YN /M "Press Y to destroy the S:\EFI\HP.old directory"
IF %ERRORLEVEL% EQU 1  SET _HP=Yes

IF "%_BOOT%" == "Yes" (
::Remove the path below
rmdir /s S:\EFI\Boot.old
echo "Removing path"
)

IF "%_REFIND%" == "Yes" (
::Remove the path below
rmdir /s S:\EFI\refind.old
echo "Removing path"
)

IF "%_HP%" == "Yes" (
::Remove the path below
rmdir /s S:\EFI\HP.old
echo "Removing path"
)

pause
echo "Pressing a key will restart immediately"
pause

::Restart
shutdown /r /t 0

EFIが有効になっているときに警告メッセージが表示されるため、EFIが有効になっている場合は、構成ファイルからWord "hdbios"を削除するだけです。

重要な他の部分は設定ファイルです。ご覧のとおり、私の場所はC:\ refind.confにあります。おそらく最も賢明な場所ではありませんが、少なくとも誤って何かを破棄しても消去されないことがわかっています。

私のものは次のとおりですが、上記のドキュメントに従って適切に構成することをお勧めします。構成ファイルで名前が変更されたEFI/Microsoft/boot/bootmgfw_.efiを使用していることがわかります。

timeout 20
hideui singleuser
#hideui all
#icons_dir myicons
use_graphics_for windows
showtools reboot, exit
scanfor internal,external,optical,hdbios,manual
dont_scan_volumes ROOT BOOT
dont_scan_dirs EFI/Boot, Boot
#scan_all_linux_kernels
#also_scan_dirs EFI/Microsoft/boot, Microsoft/boot

menuentry Windows8 {

    loader EFI/Microsoft/boot/bootmgfw_.efi
    icon EFI/refind/icons/os_win.icns

}


menuentry SuSE {
    icon EFI/refind/icons/os_linux.icns
    volume BOOT
    loader \vmlinuz
    initrd \initrd
    options "video=1600x900 splash=silent quiet showopts vga=0x37f root=UUID=201bb438-10b4-49aa-ac1c-4c7d52ad66a0
    splash=silent quiet showopts"
}

menuentry SuSERoot {
    icon EFI/refind/icons/os_linux.icns
    volume ROOT
    loader /boot/vmlinuz-3.4.11-2.16-desktop
    initrd /boot/initrd-3.4.11-2.16-desktop 
    options "video=1600x900 splash=silent quiet showopts vga=0x37f root=UUID=201bb438-10b4-49aa-ac1c-4c7d52ad66a0
    splash=silent quiet showopts"
    disabled
}
1
jquerynewbie

最初に試す

Win 8.1では、Shiftキーを押しながら[再起動]をクリックします。高度なスタートアップオプションが表示されます。そこからUbuntuの起動パーティションを選択し、そこから起動できるはずです。

再インストールの手間を省きますが、WindowsにUbuntuをロードするように依頼する必要があります...

0
abbaf33f

これを試して:

  1. USBフラッシュドライブまたはCD-Rバージョンの rEFInd。 をダウンロードします
  2. REFIndでUSBフラッシュドライブまたはCD-Rを準備します。
  3. REFIndディスクから起動します。 (これを行うには、CSMサポートを無効にする必要がある場合があります。)
  4. REFIndが起動したら、WindowsとLinuxの両方を起動する機能をテストします。
  5. WindowsとLinuxの両方を起動できる場合は、 EFIシステムパーティション(ESP)/boot/efiにマウントされていることを確認し、rEFIndのDebianパッケージバージョンをインストールします。

理論的には、この時点でコンピューターはrEFIndで起動し、WindowsまたはLinuxのいずれかを起動できるはずです。これが機能しない場合は、ブート修復が提供するURLを投稿してください。重要なシステム固有の情報を提供します。

将来的には、OSのアップグレードによりデフォルトのEFIブートローダーが頻繁に変更されることに注意してください。 WindowsのbcdeditやLinuxのefibootmgrなどのOS固有のツールを使用して、各OSでこれを変更できます。ただし、これらのツールの使用方法を知っている必要があります。 rEFIndインストールドキュメント では、これらのツールを使用してrEFIndを登録する方法について説明しています。手順は、他のブートローダーでも同様です。

0
Rod Smith