Восемь утилит для создания своего собственного дистрибутива Linux

В одной из предыдущих статей читатель познакомился с не совсем обычным способом установки операционной системы Windows XP - на флеш-брелок. Сегодняшняя тема тоже касается вопроса облегчения и автоматизации установки.

Приступая к работе

Несмотря на то, что компания Microsoft включила в дистрибутив XP, учитывая обновления Service Pack 1 и 2, достаточно великое количество сертифицированных драйверов, сотни разработчиков по всему миру выпускают драйвера, которые, по понятной причине, не могли быть включены в Windows ранее. Последствия, в большинстве случаев, не печальны, так как необходимые драйвера можно без особых проблем доустановить после установки самой ОС.

Однако бывают и неприятные исключения. Рассмотрим показательный пример. Сейчас большинство современных ноутбуков поставляется с ОС Windows Vista. Компьютеры в бюджетной линейке не очень производительны по современным меркам, еще беря во внимание и то, что в десктоп- и лэптоп- категориях лэптопы заметно проигрывают. 512 Мб оперативной памяти, слабая интегрированная видеокарта - и в результате у покупателя в скором времени появляется желание установить на винчестер «родную» XP. Однако известно, что поверх «Висты» поставить XP стандартным методом (начав установку в среде Windows, без форматирования раздела) невозможно. Если же отформатировать жесткий диск и начать устанавливать XP в MS-DOS , то нередки случаи, когда установщик не может обнаружить SATA -диск. Такая ситуация, в частности, характерна для ноутбуков Acer серии Aspire и Travelmate. «Продвинутые» пользователи в таком случае рекомендуют обновить BIOS или с помощью Norton Ghost попробовать перенести образ тома системного диска с другого Acer’а. Увы, даже на словах эти методы не внушают оптимизма. Третий же способ, самый «безопасный» - прошить в дистрибутив XP драйвера на SATA -накопитель. Мы предлагаем читателю пойти этим путем.

Впрочем, это руководство окажется полезным не только владельцам ноутбуков, но и обладателям устаревшего, конфликтного, «желтого» компьютерного оборудования, которое всяческим образом мешает инсталляции операционной системы. А скомпилировать собственный дистрибутив ОС удобнее всего с помощью утилиты nLite. В умелых руках она придает дистрибутиву XP недостающую этой ОС функциональность и удобство. Принцип схож с тем, каким мы руководствовались при создании install’а с помощью BootPE. Заранее подготавливаем нужные системе драйвера, обновления и программы, что немаловажно, убираем лишние компоненты - и при этом XP занимает всего один CD-диск.

Установка программы

Последнюю версию программы nLite можно скачать на сайте разработчиков . С ее помощью можно модифицировать любой дистрибутив Windows ветки NT: 2000, XP или Server 2003. Поддерживаются также и 64-битные версии. Занимает nLite всего 2,3 Мб, что характерно для подобных программ, использующих библиотеки.NET Framework версии 2.0. Следовательно, для запуска nLite потребуется этот компонент от компании Microsoft, занимающий, в свою очередь, 25 Мб. Если в вашей системе уже установлен.NET Framework 1.1, более поздняя версия все равно обязательна к установке (при этом старые библиотеки лучше не удалять). Файл доступен на сайте Microsoft.com (смотрите раздел «Downloads», полностью ссылку не приводим из-за ее сложности), впрочем, на том же www.nliteos.com имеется облегченный пакет.NET Framework 2.0 ?86, размером чуть более 6.6 MB. После этого установка nLite не составит проблем.

Подготовка дистрибутива ОС

Мало кому известно, что Windows XP имеет около десятка официальных модификаций. Правда, в большинстве случаев разница в составе программного обеспечения невелика. Скорее всего, в вашем распоряжении будет Windows XP Home или Professional - особого значения применительно к nLite это не имеет, лишь бы только это была не Starter Edition или любительская сборка, «исправленная и дополненная». Чтобы не интегрировать в систему MUI (официальный пакет локализации) и второй сервис пак, модифицируйте русскоязычную Windows XP SP2.

Убедившись, что на винчестере есть около 1 Гб свободного места, на время работы с дистрибутивом мы создадим папку, например, «installxp» и cкопируем туда следующие данные: каталог I386 и файлы WIN51, WIN51IP, WIN51IP.SP1 WIN51IP.SP2. Последние два файла могут и отсутствовать: они свидетельствуют о том, что в XP содержится второй (SP2) или первый (SP1) сервис пак. При наличии второго устанавливать первый уже не нужно, так как SP2 содержит предыдущие обновления.

Папка с модифицируемыми файлами должна лежать в корне диска и не содержать кириллических букв. Во избежание ошибок, все прилагаемые файлы (драйверы, обновления) лучше всего копировать в эту же директорию. Учтите, что, модифицируя дистрибутив, вы удаляете компоненты, которые уже нельзя будет возвратить, поэтому не помешала бы.

Работа с программой nLite

Последняя на сегодня версия программы, с цифрами 1.4.1, порядочно отличается от предыдущих версий. Мы не станем перечислять основные возможности программы (список на русском языке приведен . К чести разработчиков, они сделали удобный wizard - мастер настроек, который поможет быстрее освоиться с функциями программы. Помимо того, что nLite имеет приятную глазу GUI -оболочку и простую навигацию, практически к каждому этапу настройки прилагается справка-рекомендация (вызвать ее можно, кликнув по эмблеме вопросительного знака). Собственно, процесс модификации дистрибутива XP делится на несколько шагов, каждый из которых мы рассмотрим поподробнее.

1 этап. Выбор языка

Первым делом выберите язык мастера настроек. Есть два варианта русского перевода: второй, «Russian Translate», представляет собой транслит, а «Russian» - это обычная кириллическая локализация.

2 этап. Расположение установочных файлов Windows

Нужно указать путь к папке, в которую вы скопировали файлы установки. После сканирования ее содержимого в окне программы появится информация о версии Windows: язык локализации, размер, сервис-пак и прочие выходные данные.

3 этап. Предустановки

Если вы не в первый раз модифицируете дистрибутив, можете загрузить (импортировать) сохраненные ранее настройки, и тогда nLite автоматически отметит предыдущие установки.

4 этап. Выбор задач

Окно выбора задач содержит несколько кнопок-задач. Здесь вы можете отметить, какие этапы настройки будут следовать далее. Если же вы загрузили предыдущие настройки программы, отметки принимают соответствующие цвета: красный (пропуск), желтый (частичное изменение) или зеленый (установка). Рассмотрим каждый пункт поподробнее.

1. Сервис-пак. В случае, если в операционную систему еще не интегрирован сервис пак, скачайте его на сайте www.microsoft.com и попробуйте установить самостоятельно (имея на то желание и «лишний» трафик). Для перехода по точному адресу нажмите на ссылку «Windows XP» внизу окна программы (блок «Официальные пакеты обновлений»).

2. Исправления и пакеты обновлений. Если вы регулярно обновляете Windows посредством установки последних критических обновлений и если таковые на имеются у вас наличии, на этом шаге можете указать эти файлы nLite. В окне выбора можно отметить сразу все пакеты, зажав клавишу Shift, Ctrl либо применив клавиатурную комбинацию Ctrl+A. Обновления должны быть совместимы с модифицируемой версией XP, в ином случае на одном из последних этапов программа оповестит вас о невозможности интеграции данных обновлений. Довольно любопытные настройки открываются по нажатию кнопки «Дополнительно». Здесь можно изменить метод интеграции (первые три настройки) и сэкономить немного места за счет сжатия папки ASMS (последняя опция).

Врезка. Дополнения к nLite

На сайте Nlite доступны дополнения, которые можно включить в состав XP при помощи nLite:

  • RyanVM’s Windows XP Post-SP2 Update Pack 2.1.9 - пакет исправлений для английской версии Windows XP, который включает в себя патчи, вышедшие после SP2.
  • NFM ’s x64 Post-SP1 Update Pack 1.73 - пакет исправлений для английских версий операционных систем Windows XP x64 и 2003 ?64.
  • Xpize MCE 4.6 - пакет для изменения интерфейса системы (заменяет иконки и картинки, добавляет новые элементы оформления).
  • Vista Transformation Pack 6.0 - альтернативный предыдущему набор с уклоном под стилизацию а ля Windows Vista.

При запуске Install Shield Express появляется окно с радиогруппой, предлагающее открыть существующий проект или создать новый.

При создании нового проекта следует ввести имя проекта и указать каталог, в котором расположены файлы приложения (рис. 4).

Рис. 4. Создание нового дистрибутива

Флажок "Include custom setup type" следует выбрать, если вы планируете предоставить пользователю возможность выбора варианта инсталляции Custom Setup для самостоятельного выбора варианта инсталляции. После этого появится главный экран InstallShield, в котором перечислена последовательность шагов, которые следует выполнить для создания дистрибутива (рис. 5).

Рис. 5. Главный экран InstallShield Express

В разделе Set the Visual Design следует заполнить поля со сведениями о приложении: название приложения, как оно будет выглядеть в программной группе, имя исполняемого файла, каталог, в который следует установить приложение (рис. 6)

Рис. 6. Установка параметров приложения

Отметим, что Install Shield содержит несколько переменных, идентифицирующих диски и каталоги компьютера пользователя, что позволяет не знать реальную систему каталогов и дисков этого компьютера:

    - каталог для установки, указанный пользователем,

    - каталог, в котором содержится Windows

    - каталог Windows\System

    - диск, на котором содержится Windows

    - диск, на котором содержится каталог Windows\System

    Каталог Program Files.

Щелкнув на закладке Main Window, можно установить заголовок инсталляционного приложения, цвет фона и логотип (рис.7).

Рис. 7. Установка внешнего вида экрана инсталлятора

Щелкнув на закладке Features, можно обнаружить одну-единственную опцию - Automatic Uninstaller. Ее рекомендуется оставить выбранной.

Следующий раздел - Specify InstallShield Options for Borland C++ - предназначен для выбора компонентов, часто поставляемых с приложениями: BDE, SQL Links и др. Выбрав нужный компонент (в нашем случае BDE) и нажав кнопку Settings, получим последовательность из четырех диалоговых окон для выбора частей BDE, поставляемых с данным приложением (рис. 8), и создания псевдонимов.

Рис. 8. Определение устанавливаемых частей BDE

При установке параметров псевдонимов можно выбрать тип псевдонима и местоположение данных. Остальные параметры псевдонима (в том числе и языковые драйверы) можно указать в текстовом редакторе в нижней части окна (рис. 9):

Рис. 9. Установка параметров псевдонимов BDE

Щелкнув по закладке Advanced Options, можно ознакомиться со списком файлов дополнительных компонентов (в нашем случае BDE) и сведениями о них.

Следующий раздел - Specify Components and Files - предназначен для определения групп файлов, компонентов приложения и типов установки. Щелкнув на закладке Groups, можно создать группы файлов для создания из них компонентов дистрибутива. Можно также использовать Explorer и переносить из него нужные файлы методом drag-and-drop (для этого нужно нажать кнопку Launch Explorer). Не рекомендуется оставлять группы пустыми.

Рис. 10. Создание групп файлов

Щелкнув на закладке Components, можно определить компоненты дистрибутива (их сможет выбирать пользователь в случае выбора варианта инсталляции Custom, поэтому можно дать им русскоязычные названия) и указать, из каких групп файлов они состоят. Не следует оставлять компоненты, не содержащие групп.

Рис. 11. Создание компонентов дистрибутива

Следующая закладка - Setup Types - предназначена для определения вариантов установки. Если щелкнуть на ней, может оказаться, что вариант инсталляции его один - Typical (например, вы забыли отметить флажок "Include custom setup type"). В этом случае следует выбрать раздел Select User Interface Components и, щелкнув на закладке Components, в списке Dialog Boxes отметить опции Setup Type и Custom Setup. После этого можно вернуться к закладке Setup Types и определить варианты инсталляции. Как правило, варианты Custom и Typical содержат все возможные компоненты, а вариант Compact - минимальный набор компонентов, пригодный для нормальной работы приложения.

Рис. 12. Определение состава вариантов инсталляции

В разделе Select User Interface Components можно выбрать диалоги, в которых пользователь вводит необходимую информацию во время инсталляции (например, сведения о себе и компании, серийный номер продукта), знакомится с лицензионным соглашением и файлам readme, указывает каталог для инсталляции, выбирает тип установки и т.д. Возможен также предварительный просмотр диалогов при нажатии кнопки Preview.

Следующий раздел - Make Registry Changes - позволяет создавать на компьютере пользователя новые ключи реестра (закладка Keys) и значения ключей (Values). Это может оказаться полезным, если вы используете в вашем приложении компоненты ActiveX или создаете OLE-сервер. Ключи и их значения можно копировать из редактора реестра, если он поддерживает такую опреацию.

Рис.13. Определение ключей и значений реестра компьютера пользователя.

Следующий раздел - Specify Folders and Icons - позволяет определить состав будущей программной группы, а также определить параметры командной строки (закладка Advanced).

Рис. 14. Определение состава программной группы.

Наконец, последний раздел - Run Disk Builder. После сохранения инсталляционного скрипта (с помощью нажатия на кнопку с изображением дискеты на панели инструментов главного окна InstallShield) и выбора типа носителей происходит создание на жестком диске образов дистрибутивных дискет. Выбрав затем раздел Create Distribution Media, можно записать на дискеты созданный дистрибутив.

Рис. 15. Создание образов дискет.

Опцию Test Run можно использовать для проверки работы инсталляционного приложения. Однако не рекомендуется делать это на компьютере, где производится разработка приложений. Лучше провести тестовые испытания на компьютере, похожем на компьютеры ваших пользователей. Кроме того, рекомендуется создать на этом компьютере копию Windows, чтобы в случае некорректной работы инсталлятора можно было вернуть программное обеспечение в исходное состояние.

Запуск инсталляционной программы приводит к последовательному появлению выбранных в разделе Select User Interface Components диалогов, подобных изображенному на рис. 16.

Рис. 16. Так выглядит один из диалогов программы установки

Результатом работы инсталляционного приложения является установка приложения и необходимых для его работы файлов на компьютер пользователя, создание программной группы, внесение необходимых ключей в реестр (рис.17).

Рис. 17. Результат работы инсталляционного приложения.

Если при создании дистрибутива вы выбрали опцию Automatic Uninstaller, то в случае возникновения необходимости деинсталляции установленного приложения следует использовать утилиту "Установка и удаление программ" в панели управления Windows.

Таким образом, хотя InstallShield Express и не решает полностью всех проблем, возникающих при поставке приложений, с его помощью во многих случаях возможно быстрое создание дистрибутивов, удовлетворяющих современным требованиям к функциональности и дизайну инсталляционных приложений.

В заключение отметим, что поставка приложений, созданных с помощью Delphi 2.0 и Delphi 3.0, осуществляется практически точно так же, как и поставка приложений, созданных с помощью C++ Builder.

Перенос приложений C++Builder в архитектуру клиент/сервер

Наталия Елманова

    Введение

    Немного истории

    Особенности архитектуры клиент/сервер

    Серверные СУБД и унаследованные данные

    Перенос унаследованных данных с помощью Data Migration Wizard

    Перенос унаследованных данных с использованием CASE-средств

    Некоторые выводы

На сегодняшний день Windows 7 является основной корпоративной системой, де-факто, приняв эстафету от Windows XP. Поэтому для системного администратора актуальным является вопрос ее развертывания, но так как последний официальный образ был собран довольно давно, то установленные с его помощью системы требуют получения довольно большого количества обновлений. Избежать этого можно, если собрать для себя собственный дистрибутив содержащий все текущие обновления системы. Как это сделать мы расскажем в этой статье.

Существует два способа получения актуального дистрибутива Windows 7: интеграция обновлений непосредственно в образ и использование эталонной системы для скачивания и установки обновлений.

Первый способ проще и быстрее, однако имеет серьезный недостаток - требуется скачать все необходимые обновления. А это, даже имея список, сделать довольно непросто. В тоже время в сети имеются уже скачанные наборы обновлений, но мы не рекомендуем их использовать, так как установка компонентов системы из непроверенных источников - это очень плохая идея. Как минимум вы можете получить нестабильно работающую систему из-за непротестированного или несовместимого набора обновлений, а в худшем случае запросто можно получить нежелательное или вредоносное ПО.

Использование эталонной системы позволяет получить все необходимые обновления в автоматическом режиме, установить их, проверить работу системы и только потом переходить к созданию дистрибутива. Поэтому мы будем рассматривать именно этот способ.

Создание эталонной системы

Для этих целей мы рекомендуем использовать виртуальную машину, в которой создадим гостевую систему для Windows 7 и установим ту версию ОС, для которой будем создавать дистрибутив. Если требуется создать дистрибутивы для нескольких версий или разрядностей, то потребуется также несколько эталонных систем.

По завершении установки не спешите, когда отобразится экран приветствия нажмите CTRL + SHIFT + F3

Это перезагрузит систему в режим аудита, если же вы успели создать пользователя и произвести вход, то выполните от имени Администратора команду:

C:\Windows\System32\sysprep\sysprep /audit /reboot

При загрузке в режиме аудита автоматически запускается утилита Sysprep , закрываем это окно, оно нам сейчас не требуется.

Следует помнить, что переведенная в режим аудита система продолжит загружаться в него до тех пор, пока мы снова не запустим Sysprep и не изменим режим. После загрузки открываем Центр обновления Windows и производим поиск и установку обновлений.

Важно! 17 мая 2016 года Microsoft выпустила накопительный пакет обновлений для Windows 7 SP1 KB3125574 , включающий в себя обновления с момента выпуска SP1 и до апреля 2016, в целях уменьшения объема скачиваемых обновлений рекомендуем скачать и установить данный пакет вручную. Для его установки требуется наличие обновления KB3020369 .

Перезагружаемся и снова проводим поиск и установку обновлений. Перезагружаемся и опять повторяем эту операцию до тех пор, пока система не установит все доступные обновления.

Если ваша цель состояла только в интеграции в дистрибутив всех последних обновлений, то на этом можно закончить. Однако режим аудита позволяет устанавливать и разнообразный софт, который также будет включен в дистрибутив. Этим широко пользуются OEM-производители, мы думаем, каждый сталкивался с дистрибутивами (обычно на ноутбуках) содержащими, кроме OC, разное количество софта сомнительной полезности.

Поэтому никто не мешает нам включить в свой дистрибутив нужный софт, чтобы не тратить время на его последующую установку. Мы обычно ограничиваемся "джентельменским набором": архиватор, Adobe Reader, Java, Silverlight. Вы можете включить в него весь набор необходимого софта, включая офисный пакет и иное ПО. Не стоит включать в образ программы устанавливающие собственные драйвера и собственно драйвера устройств, так как все сторонние драйвера будут удалены на стадии подготовки системы к захвату образа. Также не следует производить активацию ПО, эта информация также будет утеряна.

Закончив подготовку эталонной системы удалим все скачанные нами файлы и лишнее ПО (если есть), особое внимание следует уделить очистке системы от копий файлов обновлений, для этого воспользуйтесь инструментом Очистка диска :

Важно! После очистки обязательно перезагрузите систему для завершения работы с обновлениями, в противном случае вы рискуете получить неработающий образ.

Теперь подготовим ее к захвату образа при помощи утилиты Sysprep :

C:\Windows\system32\sysprep\sysprep /oobe /generalize /shutdown

Разберем ключи утилиты подробнее:

  • oobe - запускает компьютер в режиме экрана приветствия. Экран приветствия Windows позволяет конечным пользователям настраивать операционную систему Windows, создавать новые учетные записи, переименовывать компьютер и выполнять другие задачи.
  • generalize - подготавливает установку Windows перед созданием образа. Если этот параметр указан, все уникальные системные сведения удаляются из установки Windows. Идентификатор безопасности (SID) обнуляется, точки восстановления системы сбрасываются, журналы событий удаляются.
  • shutdown - завершает работу компьютера после завершения работы программы Sysprep.

Выполнив необходимые действия, система завершит работу. Включать ее до того, как будет захвачен образ, нельзя. На этом работу с эталонной системой заканчиваем и переходим к созданию собственного дистрибутива на ее основе.

Создание собственного дистрибутива

Для дальнейшей работы нам понадобится рабочая станция под управлением Windows 7 с установленным пакетом автоматической установки Windows (WAIK) . Разрядность и версия системы никакой роли не играют.

Установка WAIK не должна вызвать затруднений и производится с установками по умолчанию.

Теперь подготовим образ Windows PE для захвата образа эталонной системы. Разрядность WinPE должна соответствовать разрядности эталонной системы.

Откроем Пуск - Все программы - Microsoft Windows AIK - Командная строка средств развертывания и выполним команду для 32-битных систем:

Copype.cmd x86 e:\win_pe

или для 64-битных:

Copype.cmd amd64 e:\win_pe

где e:\win_pe желаемое расположение папки с образом. Предварительно папку создавать не надо, так как в этом случае вы получите ошибку, что папка уже существует.

Теперь перейдем в папку назначения и скопируем файл winpe.wim в папку ISO\sources и переименуем его в boot.wim . Затем скопируем в папку ISO из папки C:\Program Files\Windows AIK\Tools\amd64 или C:\Program Files\Windows AIK\Tools\x86 , в зависимости от разрядности, файл imagex.exe .

Затем в Командной строке средств развертывания дадим следующую команду:

Oscdimg -n -be:\win_pe\etfsboot.com e:\win_pe\ISO e:\win_pe\winpe.iso

Результатом работы команды будет образ winpe.iso с которого следует загрузить эталонную систему.

Если вы не выполняли дополнительной разметки диска эталонной системы, то раздел для захвата будет иметь букву D: , а загрузочный диск E: , на всякий случай проверяем командой dir .

Теперь приступим к захвату образа, так как образ создается пофайлово, то его можно сохранять на тот же самый раздел. Введем следующую команду:

E:\imagex /capture d: d:\install.wim "Win7_ULT_x64" /compress maximum /boot /verify

В качестве параметров указываем захватить диск D: и сохранить его в образ D:\install.wim , в кавычках указываем собственное название образа, также ставим максимальное сжатие, возможность загрузки и проверку созданного образа. После чего можем сходить выпить кофе, данная операция занимает в среднем около получаса.

Перезагружаем эталонную систему в обычный режим и копируем созданный образ на ПК с установленным WAIK. Перейдем в e:\win_pe и очистим папку ISO, затем скопируем туда содержимое оригинального диска Windows 7, который мы использовали для установки эталонной системы.

После чего заменим файл install.wim в папке sources на захваченный нами образ. Теперь можно приступать к сборке собственного ISO-образа, для этого выполните команду:

Oscdimg -u2 -m -o -lWIN7ULTx64 -be:\win_pe\etfsboot.com e:\win_pe\iso e:\win_pe\Win7_ULT_x64.iso

разберем ключи команды подробнее:

  • u2 -создает образ, который имеет только файловую систему UDF.
  • m - снимает ограничения на размер образа.
  • o - заменяет дублирующиеся файлы одним экземпляром, позволяет сократить размер образа.
  • l - метка тома, вводится без пробелов, необязательный параметр.
  • b - расположение загрузочного файла, также без пробелов.

Образ собирается довольно быстро, единственный момент - с большой долей вероятности его размер превысит 4,7 ГБ и записать его на обычную DVD болванку не удастся. В этом случае можно использовать двухслойные болванки DVD9, но они реже встречаются в продаже и могут поддерживаться не всеми моделями дисководов. В этом случае можно разбить дистрибутив на две части, каждый из которых будет помещаться на DVD-диск стандартной емкости. Также следует помнить об ограничении 32-х разрядных систем, которые не умеют работать с wim-образами размером более 4 ГБ.

Разделить образ можно следующей командой:

Imagex /split e:\win_pe\install.wim e:\win_pe\install.swm 3000

В результате будет создано два или более swm-файла максимальным размером в 3000 МБ. Затем удалим из папки ISO\sources install.wim и поместим туда install.swm, после чего соберем образ первого диска:

Oscdimg -u2 -m -lWIN7ULTx64DVD1 -be:\win_pe\etfsboot.com e:\win_pe\iso e:\win_pe\Win7_ULT_x64_DVD1.iso

После этого удалим install.swm и скопируем на его место install2.swm. Второй диск нет смысла делать загрузочным, поэтому соберем его более простой командой:

Oscdimg -u2 -m -lWIN7ULTx64DVD2 e:\win_pe\iso e:\win_pe\Win7_ULT_x64_DVD2.iso

Установка с разделенного образа производится обычным путем, начиная с первого диска, в процессе работы инсталлятор сам попросит сменить диск:

Таким образом можно не беспокоиться о размере создаваемого образа, особенно если в него, кроме обновлений, планируется включать объемное ПО, например, пакет MS Office и т.п. Также мы рекомендуем перед тем, как перейти к развертыванию рабочих станции из созданного дистрибутива, всесторонне проверить его работу на тестовой системе.

  • Теги:

Please enable JavaScript to view the

Все что пишется в Visual Basic должно выполняться вне среды разработчика Visual Basic, требут файла Msvbvm.dll. Этот файл содержит все подпрограммы поддержки и существенные элементы управления, которые необходимы Visual Basic, чтобы выполнять все что угодно. Это довольно большой файл (1,3 М). Но, к счастью, не имеет значения, сколько приложений Visual Basic выполняет пользователь в одно и тоже время, все равно в памяти необходима только одна копия этого файла.

Для каждого пользовательского элемента управления в приложении и для того, что является частью вашего элемента управления, необходим файл пользовательского элемента управления. Эти файлы относительно малы- часто менне 30К каждый. В результате то, что оказывается необходимым для инсталляции исполняемых файлов не находится на машине, куда производится инсталляция, то даже простейший исполняемый файл Visual Basic, даже подвергнутый сжатию при помощи мастера установки потребует 2 или более дисков.

Примечание: Разработчику действительно нужно убедиться, что пользователи его проекта или элемента управления не имеют файла Msvbvm50.dll и других файлов поддержки, т.к. многие пользователи Windows 95 и Windows NT уже будут иметь на своих машинах эти файлы. Например, большинство пользоваптелей Internet Explorer уже будут их иметь, и можно предположить, что вскоре Microsoft будет просто инсталлировать этот файл вместе с инсталляцией файлов операционной системы. Это сильно уменьшит дисковое пространство, необходимое джля создания дистрибутивов проектов Visual Basic.

И, наконец, когда выполняет исполняемый файл, который содержит пользовательский элемент управления, .ocx-файл должен находиться в системном каталоге или в одном каталоге с.exe-файлом. Мастер установки автоматически размещает файлы в соотвествующем месте. (Если соотвествующий.ocx файлне может быть найден, то виртуальная машина Visual Basic выведет сообщение об ошибке и завершит выполнение.)

Создание исполняемого файла

Тот, кто перед покупкой своей копии Visual Basic читал какую либо рекламу о нем, возможно, слышал, что Visual Basic 5-первая версия Visual Basic, которая позволяет создавать действительно исполняемые файлы. Кто-то возможно, удивится, что же это значит. Прежде всего, предыдущие версии Visual Basic всегда транслировали код Visual Basic в некий р-код. Это промежуточный язык, который отличается от машинного кода микропроцессора Intel. А затем полученный р-код построчно интерпретировался в машинный код Intel. Но это не эффективно. Например, для циклов явно легче выполнить перобразование в машинный код один раз и не преобразовывать код каждый раз при выполнении тела цикла.


Рисунок 23-1. Диалоговое окно Make Project. .

Только версии Professional и Enterprise имеют возможность создавать действительно исполняемые файлы. Этого можно достичь выбором пунктов File|Make Exe или File|Make осх и последующим нажатием кнопки Options в диалоговой панели Make Project, показанной на рис. 23-1.



Рисунок 23-2. Cтраница Make.

То, что будет видно, показано на рис. 23-2. На этой странице диалоговой панели можно добавить информацию о версии элемента управления и о защите прав. Здесь также устанавливается значок для проекта, который пользователь увидит представления исполняемого файла, и информацию командной строки, если такая предусматривается.

Если есть версия Professional или Enterprise, щелкнем на закладке Compile. Покажется экран, приведенный на рис. 23-3. Пройдемся поочередно по всем опциям в этой важной диалоговой панели.

Compile to P-Code . Позволяет скомпилировать проект в р-код. Хотя он выполняется медленнее, но необходимое дисковое пространство может быть значительно меньшим по сравнению с кодом, скомпилированным в машинный код микропроцессора.

Compile to Native Code. Позволяет скомпилировать проект, используя родной код с оптимизациями того, что выбирается посредством оставшихся кнопок. Они описаны в следующей таблице.

Кнопка Описание
Optimize for Fast Code Максимально увеличивает скоростьвыполнения.
Optimize for small Size Минимизирует размер. Вероятно, этим значительного преимущества перед простым использованием р-кода достигнуто не будет.
No Optimize Компилирует без оптимизации.
Favor Pentium Pro Оптимизирует код таким образом, что он лучше всего работает на процессоре Pentium Pro. Код, сгенерированный с этой опцией, будет работать и с более ранними процессорами, но на процессорах 486 и Pentium (даже если они используют MMX), будет работать медленнее, чем тот код, но сгенерированный без этой опции.
Create symbolic Debug Info Используется, когда надо запустить свой VB-код на отдельном отладчике, такой как один из отладчиков фирмы NuMega или тех, что поставляются с компонентами Microsoft DevStudio.

Примечание: Программа, которая выполняет большое количество циклов, такая, как, например, стандартные тесты, покажет поразительное ускорение - часто даже десятикратное по сравнению с программами на Visual Basic 4. На практике, однако, ускорение, вероятно, будет значительно меньше (часто менее 50 процентов, иногда даже около 20 процентов).

Advanced Optimizations. Нажатие этой кнопки выведет на экран диалоговую панель Advanced Optimizations, показанную справа. Не рекомендуется изменять какие-либо опции в этой панели, установленные по умолчанию - они только для больших знатоков VB.

Мастер установки

Мастер установки - это действительно отличный инструмент, который позволяет создавать дистрибутивы приложений и элементов управления практически без усилий. Это действительно автономная программа, которая называется Application Setup Wizard. Можно запустить ее, к примеру, посредством подменю Visual Basic 5 в меню Start. (Предположим, что используется стандартная установка, тогда программа мастера установки будет называться VB\setupkit\kitfil32\Setupwiz.exe).

Примечание: Перед тем как использовать мастер установки, следует по крайней мере хотя бы раз откомпилировать код, а также сохранить проектный файл.

Когда запускается мастер установки, мы попадаем на начальный экран мастера установки, который выглядит, как рис. 23-4.

Разберемся с пунктами в основной панели. Прежде всего, здесь есть кнопка помощи Help, которая выведет файл справки для мастера. Кнопка выхода Exit в верхнем правом углу панели закрывает мастер установки. Кнопка движения вперед Next перемещает к следующему шагу мастера, а кнопка Back возвращает к предыдущему. Щелкнем на кнопке Next, чтобы перейти к первому реальному экрану мастера.

Project File Text Box. Файлом проекта является имя файла с расширением.vbp. Можно щелкнуть на кнопке Browse, для того чтобы открыть стандартную диалоговую панель, которая позволяет осуществить поиск файла.vbp или.ctl (для элемента управления).

Rebuild the Protect. Файлы, дистрибутивы которых создаются, являются автономно выполняемыми. Если необходимо создать, отдельный продукт заново, надо пометить эту опцию. Мастер будет автоматически создавать новый.ехе-файл, или.осх -если.ехе не найден.

Options. Возможные опции описаны в следующей таблице.

Использование мастера

Для наглядности предположим, что надо создать дистрибутивы двух различных приложении:

  • калькулятора, поставляемого с Visual Basic;
  • элемента управления числового поля ввода NumericTextBox.

Создание дистрибутива для проекта калькулятора



Рисунок 23-3. Страница Compile.

Начнем с простого проекта калькулятора, который можно найти в подкаталоге \samples\PGuide\calc каталога VB. Сначала придется скомпилировать этот проект, так как он не поставляется в исполняемой форме. Итак, загрузим VB и затем скомпилируем проект Calc.vbp. После этого введем имя и путь к файлу Calc.vbp и щелкнем на кнопке Next (которая сейчас доступна). После некоторого промежутка времени, необходимого для обработки файлов, перейдем к экрану шага 3 мастера установки.



Рисунок 23-4. Начальный экран мастера установки.

В этом экране надо сообщить мастеру, где сохранять дистрибутив. Например, выберем гибкие диски. Для этого щелкнем на опции Floppy Disk. Щелкнем по кнопке Next и попадем на экран, где сообщим мастеру о типе используемых дискет.

Щелкнем по кнопке Next. Получающийся экран, используется только для серверов ActiveX - это более сложная тема, которую мы не рассматривали в этой книге. Щелкнем по кнопке Next, чтобы пропустить этот экран.

После небольшой задержки появится экран File Summary. Если выбрать любой из этих файлов и щелкнуть по кнопке File Details, мастер выведет на экран диалоговую панель. Она содержит подробную информацию о выбранном файле. Если щелкнуть на Summary Details в экране File Summary, увидим диалоговую панель с информацией.

Щелкнем по кнопке Next, при нахождении в экране FileSummary и перейдем к экрану Finished.

Если сейчас щелкнуть по кнопке Finished, мастер начнет выводить информационные панели с сообщениями о выполняемых им действиях (сжатие файлов, вычисление файлов, которые необходимо скопировать, и так далее). Когда это будет выполнено, на экране появится информационная панель, похожая на ту, что приведена справа. Она попросит вставить первый (из двух в данном случае) дисков.

А сейчас пользователи могут инсталлировать приложение, просто помещая первый диск дистрибутива в дисковод и запуская из Windows программу Setup.exe, содержащуюся на нем.

Программа инсталляции, созданная мастером установки, соответствует всем стандартам Windows. Пользователи могут изменить каталог установки; они могут наблюдать за ходом выполнения процесса инсталляции по диаграмме; и им также будет сообщаться, когда вставлять очередной диск. (К тому же, посредством функции AddRemove в Windows95/Windows NT возможна деинсталляция приложения.) Создание дистрибутива элемента управления

Создание дистрибутива элемента управления в мастере установки для использования на отдельной системе по существу аналогично созданию дистрибутива приложения. Так что в этом разделе сосредоточимся на использовании мастера для создания файла установки Internet Download Setup таким образом, чтобы элемент управления мог быть использован в Internet Explorer.

Запустим мастер. Необходимо заметить, что мы хотим создать дистрибутив элемента управления таким образом, чтобы он мог быть загружен из Internet или в интрасеть. После принятия решения сделать Interenet-установку щелкнем по кнопке Next и перейдем к следующему экрану.

Щелкнем по кнопке Next. Появится следующий экран. Microsoft предоставляет опцию, которая позволяет пользователю загружать только определенные стандартные файлы, как, например, огромный файл виртуальной машины Visual Basic, необходимый для элемента управления, прямо с сайта Microsoft при первом использовании элемента управления в Internet Explorer. Это действительно очень полезная опция, так как если пользователи уже имеют какие-либо из необходимых файлов на своей машине, то Internet Explorer достаточно разумен для того, чтобы не загружать их заново.

В основном это все. Оставшиеся экраны мастера подобны тем, что мы уже обсуждали.

Рано или поздно каждый пользователь Линукса задумывается над созданием собственного дистрибутива. Некоторые аргументируют это тем, что можно «все настроить под себя». Другие сетуют на то, что среди уже представленных дистрибутивов в Ветке нет идеального. А у них, якобы, есть суперконцептуальные идеи для собственной системы. Зачем я всю эту психологию затеял? Для того, чтобы сразу перекрыть кислород играющимся с Линуксом новичкам, которым делать нечего. Если уж задумались над созданием ОС, думайте до конца. Итак,

Я хочу создать ОС на базе Linux.
Сразу предупреждаю: был бы XVIII век, всех тех, кто для основы своей будущей системы выбирает другой развитый дистрибутив (и, не дай Бог, популярный...) ждала бы виселица. Пост именно про создание системы с нуля, а значит, всякие Slax и Linux Mint мы трогать не будем.

Шаг 1. Выбор носителя
Вариантов немного: либо ваша ОС запускается с LiveCD, либо с жесткого диска, либо с флеш-устройства. Сразу оговорюсь: не скажу в посте ни слова про жесткий диск, потому что гораздо удобнее создавать гибкий дистрибутив из серии «все свое ношу с собой», либо залоченный дистрибутив на оптическом диске. Если вы научитесь создавать LiveCD или LiveUSB систему, с установкой на жесткий диск проблем не будет.

На всякий случай, приготовьте чистую флешку, CD-диск, и установите, наконец, Virtualbox.

Шаг 2. Компиляция ядра
По поводу выхода третьего ядра Linux, этот шаг воодушевляет на дальнейшие разработки… Итак, нам нужны исходники ядра. Каждый пользователь знает, что их можно достать на сайте kernel.org. Ни в коем случае, слышите?, никогда не прикручивайте к своей системе постороннее ядро, скомпилированное не вами!

Поскольку лень моя зашкаливала, я создал папку /linuxkernel и распаковал туда архив с исходниками. Залогинившись под рутом, я сделал следующее:

Cd /linuxkernel
make menuconfig

В принципе, ядро можно конфигурировать тремя способами: make config (диалоговая конфигурация), make menuconfig (псевдографическая конфигурация через ncurses), а также make xconfig (графическая конфигурация). Суть в том, что make config испортит вам настроение надолго, т.к. он задаст все возможные вопросы по всем аспектам всех тем. Проблема с make xconfig встречается не у всех, но вот у меня встречалась и встречается. Если приспичило сделать через X, разбирайтесь сами. Оптимальный вариант - make menuconfig. Эта штука откроет вам псевдографический интерфейс, через который вы сможете настроить ядро на свой лад. Штука требует библиотеки ncurses, которая легко устанавливается.

В принципе, если ваш мозг хоть сколько понимает Линукс, вы разберетесь с конфигурированием. Процесс это интересный, вариантов действительно много, а справка, хоть и на английском языке, но все же радует своей доступностью и простотой.

Однако, направить вас все же придется. Перейдите по адресу File Systems ---> и поставьте необходимые звездочки. Буква M означает, что поддержка того или иного драйвера осуществляется с помощью подключения к ядру внешнего модуля (ненавижу их!). Нам понадобится также поддержка isofs, для чтения дисков. File Systems ---> CD-ROM/DVD Filesystems ---> ISO 9660 CDROM file system support. Можно еще поддержать древнедосовские системы.

Чмошные разработчики Mandriva забыли разрешить File systems ---> DOS/FAT/NT Filesystems ---> NTFS write support, и на одном из их дистрибутивов я мучился с доступом к древневиндовскому разделу.

Посмотрите Processor type and features ---> Processor family, мне порекомендовали выбрать Pentium-MMX.

Еще поройтесь в Device Drivers, полезно. Можете шутки ради понавыбирать там все и скомпилировать ядро весом > 50 Мб.

Далее. Ядро после загрузки себя должно загружать, собственно, систему. Либо из скомпилированных в себе файлов (используются во встраиваемых системах), либо из CPIO архива, сжатого чем-нибудь, либо из Initrd. Здесь вам не DOS, здесь не получится сразу сослаться на какой-нибудь init"овый файл в корневом каталоге диска или флешки. На самом деле получится, не слушайте дядю Анникса! Неправильно это, хоть в Интернете по этому поводу уже нехилая полемика ведется. В своей системе мы будем использовать initrd, т.к. это удобно, и не вызовет нецензурных выражений от сторонних разработчиков, в отличие от CPIO архива.

Ах, да, скомпилируйте ядро командой

Если у вас x86, найдете его по адресу /linuxkernel/arch/x86/boot/bzImage.

Для суровых челябинских программистов можно использовать Кросс-компайлинг…

Создание Ramdisk.

Теперь нам нужен initrd с установленной там простейшей оболочкой. Мы будем использовать busybox, потому что эта няша может все. Способ мы украдем у Роберто де Лео, создателя Movix (я бы даже уважать его начал, если бы не запредельная любовь к Perl):

Dd if=/dev/zero of=/dev/ram0 bs=1k count=5000 - Создаем Ramdisk в оперативной памяти нашего компьютера.
mke2fs -m0 /dev/ram0 5000 - Форматируем Ramdisk в системе Ext2
mkdir /distro - Создаем папку
mount /dev/ram0 /distro - Монтируем в папку /distro

Все, теперь у нас есть Ramdisk, емкостью в 5 Мб. Можно и больше, только не нужно. В отличие от Томаса Матеджисека, я не собираюсь пичкать initrd модулями в Squashfs, сжатыми LZMA. Все, что необходимо, будет скомпилировано вместе с ядром. Да, это не очень логично и правильно, но мороки в сто раз меньше. А специально для тех, кто осуждает такой подход, можно разрешить опцию модульности в ядре: Enable loadable module support.

В нашем Ramdisk"е, смонтированном в /distro, есть такая папка, lost+found. Это потому, что мы отформатировали его в ext2. Ни в коем случае нельзя ее удалять, хоть она здесь вряд ли поможет, образ-то фиксированный. Нам бы busybox сначала поставить…

Установка Busybox
Вот почему у таких классных проектов такие отстойные сайты? Хотя… это уже не суть важно, если исходники скачаны и успешно распакованы в папку /busybox.

Сконфигурировать busybox можно так же:

Cd /busybox
make menuconfig

Если вы еще не поняли, что это, объясню. Busybox заменяет тонны UNIX приложений, хранящихся в папках /bin, /sbin, /usr/bin, /usr/sbin. Вместо этого, создается только одно приложение: /bin/busybox, а на него создается куча ссылок в указанных выше папках. Установим busybox следующей командой:

Make CONFIG_PREFIX=/distro install

Еще Busybox создаст файлы /sbin/init и зачем-то /linuxrc, чтобы ваша система корректно запустилась. Но не все необходимые папки были созданы. Так что завершаем все руками и создаем:

/distro/etc
/distro/lib
/distro/dev
/distro/mnt
distro/proc
/distro/root
/distro/tmp
/distro/root

Если что забыл - вспомните, т.к. директории эти забыть сложно.

Все бы хорошо, вот только busybox для работы требует библиотеки, которые нужно скопировать в наш дистрибутив. Очень легко узнать, какие:

Ldd /distro/bin/busybox

Программа покажет нам библиотеки, требуемые для нашей оболочки. Сразу говорю: linux gate создается ядром и скопирован быть не может.

При копировании библиотек можно отсекать отладочную информацию (так Роберто советует):

Objcopy --strip-debug откуда куда

Делаем из Линукса Линукс

Надо создать несколько системных текстовых файлов:

Нам нужен /etc/inittab. Удивлю вас: в начале жизни система даже не знает, что такое Root. У нас даже пользователь безымянный, но вот файл общесистемных низкоуровневых фич (ОНФ) должен присутствовать. Пилотное содержание файла следующее:

::sysinit:/etc/rc.d/rc.S

# Запустить оболочку в консоли.
::respawn:-/bin/sh

# Команды, выполняемые перед выключением и перезагрузкой.
::shutdown:/sbin/swapoff -a >/dev/null 2>&1
::shutdown:/bin/umount -a -r >/dev/null 2>&1

Следующий файл - /etc/fstab. Это таблица, в которой описано, что и куда монтировать при загрузке. Вещь бесполезная! Нам нужно обязательно смонтировать proc, иначе вообще ничего работать не будет, так что в файле пишем:

None /proc proc defaults 0 0

Для mount нужен также файл /etc/mtab. Создайте его и оставьте пустым.

Но mount сделает все необходимое только тогда, когда мы явно его об этом попросим. А просить мы будем в том самом первозагрузочном файле /etc/rc.d/rc.S (rc.d - папка). Вежливо попросим:

/bin/mount -av -t nonfs

Еще нам необходим файл профиля (b)(a)sh, тут вообще раздолье для фантазии. Создаем файл /etc/profile и заполняем следующим:

PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:"
LESS=-MM
TERM=linux
HOME=/root
PS1="> "
PS2="> "
ignoreeof=10
export PATH DISPLAY LESS TERM PS1 PS2 HOME ignoreeof

Понадобится также файл /etc/shell, в котором указано, что есть оболочка:

/bin/sh
/bin/ash
/bin/bash

Вот собственно и все. Можно записывать наш Ramdisk в файл.

Mkdir /os - папка для "готового".
umount /dev/ram0 - размонтируем кусочек оперативной памяти.
dd if=/dev/ram0 of=/os/initrd bs=1k count=5000 - создаем файл.
gzip /os/initrd - сжимаем файл initrd

Создание загрузочной флешки

«Финишная прямая» нашей маленькой разработки. Берем флешку, вставляем, форматируем в vfat (можно и в ext, но не забывайте, что еще не все пользователи Windows застрелились).

На флешке создаем папку boot, в ней папки initrd и kernel.

Из папки /os копируем сжатый Ramdisk в папку boot/initrd на флешке, называем «main.gz». Из папки с исходниками ядра копируем bzImage в папку boot/kernel на флешке, называем «main.lk». Достаем файлы загрузчика Syslinux (в Интернете, либо из другого дистрибутива: тут не принципиально), а именно syslinux.bin, syslinux.boot, syslinux.cfg. Копируем их в корневой каталог нашей флешки. В файле syslinux.cfg пишем что-то подобное:

Default mm
prompt 1
timeout 100
label mm
kernel /boot/kernel/main.lk

label mc
kernel /boot/kernel/main.lk

label cm

append initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label cc
kernel /boot/kernel/custom.lk
append initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label hd
localboot 0x80

Тем самым мы поддержали кастомные initrd и ядро, которые, эксперимента ради, можно подключить к нашему дистрибутиву.

Узнаем, каким девайсом в системе является наша флешка (можно запустить mount без параметров и посмотреть). Это либо /dev/sdb1, либо /dev/sdc1, либо /dev/sdd1. Стоит отмонтировать флешку перед началом установки.

Устанавливаем syslinux (если пакета в системе нет, apt-get install syslinux):

Syslinux -d путь_к_устройству

В корневом каталоге флешки должен появиться файл ldlinux.sys. Если он есть, значит syslinux.bin, syslinux.boot больше не нужны.

Как настроить BIOS на загрузку из флешки, я вам рассказывать не буду - это легко. Скажу только, что очень удобно создать папку /boot/initrd/init, в которую можно будет смонтировать /boot/initrd/main, для последующей работы с ним. Только не забудьте разжимать и сжимать его gzip"ом.

Ну вот и все.

Как-бы я только что рассказал вам, как создать с нуля систему на Linux. Легко, не правда ли? Далее вы можете редактировать скрипт /sbin/init, ведь у вас еще много работы! Вы должны будете написать скрипт для монтирования флешки, который делает chroot в корневой каталог. В противном случае, вы вынуждены будете работать с ReadOnly разделом, величиной в 5 Мб. Но это уже совсем другая история.