![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Безвідповідальна модифікація інсталяції
Майкрософт вперше додали механізма autounattend.xml
за часів
захоплюючих краєвидів Вісти. Користувач завантажував те що зараз
називається ADK віндюковий, який містив графічну ютіліту WSIM, яка
випльовувала xml-файла. Останній клавсь до кореня usb-драйву і віндюка
(ув ідеалі) інсталювався без втручання хомо сапієнса.
Нічого революційно нового ув тому не було--лайнакси схожі механізми мали багато років, наприклад kickstart ув Федорі.
Прублема ADK є ув тому, що він потребує інстальованої ОС, а способу
генерації autounattend.xml
з-під ОС конкурентів Майкрософт не надає,
окрім цінних порад писати його ув текстовому редакторі вручну (дуже
дякую).
Не слідкуючи за їх цирком на дроті, деякий час назад я почув, що з винахідливим змістом того .xml можна отримати інсталяцію віндюка без сучасних та корисних аплікації типу коупайлота або ноутпеда (модерн) чи аутлука (н'ю), та без необхідності ув танцюванні гопака для створювання 'офлайнового' користувацького акавнту.
Різноманітні онлайнові генератóри autounattend.xml
змінюються як
пори року. Поточним, працюючим, популярним (ППП) залишається
дойчландський unbeaufsichtigter (вимовляйте це самі)
generator.
На цьому пригоди лише починаються:
Якщо потрібен .iso з доданим
autounattend.xml
для створення мошини віртуальної, то як модифікувати оригінальний .iso? Всередені там є хфайлова система udf, яку змаунтувати можна тільки read-only.Якщо треба інсталювати віндюка на справжнього комп'ютера (ви не повірите, але такі випадки трапляються непоодиноко), то як створити з оригінального .iso завантажувальний usb?
Нагадаю: ми ув лайнаксі, де жодні rufus'и працюють не тут. Різноманітні ютіліти різної ступені занедбаності або підтримують лише .iso лайнаксних дістро, або написані ув найкращому випадку школярами, ув найгіршому--вініпухами чи руснею (маґа-патріот-джон с тексастской області лєнінґрадскоґо района). Ув 2х останніх різновидах є гарний шанс отримати гарного .iso с безоплатним подарунком всередині.
З найсмішніших варіянтів що я бачив, кількість залежностей є така, що аплікацію, разом з залежностями, завертають ув appimage як ковбасу.
.iso → usb
Rufus'и та друзі для режиму UEFI роблять нічого складного: на usb-дівайсі створюється дві GPT партішони:
- невелика fat32;
- ntfs (рідше--exfat), яка займає решту дівайса.
До 1ї переписують бутлоадера (зазвичай 'універсального', який може вантажити декілька різних ОС). До ntfs копіюють вміст .iso.
Ув нашому варіянті майкрософтський .iso має свого бутлоадера, тому скопіювати можна його. Головний трюка є ув правільному створені партішонів: (1) fat32 не повинен бути з позначками esp та boot, інакше віндюковий інсталятора вирішить що саме на usb-драйві буде EFI розділ для ОС, хоча останню він ставить до геть іншого драйва; (2) без позначки msftdata на ntfs партішоні віндюка кидає "Install driver to show hardware" даялога, а її diskpart малює його як "Unknown". Вкрай неввічливо.
$ parted test.img print | grep -v ^Disk
WARNING: You are not superuser. Watch out for permissions.
Model: (file)
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 1074MB 1073MB fat32 BOOT msftdata
2 1074MB 7516MB 6442MB ntfs INSTALL msftdata
Наївний скрипта, який це втомлююче робить, на жаль, вимагає рута через створення loop devices, але не чіпає хадварних драйвів:
$ sudo ./winiso2img Win11_24H2_English_x64.iso test.img
test.img
потім можна перенести на usb-драйв будь-яким улюбленим
способом, наприклад:
$ sudo dd if=test.img of=/dev/XXX status=progress bs=1M oflag=direct,sync
Ув принципі, щоб згенерувати хфайла з потрібною таблицею партішонів
можна обійтися без losetup+parted, а взяти sfdisk та udisksctl, але
mkfs.ntfs -fF file.img
у мене не бажало форматувати хфайла так, щоб
його визнавала інсталяція.
Модифікація .iso
Майкрософтські .iso зроблені з хфайлової системи udf, а крихітний шар iso9660 там містить лише хфайла README.TXT з повідомленям про skill issue читача.
Лайнакс знає про udf, але маунтить оті .iso лише ув read-only.
Спочатку я хотів взяти 7-zip. Розаркування великого аркайву (> 5GB)
займає час навіть на сучасних мошинах, тому бажано повідомляти
користувачу що коїться. 7-zip друкує лінію стану розаркування, але
робить це ув найворожіший спосіб. По-1ше, автор 7-zip'у вважає що \r
(carriage return) то є буржуазноє ізлішєство. Ось фрагмент
збереженого аутпуту:
00000000: 2020 304d 2053 6361 6e20 2f68 6f6d 652f 0M Scan /home/
00000010: 616c 6578 2f44 6f77 6e6c 6f61 6473 2f77 alex/Downloads/w
00000020: 696e 2f69 736f 2f77 3131 2f08 0808 0808 in/iso/w11/.....
00000030: 0808 0808 0808 0808 0808 0808 0808 0808 ................
00000040: 0808 0808 0808 0808 0808 0808 0808 0808 ................
00000050: 0808 0808 0808 2020 2020 2020 2020 2020 ......
00000060: 2020 2020 2020 2020 2020 2020 2020 2020
00000070: 2020 2020 2020 2020 2020 2020 2020 2020
00000080: 2008 0808 0808 0808 0808 0808 0808 0808 ...............
00000090: 0808 0808 0808 0808 0808 0808 0808 0808 ................
000000a0: 0808 0808 0808 0808 0808 0808 2020 3025 ............ 0%
000000b0: 2031 3030 204f 7065 6e08 0808 0808 0808 100 Open.......
000000c0: 0808 0808 0808 2020 ......
Воно видаляє рядок за допомогою циклу з \b
(backspace), потім друкує
пробіли щоб видалити їх знову.
По-2ге, воно відмовляється малювати лінію стану коли stdout не є терміналом. Зі script(1) це можна побороти і, з деяким зусиллям, я змусив аутпут від 7z бути зумісним з dialog(1) gauge, але після проглядання 7-zip src, огида до нього у мене переросла бажання його торкатися. Це 1 з найгірших src, які я бачив. То є диво що воно працює взагалі, а кількість CVE починаючи з 2022 наводить на конспірологічні думки які я тут писати не буду.
Якщо ігнорувати 7-zip, як тоді модифікувати змонтований read-only .iso? Можна скопіювати все ув іншу директорію, але існує більш шляхетний спосіб: overlayfs.
З ним гагібайти хфайлів не копіються, але метод вимагає рута. FreeBSD ніби мала раніше щось схоже (unionfs), але коли я користувався fbsd, воно часто працювало з помилками.
Після отримання директорії з autounattend.xml
хфайлом, її завертають
ув .iso знову.
Скрипта,
який це робить, є на 24 рядки більший за попередній winiso2img
:
$ wc -l *
67 mkwiniso
91 winiso2img
158 total
$ sudo ./mkwiniso add lol.xml Win11_24H2_English_x64.iso test.iso
Якщо просто треба з розаркованого Майкрософтського .iso створити новий, рута є непотрібний:
$ ./mkwiniso generate dir 1.iso
no subject
no subject
ггг, немає за шо
no subject
Так то не конспірологія, а достеменно встановлений факт. Як і з вінраром.
no subject
а розкажіть про вінрар. останній раз я їм користувавсь років 20 тому. пам'ятаю шо gui там був доволі slick
зрозуміло шо кдб та угрупування під дахом кдб вразливості ув популярних в Україні аркайверах використовують аж гай гуде, але я не чув шоб вінрар-контора відкрито підтримувала рф як касперський
no subject
Перший - коли вилізло, що при створенні запароленого архіву в нього додається сегмент, де лежить той пароль, закриптований по RSA. І той, в кого є приватний ключ, може відкрити будь-який запаролений вінрар-архів. Другий - коли виявилося, що при створенні архіву, що "саморозпаковується" (ехешник, якому не потрібен архіватор для розпаковки себе), в нього додається якийсь бінарі-блоб, який стартується після власне розпакування архіву. На всі питання автор відповідав приблизно "йдіть нахуй, ось чому!"
Вінрар був доволі популярний за кордоном, але після цих факапів він там практично вимер.
no subject
ого
помніт родіна про товарища рошала на нємєцкой чужбінє
цікаво, він це добровільно зробив чи до нього зашлі на аґаньок поціновувачі кельнського собору
(гадаю що добровільно)
no subject