Скринсейвер из Linux? Почему бы и нет!

Данная статья посвящена изготовлению Live-CD на основе Linux, который можно запустить в качестве скринсейвера для Windows. Предвидя возможные вопросы, можно выразиться проще: "Да, вы все поняли правильно: Linux будет работать под Windows". В чем глубинный смысл этого достижения? Зачем вообще потребовалось заниматься такой работой? Здесь можно назвать две главные причины. Во-первых, это относительная сложность полноценной установки Linux и боязнь что-нибудь испортить в ходе этого процесса. Вторая причина — неуверенность в том, что Linux сможет без проблем "подхватить" все устройства вашего компьютера. В конечном итоге данная статья призвана способствовать популяризации свободного программного обеспечения среди широкого круга пользователей. Большинство пользователей хорошо знакомо с тем, что для ОС Microsoft Windows существует большое количество программ-скринсейверов, которые закрывают доступ к компьютеру во время своего выполнения. На сегодняшний день существует свободный и open-source-софт, с помощью которого можно установить и запустить Linux под Windows в качестве скринсейвера. Далее мы рассмотрим практическую сторону процесса создания такого CD или DVD.

Несколько примеров


Первым назовем дистрибутив GamesKnoppix St. Nicholas' Day, который вышел в декабре прошлого года. Если сконфигурировать его как скринсейвер, то обращаться с ним можно более чем вольно — там практически невозможно нажать "не ту" клавишу.

Рис. 1. GamesKnoppix St. Nicholas' Day. В основе — GamesKnoppix 3.7-0.1

Одними развлечениями дело не ограничивается. Есть и более серьезные продукты, например, относящиеся к сфере образования. Вопросами поддержки образования во всем мире занимается ряд крупных международных организаций, среди которых крупнейшей является UNESCO. Это почтенное подразделение ООН, в частности, сотрудничает с французской Organization for Free Software in Education and Teaching. Одним из результатов этого сотрудничества стал дистрибутив UNESCO Linux (его можно найти на Freeduc-CD). Условия лицензии у него проще некуда — свободное распространение, при желании вы можете напрямую помочь разработчикам материально. Этот дистрибутив тоже можно сконфигурировать как скринсейвер Windows и применять без боязни что-нибудь ненароком испортить.

Рис. 2. UNESCO Linux/Freeduc-CD. В основе — freeduc-cd 1.4.1

Стоит также упомянуть дистрибутив Knosciences, который, как и названные выше продукты, нормально работает в качестве заставки Windows. Его разработчики — Натали Кари и Арно Верхиль. В состав дистрибутива входит около 700 Мб приложений, призванных помочь школьникам в изучении математики и физики.

Рис. 3. Knosciences 0.95

Приступим

Для того, чтобы создать ISO, предназначенный для запуска под другой операционной системой, нам потребуется open source PC-эмулятор, у которого должны присутствовать такие компоненты, как open source BIOS и виртуальный (тоже open source) графический адаптер — например, QEMU 0.7.2. Эмулятор позволит нам запустить на реальном, физическом, компьютере свой виртуальный PC. Поскольку мы будем делать скринсейвер, такую виртуальную машину понадобится оснастить виртуальным CD-приводом, клавиатурой и мышкой. В то же время нам не нужны какие-либо виртуальные диски или сетевые адаптеры. Работа такой эмуляции, само собой, скоростью не отличается. Прямо скажем, работает данная конструкция медленно. Однако, поскольку мы "подделываем" скринсейвер, то можем задействовать всю мощь современной персоналки, у которой для решения названной задачи силенок вполне достаточно. Теперь можно начинать работу сообразно приведенной пошаговой инструкции.

Шаг 1. Работаем с QEMU

Первым делом понадобится должным образом настроить QEMU. Для этого мы будем использовать ряд пакетов. Начнем с Minimalist GNU for Windows, в составе которого есть:
— MinGW. Коллекция свободных инструментов. С их помощью можно создавать программы для Windows, которые не зависят от каких-либо DLL третьих сторон.
— MSYS. (Minimal SYStem). Необходим для выполнения конфигурационных скриптов POSIX/Bourne, используемых в работе make.
— msysDTK. Дополнения к MSYS — включают telnet и rlogin.
— SDL. (Simple DirectMedia Layer). Кроссплатформенная мультимедиабиблиотека, предоставляющая низкоуровневый доступ к аудиоустройствам, клавиатуре, мыши, джойстику и видеоустройствам через OpenGL и 2D-видео фреймбуффер.
— zlib. Библиотека компрессии без потери данных. Может работать, наверное, на любом компьютерном железе и под любой операционной системой. Необходима для SDL.
— directx. Необходим, когда SDL работает под Windows.
— Inno Setup. Свободный инсталлятор для Windows-программ. В данном случае использовалась версия 5.1.5.

У программы, которая будет запускаться в качестве скринсейвера, должно быть имя в духе "Knosciences.scr". Кроме того, она должна располагаться в каталоге C:\WINDOWS\SYSTEM32\. Она будет запускаться из командной строки командой Knosciences.scr /s, и ее "текущим каталогом" будет C:\WINDOWS\SYSTEM32\. Мы внесем некоторые правки в принадлежащий QEMU файл vl.c, для того чтобы у нас правильно обрабатывался параметр /s, и программа работала в полноэкранном режиме. В нашем случае мы уберем виртуальную сетевую карту. Если вы поработаете со строкой, определяющей net_if_type, то получите скринсейвер, который рассматривает Windows как NAT-роутер-файрволл.

Листинг 1. Модифицируем QEMU для того, чтобы запустить его как скринсейвер.

for(;;) {
if (optind >= argc)
break;
r = argv[optind];
if (r[0] != '-') {
if ( 0 == strcmp(r,"/s") ) {
/* Запускаем как скринсейвер Windows */
full_screen = 1 ;
bios_dir = "." ;
ram_size=512*1024*1024 ;
boot_device='d' ;
hd_filename[cdrom_index] = "knosciences-0.95.iso" ;
rtc_utc = 0;
net_if_type = NET_IF_DUMMY;
optind += 1 ;
} else {
hd_filename[0] = argv[optind++];
}
} else {
...
}
if ( full_screen == 1 )
{
putenv("SDL_VIDEODRIVER=windib") ;
}

После сборки QEMU переименуйте полученную i386-softmmu-версию файла qemu.exe в Knosciences.scr.

Шаг 2. Работаем с Inno Setup

Приведенный скрипт для Inno Setup положит скринсейвер и ISO в каталог C:\WINDOWS\SYSTEM32\ directory:

Листинг 2. Скрипт инсталлятора

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
;

[Setup]
AppName=Knosciences Screen Saver
AppVerName=Knosciences Screen Saver
AppPublisher=OFSET
AppPublisherURL= http://www.ofset.org/
AppSupportURL= http://www.ofset.org/
AppUpdatesURL= http://www.ofset.org/
DefaultDirName={pf}\Knosciences
DefaultGroupName=Knosciences
Compression=lzma
SolidCompression=yes

[Files]
Source: "{src}\qemusaver\Knosciences.scr"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemusaver\knosciences-0.95.iso"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\SDL.dll"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\bios.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\vgabios.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\vgabios-cirrus.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\qemu-doc.html"; DestDir: "{app}"; Flags: external
Source: "{src}\qemu\vl.c"; DestDir: "{app}"; Flags: external
Source: "{src}\qemu\LICENSE\LICENSE"; DestDir: "{app}\LICENSE\LICENSE";
Flags: external
Source: "{src}\qemu\LICENSE\README-SDL.txt"; DestDir: "{app}\LICENSE\README-SDL.txt";
Flags: external
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\Knosciences Screen Saver"; Filename: "{sys}\Knosciences.scr"
Name: "{group}\{cm:UninstallProgram,Knosciences Screen Saver}"; Filename: "{uninstallexe}"

Шаг 3. Формирование файловой структуры CD

Нам потребуется CD со следующей файловой структурой:
- autorun. Запускает инсталлятор скринсейвера, "живой" Knosciences и просмотр документации.
- /qemu. Файлы, относящиеся к Knosciences.
- SetupQemuSaver.exe. Данный файл — это инсталлятор скринсейвера, созданный Inno Setup.
- /qemusaver. Файлы скринсейвера и оригинальный ISO.
- /Knosciences. Файлы документации с оригинального CD.

Листинг 3. Список элементов для готового CD

.
./autorun.bat
./autorun.inf
./autorun.pif
./qemu
./qemu/bios.bin
./qemu/linux_boot.bin
./qemu/qemu-doc.html
./qemu/qemu.exe
./qemu/qemu-img.exe
./qemu/qemu-knoppix.bat
./qemu/vl.c
./qemu/qemu-tech.html
./qemu/qemu-win.bat
./qemu/README-en.txt
./qemu/README-ja.txt
./qemu/SDL.dll
./qemu/vgabios.bin
./qemu/vgabios-cirrus.bin
./qemu/LICENSE
./qemu/LICENSE/LICENSE
./qemu/LICENSE/README-SDL.txt
./qemusaver
./qemusaver/qemusaver.iss
./qemusaver/Knosciences.scr
./qemusaver/knosciences-0.95.iso
./cdrom.ico
./SetupQemuSaver.exe
./Knosciences
./Knosciences/index.html
./Knosciences/knosciences-0.95.css
./Knosciences/knosciences-0.95.html
./Knosciences/labels.pl
./Knosciences/node1.html
./Knosciences/node10.html
./Knosciences/node100.html
./Knosciences/node101.html
..
./Knosciences/node97.html
./Knosciences/node98.html
./Knosciences/node99.html
./Knosciences/WARNINGS
./index.html

Шаг 4. Создание файла autorun.bat

Содержимое файла autorun.bat (именно он запускается, когда мы загружаем диск в привод) выглядит так:

Листинг 4. Файл autorun.bat

@start SetupQemuSaver.exe
@start index.html
@cd qemu
@start /MIN qemu-knoppix
@exit

Шаг 5. Создание файла qemu-knoppix.bat

Файл qemu-knoppix.bat file запускает демку Knosciences как часть процесса автозапуска. Не будем тратить лишних слов, а вместо этого приведем его листинг:

Листинг 5. Файл qemu-knoppix.bat

@echo off
REM KNOPPIX on Windows File System
REM Written by Japanese KNOPPIX TEAM 2004.08.17
REM Contact: knoppix@m.aist.go.jp
REM License GPL

REM If you get iso image of KNOPPIX, please use the following options.
REM Join the following two lines before running this bat file; it was split for space purposes.
qemu.exe -L . -m 128 -boot d -cdrom ../qemusaver/knosciences-0.95.iso -user-net -enable-audio
-localtime
REM '''''''''''''
exit

Шаг 6. Создание ISO-образа

Вы можете создать образ ISO с помощью приведенной ниже функции или же создать CD под Windows — данный диск не обязательно должен быть загрузочным.

Листинг 6. Создание образа ISO

function remaster_mkisofs
{
mkdir -p ${wrkdir}/new_iso
mkisofs -pad -l -r -J -v -V "Knosciences" \
-hide-rr-moved \
-publisher "OFSET http://www.ofset.org/" \
-p " http://www.ofset.org/" \
-volset "Knosciences 0.95 for Windows (knosciences 0.95 with QEMU 0.7.2)" \
-o ${wrkdir}/new_iso/freeduc.iso ${wrkdir}/files

}

Вот, собственно и все, что потребуется сделать для того, чтобы запустить Linux с LiveCD в качестве скринсейвера на Windows-машине.

Ресурсы:

GamesKnoppix 3.7-0.1 — сайт
UNESCO Linux (исходный код) — сайт
freeduc-cd 1.4.1 — сайт
Knosciences — сайт
QEMU — сайт
Minimalist GNU for Windows — сайт
Simple Direct Layer (SDL) — сайт
zlib 1.2.2 — сайт
Directx — сайт
Inno Setup — сайт

(оригинал статьи — сайт )

Chris Ward, IBM. Перевод Алексея Кутовенко, alteridem@tut.by


Компьютерная газета. Статья была опубликована в номере 04 за 2006 год в рубрике софт

©1997-2024 Компьютерная газета