############################################################################### "Всем в сад", означает http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=22426&start=0 ########################################################################## # - Если вы не знаете, что такое grub, lilo или isolinux, то вам "В сад!" # - Правильно! Это загрузчики! # - Кто не знает, что такое GFX-тема? - "В сад!" # - Правильно! GFX-тема - это графическая оболочка для загрузочных меню. # - Тогда вы, наверное, знаете, что готовые GFX-темы можно потрошить! ########################################################################## ОГЛАВЛЕНИЕ 1. Путь первый, или Путь Джека Потрошителя. 2. Путь второй, или Бытовой Хакер. 3. Возможности новой версии "@DED-LEGO@", или Способ из Потрошителя сделать Хакера. 4. Замечания: =============================================================================== 1. Путь первый, или Путь Джека Потрошителя. ----------------------- При ближайшем рассмотрении, выясняется, что GFX-тема - это архив, создаваемый архиватором специального назначения Cpio. О специальном назначении Cpio, как "ленточного архиватора" можно почитать в Википедии ( http://ru.wikipedia.org/wiki/Cpio ). Для большинства же важно то, что архивный файл всегда можно разобрать на составные файлы "по косточкам", надо только подобрать архиватор поуниверсальнее. Правильно, например, 7Zip умеет разбирать Cpio архивы. Итак, вскроем какую-нибудь GFX-тему 7Zip-ом и посмотрим что у нее внутри. Вообще говоря, количество и назначение составных файлов GFX-тем разнятся, но есть и некоторые обязательные (или почти обязательные) элементы. Для начала, предлагается "вскрыть" очень широко известную (в очень узких кругах ;-{)) тему SNAIYA. Внутри восемь файлов. - три jpg картинки, в одной, из которых, угадывается фоновый рисунок, а в другой графический таймер; - 16x16.fnt - явно файл шрифтов, о чем говорит его расширение; - en.hlp - файл справочной системы. Windows его не понимает, но если открыть этот файл Блокнотом, то все становится очевидным, даже название "en" мы легко интерпретируем как "english". - en.tr - тоже интерпретируем как "english". Посмотрим на содержимое через "микроскоп", то есть Блокнотом. Ага, интерфейсные сообщения на предугаданном нами "english"-е. - languages своим содержанием потрясает. Только "en" и все! Краткость - сестра таланта. Начинают копошиться мысли, что если заменить везде "en" на "ru", а содержимое файлов ru.tr и ru.hlp перевести, то возможно получим русский интерфейс и справочную систему. На самом деле не все так просто, а в действительности можно не только заменить один язык на другой, но и добавить нужное количество языков. Хотя, о чем это я? В пресловутом "очень узком кругу" уже давно или не пользуются справкой вообще ("научный тык" еще никто не отменял), или понимают "en" на достаточном уровне, или легко пользуются всякими переводчиками (с Google-переводчиком нам и китайский-то - не проблема!) - init. Остался только один файл. Назначение его не очень понятно. Хотя... В Блокноте он выглядит как код программы, да и вообще, весь этот архив смотрится как программное ядро с настроечными файлами и файлами данных. Конечно же это и есть то самое программное ядро - мозг нашей сборки. Так, операции на "мозге" отложим на потом, тут понадобятся более тонкие инструменты. А что можно сделать нашими простыми инструментами? Правильно, заменить фоновую картинку на свою. На всякий случай берем именно jpg (и это правильно), и именно тех же размеров 800x600. Называем файл back.jpg и закидываем в окно 7Zip-а. Упс, выясняется, что 7Zip умеет только читать Cpio-архивы, но не умеет их записывать. Обратимся к Интернету = попросим помощь зала. В итоге узнаём, что нам нужен cpio.exe, две библиотеки libiconv2.dll, libintl3.dll и для наших целей используются две команды: cpio -i -F ИМЯ_ТЕМЫ - разборка темы с именем ИМЯ_ТЕМЫ на файлы cpio -o < tema.lst > ИМЯ_ТЕМЫ - сборка файлов, перечисленных в tema.lst, в один архив с именем ИМЯ_ТЕМЫ ВСЁ! Судя по различным форумам, большинство "авторов" так и останавливается на этой стадии - стадии Джека Потрошителя. =============================================================================== Хакер (изначально - кто-либо, делающий мебель при помощи топора) http://ru.wikipedia.org/wiki/Хакер 2. Путь второй, или Бытовой Хакер. ----------------------- Так бы мы и остались на стадии Потрошителя, если бы с некоторыми готовыми темами не распространялся полный набор инструментов для КОМПИЛИРОВАНИЯ ядра-init из набора inc-скриптов. Одной из таких тем была, уже упомянутая SNAIYA. Поэкспериментировав с различными вариантами фонов, пытливые умы не удовлетворились фиксированным положением в ней таймера и наличием некоторых раздражающих элементов интерфейса. Возник вопрос, что и как исправить в скриптах, чтобы решить наши насущные проблемы. Язык скриптов - PostScript-подобный, переменные со вполне читабельными именами, терпения у нас не занимать. Короче, поискали-поискали и нашли. Форумы стали полниться советами " в модуле таком-то, в строке такой-то, то-то и то-то исправить на ТО и ЭТО". Тут уж не просто большинство, а подавляющее большинство занялось "хакерством". Вот только возникает вопрос. Имеем вполне читабельные скрипты, компилятор для них, тестовые системы на виртуалках. Так почему бы не вникнуть в сам язык этих скриптов и не "сваять" что-нибудь эдакое? Более того, выход новой версии GFXmenu3.3, включающей и новый компилятор, и переписанный набор скриптов дали нам инструмент для более удобного конфигурирования параметров по компиляции, но не породили волны перехода к скриптописательству. Почему? Скорей всего, предложенные изменения решили большинство вопросов по элементарному дизайну GFX-меню, а новых потребностей не появилось. Как домашний стационарный телефон долгое время был пределом мечтаний, пока не появилась сотовая связь. Какие же дополнительные возможности можно получить пройдя дальше стадии Бытового Хакера. Осмелюсь предложить дополнительные направления развития GFX-меню. 1. Анимированный дизайн. 2. Модифицирование меню, подаваемого в GFX-тему самой GFX-темой. 3. Перенастройка и управление уже скомпилированной GFX-темой прямо из подаваемого меню. 4. Изменение "поведения" GFX-темы в зависимости от внешних событий (времени суток или года, подключения или отключения устройств и т.д.) Некоторые из перечисленных возможностей реализованы в теме "@DED-LEGO@", выставляемой на ваш суд. ----------------------- ЗАМЕЧАНИЕ: От старого варианта "ded2007" ничего не осталось - сам распотрошил. ----------------------- =============================================================================== 3. Возможности новой версии "@DED-LEGO@", или Способ из Потрошителя сделать Хакера. ----------------------- - отключаемые модули ненужных скриптов (список ниже) для сокращения объема скомпилированного ядра - расширенные настройки каждого модуля через единый TXT-файл (используются при компиляции как в GFXmenu3.3) - возможность изменения настроек непосредственно из MENU.LST (используются уже готовой GFX-темой) - задание скрытых пунктов в MENU.LST - задание собственной клавиши выхода из меню или блокировка выхода вообще - привязка пунктов меню к логотипам непосредственно из MENU.LST - задание текстовых комментариев к пунктам меню прямо в MENU.LST - контроль расхода основной памяти по клавише INS Модули скриптов: - Логотипы произвольного размера с единой для всех маской (количество ограничивается видеопамятью) - Исчезающая по таймауту WaitPanel для вывода комментариев - Бегущая строка с текстом, задаваемым в TXT-файле - Приветствие или минисправка, задаваемое в TXT-файле - "Цветные стекляшки" - анимированный декоративный элемент - "Электрические разряды" - анимированный декоративный элемент - "Аналоговые часы" - анимированный декоративный элемент - Круговой, линейный, числовой таймер с широкими возможностями настроек Модули для разработчиков: - Информационная панель с информацией о расходе памяти, видеопамяти, текщих настройках модулей и т.д. - Режим просмотра видеостраниц - "ПАНЕЛЕВОЗ-КООРДИНАТОР" - модуль для визуального изменения размеров, цветов и положения на экране компонентов GfxMenu - "ПОТРОШИТЕЛЬ" - командный (RIPPER-GFX) файл с системой меню, предназначенный для: - разборки-пересборки-сборки готовых тем без изменения их ядра (то, чем занимается большинство "создателей тем"), - каталогизации составных компонентов тем (различных скомпилированных ядер, шрифтов, фонов, логотипов и т.д.), - контроля за правильностью формата jpg-файлов, используемых для сборки тем, - подготовки загрузочных флэшек и проведения расширенных экспериметов с темами @DED-LEGO@ прямо на флэшках в виртуальной машине QEMU, - компиляции новых ядер и собственно тем из скриптов (в связи с расширением возможностей по настройке эта функция будет необходима любителям покопаться в коде, либо для "переделки" старых тем по-старинке, типа - "... в строке №98 заменить 2 на 3..."). Думается, что перечисленного достаточно для быстрой переквалификации "потрошителей" в "бытовых хакеров" =============================================================================== 4. Замечания: ----------------------- 1. Текущая версия "@DED-LEGO@" предполагает наличие хотя бы двух страниц видеопамяти размером 800х600х16бит. Однако, широко используемая для тестов boot-флэшек виртуалка MobaLiveUSB_0.2.exe выделяет только 1 страницу. В таком случае использование логотипов отключается и функционал "@DED-LEGO@" урезается. Из-за проблем с видеопамятью в первой версии "ded2007" были искажения картинки! Для отладки, я лично, использую "QemuManager v5.0". У него тоже есть проблемы (например, с передачей кодов клавиатуры), но видеопамяти по умолчанию, он выделяет достаточно. Выдранный из "QemuManager v5.0" кусок, включен в комплекс и может управляться "ПОТРОШИТЕЛЕМ" RIPPER-GFX. Кстати, проблема с выделением видеопамяти относится и к реальному железу. По моим наблюдениям, бОльшую часть проблем вызывает встроенная графика, точнее наличие на борту и встроенной, и дискретной графики. Посмотреть количество выделяемых видеостраниц можно при использовании модуля "Информационная панель" (F5). 2. Тема разрабатывалась на основе SNAYIA, но некоторые скрипты были "выдраны" из "GFXmenu3.3". Их компиляторы работают по разному. В частности, компилятор более старой SNAYIA поддерживает не все команды, описанные в gfxboot.html (сам-то файл gfxboot.html взят из "GFXmenu3.3"). Различием в работе компиляторов, я объясняю для себя, и отличающуюся цветопередачу одного и того же фона в темах серии SNAYIA и "GFXmenu3.3". Дело, как мне кажется, в том, что картинки мы даем полноцветные RGB, т.е. 24-битные, а используются 16-битные графические режимы и сказывается изменение алгоритма преобразования 24бит=>16бит. Наверняка, компилятор "GFXmenu3.3" более совершенный, и переход на него планируется в будущем. На данный же момент, для конечного пользователя, функционал предлагаемой к рассмотрению GFX-темы "@DED-LEGO@" уже не хуже, чем в "GFXmenu3.3", хоть и основан на устаревшей SNAIYA. ###############################################################################