ノートパソコンに付属していたレスキュー DVD から Windows7 をリカバリしました。リカバリにより SSD ドライブが工場出荷時の状態に再パーティション化されますが、これを変更したいと思います。より正確には、リカバリ完了後のパーティションは次のようになります。
root@ubuntu:~# fdisk -l /dev/sda
Device Boot Start End Blocks Id System
/dev/sda1 2048 419432447 209715200 27 Hidden NTFS WinRE
/dev/sda2 * 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 7 HPFS/NTFS/exFAT
コメント:
/dev/sda2
bootmgr
は、およびを持つ小さなパーティションですBoot
。- Windows7 は にインストールされていますが、そのパーティションには
/dev/sda3
がありません。bootmgr
/dev/sda3
ここで、Windows7を からにコピーして起動可能にしたいと思います/dev/sda1
。パーティションのサイズは同じなので、Linux では非常に簡単です。
root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096
その後、パーティションタイプを変更しました。
Device Boot Start End Blocks Id System
/dev/sda1 2048 419432447 209715200 7 HPFS/NTFS/exFAT
/dev/sda2 * 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 7 HPFS/NTFS/exFAT
その後、再起動しました。Windows7は/dev/sda3
(C:
)から起動し、/dev/sda1
になりますD:
。ここで、Windows7のコピーを起動可能にします(BCDBoot を使用して Windows 7 ブート ディスクを D から C に切り替えるそしてWindows 7 のすべてのファイルを 1 つの HD から別の HD にコピーすることは可能ですか?):
C:\> bcdboot d:\windows /s d:
Boot files successfully created.
C:\> bootsect /nt60 d: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
F: (\\?\Volume{b6e65e71-6179-11e5-82c7-806e6f6e6963})
Successfully updated NTFS filesystem bootcode.
\??\PhysicalDrive0
Successfully updated disk bootcode.
Bootcode was successfully updated on all targeted volumes.
再確認:
C:\> bcdedit
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {bootloadersettings}
recoverysequence {0b9ac060-6182-11e5-b742-8dbb81fd6d74}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
nx OptIn
C:\> bcdedit /store D:\Boot\BCD
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=D:
description Windows Boot Manager
locale en-us
inherit {globalsettings}
default {default}
resumeobject {f38db522-680d-11e5-829a-18f46ae2d7b0}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows Boot Loader
-------------------
identifier {default}
device partition=D:
path \windows\system32\winload.exe
description Windows 7
locale en-us
inherit {bootloadersettings}
osdevice partition=D:
systemroot \windows
resumeobject {f38db522-680d-11e5-829a-18f46ae2d7b0}
nx OptIn
detecthal Yes
Linux を起動し、パーティションを起動可能にマークした後 (Windows でも同じことができますが、私は使い慣れたツールを使用します)、次の操作を行います。
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 419432447 209715200 7 HPFS/NTFS/exFAT
/dev/sda2 419432448 419637247 102400 7 HPFS/NTFS/exFAT
/dev/sda3 419637248 839067647 209715200 27 Hidden NTFS WinRE
の内容は/dev/sda1
次のとおりです(再確認)。
root@ubuntu:~# ls -l /mnt/sda1
total 10749077
drwxrwxrwx 1 root root 4096 Sep 25 06:11 Boot
-rwxrwxrwx 1 root root 383786 Nov 20 2010 bootmgr
drwxrwxrwx 1 root root 0 Sep 23 21:50 Config.Msi
lrwxrwxrwx 2 root root 60 Jul 14 2009 Documents and Settings -> /mnt/sda1/Users
-rwxrwxrwx 1 root root 4717092864 Sep 23 21:50 hiberfil.sys
-rwxrwxrwx 1 root root 6289461248 Sep 23 21:50 pagefile.sys
drwxrwxrwx 1 root root 0 Jul 14 2009 PerfLogs
drwxrwxrwx 1 root root 4096 Sep 23 20:35 ProgramData
drwxrwxrwx 1 root root 8192 Sep 23 21:26 Program Files
drwxrwxrwx 1 root root 12288 Sep 23 21:12 Program Files (x86)
drwxrwxrwx 1 root root 4096 Sep 22 22:00 $Recycle.Bin
drwxrwxrwx 1 root root 20480 Sep 23 21:50 System Volume Information
drwxrwxrwx 1 root root 4096 Sep 23 21:05 Temp
drwxrwxrwx 1 root root 0 Sep 23 21:50 Update
drwxrwxrwx 1 root root 4096 Sep 22 21:58 Users
-rwxrwxrwx 1 root root 4112 Jul 19 2011 version
drwxrwxrwx 1 root root 24576 Sep 23 21:02 Windows
良さそうです。残念ながら起動するとBootmgr is missing. Press Ctrl+Alt+Del to restart
。
Grub をインストールしました/dev/sda1
(デフォルトのブートローダーを上書きします):
grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1
以下と合わせて/mnt/sda1/Boot/grub/grub.cfg
:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/bootmgr
}
Grubは制御をbootmgr
正しく に渡しましたが、 から起動し続けます/dev/sda3
。パーティションを削除すると/dev/sda3
、初期起動画面が表示されますが、その後何も起こりません (起動がハングするだけです)。
次に、 (コピーして、から)ntldr
にインストールしました/dev/sda1
NTDETECT.COM
NTLDR
64ntファイル.zip)を「ネイティブ」ブートセクターで実行します。
C:\> bootsect /nt52 d:
このboot.ini
:
[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows 7 (boot.ini)" /fastdetect
起動後、「ディスク読み取りエラーが発生しました」と表示されます。確かに SSD ドライブがこのように故障する可能性は低いので、問題はドライブのアドレス指定やレイアウトを正しく処理できないブート バイトコードやロジックにあると思います。私は Grub (上記のように) を次の構成でインストールしました:
menuentry "Windows 7" {
insmod ntfs
insmod ntldr
ntldr (hd0,msdos1)/ntldr
}
そして、boot.ini
上記のようなメニューが表示されました。続行すると、コンピューターはエラー メッセージなしで再起動します (つまり、ループに入りました)。
問題を解決するにはどうすればよいですか? 最初のパーティションから Windows を起動するあらゆる解決策を歓迎します。
私が調べたこの件に関する他の投稿:
- Windows ブート パーティションを別のハード ドライブに移動できるユーティリティは何ですか?
- Bcdedit を使用して起動可能な BCD をゼロから構築する
- デバイスと osdevice パラメータはブート パーティションまたは Windows パーティションにする必要がありますか?
- Windows7 Bootmgr の修正
- Windows を再インストールせずにエラー 0xc0000225 を修正できますか?
PS: テスト時にノートブックに他のドライブや USB スティックは接続されていません。
答え1
sda3 を sda1 にコピーした後も、sda1 の Windows レジストリには sda3 を指す「ポインタ」がいくつか残っています。HKLM\SYSTEM\MountedDevices\DosDevices\C: と D: の内容が正しいパーティションを指しているかどうかを確認してください。(\DosDevices\C: の値はパーティション署名です。sda1 の署名である必要があります)
sda1 のブート ファイルを作成するには: (sda3 を起動すると c: にマップされ、sda1 は d: にマップされます)
bootsect /nt60 d: /mbr - sda1 パーティションのブート コードを設定します (Windows ブート コードを MBR に書き込んでも問題ありません)
bcdboot d:\windows /sd: - sda1にBCDを作成する
sda2 上の既存のシステム BCD と sda1 上の BCD を編集する必要はありません。
最後にアクティブパーティションを sda1 に変更します。
リブート。
答え2
私はこの問題を解決するために実行したいくつかの手順を書き出しましたが、それは私にとってはうまくいきました。そのため、今後の読者にも役立つことを願っています。かなり時間が経っていますが、OP にも役立つかもしれません。
Dell OptiPlex 780 MTのより高速なハードドライブパーティションにWindows 7を移行するために使用した手順
- USBフラッシュドライブを入手する
- 32 GB以上を推奨
- 私はAmazon Smilesを使って買い物をしながら慈善団体に寄付をしました
- 起動可能なUSBフラッシュドライブの1つにSystem Rescue CDを作成します
- 前回使用したときから巨大になり、16GB以上が必要になりました
- Rufusを使用してWindowsからSysResc CDの指示に従います
- ボリュームを最小サイズに縮小し、OS パーティションに約 40 GB の空き領域を残す
- 目標は、新しいハードドライブに、元のWindows 7パーティションのサイズと同等かそれ以上の未割り当て領域を確保することです。
- パーティションからUSBフラッシュドライブまたはその他の外付けドライブにデータをバックアップ/移動する
- ディスククリーンアップとデフラグを実行する
- W7のDiskMgmt.MSCを使用してボリュームを拡張/縮小できるようになりました
- システムレスキューCDを起動する
- 注意: BIOS システム パスワードと管理者パスワードに大文字が使用されている場合、System Rescue CD はカスタム ブートを試みていると認識します。起動するための指示、ヘルプ、コマンドなどが表示されず、LILO スタイルの Boot: プロンプトが表示されます。BIOS システム パスワードをクリアして、デフォルトのブート メニューが表示されるようにしました。
- 正常に起動したら、
startx
GUIに入るために 実行します。- GPartEdを実行する
- 現在のWindows 7がインストールされている古い低速ドライブに移動し、Windowsパーティションをコピーします。
- 未割り当て領域のある新しい高速ドライブに移動し、コピーしたパーティションを貼り付けます
- ハードウェアによっては操作に数分かかる場合がありますが、進行状況バーが表示されます。
- コピーしたWindows 7パーティションをアクティブとしてマークする
- ターミナル/コマンドウィンドウに移動する
- 新しい Windows 7 パーティションのブート セクターを実行し
testdisk
て作成/リセットします (この手順が必要かどうかはわかりませんが、私が実行しただけです)- Google testdisk を使用してパーティションのブート セクターを復元する
- /mnt/Dellと/mnt/Win7フォルダを作成します。
mkdir
- これらは、System Rescue CD/USBスティックを次に起動すると消えます。
mount
次のコマンド を使用して、古いDellリカバリパーティションを/mnt/Dellにマウントします。mount /dev/hdb1 /mnt/Dell
- 新しいWindows 7パーティションを/mnt/Win7にマウントします。
mount /dev/hda4 /mnt/Win7
- Windowsブートローダーファイルを新しいWindows 7パーティションにコピーします
- /mnt/Win7/Bootフォルダを作成する
mkdir
cp
コマンドを使用して/mnt/Dell/bootmgrを/mnt/Win7/にコピーしますcp /mnt/Dell/boot.sdi /mnt/Win7/
cp /mnt/Dell/Boot/BCD /mnt/Win7/Boot/
- /Boot/BCD.LOGファイルもコピーできますが、それが必要かどうかはわかりません。
- このブート構成は、まだ古い Windows 7 ブートおよびシステム パーティションを指していることに注意してください。新しい Windows 7 ブートおよびシステム パーティション (私の場合は同じもの) を指すように編集する必要があります。
- /mnt/Win7/Bootフォルダを作成する
- 新しい Windows 7 パーティションのブート セクターを実行し
- GPartEdを実行する
- BIOSを起動する
- ブートデバイスを古いドライブから新しいドライブに変更する
- あるいは、ブートメニューを使用して新しいWindows 7パーティションから正常に起動することもできます。
- Windows 7を起動する
- 古いブートおよびシステムパーティションを指しているため、古いハードドライブからまだ動作しています。
- C:ドライブは古いシステムです
- 管理者としてコマンドプロンプトを開く
- DiskMgmt.MSC を実行する
- 新しい Windows 7 パーティションにまだドライブ文字が割り当てられていない場合は、ドライブ文字を割り当てます (私の場合は G:)
- G:\Bootディレクトリに移動します
G:
cd Boot
- 新しいパーティションのブート構成を表示するには、
bcedit /store BCD
- 現在の古いブート GUID をメモします (私の場合は {d57db94d-450e-11e5-a383-b8ac6f1ac098})
- 新しくコピーしたブート構成を編集して、新しいWindows 7パーティションを追加します。
- 参照ブートエントリの追加
bcdedit /store /copy {d57db94d-450e-11e5-a383-b8ac6f1ac098} /d "Win7 Debug"
- 新しい W7 パーティション GUID は現在 {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} です
bcdedit /store BCD /enum /v
(GUID を参照用に表示するには)- 参照Windows 7のブートファイルbootmgrを別のドライブに移動するにはどうすればいいですか(このサイトに質問と回答を投稿してくださった red.october さんに感謝します!)
bcdedit /store BCD /set {bootmgr} device partition=G:
- 私の場合の追加手順
bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} device partition=G:
bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} osdevice partition=G:
bcdedit /store BCD /displayorder {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} {d57db94d-450e-11e5-a383-b8ac6f1ac098}
- オプションで、新しいブートパーティションをデフォルトにする
bcdedit /default {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
- DiskMgmt.MSC を実行する
- システムレスキューCD/USBで再起動する
- GPartEdを使用して古いWindows 7パーティションを非表示としてマークする
- 古いDell System Recoveryパーティションのブートフラグのマークを解除します
- 新しいドライブでWindows 7を再起動する
間違いがなく、どの手順でも問題やエラーがなかった場合は、私と同じように、Windows 7 パーティションと Windows 7 ブート マネージャーの両方を、元のハード ドライブの 1 つのパーティションから別のハード ドライブの新しいパーティションに正常に移行できたことになります。Windows 7 回復ディスク (OEM 再販業者は PC にこのディスクを発行しません) や疑わしいサード パーティ製アプリは使用していません。嬉しい驚きなのは、移行前に EFS で暗号化されたファイルやフォルダーがあった場合、最初に暗号化を解除しなくても、新しいパーティションでそれらにアクセスできることです。DiskMgmt.MSC では、新しい Windows 7 パーティションが C: として表示され、古い Windows 7 パーティションはドライブ文字なしで表示されます。
元のハード ドライブから完全に独立した新しい Windows 7 パーティションを起動したら、そのパーティションのブート ローダーをクリーンアップして、古い Windows 7 パーティションではなく、すべてをそのパーティションにポイントする方法を検討できます。私のように新しいドライブに Windows XP パーティションがある場合は、bcdedit を使用してエントリを追加して、それを起動することもできます。安定していることが確実になったら、古いパーティションを消去して、他の目的に使用できます。これが、同様の取り組みを達成する他の誰かの役に立つことを心から願っています。
移行後の W7 ディスク管理: