Найти в Дзене
Adr Asd

допиливаем для себя w10x64 IoT 19041

__xx.12.2024__ Всем привет. Не один год использую в качестве рабочей - w10x64 19041.308 и не вижу смысла гнаться за новыми, производительность устраивает, а всякие кортаны и копилоты - нахрен не нужны на компьютере, где не проводятся сложные научные, медицинские и прочие исследования . В качестве игровых - использую W11 Iot и они тоже вполне шустрые, после обрезки и некоторой настройки. И вот задался вопросом, а не собрать ли дистрибутив десятки IoT той же версии (19041), занимаемый объём диска будет поменьше и хлама там минимум. Обновления не устанавливаю, компьютер домашний. И я противник дефендера, выключаю его первым делом. Пользуюсь касперский-free, скачал подозрительные файлы, запустил каспера, проверил файлы, порядок - выгрузил каспера и ни кто не угробит тебе нужные архивы с наработками или тестовые коды принятые за опасные. Попытки войти/выйти в нэт, пресекает или разрешает - Windows 10 Firewall Controll (оболочка) или FortFirewall. Поиск оригинального ISO нуж
Оглавление

__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++

Ссылки:

Смело редактируёте, дополняйте, допиливайте. Критика приветствуется, если что упустил- дополню.

Ах да, ;-)

С наступающим 2025 Всех, пока.

-2