__xx.12.2024__ Всем привет.
Не один год использую в качестве рабочей - w10x64 19041.308 и не вижу смысла гнаться за новыми, производительность устраивает, а всякие кортаны и копилоты - нахрен не нужны на компьютере, где не проводятся сложные научные, медицинские и прочие исследования . В качестве игровых - использую W11 Iot и они тоже вполне шустрые, после обрезки и некоторой настройки. И вот задался вопросом, а не собрать ли дистрибутив десятки IoT той же версии (19041), занимаемый объём диска будет поменьше и хлама там минимум. Обновления не устанавливаю, компьютер домашний. И я противник дефендера, выключаю его первым делом. Пользуюсь касперский-free, скачал подозрительные файлы, запустил каспера, проверил файлы, порядок - выгрузил каспера и ни кто не угробит тебе нужные архивы с наработками или тестовые коды принятые за опасные. Попытки войти/выйти в нэт, пресекает или разрешает - Windows 10 Firewall Controll (оболочка) или FortFirewall.
Поиск оригинального ISO нужной версии - оказался не таким уж простым делом. На uup.rg-adguard.net есть Insider Preview - но сборочный скрипт пишет Error work script. На uupdump.net её тоже нет. Был найден англоязычный образ на archive.org. Потребовалась доработка скриптов обрезки и настройки под конкретный билд, в основном твики реестра, планировщика и удаление ненужных процессов. Занимаемый объём диска после установки, при ru-локализации, на VBox7 получился ≈ 9,8Гб , после применения скриптов очистки ≈ 6,2Гб. И да, интегрировать локализацию нужно, Iot без ru, в прочем раскладку можно включить и без локализации - если us-интерфейс не смущает.
С прологом всё, далее описание структуры рабочих-скриптов и применение.
Ссылки в конце статьи.
За основу взяты скрипты подготовки W11 , уже прилично переработаны, могли остаться ненужные правки реестра, но в работе готовой ОС - проблем не замечено, ненужное будет удаляться в процессе нахождения ;-)
Использую DISM из пакета Windows Kits 10 , но можно и встроенный в ОС. Всё это хозяйство работает у меня из f:\Windows Kits\10\configs_w10\*.cmd , так что перед использованием проверяем и заменяем пути в cmd-скриптах на свои, переменные с путями в начале скриптов.
Описание скриптов кратко:
- show.cmd - покажет все редакции в образе .wim или .esd
- wim_esd.cmd - конвертирует esd -> wim или wim -> esd
- rexport.cmd - экспортирует выбранную редакцию в отдельный образ
- apps_cmpns.cmd - выводит список приложений и предустановленных компонентов в файлы .\logs\apps.txt и .\logs\comps.txt
- work_19041.208_.cmd - главный рабочий скрипт
- unmount.cmd - на случай нештатной ситуации, для безопасного размонтирования, примонтированного .wim, после прерванного процесса
- SetACL.exe - используется в скриптах для установки прав доступа
- .\langs\ - содержит пакет ru_локализации, оригинальное название - Microsoft-Windows-Client-LanguagePack-Package_ru-ru-amd64-ru-ru.cab или .esd
- .\logs\ - для вывода информации
- .\luascr\ - применил LUA для парсинга выходных файлов скрипта apps_cmpns.cmd
- .\scripts\ - содержит пост инсталл скрипты для копирования в дистрибутив (об этом далее)
Применение:
Пути в скриптах исправьте на свои.
Файл install.wim у меня находится в f:\tmpF\wims\install.wim Сюда же - f:\tmpF\wims\ , в процессе работы будет скопирована папка .\scripts и помещена в иерархию $oem$\$$\Setup\Scripts\ Всё это будем копировать вместе с готовым install.wim в ISO, но об этом позже. Монтируется install.wim в f:\mountF\ где и происходит основная работа с ним.
Все файлы где положено, пути прописаны. Запускаем show.cmd смотрим какие редакции содержит install.wim и под какими индексами.
Если их много и нужна одна - экспортируем её с помощью rexport.cmd раскомментировав в нём нужную строку и правильно указав параметр /SourceIndex, тут индекс 2. Будет создан install_2.wim с выбранной редакцией, уберём в сторонку старый install.wim а install_2.wim переименуем в install.wim.
Теперь выясним - какие приложения и компоненты предустановлены. Запустим скрипт apps_cmpns.cmd , он примонтирует install.wim в _:\mountF , сохранит список предустановленных приложений в файл .\logs\apps.txt , а список компонентов - в .\logs\comps.txt и размонтирует install.wim. В папке .\logs\ получили текстовые фалы. Можно в ручную выбрать нужные имена пакетов для отключения и добавить их в основной скрипт work_19041.208_.cmd. Компоненты с пометкой State : Installed являются установленными, а в списке приложений - ориентируемся по названию и выясняя у яндекса что это. Но я использовал интерпретатор LUA (и почти пожалел), остался от автоматизации работы CheatEngine ;-) В папке .\luascr\ находится lua.cmd - который запускает lua_скрипт парсинга, например, для преобразования строк из файлов .\logs\apps.txt и .\logs\comps.txt - раскомментировать в lua.cmd строку запуска parse_en_utf8.lua , так как дистрибутив у нас english. parse_ru_utf8.lua - можно использовать при работе с ru_дистрибутивом. Lua_скрипты в кодировке cp866 - это не удачная попытка заставить работать регистронезависимо с кириллицей lua-функции string.find string.gsub и string.lower ;-) Можно конечно наколбасить перекодировку_из_в_utf8 ради реализации регистронезависимого поиска, но нахрен это надо ради пары десятков строк. В общем - parse_ru_utf8.lua создаёт файлы apps_out.txt и comps_out.txt со строками, готовыми для вставки в work_19041.208_.cmd. Убираем из них то - что не нужно удалять из .wim, а остальное копируем в work_19041.208_.cmd. В прочем - для описываемого дистра всё уже настроено.
В папке scripts находятся:
- SetupComplete.cmd - выполняет некоторые настройки системы сразу после установки
- firstlogon.cmd - выполняет некоторые настройки системы при первом входе
- 7z2301-x64.exe - для автоустановки
- start2.bin - настройки кнопки ПУск
- некоторые сопутствующие файлы файлы
На рабочем столе будет создана папка tweaks2 с содержимым:
- winsxs_ntfs_compress2.cmd - очищает и сжимает содержимое системной папки %WINDIR%\WinSxS , запускать лучше после установки драйверов
- clearAll.cmd - очистка журналов, временных файлов, дампов, ...
- renSearchApp.cmd - переименовывает файл кортаны searchapp.exe в searchapp.old.ex_ (в диспетчере виден как - search)
- disable_AutoUpdate.cmd - полное отключение обновлений и их сканирования (UsoSvc и wuauserv) , в скрипте есть выбор. Сохраняет права на UsoClient.exe файл UsoClient.acl (сохраняется рядом с UsoClient.exe), далее отбирает права у всех пользователей или переименовывает файл в UsoClient.ex_ исключая возможность запуска. Код переименования раскомментирован. В скрипте есть закомментированный код для восстановления разрешений на файл из UsoClient.acl ( Редактируйте )
- SetACL.exe - применяется в скриптах для установки прав на ветви реестра
Скрипты из tweaks2 запускать от Администратора.
Проверяем ещё раз внимательно все пути в work_19041.208_.cmd, в начале скрипта и в конце - где команда xcopy копирует папку scripts в $oem$\........
Если всё норм -запускаем work_19041.208_.cmd и идём за кофай.
После завершения работы скрипта, повторно реэкспортируем редакцию из install.wim но уже с /SourceIndex:1 , удалим install.wim и переименуем install_2.wim в install.wim Рядом с файлом.wim создано древо $oem$ - содержащее папку .\Scripts\ с содержимым.
Если по какой либо причине, работа work_19041.208_.cmd была прервана и файл.wim остался примонтирован к папке монтирования, то используем unmount.cmd. Там есть команды для размонтирования без сохранения, с сохранение, для удаления ресурсов, связанных с поврежденными подключенными WIM-образами и для монтирования тоже. Нужное раскомментировать, пути проверить.
Самое время записать install.wim и папку $oem$ в ISO. Запускаем AnyBurn , нажимаем кнопку "Изменить содержимое файла-образа" , выбираем w11x64_shablon_&uefi.iso , Далее , в окне "Изменить образ" - с лева выбираем папку sources и наживаем кнопку Добавить. Выделяем install.wim и папку $oem$ , жмём кнопку Добавить и они появляются в папке sources. Нажимаем Далее, задаём другое имя файлу.iso , например w10Iot_test.iso и жмём Создать. После завершения - испытываем на какой нибудь виртуалке, я использую VirtualBox7.
Если всё в порядке, можно сжать wim в esd скриптом wim_esd.cmd раскомментировав нужное и снова записать в ISO.
Оставлена проверка обновлений, можно выключить с помощью Dism++
Ссылки:
- архив со скриптами и AnyBurn - w10Iot-scripts.rar
- iso-шаблон - w11x64_shablon_&uefi.iso
Смело редактируёте, дополняйте, допиливайте. Критика приветствуется, если что упустил- дополню.
Ах да, ;-)
С наступающим 2025 Всех, пока.