Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Помогите с загрузочной флешкой  (Прочитано 2865 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Falluda

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Хочу рядом с Linux поставить Windows, но BIOS не видит загрузочную флешку.Нюанс в том,что когда на неё записан образ Linux - BIOS её видит,а когда образ Win-ды - он ни в какую.Что делать подскажите,а то я уже весь мозг сломал.

Раньше у меня была Mint, недавно поставил Kali - так для информации.

Что делать?

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1429
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #1 : 03 Март 2019, 23:04:02 »
дверью ошиблись, здесь вопросы по Убунте, а вам надо на форум Винды

Оффлайн Falluda

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #2 : 03 Март 2019, 23:14:36 »
дверью ошиблись, здесь вопросы по Убунте, а вам надо на форум ВиндыИ

Таки проблема не в Винде, а в BIOS -  а его устройство практически у всех одинаковое.

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6780
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #3 : 03 Март 2019, 23:29:34 »
а в BIOS -  а его устройство практически у всех одинаковое.
Вот и нет, как раз BIOS очень разный, а если у вас UEFI, то там вообще вариантов немерянно. Рассказывает, что у вас за компьютер, какая материнка, BIOS или UEFI и чем создали загрузочную флэшку.

Оффлайн Falluda

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #4 : 03 Март 2019, 23:38:45 »
а в BIOS -  а его устройство практически у всех одинаковое.
Вот и нет, как раз BIOS очень разный, а если у вас UEFI, то там вообще вариантов немерянно. Рассказывает, что у вас за компьютер, какая материнка, BIOS или UEFI и чем создали загрузочную флэшку.

BIOS Information
Vendor: American Megatrends Inc.
Version: 1.90
Release Date: 11/25/2011
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 2048 kB

System Information
Manufacturer: TOSHIBA
Product Name: Satellite C670-A2K
Version: PSC40R-00E00PRU
Serial Number: 1C087061R
UUID: 076f4c0a-fbb1-eb25-8717-386077eb9f18
Wake-up Type: Power Switch
SKU Number: PSC40R-00E00PRU
Family: PEGA Family

Base Board Information
Manufacturer: Intel Corporation
Product Name: Oneonta Falls
Version: To be filled by O.E.M.
Serial Number: BSN12345678901234567
Asset Tag: ATN12345678901234567
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: MIDDLE             
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Образ записывал с помощью комадной строки и комады "dd"

Цитировать
Правила форума
1.4. Листинги и содержимое текстовых файлов следует добавлять в сообщение с помощью тегов [spoiler]...[/spoiler] или [code]...[/code], либо прикреплять к сообщению в виде отдельного файла. Длинные гиперссылки следует оформлять при помощи тега [url=]...[/url]

  --Aleksandru
« Последнее редактирование: 03 Март 2019, 23:42:03 от Aleksandru »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3511
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #5 : 03 Март 2019, 23:40:01 »
Falluda, с загрузочной Windows флешкой не всегда все гладко. Если из официального обрза создаете, где только один boot.wim применяется, то тогда типовые программы для создания мультизагрузочных флешек отрабатывают нормально. Если же в ISO два boot.wim - могут начинаться катаклизмы. Можно флешку "ручками" создать. Для этого понадобятся: чистая флешка, сам ISO образ системы и некоторые дополнительные пакеты. Рассматриваем простой случай нужна флешка, которая может грузиться в режимах UEFI и Legacy, содержащая в себе образ системы Windows10 (только ее одной), брать здесь. Берем флешку на 8 Гб (да, с солидным запасом против размеров образа), подключаем ее в свободный порт USB. Копируем с нее все важные данные, если они там есть, а затем выполняем ее разметку с удалением всего, что на ней было записано.
1. Подготовка флешки. Необходимо иметь в виду, что наиболее устойчиво грузятся флешки с разметкой MBR, имеющие единственный FAT32 раздел на всю флешку длиной, и в этом разделе проставлен флаг BOOT. Средствами GPARTED можно такое в графическом интерфейсе провернуть в несколько этапов. Средствами терминала это делается в несколько команд (допустим, наша флешка называется /dev/sdd - перепроверьте это десять раз, перед тем, как вводить команды у себя в системе чтобы ни в коем случае не выполнить эти манипуляциии над другими дисками, не флешкой - ПОТЕРЯЕТЕ ДАННЫЕ, будьте бдительны и внимательны):
Код: Bash
  1. #становимся суперпользователем
  2. sudo -i
  3. #Отмонтирование раздела флешки /dev/sdd1
  4. umount /dev/sdd1
  5. #Пересоздаем файловую систему, - нам нужен mbr
  6. parted /dev/sdd mklabel msdos --script
  7. #создаем единственный раздел fat32 на всю флешку:
  8. parted /dev/sdd mkpart primary fat32 0% 100% --script
  9. umount /dev/sdd1
  10. #пересоздаем саму файловую систему, даем ей метку (в примере - "WinSetup"):
  11. mkfs.vfat -n "WinSetup" /dev/sdd1
  12. #устанавливаем на раздел загрузочный флаг:
  13. parted /dev/sdd set 1 boot on --script
  14. #перестаем быть суперпользователем
  15. exit
Теперь определимся: надо ли нам чтобы флешка грузилась и в UEFI и в Legacy. Если надо, то читаем под спойлером, если не надо - просто идем дальше.
(Нажмите, чтобы показать/скрыть)
На этом все. Почву подготовили. Теперь будем копировать файлы.
2. Копирование файлов из образа ISO. Скачиваем себе образ ISO с сайта MS (ссылка в начале сообщения), скачанный файл обзываем Windows10.iso, и кладем к себе в каталог "Загрузки" (если она в другом месте и иначе называется - то в дальнейших командах следует поправить пути). Монтируем образ в папку mnt в папке пользователя, а флешку - в папку /mnt2:
Код: Bash
  1. #создание папкок mnt и mnt2 (если mnt уже существует - будет ошибка, не обращаем внимания и идем дальше)
  2. mkdir ~/mnt
  3. mkdir ~/mnt2
  4. #монтирование образа в папку ~/mnt:
  5. sudo mount -o loop ~/Загрузки/Windows.iso ~/mnt
  6. #монтирование флешки в папку ~/mnt2
  7. sudo umount /dev/sdd1
  8. sudo mount /dev/sdd1 ~/mnt2
  9. #выполняем копирование загрузчиков windows:
  10. find ~/mnt -maxdepth 1 -type d -regextype posix-egrep -regex  ".*(boot|efi)$" -exec cp -r {} ~/mnt2/ \;
  11. find ~/mnt -maxdepth 1 -type f -iname  "bootmgr*" -exec cp {} ~/mnt2/ \;
  12. #копирование файлов .wim из образа в целевую директорию флешки
  13. mkdir ~/mnt2/sources
  14. find ~/mnt -type f -iname "*.wim" -exec rsync -aP {} ~/mnt2/sources/ \;
  15. #все отмонтируем:
  16. sudo umount /dev/sdd1
  17. sudo umount ~/mnt
Если все вышеобозначенное выполнено без ошибок, то на флешке получается такая вот структура папок и каталогов:
boot/...
efi/...
sources/...
bootmgr
bootmgr.efi
Причем в папке sources лежат boot.wim и install.wim.
Все. Флешку можно тестировать. Должна успешно грузиться и в режиме UEFI и в режиме Legacy (если делали то, что под спойлером).
Если есть проблемы: предположим, загрузиться с флешки получается, но вместо типичного вида программы установки видим какую-то ошибку, и нам предлагается поискать драйвера для дисков и тому подобное (бывает в некоторых образах windows, причем как лицензионных, так и самосборках). Решение лежит на поверхности: необходимо модифицировать файл boot.wim. Для его модификации потребуется соответствующий пакет wimtools и небольшие знания cmd в windows. Итак, устанавливаем необходимый пакет:
sudo apt install wimtoolsМеханизм работы загрузочного девайса с windows на борту таков, что изначально загружается один из загрузчиков (либо bootmgr.efi, либо bootmgr), далее управление передается boot.wim, который уже и подтягивает install.wim. Описанная выше по тексту ошибка означает, что install.wim из цепочки выпал, - boot.wim не может его найти. Почему - вопрос открытый. Не будем вникать. Лучше явным образом укажем загрузчику где искать install.wim. Создаем в корневом каталоге флешки текстовый файл winpeshl.ini. Его содержимое:
Цитировать
[LaunchApps]
cmd.exe, "/k runsetup.cmd"
Там же создаем еще один текстовый файл: runsetup.cmd. Его содержимое:
Цитировать
@echo off
Title TishSerg Windows Setup Bootstrapper v1.0
echo [%time%] Initializing Windows PE...
Wpeinit
echo.
Wpeutil UpdateBootInfo > nul
for /f "tokens=3" %%a in (
    'reg query "HKLM\System\CurrentControlSet\Control" /v PEBootRamdiskSourceDrive'
) do set RamdiskSourceDrive=%%a
echo [%time%] Detected setup media: %RamdiskSourceDrive%
echo.
:: Run setup.exe with /installFrom prefix
%CD:~0,2%\setup.exe /installFrom:%RamdiskSourceDrive%sources\\install.wim
:: When closed Windows Setup
echo.
echo [%time%] Windows Setup has been closed. Device will reboot now...
Wpeutil Reboot
Выделенное жирным - это, собственно, и есть прямое указание пути (если ранее по тексту принятые имена каталога с образами wim на флешке и сам образ install.wim соответствуют тем, что у Вас - оставляем без изменений; в противном случае вписываем свои данные). Сохраняем оба этих файла. Теперь наша задача закинуть их внутрь boot.wim. Приступаем:
Код: Bash
  1. #Перемонтируем флешку для удобства:
  2. sudo umount /dev/sdd1: sudo mount /dev/sdd1 ~/mnt
  3. #Даем права на редактирование образа boot.wim:
  4. chmod 777 ~/mnt/sources/boot.wim
  5. #Получаем ИНДЕКС образа, который надо модифицировать:
  6. numImage=`wiminfo ~/mnt/sources/boot.wim | grep "Boot Index" | awk '{print $3}'`
  7. #Монтируем этот образ в каталог ~/mnt2:
  8. wimmountrw ~/mnt/sources/boot.wim $numImage ~/mnt2
  9. #находим каталог system32 (регистр символов всякий раз может плавать, поэтому сразу беру это дело в переменную):
  10. sys32path=`find ~/mnt2 -maxdepth 2 -type d -iname "system32"`: echo $sys32path
  11. #копируем ранее созданные файлы в system32:
  12. cp ~/mnt/winpeshl.ini "$sys32path"
  13. cp ~/mnt/runsetup.cmd "$sys32path"
  14. #отмонтируем образ с сохранением изменений и пересобираем его:
  15. wimunmount ~/mnt --commit --rebuild
  16. #отмонтируем флешку
  17. sudo umount /dev/sdd1
Примечания:
1. Описанная методика изложена на Хабре. Данный пост - это просто адаптация под реалии Ubuntu. Пользуясь случаем, - большое спасибо автору той замечательной статьи.
2. Можно создать и мультизагрузочную флешку. Принцип ровно тот же самый. Однако загвоздка будет в необходимости редактирования файлов bcd с целью добавления в них загрузочных записей. Ввиду того, что редактор BCD под Linux в природе на момент не существует, обойти данную проблему можно использованием виртуальной машины qemu. Пример такого решения: создавая загрузочную флешку, модифицировать boot.wim таким образом, чтобы он выполнил последовательность команд, описанную в статье по ссылке для вызова встроенного виндового bcdedit и отредактировал существующие уже прямо на флешке файлы
Цитировать
[точка монтирования флешки]/boot/BCD
[точка монтирования флешки]/efi/microsoft/boot/BCD
Альтернативным вариантом является, к примеру, копирование одного из бесплатных виндовых редакторов BCD (например, BOOTICE соответствующей системе разрядности) в корень флешки, и последующий запуск ее вместо начала установки системы прямо при тестировании флешки с виртуальной машины (Shift+F10 в начале установки даст командную строку, - далее можно, если мышетыкательно, taskmgr, "Новая задача", и найти на флешке исполняемый файл bootice, как им пользоваться рассказывать не буду - в сети полно руководств).
Внимание: для того, чтобы изменения, внесенные виртуальной машиной на флешку стали доступны в системе после окончания работы виртуальной машины, флешку в системе нужно перемонтировать. Момент не очевидный, так что считаю необходимым предупредить. Наоборот принцип тот же. Внесли изменения в файлы на флешке - перемонтировали - проверяем в виртуальной машине. Иначе работать не будет.
3. Раз уж заговорил о виртуальной машине. Для проверки способности флешки "быть загрузочной" применим qemu. Вот вариант проверки флешки для эмулируемой машины x86_x64 в режиме Legacy:sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -usb -usbdevice disk:/dev/sdd -boot menu=onи в режиме UEFI:sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -usb -usbdevice disk:/dev/sdd -bios /usr/share/ovmf/OVMF.fd -boot menu=onЕсли охота прогнать установку в виртуалке "от начала до конца" то надо создать сперва "виртуальный жесткий диск": qemu-img create ~/mywin.img 30G А затем подсунуть его предыдущим командам в качестве аргумента:sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -usb -usbdevice disk:/dev/sdd -boot menu=on -hda ~/mywin.img
sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -usb -usbdevice disk:/dev/sdd -bios /usr/share/ovmf/OVMF.fd -boot menu=on -hda ~/mywin.img
При загрузке виртуальной машины (поскольку применяется  -boot menu=on, нажать ESC и выбрать с чего грузиться - выбрать флешку). Как установить qemu рассказывать не буду - и без того уже достаточно длинным получился пост, призываю гуглить; откуда взялся OVMF.fd тоже призываю гуглить.
« Последнее редактирование: 19 Октябрь 2019, 23:10:39 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Aleksandru

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 2662
    • Просмотр профиля
Re: Помогите с загрузочной флешкой
« Ответ #6 : 03 Март 2019, 23:43:38 »
Закрыто:
Цитировать
Правила форума
2. На форуме ЗАПРЕЩЕНО
2.17. Обсуждение вопросов, напрямую не связанных с использованием дистрибутивов, входящих в официальное семейство Ubuntu. Другие дистрибутивы GNU/Linux и прочие операционные системы следует обсуждать на иных, специализированных ресурсах. Исключением является раздел "Разговоры обо всем".

--Aleksandru
Intel Core i3-3240 3.40GHz, GeForce GT 1030, MSI H61M-P20, 8GB RAM, KINGSTON SV300S37A240G, Kubuntu 20.04

 

Страница сгенерирована за 0.174 секунд. Запросов: 24.