gosha20777

Ставил Шindoшs программист. Или оптимизируем загрузку Windows образов.

April 12, 2018 | 8 Minute Read

Многим хоть раз в жизни да приходил вопрос: а где скачать новый ISO винды? Сегодня я покажу вам несколько альтернативный способ загрузки ОС. Профессионалам он позволит автоматизировать процесс загрузки и сборки образа и даст доступ к его гибкой настройке и кастомизации и оградит обычных юзеров от торрентов. Программисты и сисадмины могут прочитать теорию. Ну а все остальные закончить на практике. И пожалуйста, больше никаких торрентов и сомнительных сайтов.

Принцип работы

На самом деле все очень просто. Не так давно Microsoft анонсировала Unified Update Platform (UUP), то есть единую платформу обновлений. Это такая платформа, которая собирает и раздает все обновления для OS и предоставляет API для скачивания обновлений на компьютеры. Основная идея заключается в том чтобы скачивать эти обновления и из них собирать сначала ESD образ и потом декодировать его в ISO. Спустя пару дней работы мой хитрый план сработал и у меня получилось (ура).

Так как скачать “окна”?

  1. Идем вот сюда, и качаем архив.
  2. Распаковываем его, выбираем нужную редакцию. Я выбрал creatingISO_17133.1_en-us_x86_Core.
  3. Распаковываем архив
  4. Жмякаем creatingISO.cmd.
  5. Перед нами открывается страшная консоль.
  6. Идем пить чай или смотреть сериалы. Когда появится слово done. то в папке с creatingISO.cmd появится наш iso файл.
Странная консоль

Вы также можете скачать все редакции сразу и собрать вашу собственную сборку Windows. Для этого загляните в downUUP_17133.1_all_...

Чуть чуть теории.

Если вы обычный юзер то можете не читать. Тут я расскажу про платформу UUP и про то, как это ее API.

UUP?

Что это такое и какие у неё преимущества? Вот что пишет Microsoft.

К текущему моменту мы обновляем более 400 миллионов устройств под управлением Windows 10, а новые сборки для инсайдеров выпускаются практически каждую недель. Это кажется невероятным, если вы помните, что было буквально 2 года назад. Но мы знаем, что можем сделать лучше! Наши клиенты выражали желание получать бесшовные обновления, получив больше контроля над процессом установки, хотели, чтобы обновления требовали меньше локальной обработки, что должно повысить срок жизни аккумуляторов, а также пожелали уменьшение веса обновлений. И мы работаем над всем вышеперечисленным. В Windows 10 Anniversary Update мы добавили функцию «активных часов», а также предоставили больше контроля над процессом. В следующем обновлении Windows 10 мы добавим ещё больше улучшений. А сегодня мы готовы представить инсайдерам об улучшении, которое работает как на ПК, так и на смартфонах, планшетах, IoT и Hololens. Мы анонсируем новое поколение нашей технологии доставки новых сборок: Unified Update Platform (UUP).

Одно из наиболее важных преимуществ для сообщества и клиентов — уменьшение размера загружаемых файлов на ПК. Мы доработали технологии сборки и публикации систем для того, что дифференциальные загрузки работали на всех устройствах, в том числе на ПК и мобильных устройствах. Дифференцированный пакет содержит в себе только изменёния, внесённые с момента последнего обновления устройства, а не полную сборку системы. После окончательного выхода UUP, пользователи на ПК могут ожидать уменьшения размера загрузки примерно на 35% при переходе с одного крупного обновления Windows на другое. Мы работаем над этой функцией, чтобы представить её с Windows 10 Creators Update; инсайдеры смогут оценить её немного раньше.

Мы также изменяем функцию проверки обновлений на устройствах, что сделает её более эффективной. После перехода к UUP, мы сократим размер данных, отправляемых на устройства клиентов, а также уменьшим объём работы, которая сейчас проводится на устройствах для обновления, что особенно важно для устройств, использующих мобильную версию ОС. При проверке обновлений, используя UUP, Центр обновлений будет оценивать, какие обновления необходимы конкретному устройству. После этого служба отправит список на устройство для загрузки и установки. Поскольку проверка ведётся службой, операции обновления будут проводиться быстрее. Важно отметить, что в реальных условиях UUP будет выглядеть и вести себя по-разному, потому что UUP — это базовая платформа и служба оптимизации, то есть всё, что происходит за кулисами.

Мы также расширили некоторые концепции, существующие на ПК, для мобильных устройств. Как вы могли заметить, ПК мог без проблем обновляться сразу до последней сборки за одну операцию, независимо от того, какую сборку он использовал до этого. Но это не работало на мобильной системе. Иногда на смартфоны приходилось скачивать и устанавливать по 2-3 сборки, чтобы перейти на последнюю доступную. UUP же позволит автоматически вернуть так называемое «каноническое» обновление, которое и обновит вас до последней сборки за один раз, так же, как и на ПК.

Мы рады начать использовать UUP для выпуска новых сборок для инсайдеров. Мы планируем вводить UUP поэтапно, начав сегодня с мобильных устройств. Мы также ожидаем появления UUP на инсайдерских сборках на ПК до конца этого года, а затем принеся его на IoT и Hololens. Наша команда рада начать публикацию мобильных сборок с помощью UUP, так что будем наблюдать за результатами нашей тяжёлой работы над созданием объединённой платформы обновлений Windows.

(Мой вольный перевод).

Как это работает?

Как я уже говорил сначала скачиваются uup файлы, а потом они преобразуются в ESD, а уже потом перекодируется в ISO образ.

Собрать из ESD образа ISO - задача уже давно решенная. Для это существует много программ, одной из них является aria2. Осталось только обратиться к центру обновлений и скачать его. Для этого был написан простой PowerShell скрипт. Примеры подобных скриптов также есть в Интернете. Мне пришлось лишь чуть чуть исправить его.

Вот пример кода:

@echo off

rem script:	   @rgadguard

setlocal EnableExtensions
setlocal EnableDelayedExpansion
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

set "aria2=bin\aria2c.exe"
set "rand=%random%"
set "aria2Script=%rand%\aria2_script.txt"
set "destDir=uup/17133.1/ru-ru/amd64"
mkdir %rand%

title Starting download of files...
%aria2% -x16 -s16 -d"%rand%" -o"aria2_script.txt" "https://uup.rg-adguard.net/api/GetFiles?id=18c9eb5e-9fd6-49b6-948e-8c19e9cabbce&lang=ru-ru&edition=Core&txt=yes"
if %ERRORLEVEL% GTR 0 goto DOWNLOAD_ERROR
for %%i in ("%aria2Script%") do (if /i %%~zi LEQ 10 goto ERROR_API)

%aria2% -x16 -s16 -j5 -c -R -d"%destDir%" -i"%aria2Script%"
if %ERRORLEVEL% GTR 0 goto DOWNLOAD_ERROR
erase /q /s "%aria2Script%" >NUL 2>&1

color 0a
call bin\convert-UUP.cmd %cd%\uup\17133.1\ru-ru\amd64
goto EOF

:DOWNLOAD_ERROR
color 0c
echo We have encountered an error while downloading files.
erase /q /s "%aria2Script%" >NUL 2>&1
pause
goto EOF

:ERROR_API
color 0c
echo Error getting links to download UUP files.
echo Try again a few minutes later.
erase /q /s "%aria2Script%" >NUL 2>&1
pause
goto EOF

:EOF
exit

UPD

Также некоторое время спустя набрел на сайт https://uup.rg-adguard.net/ который уже реализует похожий функционал. Эх велосипеды…