Утилиты не первой свежести, но запускаются из WinPE (надо положить их в шару, если использовать PXE), некоторые умеют работать с ОС на диске.
На некоторые ругаются антивирусы, так что архив запаролен. Пароль:111
Утилиты не первой свежести, но запускаются из WinPE (надо положить их в шару, если использовать PXE), некоторые умеют работать с ОС на диске.
На некоторые ругаются антивирусы, так что архив запаролен. Пароль:111
HBCD, как я уже говорил — «очень полезный горшочек», набор утилит для всяческого восстановления, форматирования, установки винды, и т.д.
Последняя версия, несмотря на то, что из нее убрали весь пиратский софт, стала только больше, и весит 700 Мб, хотя я помню версии по 250 Мб. Но можно распотрошить CD и грузить его по частям. Распакуем образ и приступим.
— Mini Windows XP. Аж целая заметка есть по этому поводу (копия).
Готовый образ
— Very Mini Windows XP. Образ по ссылке выше. Хоть этого и не было в оригинале, добавлю.
Готовый образ
— DOS Programs. Как вытащить DOS’овую часть из HBCD. (копия)
Готовый образ
— Все раскладываем по отдельным каталогам.
Это Linux-окружение для всяких работ с диском (делением на разделы, форматированием и т.д.). Но надо сказать, слегка капризное в отношении загрузки по сети.
Поскольку, программе мало ядра и initrd, лучше создать отдельный ISO-образ с ней. В каталог iso_root
надо скопировать каталог pmagic
из \Boot
образа HBCD. Также нужно добавить загрузчик и составить соответствующие конфиги.
Вот переписанный с конфига HBCD конфиг для isolinux
:
isolinux.cfg
PasteBin (Mega.nz) — основное меню диска
other.cfg
PasteBin (Mega.nz) — дополнительные варианты загрузки, есть утилиты недоступные из основной конфигурации.
Главное, не забыть в каждую конфигурацию загрузки добавить опцию livemedia noeject
, без нее не видит файлов из своей ФС.
Пункт меню:
LABEL pm menu label Parted Magic kernel modules/memdisk initrd distrib/hbcd/pm/pm.iso append iso
— Windows Memory Diagnostic, загружается, как обычный образ загрузочного диска. В качестве ядра указываем memdisk
, а в качестве initrd
— wmemtest.gz
LABEL wm menu label Windows memory diagnostic kernel modules/memdisk initrd distrib/hbcd/wmemtest/wmemtest.gz
— MemTest86+ (настройки те же)
Грузим, как обычный Linux-дистрибутив.
LABEL ch menu label NT/2000/Vista/7 password changer kernel distrib/hbcd/ntpr/chntpw initrd distrib/hbcd/ntpr/chntpw.gz
— Kon-Boot (Password recovery)
Аналогично образам дискет.
1. Из \Boot
HBCD копируются два файла SeagatDW
и SeagatDW.gz
в отдельный каталог.
2. Переименовываем строчными буквами (т.е. в sgdw
и sgdw.gz
)
3. Грузим, как обычный Linux-дистрибутив.
LABEL sd menu label Seagate Disk Wizard kernel distrib/hbcd/seagate/sgdw initrd distrib/hbcd/seagate/sgdw.gz append rw ramdisk_size=32768 acpi=off quiet noapic mbrcrcs on vga=788
Строчку append
копируем из конфига HBCD.
1. Лишить оригинального расширения .bin
, т.е. переименовать в plpbt
.
2. Положить в отдельный каталог.
2. Прописать его в параметре kernel
LABEL pl menu label Plop boot manager kernel distrib/hbcd/plop/plpbt
— Smart Boot manager.
Грузится, как сжатый образ с помощью memdisk
.
— Fix «NTLDR is missing»
Аналогично.
— Darik’s Boot and Nuke — Hard Drive Eraser
Аналогично.
— HBCD 10.1 DOS Image
— HBCD 8.7 DOS Image
Загружаются, как ISO-образы.
Старые образы:
Аварийные диски Acronis (Disk Director и True Image), наверное, самые простые для запуска по сети. Нужен оригинальный ISO, который можно вытащить из дистрибутива, memdisk и не забыть прописать append iso raw.
Примерно как-то так:
LABEL acronisdd menu label Acronis Disk Director 12 kernel modules/memdisk initrd distrib/acr/acronisdd/acronisdd.iso append iso raw
Для слабых машин подойдет Acronis True Image 2011, там образ маленький ~122 Мб, а для самых слабых можно изготовить образы DOS с DOS-версиями True Image и Disk Director, примерно вот таким способом (копия)
— Minimal DOS Image (img, gzip)
— Minimal DOS Image (ISO)
— DOS Live CD (ISO)
— DOS Utilities (для работы, ключик только своим)
— Big DOS Image (не дам)
— Образ загрузочной дискеты FreeDOS
PROMPT 0 ui menu.c32 menu title DOS programs and images LABEL back menu label Back to main menu kernel modules/menu.c32 append pxelinux.cfg/default LABEL dos menu label Minimal DOS image kernel modules/memdisk initrd distrib/dos/min/dos.gz append harddisk LABEL doslivecd menu label DOS Live CD kernel modules/memdisk initrd distrib/dos/doslivecd/doslivecd.iso append iso LABEL freedos menu label FreeDOS boot disk kernel modules/memdisk initrd distrib/dos/freedos/freedos.img append floppy LABEL dosutils menu label DOS Utilities kernel modules/memdisk initrd distrib/dos/utils/dosutils.img.gz append harddisk LABEL bigdos menu label Big DOS Image kernel modules/memdisk initrd distrib/dos/big/bigdos.img.gz append harddisk
Mini Windows 98:
Windows 1.03:
Windows 2.03:
В Linux создать файл нужного размера не просто, а чрезвычайно просто. Есть утилита dd
и устройство /dev/zero
, которое отгрузит вам нужное количество символов с кодом 0
.
Например, создадим файл размером 20 Мб:
dd if=/dev/zero of=file.zero bs=20M count=1
В винде (7 и выше) появилась утилита fsutil
, способная сделать аналогичную операцию:
fsutil file createnew <filepath> <size>
где:
<filepath>
— путь к файлу
<size>
— размер файла в байтах
Правда, у этой утилиты есть 2 неудобных момента:
1. Она хочет права администратора, и с этим ничего не поделать штатными средствами, но можно, например поделать моей утилитой wsudo (копия)
2. Надо указывать размер файла в байтах, что не очень удобно. А вот с этим вполне можно бороться, написав батник-обертку, который будет обрабатывать еще один параметр — модификатор единиц измерения (килобайты или мегабайты), вычислять нужное значение в байтах и вызывать fsutil
.
1. Проверяем параметры CMD-файла:
@echo off if "%~1" EQU "" ( echo No arguments. Use "%~n0%~x0 <filename> <size> [K|M]" exit /b 1 )
символ ~
удаляет кавычки из переменной %1
(первый аргумент командной строки CMD/BAT файла), if
сравнивает значение переменной в кавычках с пустыми кавычками. Если первого аргумента нет, выводится соответствующее сообщение и скрипт завершает работу с кодом возврата 1 (exit /b 1
)
2. Выводим справку по использованию CMD-файла:
if "%~1" EQU "/?" ( echo Use "%~n0%~x0 <filename> <size> [K|M]" exit /b 1 )
В переменной %0
хранится путь к самому CMD-файлу, конструкция %~n0
обрезает полный путь до имени файла (без расширения), а %~x0
— оставляет одно расширение (с начальной точкой). Конструкции %~n<номер>
и %~x<номер>
можно использовать только с аргументами командной строки.
Запуск CMD-файла без параметров:
zerofile.cmd
No arguments. Use "zerofile.cmd <filename> <size> [K|M]"
и с параметром вывода справки:
zerofile.cmd /?
Use "zerofile.cmd <filename> <size> [K|M]"
3. Теперь проверим, указан ли в имени файла путь к нему, если не указан — добавим к имени файла текущий каталог:
if "%~1" EQU "%~n1%~x1" ( set FILENAME=%CD%\%~1 ) else ( set FILENAME=%~1 )
Если имя файла (первый параметр) равно этому же имени и расширению, значит, путь не указан, в качестве пути добавляем текущий каталог, и записываем его в переменную FILENAME
.
4. Установим удобные имена переменных для остальных параметров — размера файла и единицы измерения:
set FILESIZE=%~2
set ED=%~3
5. Теперь надо проверить, является ли размер файла целым положительным числом.
Штатных проверок в языке CMD/BAT файлов не предусмотрено, но можно пойти на хитрость. Известно, что команда set
способна делать арифметические действия над числами и переменными (надо установить ключ /a
и написать выражение в кавычках). Если в переменной встретится не число, то set
автоматически будет считать значение переменной равным 0
. Соответственно, в результате получится значение с учетом этого. Значит достаточно сделать с переменной какое-то действие, которое не приведет к изменению значения (например, отнять и прибавить единицу), а потом проверить, получился ли положительный результат.
set /a "RES=FILESIZE+1-1" if %RES% LEQ 0 ( echo Can't create file with size %RES% exit /b 2 )
6. Проверяем, какая единица измерения установлена в 3 параметре CMD-файла. Если в качестве параметра установлена K(k)
— килобайты, M(m)
— мегабайты. Что-то еще или ничего — размер файла задается в байтах.
if "%ED%" EQU "K" goto :kb
if "%ED%" EQU "M" goto :mb
if "%ED%" EQU "k" goto :kb
if "%ED%" EQU "m" goto :mb
goto :create
7. Вычисляем размер файла в байтах:
:kb set /a "RES=FILESIZE*1024" set ST=%FILESIZE% Kb goto :create :mb set /a "RES=FILESIZE*1024*1024" set ST=%FILESIZE% Mb
8. Выводим summary и создаем файл нужного размера:
:create echo Creating file: %FILENAME% if "%ST%" EQU "" ( echo Size: %RES% bytes ) else ( echo Size: %ST% [%RES% bytes] ) wsudo fsutil file createnew "%FILENAME%" %RES%
CMD-файл целиком (на GitHub)
CMD-файл целиком (на PasteBin)
wsudo
(с GitHub)
1. Фишки батников (Копия в PDF)
2. CMD/BAT — Проверка наличия параметров (Копия в PDF)
Бля, в свое время так торопился, что забыл установить для запускаемой wsudo программы рабочий каталог. Исправил, чо. Теперь устанавливается текущий, откуда была вызвана wsudo.
В рабочий folder
(название радиопередачи про винды)
Мой бог — мои правила!
——
Более 2600 плакатов Антона Мырзина aka Paperdaemon:
— скачать одним архивом: https://goo.gl/91j73S
Способ довольно странный, а само Linux-окружение для установки несколько кривовато, потому пишу больше чтоб тему закрыть и к установке XP более не возвращаться.
Принцип действия программы основан на возможности установки Windows XP из под DOS. Сначала по сети грузится специальный дистрибутив Linux (ядро и initrd), он настраивает сеть, подключает нужные сетевые шары, запускает предварительное конфигурирование, генерирует файл unattend.txt
и разные послеустановочные скрипты, теоретически запускающие установку необходимых программ. На практике вся автоматизация работает криво (возможно, надо править скрипты и конфиги), но доступ к установщику винды, который думает, что запущен из-под DOS, мы в результате получаем.
Вот где, кто и когда и откуда эту штуковину взял, я не ведаю. Поэтому вот вам архив прямо с сервера (естественно, без дистрибутива винды внутри).
Распаковываем содержимое каталога unatxp
(внутри архива) куда-нибудь в отдельный подкаталог в каталоге с дистрибутивами на PXE-сервере.
Пусть будет для примера такой вот путь:
/home/pxe/tftp/distrib/windows/unatwinxp
Для работы установочному Linux-окружению необходимо расшарить каталог distrxp
Добавляем в smb.conf
:
[unatdistr] path=/home/pxe/tftp/distrib/windows/unatwinxp/distrxp public=yes browsable=yes read only=yes guest ok=yes
Перезапускаем samba.
Дистрибутив XP надо скопировать с установочного диска или распаковать из ISO-образа и поместить в подкаталог distrxp/os/winxp
, а также установить права на все файлы в подкаталогах в 755.
cd /home/pxe/tftp/distrib/windows/unatwinxp/distrxp/os/winxp
chmod -R 755 *
Осталось подправить меню PXE-сервера.
LABEL winxpunatted menu label Windows XP Unattended install kernel distrib/windows/unatwinxp/bzimage initrd distrib/windows/unatwinxp/initrd.gz append z_user=guest z_password=guest z_path=\\10.10.1.5\unatdistr
Как видно из кода выше, необходимо передать ядру Linux-окружения имя пользователя и пароль для доступа к шаре, а также ее адрес на сервере. Все данные передаются в соответствующих параметрах ядра.
Теперь надо подготовить машину, на которую будем устанавливать XP. На самом деле, Linux-окружение само предложит переделить диск и сделать активный раздел при помощи своих инструментов, но я ему не особо доверяю, потому сделал это с помощью Acronis. Главное, чтоб перед установкой на машине уже был активный раздел, отформатированный в FAT32, иначе Linux-окружение перевет работу где-то на середине, и выбросит в линуксовую консоль, так и не запустив эмулятор DOS.
— Довольно кривое Linux-окружение
— Много мелких суетливых движений, как говорил классик. Необходимость отвечать на кучу вопросов.
— Требует раздел FAT32, потом придется переделывать командой convert
.
+ Отсутствует возня с сетевыми драйверами и BINL
+ Идет даже на очень слабых машинах, тестировалось на PIII 700
Как-то давно мы делали загрузку Windows с жесткого диска (копия) с помощью Grub4DOS, запускаемого в DOS-окружении.
Оказывается, на некоторых машинах такая конфигурация может неожиданно сглючить. Загрузчику 7 и 10 Windows почему-то периодически не нравится образ виртуального HDD с DOS. Переделал так, чтобы было без DOS-окружения совсем, а GRUB4DOS стартовал из загрузочного ISO-образа.
Составляем загрузочное меню GRUB4DOS, в принципе, все делается по инструкции, нужен лишь редактор, поддерживающий переносы строк Windows/DOS (CR+LF). И стоит обратить внимание на то, что этот загрузчик GRUB4DOS чувствителен к регистру имен файлов, поэтому файл menu.lst
необходимо назвать строчными буквами.
Основное загрузочное меню (menu.lst
) на PasteBin
Меню с альтернативными вариантами загрузки (alt.lst
) на PasteBin
Загрузочный ISO я сделал в Linux, с помощью утилиты mkisofs
.
1. Создаем где-нибудь в удобном месте каталог iso_root
2. Копируем в каталог файлы menu.lst
, alt.lst
и загрузчик GRUB4DOS grldr
3. В каталоге уровнем выше iso_root
делаем скрипт для создания ISO-образа
4. Запускаем его
./createiso-gfd WINBOOT
5. ФАНФАРЫ
Вот вид загрузочного меню:
— Готовый ISO-образ с mega.nz (600 Кб)
— menu.lst
, alt.lst
, grldr
и скрипт createiso-gfd
в одном архиве.
В прошлой заметке Копия мы делали так, чтобы можно было грузить по сети Mini Windows XP из Hiren’s Boot CD 15.2.
Такой способ запуска Mini Windows XP заодно избавляет от необходимости подгружать с помощью BINL необходимые драйвера сетевых карт и ебли с загрузчиками. А значит, можно поставить и «большую» XP. По сети.
Сделаем на нашем сервере отдельную шару под дистрибутив XP, у меня она уже была, т.к. раньше я тоже использовал немного другой способ установки XP с помощью специального Linux-окружения, но там надо было нажимать больше кнопок и вводить серийный номер. Поэтому в примере будет длинный и странный путь к шаре.
Прописываем в /etc/samba/smb.conf
[unatdistr] path=/home/pxe/tftp/distrib/windows/unatwinxp/distrxp public=yes browsable=yes read only=yes guest ok=yes
Перезагружаем samba-сервер.
Копируем в шару файлы с дистрибутива XP.
Обратите внимание, чтобы все успешно сработало, права на файлы должны быть установлены в 755.
Алгоритм работы данного BAT-файла таков:
1. Проверить, есть ли по необходимому пути файл winnt32.exe
2. Если нет, подключить шару.
3. Подождать
4. Выполнить winnt32.exe
с необходимыми параметрами.
Пример файла xpinstall.bat
:
SET NETADDR=\\192.168.0.20\unatdistr
SET NETDRIVE=Z
SET INSTALLPATH=\os\winxp\
SET UNATTEND=W:\scripts\unattend.txt
SET SYSDRIVE=D
if exist %NETDRIVE%:%INSTALLPATH%i386\winnt32.exe goto INSTALL
net use %NETDRIVE%: %NETADDR%
sleep 5
:INSTALL
%NETDRIVE%:
cd %INSTALLPATH%
i386\winnt32.exe /s:%NETDRIVE%:%INSTALLPATH%i386 /syspart:%SYSDRIVE% /tempdrive:%SYSDRIVE% /unattend:%UNATTEND%
pause
В принципе, в самом файле нет ничего интересного, но есть момент, на котором стоит остановиться. Это параметры запуска winnt32.exe
:
/s:<путь>
— путь к файлам дистрибутива, обязательно в конце указывайте каталог <code >i386, иначе не сработает.
/syspart:<буква_диска>
— раздел, на который будет установлена ОС.
/tempdrive:<буква_диска>
— раздел для временных файлов, он обязательно и под той же буквой должен быть доступен, как из WinPE, так и после перезагрузки. Вообще лучше всего поставить тот же раздел, что и системный. Установщик потом сам потрет все лишнее.
/unattend:<путь>
— путь к файлу автоматизации установки (unattend.txt
)
После двоеточий пробелы НЕ НУЖНЫ!
Полученный BAT-файл нужно положить в шару hbcdshare
, созданную в прошлой статье, например в отдельный каталог scripts
вместе с утилитой sleep
и файлом unattend.txt
, права исполняемым файлам надо установить в 755.
chmod 755 xpinstall.bat
chmod 755 sleep.exe
Минус данного способа. Перед установкой ОС, соответствующий раздел, указанный в параметрах /syspart
и /tempdrive
должен быть отформатирован и доступен из WinPE, а также этот раздел должен быть активным.
После запуска данного BAT-файла запустится программа установки, которая скопирует содержимое дистрибутива XP на жесткий диск, установит загрузчик, после чего необходимо будет перезагрузиться уже с жесткого диска, и продолжить установку.
Минус в использовании шары и скрипта запуска установщика с нее, в том, что если нужно поменять букву диска для установки, или адрес самой шары, то придется лопатить батник из Linux (шара для безопасности доступна в режиме Read Only).
Чтобы это можно было как-то побороть, наскриптил небольшую утилиту InstallGenerator. При необходимости что-то поменять вживую, можно запустить ее, указать другие пути для сохранения конфигов, адреса шары и других параметров.
Поступить также, положить в отдельный каталог в шаре для WinPE и поставить в каталоге права 755 (или 777).
chmod 755 *
При зппуске InstallGenerator из WinPE появится следующее окно:
Здесь можно будет выбрать нужные опции. Программа сгенерирует BAT-файл, скопирует файлы в указанное расположение, и, при необходимости, запустит скрипт.
Для генерации скрипта, программа берет данные из файла script.txt, так что его можно всегда подправить. Программа лишь заменяет строки между !
и #
на соответствующие значения внутренних переменных.
Пример файла script.txt
на PasteBin
Впрочем, я внедрил утилиту в готовый образ, который можно скачать ниже. Там никакие права менять не надо.
Скачать
— BAT-файл xpinstall.bat
, sleep.exe
и unattend.txt
— Утилита InstallGenerator
— Готовый образ WinPE с утилитой XPInstall (ярлык на Рабочем столе)
Хотя, я бы не сказал, что это прям попса. Хорошая дискотечная музыка, под которую можно колбаситься.
Прямая ссылка: https://www.youtube.com/watch?v=lX3FSHQ3qRc
Искал тут себе маленькие консольные (чтоб без иксов при старте) дистрибутивы Линукс. Перелопатил весь гугль. Вот меня пока два устроили, старейший, из мне известных System Rescue CD и INX, на основе Ubuntu, но без X-сервера. Он так и называется INX (Is Not X).
А вы что посоветуете?
Mini Windows XP, «очень полезный горшочек», однако с запуском по сети возникают определенные сложности. Если просто загрузить образ Hiren’s Boot CD с помощью memdisk и запустить Mini Windows XP она свалится.
XP, что PE-версии, что инсталлятор, подружить с PXE проблематично. Мало того, что надо поднимать сервер BINL, который выдаст винде нужные драйвера для сетевых карт, так еще и задолбаешься настраивать загрузчик. Чего только не было — и штатный ntdetect.com не подходил, и патченные в упор не видели файлов ответа (winnt.sif), в общем геморроя было масса.
Но интересно, что Mini Windows XP вообще-то драйвера для сети при загрузке не нужны, все файлы на момент запуска уже переданы на целевую машину, и проблема в чем-то другом. Насколько я понял, в том, как memdisk маппит в память ISO-образ, а винда потом с этим делом конфликтует, скорее всего у нее не получается создать виртуальный диск в памяти. А если попробовать грузить не образ ISO, а образ HDD с виндой? Да! Таким макаром все вышло. Об этом и расскажу.
— Собственно, ISO-образ Hiren’s Boot CD 15.2
— Minimal DOS Image
— Какой-нибудь дистрибутив Linux, в который можно установить виртуальную машину QEMU. Мой пакет для Slackware здесь
— Утилита kpartx, из комплекта multipath-tools. Можно собрать/скачать самостоятельно. На всякий случай, пакет для Slackware
— Windows 7, если захочется провести более глубокую модификацию Mini Windows XP
— Текстовый редактор, поддерживающий переносы строк DOS/Windows (CR+LF), для редактирования конфигов и BAT-файлов DOS, Mini Windows XP и конфига загрузчика Grub4Dos (я делал это в винде).
1. Складываем все инструменты в отдельный каталог в Linux, и создаем в нем «болванку», для образа HDD:
dd if=/dev/zero of=winpe-test.img bs=90M count=1
Если создавать только минимально работающий Mini Windows XP, то хватит и 60 мегабайт (bs=60M
), впрочем, можете попробовать поэкспериментировать и еще уменьшить его.
2. Грузимся в QEMU, указывая в качестве загрузочного устройства образ Hiren’s Boot CD, и приаттачиваем «болванку» образа HDD, как первый жесткий диск:
qemu-system-i386 -cdrom hbcd.iso -hda winpe-test.img -boot d
3. Выбираем в меню загрузки Start Hiren’s Boot CD, потом File Managers и Volkov Commander
Загрузившись в VC вводим команду fdisk3
. Эта команда запустит родной Fdisk от Microsoft’а.
У нас один жесткий диск, пока не форматированный и не размеченный, так что в появившемся меню нажимаем 1 и ENTER (Create DOS Partition or DOS logical drive), в следующем меню тоже выбираем 1 пункт (Create Primary DOS Partition), далее отвечаем Y (да). Если все сделано верно, Fdisk предложит перезагрузиться, дабы новый раздел стал доступен в DOS. Выходим из Fdisk и закрываем QEMU.
4. Грузимся в QEMU, но на этот раз указываем в качестве CD Minimal DOS Image:
qemu-system-i386 -cdrom dos.iso -hda winpe-test.img -boot d
Наш новый диск имеет букву D:, но недоступен, поскольку не отформатирован.
5. Форматируем его и делаем системным:
format D: /U /S
Подтверждаем операцию, по окончании вводим метку, например, WINPE
.
6. Переходим на диск D (в меню Left—>Drive или Right—>Drive, QEMU перехватывает Alt+F1/Alt+F2), копируем с диска C: файлы autoexec.bat
, config.sys
, himem.sys
и каталоги DOS
и VC
.
7. В оригинальном образе была опечатка в autoexec.bat
, ее можно подправить, заменив строчку DOS;VC
на C:\DOS;C:\VC
Содержимое AUTOEXEC.BAT
и CONFIG.SYS
8. Можно проверить образ, загрузившись с него в том же QEMU:
qemu-system-i386 -hda winpe-test.img -boot c
Должны появиться окошки Volkov Commander.
Для того, чтобы добавить на диск файлы WinPE, необходимо получить к нему доступ из Linux:
0. Создаем точку монтирования
mkdir /mnt/dos
1. Вешаем образ на Loop-устройство:
losetup /dev/loop0 winpe-test.img
Обычно устройство loop0
свободно, но можно посмотреть свободное командой
losetup -f
2. Маппим разделы:
kpartx -av /dev/loop0
Утилита выдаст сообщение, содержащее название обнаруженного раздела (выделено жирным):
add map loop0p1 (251:6): 0 183393 linear /dev/loop0 63
3. Монтируем раздел:
mount -t vfat /dev/mapper/loop0p1 /mnt/dos
После того, как нужные файлы скопированы, образ необходимо отключить.
1. Размонтируем раздел:
umount /mnt/dos
2. Удаляем информацию о разделе:
kpartx -dv /dev/loop0
3. Освобождаем loop-устройство:
losetup -d /dev/loop0
Чтобы было проще, можно написать два маленьких скрипта:
Подключение образа:
#!/bin/bash IMAGE="winpe-test.img" echo "Open WinPE" losetup /dev/loop0 $IMAGE MSG=`kpartx -av /dev/loop0` DEV=`echo $MSG | awk '{print $3}'` echo $DEV sleep 5 mount -t vfat /dev/mapper/$DEV /mnt/dos echo "Complete" sleep 2
Примечание: паузы нужны, иначе монтирование может случиться раньше, чем блочное устройство (раздел), появится в /dev/mapper
и ничего не примонтируется.
Отключение образа:
#!/bin/bash
echo "Close WinPE..."
umount /mnt/dos
kpartx -dv /dev/loop0
losetup -d /dev/loop0
echo "Complete!"
Для создания минимально работающего Mini Windows XP, потребуется взять из образа Hiren’s Boot CD все файлы из \HBCD\XP
, и положить их в каталог /HBCD/XP в образе жесткого диска.
Также необходимо настроить загрузчик Grub4Dos:
1. В образе Hiren’s Boot CD находим файл GRUB.EXE
и копируем его в корень нашего диска.
2. Создаем конфиг MENU.LST
также в корне диска. Я просто подправил оригинальный конфиг из Hiren’s Boot CD, удалив оттуда все лишнее. Содержимое конфига на PasteBin
Скачать GRUB.EXE, MENU.LST, AUTOEXEC.BAT, CONFIG.SYS
с Mega.Nz
Внимание! Править MENU.LST, AUTOEXEC.BAT, CONFIG.SYS
надо редактором, который умеет в DOS/Windows переносы строк (например, Notepad++)
Проверяем.
1. Грузимся из полученного образа (здесь я делал это уже по сети, о настройке конфига для PXE будет ниже):
2. Запускаем GRUB.EXE
:
3. Выбираем соответствующий пункт меню, ждем…
ФАНФАРЫ!
На самом деле, Mini Windows XP получился сильно урезанным, без программ из Hiren’s Boot CD, без толковой поддержки сети и прочих полезностей, что ж, будем улучшать
Ну он не так, чтоб уж прямо критически важный, но Mini Windows XP подгружает некоторые программы, например, программу настройки сети, автомонтирования дисков, архиватор из \HBCD\Programs
, \HBCD\Programs\Files
\HBCD\Dos
, я посмотрел в код файлов автозагрузки, и все самое важное выделил.
1. В /HBCD/Programs/Files
нашего образа, добавим следующие файлы из \HBCD\Programs\Files
ISO-образа:
7Zip.7z
AutoMountDrives.7z
DLL.7z
IrfanView.7z
Notepad.7z
TeraCopy.7z
XpFiles.7z
2. В /HBCD/Dos
(из \HBCD\Dos
):
BiosBoot.7z
MBRUtil.7z
PCI32.7z
SavePart.7z
3. В /HBCD
файл HBCDMenu.exe
4. В /HBCD/Programs
пока можно скопировать все файлы, которые не *.cmd
(из \HBCD\Programs
ISO-образа), CMD-файлы, кроме одного (AutoMountDrives.cmd
), придется подправлять, так что AutoMountDrives.cmd
можно скопировать.
Все потроха сего дистрибутива лежат в архиве формата WIM, в Windows 7 имеется стандартная утилита для работы с ним.
Копируем из образа HBCD файл XP.wim
куда-нибудь в удобный каталог, и смотрим его содержимое (команды выполнять от администратора):
dism /Get-WimInfo /WimFile:XP.wim
Cистема DISM
Версия: 6.1.7600.16385
Сведения об образе : XP.wim
Индекс: 1
Имя : XP
Описание : <не определено>
Размер (байт): 113 236 979
Операция успешно завершена.
Образ можно подмонтировать в какой-нибудь каталог:
mkdir %TMP%\wim
dism /Mount-Wim /WimFile:XP.wim /name:XP /MountDir:%TMP%\wim
Теперь в каталоге %TMP%\wim
— содержимое образа, меня оттуда интересуют два файла:
Startup.cmd
, который Mini Windows XP запускает при старте, и prep
, который в процессе загрузки переименовывается в Startup2.cmd
и выполняется. Оттуда и из XpCustomize.cmd
и были вытащены все нужные имена файлов.
Закрыть образ без сохранения изменений:
dism /Unmount-Wim /MountDir:%TMP%\wim /discard
С сохранением:
dism /Unmount-Wim /MountDir:%TMP%\wim /commit
openwim.bat
closewim.bat
savewim.bat
Итак, что же все-таки делать с остальным софтом? Ну у нас же PXE, а значит есть сервер с Samba. В следующем выпуске я таки начну сначала, и расскажу, как настроить PXE на Linux-машине, и Samba в т.ч. Пока ограничусь секцией конфига smb.conf для этой конкретной шары:
[hbcdshare] path=/home/pxe/tftp/distrib/windows/winpe public=yes browsable=yes read only=yes guest ok=yes
В каталог /home/pxe/tftp/distrib/windows/winpe
копируем каталог Files
из ISO-образа HBCD, вместе со всем содержимым. Естественно, для шары вы можете указать любой удобный вам путь.
1. Правим файл /HBCD/XP/XpCustomize.cmd
в нашем образе диска, меняем строку
REM start PENetwork
на start PENetwork
Эта команда запустит утилиту настройки сети (нужные драйвера уже есть в комплекте в архиве XpDrvLAN.7z
и Mini Windows XP их подгружает, если вы не забыли положить в /HBCD/Programs
файлы 7z.exe
и 7z.dll
)
2. Шара не поднимется, пока не будет настроена сеть, поэтому надо «притормозить» выполнение командного файла (обычно хватает полминуты). Для этого добавим в каталог /HBCD/XP
утилиту sleep.exe
(приложу ее в архиве ниже)
3. Пропишем следующие команды для паузы и поднятия шары. Шара будет подключена, как сетевой диск, например, с буквой W:
REM Add network share with programms
CD \HBCD\XP
sleep 30
Echo Add Files Share...
NET USE W: \\10.10.0.120\hbcdshare
sleep 10
Файл XpCustomize.cmd
целиком
Исходник утилиты sleep
Если все сделано правильно, то после загрузки Mini Windows XP мы увидим сетевой диск в «Моем компьютере»:
А если зайдем внутрь, то файлы:
Исправляем CMD-файлы для запуска софта
1. Извлекаем из ISO-образа все CMD-файлы из \HBCD\Programs
в отдельный каталог.
Во всех них, где есть (кроме файла AutoMountDrives.cmd
) нужно заменить строчку Files\имя_файла
на W:\Files\имя_файла
(W:
— сетевой диск, куда подключена шара)
2. Специально для этого дела я написал за 15 минут на коленке утилиту на C# — HBCDCmdFix
Пользоваться просто — выбираете каталог с *.cmd
файлами и нажимаете Fix. Программа делает резервные копии в *.bak
файлы перед изменением.
3. Кладем измененные файлы в /HBCD/Programs
, отмонтируем образ нашего HDD, загружаемся с него и пробуем запустить какую-нибудь программу (из меню в системном трее). Если все сделано правильно, то программа запустится
Наводим красивости
Все готово, осталось только навести красоту в загрузочных меню.
Делаем в CONFIG.SYS
загрузочное меню DOS (оставим возможность выйти в DOS или перезагрузить компьютер):
Измененный CONFIG.SYS
и AUTOEXEC.BAT
Почитать про создание загрузочного меню в MS DOS Копия
Измененный MENU.LST
Grub4Dos (добавлена возможность перезагрузиться или выключить компьютер).
А симпатичную надпись в DOS’овом меню, я сделал, подправив в HEX-редакторе IO.SYS
. Но как — догадайся мол сама 🙂
Осталось только сжать готовые образы gzip
‘ом и прописать в меню PXE-сервера:
gzip winpecut.img
gzip winpe.img
LABEL winxppe menu label Windows XP PE kernel modules/memdisk initrd distrib/windows/winpe/winpe.img.gz append harddisk LABEL winxppecut menu label Windows XP PE Very Small kernel modules/memdisk initrd distrib/windows/winpecut/winpecut.img.gz append harddisk
Скачать
—Minimal DOS Image
Пакеты:
—QEMU
—muktipath-tools
—Скрипты, утилиты, примеры конфигов из статьи
—Тестовый (минимальный) образ Mini Windows XP
—Полный образ Mini Windows XP
Прямая ссылка: https://youtu.be/lO5xD3R6MpA
Tinyproxy это такой маленький http/https прокси-сервер, на мой взгляд, очень простой в использовании и конфигурировании, вполне подходящий для несложных задач пропускания http(s) трафика. Например в офисе или дома. Лично я использую его, чтоб можно было посещать статистику и личный кабинет собственного провайдера в обход VPN.
Если у вас есть специальный network namespace для прокси, перед установкой сервера настраиваем его (добавляем нужные файлы hosts
и resolv.conf
, как это описано здесь Копия)
Рестартируем систему (или сетевой менеджер/демон, тут уж зависит от вашей ОС).
Для Sclackware можно скачать пакет с исходниками с помощью sbopkg
, взять готовый и откомпилированный здесь (Для Slackware 12-14.2), или собрать из исходников на GitHub и готовый пакет установить с помощью installpkg
.
1. Создаем группу для proxy-сервера, например proxy
:
groupadd proxy
2. Создаем отдельного пользователя для запуска прокси-сервера:
Можно сделать это с помощью скрипта-обертки adduser
над программой useradd
.
— На первый вопрос вводим имя пользователя, например, provproxy
.
— Далее пропускаем (нажимаем enter)
— В ответ на initial group, вводим имя ранее созданной группы для прокси-сервера, в данном случае proxy
(в вашем — ту группу, которую создали вы).
— Далее, на вопрос о дополнительных группах, нельзя устанавливать что-либо, нажимаем Enter
— Home directory нужна, там будет лежать PID-файл, логи (если нужно) и конфигурационный файл. По умолчанию директория совпадает с именем пользователя и располагается в подкаталоге /home
.
— Shell должна быть установлена строго в /bin/false
, поскольку это не интерактивный пользователь. Если скрипт ответил вам: - Warning: /bin/false is not in /etc/shells (potential problem using FTP)
Do you wish to change the shell ? (Y/n)
То отвечаем n
, а потом в /etc/shells
добавляем строчку
/bin/false
— Expiry date пропускаем (Enter)
— Далее пропускаем всю User Information
— На вопрос о пароле придумываем что-нибудь чтоб прошло.
Далее правим /etc/shadow
, находим строчку с именем пользователя и удаляем все, что между первым и вторым двоеточием. Было:
provproxy:$5$S8/tp/ap2wF/K$qaYnfHuR8opsWO0WwTaXCjiHjmge7mWuH5WwEd5Kn70:17888:0:99
Стало:
provproxy::17888:0:99
Права на каталог надо установить в 700 (полный доступ для пользователя
provproxy
):
chmod 700 /home/provproxy
Можно не пользоваться интерактивным скриптом, а сделать все с помощью базовых команд:
1. Добавить пользователя
useradd -g proxy -d /home/provproxy -s /bin/false provproxy
где:
-g proxy
группа пользователя (ранее созданная proxy
)
-d /home/provproxy
домашний каталог пользователя
-s /bin/false
— оболочка для пользователя. Обычно здесь прописывается /bin/sh
, /bin/bash
для интерактивных пользователей, или /bin/false
для неинтерактивных, что нам и надо в данном случае.
Строчка /bin/false
должна быть в файле /etc/shells
— если ее нет, дописать.
2. Создаем домашний каталог:
mkdir /home/provproxy
3. Меняем владельца каталога на пользователя
provproxy
chown provproxy:proxy /home/provproxy
4. Меняем права доступа на каталог:
chmod 700 /home/provproxy
Был подробно описан в этой заметке: Запускающий скрипт для tinyproxy Копия
Сам скрипт:
— На PasteBin
— На GitHub
— Скачать с Mega.nz
Поскольку сам инициализационный скрипт описан довольно полно, то я остановлюсь лишь на двух важных моментах.
PID-файл: в скрипте необходимо правильно указать путь к PID-файлу, но об этом поговорим ниже. У меня PID-файл создается в домашнем каталоге пользователя provproxy
. Местоположение PID-файла задается в этой строке скрипта. Если надо, не забудьте исправить на свое значение:
PIDFILE="/home/provproxy/tinyproxy.pid"
Команда запуска прокси-сервера:
По умолчанию там просто указан путь к исполняемому файлу tinyproxy
:
TINYPROXYCMD="/usr/sbin/tinyproxy"
Но я хочу эту команду немного подправить.
Запуск сервера при старте системы.
При старте системы все обычно запускается от root
‘а, а нам не надо совершенно, чтоб под root
‘ом крутились всякие там сервера. Не зря же мы отдельного пользователя делали. Дополняем команду:
TINYPROXYCMD="sudo -u provproxy /usr/sbin/tinyproxy"
В таком виде, скрипт, запускаемый при старте из-под root
‘а вызовет tinyproxy
от имени нужного нам пользователя. Справедливости ради, надо заметить, что tinyproxy
, как любой уважающий себя сервер, умеет сам себе понижать права до определенного пользователя, указанного в файле конфигурации. Но на этом остановимся ниже. На мой взгляд, одно другому не мешает, зато так виднее и жестко задано, от какого пользователя стартовать.
Альтернативный файл конфигурации.
По умолчанию tinyproxy
ищет свой файл конфигурации в /etc/tinyproxy.conf
, но можно задать альтернативный, в домашнем каталоге пользователя. Делается это путем добавления ключа -с
и пути к файлу. Объединю этот вариант с предыдущим:
TINYPROXYCMD="sudo -u provproxy /usr/sbin/tinyproxy -c /home/provproxy/tinyproxy.conf"
Раз уж началось с альтернативного файла конфигурации, так давайте его сделаем (от root
). Копируем файл /etc/tinyproxy.conf
в /home/provproxy/tinyproxy.conf
cp /etc/tinyproxy.conf /home/provproxy/tinyproxy.conf
Далее устанавливаем ему владельца (можно перейти в директорию /home/provproxy
перед этим, я перешел — пути будут неполные):
chown provproxy:proxy tinyproxy.conf
И права — пользователю provproxy
на tinyproxy.conf
нужны права только на чтение, ничего он не пишет в конфигурационный файл, и тем более не пытается исполнить.
chmod 400 tinyproxy.conf
root
‘а и настраиваем параметры прокси-сервера.
Подробно описывается конфингурационный файл
Прописываем нужный адрес прокси в браузере:
Проверяем соединение:
Вот тут не показывается, что используется прокси, потому что прокси настроен верно — с отключением via
и других заголовков, передающих IP-адрес.
Старый скрипт для автоматического обновления паролей с бесплатного VPN-сервиса vpnbook.com более не работает. Они весь сайт таки зажабаскриптили и пароль теперь отображается в виде картинки. Но поскольку пока у меня есть хорошие анархисты, милые, предоставляющие доступ к своему сервису нахаляву, я перестал пользоваться vpnbook, и расковыривать этот пиздец мне влом. Расковыряю, конечно, но потом, не сейчас.
И я даже знаю, как это сделать.
Или автозагрузка нужных программ с подключаемых дисков, внешних носителей и сетевых шар.
Возникла тут производственная задача. Некоторые программы, необходимые для работы, находятся на сетевых шарах (либо подключаемых/шифрованных контейнерах), однако, после загрузки рабочей ОС, они должны автоматически запускаться у пользователя. Для примера, на работе это была программа управления станком.
Решая задачу, перелопатил гору литературы, но ничего готового не нашел. В результате написал свой «Менеджер отложенной автозагрузки».
Принцип работы простой, пользователь в этом самом «Менеджере» указывает путь до нужной программы, лежащей, например, на сетевом диске. «Менеджер» установлен на разделе с ОС, и запускается при ее загрузке. При запуске он проверяет через заданный интервал времени, появился ли нужный «экзешник». Если появился — запускает.
По умолчанию программа работает в портативном режиме (т.е. все настройки и список запускаемых программ, хранятся в директории с программой). Запуск без параметров открывает окно настройки, где можно добавить нужные для запуска задачи, а также в отдельном меню установить время проверки доступности задач, прочие параметры и добавить сам менеджер в автозагрузку ОС. Понятно, что менеджер должен находиться на разделе жесткого диска, который доступен ОС сразу после загрузки.
В качестве запускаемой задачи можно указать не исполняемый файл (exe, com, bat, cmd), но и документ, тогда он откроется в ассоциированной с ним программе.
Для исполнения задач, необходимо запустить менеджер с параметром командной строки /run
Основное окно настроек
Опции «Менеджера отложенной автозагрузки»
Окно добавления/редактирования задачи
Cправка по параметрам командной строки
StartupDelayed
/help
StartupDelayed [/run] [/d|confdir <путь>]
— эта справка
/help
/run
— выполнение задач
/d
— запускать в «не-портативном режиме» (конфигурационные файлы в директории %LocalApplicationsData%\StartupDelayed
)
/confdir <путь>
— указать путь к директории с файлами конфигурации
По умолчанию программа будет запущена в режиме конфигурации, и будет искать конфигурационные файлы в директории со своим исполняемым файлом.
Инсталлятор (не портативная версия)
Портативная версия
Исходники на GitHub
Обновлена утилита DetecTOR, которая определяла, присутствует ли определенный IP в сети Tor.
По многочисленным просьбам зрителей добавлен:
— модуль SxGeoSharp, теперь, даже если IP отсутствует в сети Tor, программа возьмет информацию из базы SxGeo (если вы ее скачаете и подгрузите, она бесплатная), и выдаст вам страну (+город и регион, если есть) для конкретного IP-адреса.
— по умолчанию включен портабельный режим, все настройки программы хранятся в подкаталогах с исполняемым файлом.
— режим пакетной обработки. Если у вас есть огромный лог или просто список IPv4 адресов, (тестировалось на 1000 IP-адресов в специально нагенерированном текстовом файле, где IP были расположены в случайном порядке), то программа найдет все адреса, проверит их по БД SxGeo и БД адресов Tor и выдаст результат в виде файла CSV. Можно включить или отключить выдачу в отчет дополнительных данных Tor.
— добавлены дополнительные аргументы командной строки (см. readme.txt).
— проверено замечание пользователя paperdaemon@ljr. Данная ошибка при работе в Windows 7 и более ранних версиях так и не была выявлена.
Основная статья о DetecTOR Копия
Скачать (портативная версия)
Исходники