Итак, поставил Windows 7 MSDN (с красивого лицензионного диска) через PWBoot на USB-HDD WD Elements 500GB. Учитывая, что описать кривизну моих рук невозможно описать даже при помощи теории струн и других современных теорий НЕВОЗМОЖНО я столкнулся со следующей проблемой:
- Система-таки загружается с USB, дровишки ставятся. Однако после первого перезапуска система во время загрузки вешается с BSOD. - Через безопасную загрузку видно, что всё дело повисает на disk.sys. Google показал множество решений этой проблемой, однако решить её мне до сих пор не позволяет кривизна рук.
Advanced member
Статус: Не в сети Регистрация: 26.03.2009 Откуда: SPb
Копипаста
Установка Windows 7 на USB HDD: Теория и практика, подводные камни. В общем, рассказывать, почему такая потребность возникла я не буду, главное, что она возникла, была успешна решена, правда, далеко не сразу. В сети нашлось две статьи, вдумчивое чтение которых помогло решить вопрос, потому как одна дополняет в какой-то мере другую.
Итак, нам понадобится:
→Рабочий(!) карман для HDD; →Жесткий диск aka винчестер aka Hard Disk Drive(HDD); →Образ Windows 7; →ЭВМ с USB портами, на которой мы можем работать; →Желательно, чтобы BIOS устройства, на котором планируется использовать USB HDD, имел поддежку загрузки с USB устройств. На самом деле, из всех проблем, которые мы поимеем, это будет наиболее некритичная, потому что подгружать USB шину, можно будет посредством оптического диска или дискеты. Но об этом позже.
Итак, если мы попробуем установить OS привычным образом, будем посланы далеко, Windows нас предупредит, что такие расклады она мягко говоря не приемлет, и на USB носители устанавливаться не желает. Если же установить систему на HDD посредством подключения напрямую к SATA/IDE, а потом засунуть в карман и попытаться загрузиться, получим BSOD. Поэтому, если у вас под рукой нет рабочей машины, сделать ничего не получится(по крайней мере, у меня не получилось).
Не беда, находим по друзьям/соседям/знакомым рабочий компьютер, желательно с подключением к сети. Качаем маленькую и удобную программку PWboot. Процесс пользования программой хорошо описан в статье, поэтому описывать смысла не вижу. Важно, чтобы система разворачивалась на активный физический раздел жесткого диска(по крайней мере, у меня по другому не заработало). Работать с VHD мне не нужно было абсолютно, поэтому система была установлена просто на физический диск. Процесс довольно быстр, даже при использовании USB 2.0. В принципе, это все.
Казалось бы, на этом можно было бы закончить пост, потому что при подключении HDD через USB, мы загрузим систему, установим драйвера, все будет хорошо и прекрасно. Но, не тут то было. После того, как система любезно предложит перезагрузиться, чтобы загрузиться со свежими дровами и мы с этим согласимся, то получим BSOD сразу после экрана «Запуск Windows». А разгадка одна: «--С особенностями загрузки Windows 7 я особо не знаком, но вкратце суть примерно такая: загрузчик читает ядро и самые важные драйвера (к которым USB не относится) и передаёт управление ядру, которое должно прочитать всё остальное, но в нашем случае оно ничего не найдёт». Поэтому, чтобы такого не случалось, перед завершением работы/перезапуском нужно сделать следующее: «в реестре по адресам [HKLM/System/CurrentControlSet/services/usb*] установить значение ключа Start в 0». И это нужно делать каждый раз после установки драйверов. В статье на хабре есть [удобный батник] для автоматизации этого процесса.
Если же мы забыли клацнуть батник после установки драйверов, есть два выхода: --отцепить USB HDD, подцепить к рабочей машине, использовать PWboot(опция "Patch existing system"). --править реестр ручками, предварительно загрузившись с «реаниматорской» флешки/диска или же посредством средства установки Windows 7, нажав в окне приветствия shift+F10 и набрав в коммандной строке regedit. Либо с помощью пункта «Восстановление Windiows», нажав «Отмена» когда запустится средство поиска проблем(или как-то так, пишу по памяти), нам предложат показать дополнительные возможности, клацаем и выбираем из предложенного списка инструментов «Коммандная строка», далее все то же. ВНИМАНИЕ, если это сделать с помощью встроенной в OS «средство восстановления системы» -- не поможет! Процитирую, что [нужно сделать] Все, перезагружаемся, система загрузится.
Есть еще один нюанс, с файлом подкачки(если на машине только наш USB HDD. В принципе, если есть HDD стационарный, то все эти свистопляски считаю полным извратом). Нюанс в том, что после каждого перезапуска Windows будет выскакивать окно «Параметры быстродействия» с возможностью указать рамзер свопа. Цимес в том, что если просто указать размер, система предложит перезагрузиться и... при этом заданные параметры не сохранятся, и мы снова будем созерцать окно «Параметры быстродействия». Не критично абсолютно, но решить можно так: качаем отсюда diskmod последней версии; Извлекаем файлы из архива; Правой кнопкой кликаем на diskmod.inf и выбираем «Установить» в контекстном меню. После этого устанавливаем размер файла подкачки, в окне «Параметры быстродействия». Перезагружаемся, наслаждаемся.
P.S. Написанное не претендует на энциклопедичность, хрестоматийность. Это не единственно верный вариант решения, просто написал как я решил поставленную задачу. При написании были использованы статьи с 3DNews(автор: Игорь Осколков) и с Хабра(автор: agmt)
Содержимое батника
@echo off if "%1"=="fix" goto :fix
rem -- install task copy /y "%~f0" "%SystemRoot%\system32\usbbootfix.bat" SCHTASKS /Create /RU SYSTEM /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-UserPnp'] and EventID=20003]]" /EC System /TN USBBootFix /TR "'%SystemRoot%\system32\usbbootfix.bat' fix" /F rem -- apply other settings fsutil behavior set disablelastaccess 1 fsutil behavior set disable8dot3 1 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v DisablePagingExecutive /t REG_DWORD /d 1 /f reg add HKLM\SYSTEM\CurrentControlSet\services\pciide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\msahci /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\intelide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\viaide /v Start /t REG_DWORD /d 0x0 /f rem -- run :fix once after install
:fix call :fixservice usbehci "Boot Bus Extender" call :fixservice usbohci "Boot Bus Extender" call :fixservice usbuhci "Boot Bus Extender" call :fixservice usbhub "System Bus Extender" call :fixservice usbstor "SCSI miniport" goto :eof
:fixservice setlocal set Start= set Group= for /f "skip=2 tokens=1,2,*" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\services\%~1') do ( if "%%I"=="Start" set Start=%%K if "%%I"=="Group" set Group=%%K ) if not "%Start%"=="0x0" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Start /t REG_DWORD /d 0x0 /f if not "%Group%"=="%~2" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Group /t REG_SZ /d "%~2" /f endlocal goto :eof
_________________ --- The place where gods come to die. ---
Копипаста Скрытый текст Установка Windows 7 на USB HDD: Теория и практика, подводные камни. В общем, рассказывать, почему такая потребность возникла я не буду, главное, что она возникла, была успешна решена, правда, далеко не сразу. В сети нашлось две статьи, вдумчивое чтение которых помогло решить вопрос, потому как одна дополняет в какой-то мере другую.
Итак, нам понадобится:
→Рабочий(!) карман для HDD; →Жесткий диск aka винчестер aka Hard Disk Drive(HDD); →Образ Windows 7; →ЭВМ с USB портами, на которой мы можем работать; →Желательно, чтобы BIOS устройства, на котором планируется использовать USB HDD, имел поддежку загрузки с USB устройств. На самом деле, из всех проблем, которые мы поимеем, это будет наиболее некритичная, потому что подгружать USB шину, можно будет посредством оптического диска или дискеты. Но об этом позже.
Итак, если мы попробуем установить OS привычным образом, будем посланы далеко, Windows нас предупредит, что такие расклады она мягко говоря не приемлет, и на USB носители устанавливаться не желает. Если же установить систему на HDD посредством подключения напрямую к SATA/IDE, а потом засунуть в карман и попытаться загрузиться, получим BSOD. Поэтому, если у вас под рукой нет рабочей машины, сделать ничего не получится(по крайней мере, у меня не получилось).
Не беда, находим по друзьям/соседям/знакомым рабочий компьютер, желательно с подключением к сети. Качаем маленькую и удобную программку PWboot. Процесс пользования программой хорошо описан в статье, поэтому описывать смысла не вижу. Важно, чтобы система разворачивалась на активный физический раздел жесткого диска(по крайней мере, у меня по другому не заработало). Работать с VHD мне не нужно было абсолютно, поэтому система была установлена просто на физический диск. Процесс довольно быстр, даже при использовании USB 2.0. В принципе, это все.
Казалось бы, на этом можно было бы закончить пост, потому что при подключении HDD через USB, мы загрузим систему, установим драйвера, все будет хорошо и прекрасно. Но, не тут то было. После того, как система любезно предложит перезагрузиться, чтобы загрузиться со свежими дровами и мы с этим согласимся, то получим BSOD сразу после экрана «Запуск Windows». А разгадка одна: «--С особенностями загрузки Windows 7 я особо не знаком, но вкратце суть примерно такая: загрузчик читает ядро и самые важные драйвера (к которым USB не относится) и передаёт управление ядру, которое должно прочитать всё остальное, но в нашем случае оно ничего не найдёт». Поэтому, чтобы такого не случалось, перед завершением работы/перезапуском нужно сделать следующее: «в реестре по адресам [HKLM/System/CurrentControlSet/services/usb*] установить значение ключа Start в 0». И это нужно делать каждый раз после установки драйверов. В статье на хабре есть [удобный батник] для автоматизации этого процесса.
Если же мы забыли клацнуть батник после установки драйверов, есть два выхода: --отцепить USB HDD, подцепить к рабочей машине, использовать PWboot(опция "Patch existing system"). --править реестр ручками, предварительно загрузившись с «реаниматорской» флешки/диска или же посредством средства установки Windows 7, нажав в окне приветствия shift+F10 и набрав в коммандной строке regedit. Либо с помощью пункта «Восстановление Windiows», нажав «Отмена» когда запустится средство поиска проблем(или как-то так, пишу по памяти), нам предложат показать дополнительные возможности, клацаем и выбираем из предложенного списка инструментов «Коммандная строка», далее все то же. ВНИМАНИЕ, если это сделать с помощью встроенной в OS «средство восстановления системы» -- не поможет! Процитирую, что [нужно сделать] Все, перезагружаемся, система загрузится.
Есть еще один нюанс, с файлом подкачки(если на машине только наш USB HDD. В принципе, если есть HDD стационарный, то все эти свистопляски считаю полным извратом). Нюанс в том, что после каждого перезапуска Windows будет выскакивать окно «Параметры быстродействия» с возможностью указать рамзер свопа. Цимес в том, что если просто указать размер, система предложит перезагрузиться и... при этом заданные параметры не сохранятся, и мы снова будем созерцать окно «Параметры быстродействия». Не критично абсолютно, но решить можно так: качаем отсюда diskmod последней версии; Извлекаем файлы из архива; Правой кнопкой кликаем на diskmod.inf и выбираем «Установить» в контекстном меню. После этого устанавливаем размер файла подкачки, в окне «Параметры быстродействия». Перезагружаемся, наслаждаемся.
P.S. Написанное не претендует на энциклопедичность, хрестоматийность. Это не единственно верный вариант решения, просто написал как я решил поставленную задачу. При написании были использованы статьи с 3DNews(автор: Игорь Осколков) и с Хабра(автор: agmt) Закрыть Содержимое батника Скрытый текст @echo off if "%1"=="fix" goto :fix
rem -- install task copy /y "%~f0" "%SystemRoot%\system32\usbbootfix.bat" SCHTASKS /Create /RU SYSTEM /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-UserPnp'] and EventID=20003]]" /EC System /TN USBBootFix /TR "'%SystemRoot%\system32\usbbootfix.bat' fix" /F rem -- apply other settings fsutil behavior set disablelastaccess 1 fsutil behavior set disable8dot3 1 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v DisablePagingExecutive /t REG_DWORD /d 1 /f reg add HKLM\SYSTEM\CurrentControlSet\services\pciide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\msahci /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\intelide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\viaide /v Start /t REG_DWORD /d 0x0 /f rem -- run :fix once after install
:fix call :fixservice usbehci "Boot Bus Extender" call :fixservice usbohci "Boot Bus Extender" call :fixservice usbuhci "Boot Bus Extender" call :fixservice usbhub "System Bus Extender" call :fixservice usbstor "SCSI miniport" goto :eof
:fixservice setlocal set Start= set Group= for /f "skip=2 tokens=1,2,*" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\services\%~1') do ( if "%%I"=="Start" set Start=%%K if "%%I"=="Group" set Group=%%K ) if not "%Start%"=="0x0" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Start /t REG_DWORD /d 0x0 /f if not "%Group%"=="%~2" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Group /t REG_SZ /d "%~2" /f endlocal goto :eof Закрыть
То, что надо. С этим я тоже встречался. А если села батарея/выдернули USB-HDD? И как сделать так, чтобы об этом вообще больше никогда не думать и не повторять процедуру запуска bat?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения