Ну что ж, давно не писал сюда всякого бреда))), пора сие дело исправить. Последние эксперименты с Triple MBR от tinybit показали, что процесс создания универсальной флешки достаточно трудоемок, и при этом результаты меня не особо вдохновили... Как USB-HDD флешка виделась стабильно, а вот как USB-ZIP работать нормально отказывалась(((. Методический перебор параметров создания раздела и выбор разных bootlace.com опять же ни к чему не привели.
Вот поэтому решил попробовать еще один способ, в этот раз от Bean123 (одного из разработчиков grub4dos). Он написал утилиту, называемую - fbinst.exe и предназначенную для нестандартного форматирования флешек (создание структуры специального вида)... Итак, по пунктам: 1. Качам утилиту http://download.gna.org/grubutil/ (актуальная версия на текущий момент - 1.5) 2. Запускаем и глядим параметры: fbinst -h 3. Обнаруживаем, что нифига не понятно, и более того - практически отсутствуют любые упоминания о сей утилите не только в рунете, но и на англоговорящих форумах... Точнее упоминания, конечно есть, а вот реальных описаний использования практически нету(((, посему идем сюда: форум китайских друзей или сюда: форум остальных друзей 4. Осознав основы, начинаем мучать флешку (данные все будут потеряны, посему лучше сохранить все заранее)
Все действия выполнять с ПРЕДЕЛЬНОЙ аккуратностью, иначе можете че-нить грохнуть. Я буду описывать, как делал для себя, вы же можете попробовать свои параметры... Заодно и опытом поделитесь 1. Определяем какое устройство (номер) у нас флешка : fbinst --list Предположим, что она (hd1)
2. Форматируем флешку: fbinst (hd1) format --force --fat32 --zip --align --unit-size 8 На этом этапе создана структура разделов, файловой системы и сгенерированы несколько MBR, кроме того выделена спец. область под файлы загрузчиков и др., флешка создавалась из расчета, чтобы определялась как USB-ZIP или USB-HDD (USB-ZIP полезен для старых биосов, где нет поддержки USB-HDD)
3. Проверяем области хранения файлов (этой командой будете пользоваться и позже, после добавления файлов): fbinst (hd1) info
4. Ложим файлы, как пример: grldr и ntldr на диск D: (чтобы не заморачиваться с путями) 5. Прописываем их, например так: fbinst (hd1) add grldr d:\grldr fbinst (hd1) add ntldr d:\ntldr 6. Проверяем: fbinst (hd1) info 7. Создаем на диске d: текстовый файлик с названием fb.txt, его содержимое ниже:
Code
default 0 timeout 5 text "Please choose menu" text "F1. grldr" menu F1 grldr grldr text "F2. ntldr" menu F2 grldr ntldr
8. Вписываем его на флешку: fbinst (hd1) add-menu fb.cfg d:\fb.txt 9. Проверяем: fbinst (hd1) info 10. Добавляем menu.lst на флешку, ну и другие файлы... Перезагружаемся и глядим что получилось
Более подробную информацию можно найти по ссылкам данным выше, это больше учебный пример, также можно добавить на флешку syslinux, другие загрузчики, другие файлы... Вообщем читайте форум, я еще в процессе изучения этой утилиты.
***
Добавил архив с примером использования fbinst. Как им пользоваться: 1. Расспаковать в какую-либо папку 2. Обязательно проверить, что ваша флешка определяется как устройство (hd1), если это не так, то изменить имя устройства в fbinst\fbinst.cmd 3. Запустить файл fbinst\fbinst.cmd. Он отформатирует вам флешку, с созданием 2х спец. областей размером по 100Мб, впишет вам 3 загрузчика, создаст меню. После этого можете перезагружаться и проверять))), при этом флешка выглядит как пустая, файлы записываются в скрытое место.
После форматирования с помощью утилиты, флешку обязательно "передернуть", т.е. вытянуть и вставить обратно, т.к. Windows кеширует данные и могут быть проблемы.
Пример учебный, будет дорабатываться позже, пока для понимания как и что делает fbinst он подойдет)))
***
GUI для fbinst FbinstTool v1.504 страница для скачки http://bbs.znpc.net/viewthread.php?tid=5641 После первого запуска, методом научного тыка выбираем второй пункт меню с правой стороны, самое верхнее субменю, язык English
***
Update #3 Чуть изменен fbinst.rar (добавлены memdisk и DOS 6.22 для демонстрации возможностей использования), изменил размеры скрытых областей в сторону уменьшения :), стало 10 и 50
26.03.2010 файл удалён по просьбе kDn
Сообщение отредактировал kDn - Суббота, 25.07.2009, 01:58
Кстати, PLOP и Acronis уже давно не конфликтуют. Версию PLOP-a я обновляю, а вот проверить не удосужился. Так, что, рапортую: Acronis TrueImage Home 11.0 (8.059) и Disk Director Suite 10.0 (2.161) тоже грузятся из под PLOP-а @DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ
на мамке Asus P4S800MX Rev.1009, BIOS от 05/04/2004 не грузилась флешка, пока не забил в значении base 193. По умолчанию там 63, и менять не советуют. Но тут говорят, что 193 универсальней
Новая проблема. Имеем загрузочную флэшку с загрузочным образом Acronis TI. Вообще говоря, Acronis True Image позволяет сохранять или читать образ с флэшки, причем даже из под PLOP-а. НО! При наличии же на флэшке (ud) раздела, TI даже не показывает ее содержимое, причем не помогает и мапинг. При этом со второй флэшкой, вставленной при уже загруженном TI он работает на ура. Такое ощущение, что мешает расположение (ud) в начале флэшки. Вопрос, а можно (ud) загнать куда-нибудь в конец? @DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ
Что-то не заладилось у меня с fbinst'ом((( Скачал архив. Флешка определяется как hd2 в fbinst.cmd заменил на hd2 Выполнил его. Флешка отформатировалась, но размер не уменьшился. вот логи:
Code
Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001.
Sh1td0wn, угу, спасибо. Дело в том что старый скрипт немного опасен для применения, были уже случаи - убивания HDD при не внимательном запуске. Наиболее новый вариант лежит тут: http://www.boot-land.net/forums/index.php?showtopic=10020, либо на руборде, либо в этой теме тоже на одной из страниц ссылки выкладывал.
SHELLes, очень желательно использовать актуальную версию скрипта.
скрипт немного опасен для применения, были уже случаи - убивания HDD при не внимательном запуске
1. Узнать HARDS - количество физических дисков в системе for /f "tokens=*" %%i in ('Echo list disk ^| diskpart ^| find "Диск" /C') do set Hards=%%i
2. Список задействованных букв, т.е. список логических дисков fsutil.exe fsinfo drives
3. Анализ диска "Съемный" или нет fsutil.exe fsinfo drivetype %disk_letter%
Всего этого достаточно не только для проверки легальности параметра для fbinst.cmd, но и для вывода кое какой дополнительной информации для пользователя. Понятно, что съемные диски получают номера после жестких.
@echo off REM Сохранить в кодировке DOS 866! setlocal EnableExtensions EnableDelayedExpansion set /a FLDD=0 for /f "tokens=*" %%i in ('Echo list disk ^| diskpart ^| find "Диск" /C') do set Hards=%%i for /f "tokens=*" %%i in ('fsutil.exe fsinfo drives ^| more') do ( Set s=%%i Set s=!s:~-3,2! Echo !s! for /f "tokens=1 delims= " %%j in ('fsutil.exe fsinfo drivetype !s! ^|find.exe /i "Съемный"') do ( set /a FLDD=!FLDD!+1 ) ) Echo Total: !Hards! Flash: !FLDD! endlocal
или
@echo off Echo.# :----^| Анализ оборудования... Set TargetFlash= for /f "tokens=*" %%i in ('Echo list disk ^| diskpart ^| find "Диск" /C') do set Hards=%%i set /a FLDD=0 Echo.# :----^| Сводная таблица СЪЕМНЫХ ДИСКОВ Echo.# :----^| ------------------------------ Echo.# :----^| Диск: Метка диска : UUID Echo.# :----^| ----+-------------+-----------
for /f "tokens=*" %%i in ('fsutil.exe fsinfo drives^|more') do call:flash_info %%i for /f "tokens=*" %%i in ('fsutil.exe fsinfo drives^|more^|find ":" /c ') do Set /a Logical= %%i
Echo.# :----^| ------------------------------ Echo.# :----^| ФИЗИЧЕСКИХ ЖЕСТКИХ ДИСКОВ: %Hards% Echo.# :----^| СЪЕМНЫХ ДИСКОВ: %FLDD% Echo.# :----^| EXIT /b ::::::::::::::::::::::: ::::::::::::::::::::::::::: ::::::::::::::::::::::::::: :flash_info set sLine=%2 if "%2"=="" set sLine=%1 set sLine=%sLine:~-3,2% for /f "tokens=1 delims= " %%j in ('fsutil.exe fsinfo drivetype %sLine% ^|find.exe /i "Съемный"') do ( set /a FLDD=%FLDD%+1 call:flash_info_create %%j ) exit /b ::::::::::::::::::::::: ::::::::::::::::::::::::::: ::::::::::::::::::::::::::: :flash_info_create for /F "tokens=7 delims= " %%k in ('vol %1 ^| find "метку" ') do Set #label=%%k for /F "tokens=7 delims= " %%k in ('vol %1 ^| find "метки." ') do Set #label=нет метки for /F "tokens=4 delims= " %%k in ('vol %1 ^| find "Серийный" ') do Set #uuid=%%k Echo.# :----^| %1 : %#label:~0,11% : %#uuid:~0,9% exit/b
@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ
Сообщение отредактировал ded2007 - Суббота, 27.03.2010, 21:44
ded2007, спасибо, но вы мой вариант выдели? Я вродь тоже красиво сделал, даже с автодетектом USB и обратным отсчетом... . Не говоря уже о том, что у меня флешина определяется как USB-HDD (НЕ съемный диск) после ее перепрошивки, так что делал с учетом того, что скрипт может использоваться и для этих случаев. Т.е. дуракоустойчивость у него на высочайшем уровне.
Обновлено. * Оооо..., какая циферь красивая у этого сообщения. Дождался))). Значит сегодня больше писать не буду, пущай хоть денек повисит.
Сообщение отредактировал kDn - Понедельник, 29.03.2010, 16:57
Использую вариант от 18.10.2009, переделал под себя и не задавался поиском обновления - казалось, что и так удобно. Но сейчас качну свежую версию - заценю.
Добавлено (29.03.2010, 19:49) --------------------------------------------- Понравилось. Даже очень. Такие фишки как "%%?" и "<nul set /p strTemp=%Wait%" тоже люблю. Понравилось использование "wmic" - изящно. Раньше такого не видел. Надо будет и мне примериться.
По поводу "setlocal EnableExtensions EnableDelayedExpansion". Грешным делом люблю свои папки называть с использованием "!" - !NEW, !! OLD или !!! by kDn, что бы они были вверху списка. Из-за этого постоянно имею проблему с чужими CMD-шками с "EnableDelayedExpansion". Вот создал папку "!!! by kDn" и поместил все туда - упс, не пошло. Я-то уже знаю почему - опять наступил на грабли! Вот и получил Для себя решаю такую проблему с помощью SUBST. В начале пакетника нахожу свободную букву и назначаю папку виртуальным диском.
@echo off set c_d=%CD% for %%i in ( P: Q: R: S: T: W: X: Y: Z: ) do (subst %%i "%CD%">nul & if not errorlevel 1 (%%i&goto:#1)) ECHO. Все заданные имена заняты. exit /b
endlocal set d=%CD:~0,2%&subst /d %d%&cd /d %c_d% exit /b
Остается, правда, проблема с вложенными папками или с именами файлов, содержащих "!", тут иногда проще переименовать-обработать-вернуть_имя.
И еще. Перед запуском процесса неплохо было бы суммировать, как-то подытожить задание. Что-то вроде: "Задано устройство такое-то, параметры такие-то, объем скрытой области и т.д. и т.п", чтобы подготовить человека к началу процесса. Да еще к этому и переспросить пару раз уверен ли он. Я вот был и уверен, и понимал что делается, но что-то екнуло, и лишь когда процесс лихо запустился, стал смотреть, а сколько же флэшек у меня воткнуто.
Это даже не замечание, а так комментарий к термину "дуракоустойчивость". Я как-то преподавал на компьютерных курсах, прошу заметить "для чайников". Так вот там преподаватели рассказывали, что их "чайники" умудрялись удалить папку Windows. Так что такой скрипт в руках "чайника" - это ж страшная сила!
@DED-LEGO@ - конструктор для разработчиков GFX-тем ПОСМОТРЕТЬ
Сообщение отредактировал ded2007 - Понедельник, 29.03.2010, 21:45