Вопрос или проблема
Я пытаюсь создать образ winpe, но для моего случая использования мне срочно нужно кое-что. Мне нужно сделать все диски только для чтения во время загрузки (это означает, что Windows не может записывать ничего на любой диск, только запись на диск x в RAM).
Я нашел решение, которое сначала сработало для меня, используя get-disk и set-disk в скрипте PowerShell, который запускается сразу после wpeinit (если я запускаю его до этого, по какой-то причине не работает), и это работает при загрузке в машины, на которых не установлена ОС. Однако при загрузке winpe на машине с установленной Windows я вижу две проблемы.
- Я вижу, что диск C доступен системным процессом с журналом txf.
- Диск нельзя установить в режим только для чтения, так как говорится, что это критический диск. Замечу, я также пробовал diskpart, и он также не работает.
Сейчас я нашел решение, которое исправляет проблему 1: установка политики SAN на 3 не монтирует диск C и тем самым не записывает на него.
У меня осталось 3 вопроса, с которыми мне нужна помощь:
- Как обойти критическую проблему диска? Я не против использовать другой метод, если он может быть применен на всех дисках и не влияет на содержимое диска.
- Оставляет ли установка диска в режим только для чтения в скрипте startnet (скрипт запуска для winpe) и затем монтирование вероятность случайной записи на диск ОС?
(Для ясности, в данный момент мой процесс: загрузка без монтирования, установка диска в режим только для чтения, ручное монтирование)
- Если нет, есть ли способ сделать это во время загрузки, чтобы гарантировать, что Windows не записывает на диск?
Как я уже сказал, мне нужно, чтобы на диск не было абсолютно никаких записей. Даже маленький журнал может все испортить.
Ответ или решение
Создание образа WinPE, который делает все диски доступными только для чтения при загрузке, – это задача, требующая тщательной настройки. В вашем случае, цель состоит в том, чтобы никакие записи на диске, кроме X: диска в RAM, не происходили. Давайте разберем теорию, на примерах рассмотрим текущие решения и дадим применимые рекомендации.
Теория
Механизм установки диска в режим «только для чтения» в WinPE начинается с корректного управления политикой SAN (Storage Area Network). Политика SAN определяет, как диски обрабатываются при их обнаружении. Установка SAN-политики в «Offline All» (значение 3) предотвращает автоматический монтирование дисков, что, в свою очередь, помогает избежать непреднамеренных операций записи.
Основной вызов заключается в управлении дисками, которые Windows рассматривает как «критические». Такие диски необходимы для работы установленной ОС и обычно не могут легко перейти в режим «только для чтения» из-за системных ограничений.
Пример
Ваш текущий подход – использование PowerShell для установки атрибута «только для чтения» (через get-disk
и set-disk
) после выполнения wpeinit
– уже близок к оптимальному, поскольку процесс wpeinit
отвечает за инициализацию среды WinPE. Тем не менее, это может быть проблематично на системах с установленной Windows, так как системные процессы могут начать взаимодействовать с дисками до вашей скриптовой интервенции.
Что касается применения SAN-политики, ваш подход к установке политики SAN в True, чтобы избежать монтирования, также верен. Эта мера предотвращает автоматическое подключение дисков и запись на них в момент загрузки, но не решает проблему управления «критическими» дисками.
Применение
1. Обход ограничения с критическими дисками:
Для изменения статуса «критичности» дисков необходимо работать через более низкоуровневые инструменты или скрипты. Вы можете предпринять следующие шаги:
-
Измените процесс загрузки: Попробуйте загрузиться в WinPE c параметрами загрузки, которые минимизируют вмешательство ОС. Это может включать использование дружественного к WinPE BIOS-настройки, отключающих все внешние и вторичные внутренние диски, пока ваши скрипты не будут выполнены.
-
Используйте другие инструменты управления томами: Утилиты, такие как
fsk-sys
илиfsutil
, могут предоставить более точный контроль над состоянием дисков.
2. Установка дисков в режим «только для чтения» на этапе startnet:
Хотя установка дисков в режим «только для чтения» в startnet.cmd помогает избежать ранних записей, некоторые процессы в графическом интерфейсе (если он есть) могут изменить эту настройку. Рекомендуется поддерживать диски в офлайне до тех пор, пока ваш скрипт не выполнится полностью, и только потом активировать их в режиме «только для чтения».
3. Полное предотвращение записей:
На аппаратном уровне, использование настроек BIOS для выключения всех доступов к жестким дискам и USB, может обеспечить дополнительный уровень защиты. Кроме того, использование аппаратных решений для защиты от записи, таких как физические Write Protect переключатели на дисках, может стать неотъемлемой частью комплексного решения.
В конечном счёте, выполнение этих действий сведёт к минимуму запланированные или случайные операции записи. Важно помнить, что настройка таких окружений может оказаться iteration-intensive, и может потребовать нескольких просмотров и тестирования до получения стабильных результатов.