Не удается загрузить раздел Windows

358
pasbi

До вчерашнего дня я был доволен своей схемой разделов:

Device Boot mounted at  /dev/nvme0n1p1 * /boot/efi /dev/nvme0n1p2 swap /dev/nvme0n1p3 / ext4 /dev/nvme0n1p6 /media/Volume ext4 /dev/nvme0n1p5 /home ext4 

Я также использую Windows 10 с виртуальной коробкой, vdi где-то в / home.

Теперь я вынужден увеличить размер vdi и, хотя возможно, я не хочу, чтобы файл vdi объемом 100 ГБ находился в моем / home. Потому что я ценю идею иметь возможность загружать Windows изначально, и у меня есть> 100 ГБ свободного пространства на диске, поэтому я

  1. создал raw img: VBoxManage internalcommands converttoraw Win7.vdi win10.img
  2. анализируемый вывод: parted win10.img unit B print

Number Start End Size Type File system Flags 1 1048576B 105906175B 104857600B primary ntfs boot 2 105906176B 54022924799B 53917018624B primary ntfs 3 54023684096B 54522806271B 499122176B primary ntfs diag

  1. создал неформатированный раздел при /dev/nvme0n1p7использовании gparted
  2. скопировал второй раздел из win10.img: sudo dd if=.local/win10.img of=/dev/nvme0n1p7 skip=105906176 count=53917018624 iflag=skip_bytes,count_bytes

Теперь, если я подключу его sudo mount /dev/nvme0n1p7 /media/x, он будет жаловаться на то, что окна не были закрыты надлежащим образом, и что я установлю его ro. Я исправил это, используя ntfsfix. Похоже, что есть надежная установка Windows /dev/nvme0n1p7.

К сожалению, я не могу загрузить его, ни с помощью виртуальной коробки, ни grub. Для VirtualBox я создал сырой диск, используя VBoxManage internalcommands createrawvmdk -filename win10.vmdk -rawdisk /dev/nvme0n1 -partitions 7. После запуска vbox появляется черный экран и все. Для grub я отредактировал /etc/grub.d/40_custom:

#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above.  menuentry "Windows 10 (loader) (on /dev/nvme0n1p7)" { insmod part_msdos insmod ntfs set root='(hd0,msdos7)' chainloader +1 } 

тогда я бегу sudo update-grub. Это отображает error: not a valid root device.

Я читал, что grub не может запускать Windows напрямую, а только запускает специальный загрузчик Windows (chainloader). Я думаю, что моя проблема в том, что у меня его нет.

Мои вопросы: Как я могу получить и установить этот загрузчик Windows? Как я могу загрузить раздел с vbox?

0

1 ответ на вопрос

0
pasbi

Я не решил проблему, но переустанавливал всю систему (сначала установите Windows 10, затем уменьшите разделы Windows из live linux и создайте новые разделы для Arch, а затем установите Arch в них). Используя rEFInd, я могу загрузиться либо в Windows, либо в Arch. Из Arch я могу загрузить Windows в VirtualBox, используя сырой диск .

Самые сложные вопросы были:

  1. Какие разделы я должен использовать? Существует не раздел окна. Скорее, есть 4:

    • Основной раздел данных (NTFS, 500MiB)
    • Системный раздел EFI (fat32, 100MiB)
    • Зарезервированный раздел Microsoft (?, 16MiB)
    • Основной раздел данных (NTFS, 100 ГБ)

    Решение: используйте все 4 ( VBoxManage internalcommands createrawvmdk -filename /whatever/you/want.vmdk -rawdisk /dev/nvme0n1 -partitions 1,2,3,4 -relative). Я не уверен, если все требуется, но это работает.

  2. Виртуальная коробка не загружается. Даже при том, что у него есть вся информация (все разделы, упомянутые выше): Включите режим efi ( Settings-> System-> Enable EFI (special OSes only)).

  3. Вопросы разрешений: Добавить пользователя в disk-группы: sudo usermod -a -G disk $USER.