Автор статьи: Дата: 23.07.2003
Задача - построить X-server с по-возможности с минимальным набором функций, который потом можно было бы использовать на старом компьютере в качестве Х-терминала. Обычно, в таких случаях советуют взять какой-нибудь старый дистрибутив Х-ов, но следует иметь ввиду, что заточены они под компиляторы весьма лохматых версий, и не факт, что с помощью gcc3.1 (например) вам удасться его откомпилировать (у меня не получилось). Альтернативный способ - взять Х-ы более новых версий и максимально урезать его. У меня собранный таким образом Х-сервер работает на 386 компьютере с 4 МБ оперативной памяти.
Конфигурация
Во-первых, чтобы при инсталляции Х-сервер не затер Х-server, уже имеющийся на сборочной машине, следует отредактировать файл /home/src/xc/config/cf/site.def, изменив строчку
#define ProjectRoot /usr/X11R6_lite
Затем собственно параметры Х-сервера (файл /home/src/xc/config/cf/host.def). Я привожу его полностью. Должен только добавить обычные в таких случаях заклинания - your milage may vary ..., AFAIK и тд. Все эти параметры были получены в результате grep и try-n-error. Что они в большинстве своем означают - я не в курсе, и тем более не представляю их взаимосвязи. Если вы решите поменять видео драйвер (вместо vga использованный мною), то вам возможно придется поменять еще какие-то параметры.
/* Флаги компилятора */
#define DefaultGcc2i386Opt -O3
#define GccWarningOptions
#define HasAgpGart NO
#define HasMMXSupport NO
#define HasMTRRSupport NO
#define Has3DNowSupport NO
#define HasShm NO
/* Делаем монолитный сервер */
#define DoLoadableServer NO
/* Х-Сервер */
#define XF86Server YES
/* Никаких других серверов не собираем*/
#define XnestServer NO
#define XVirtualFramebufferServer NO
#define XprtServer NO
#define ServerToInstall XFree86
/* Драйверы - только стандартное VGA - 640x480@60Гц 256 цветов. Желающие могут попробовать что-то другое */
#define XF86CardDrivers vga
/* Параметры необходимые для VGA драйвера - Hardware; Shadow и 256-цветный фрейм-буффер */
#define XF86VgaHw YES
#define XF4Bpp YES
#define XFShadowFB YES
/* Выключаем все фонты и их поддержку - шрифты потом возьмем готовые, и только bitmapped*/
#define BuildFontServer NO
#define BuildSpeedo NO
#define BuildType1 NO
#define BuildCID NO
#define BuildFreeType NO
#define BuildXTrueType NO
#define BuildFonts NO
#define Build75DpiFonts NO
#define Build100DpiFonts NO
#define BuildSpeedoFonts NO
#define BuildType1Fonts NO
#define BuildCIDFonts NO
#define BuildCyrillicFonts NO
#define BuildLatin2Fonts NO
/* Собираем только сервер - без библиотек и приложений - их тоже потом возьмем в готовом виде*/
#define BuildServersOnly YES
/* Мышь */
#define BuildXInputExt YES
#define XInputDrivers mouse
/* Далее выключаем как можно большее количество экстеншенов а также библиотек которыми они пользуются */
/*Тут и так все ясно*/
#define BuildScreenSaverExt NO
#define BuildScreenSaverLibrary NO
/* Xinerama - поддержка нескольких мониторов*/
#define BuildXinerama NO
/* GLX - поддержка OpenGL тоже не нужна */
#define BuildGlxExt NO
#define BuildGLXLibrary NO
#define BuildGLULibrary NO
/* X Image Extension - deprecated*/
#define BuildXIE NO
#define BuildXIElib NO
/*PEX - deprecated*/
#define BuildPexExt NO
/*
* If you don't want to build the xf86rush extension, uncomment this line.
*/
#define BuildXF86RushExt NO
#define BuildXF86RushLibrary NO
/* XKeyboard - интернационализации и соответственно nonLatin1 ввода теперь не будет */
#define BuildXKB NO
#define BuildXKBlib NO
/* Dispaly Power Management Support*/
#define BuildDPMS NO
#define BuildDPMSExt NO
#define DPMSDefines /**/
/* всяческие фрэйм-буфферы с различной глубиной и выравниванием - тоже можно безболезненно выключить */
#define XF1Bpp NO
#define XF8_32Bpp NO
#define XF8_16Bpp NO
#define XF24_32Bpp NO
/*Don't know*/
#define BuildCup NO
#define BuildSyncExt NO
#define BuildFontCache NO
#define BuildFontCacheLib NO
#define BuildBigReqsExt NO
#define BuildEVI NO
/* Различные хардверные штучки*/
#define XF86FBDevHw NO
#define XF86AFB NO
#define XF86I2C NO
#define XF86DDC NO
#define XF86Int10 NO
#define XF86RAC YES
#define XF86Ramdac NO
/* DirectGraphicAccess , DirectRenderingInfrastructure, XAccelerated Architecture*/
#define BuildXF86DGA NO
#define BuildXF86DGALibrary NO
#define BuildXF86DRI NO
#define BuildXF86DRM NO
#define XF86XAA NO
/* XVideo */
#define BuildXvExt NO
#define BuildXvLibrary NO
/* RECORD (+XTEST) расширения нужны только для отладки X-oв.*/
#define BuildRECORD NO
#define BuildRECORDlib NO
#define BuildTestExt NO
#define XTestDefines /**/
/* Shape Extentions - Круглые окошки (oclock) и tabbed-titlebars */
#define BuildShapeExt NO
/* Динамическая настройка частоты развертки монитора */
#define BuildXF86VidModeExt NO
#define BuildXF86VidModeLibrary NO
/* Разное = бесполезное */
#define BuildXF86MiscExt NO
#define BuildXF86MiscLibrary NO
#define BuildXCMiscExt NO
#define BuildMITMiscExt NO
/* Это нечто что позволяет быстрее и потребляя меньшее количество ресурсов рисовать БОЛЬШИЕ шрифты */
#define BuildXF86BigfontExt NO
/* Для режима VGA сканирование PCI шины не нужно - все стандартно */
#define BuildScanpci NO
#define BuildSuperProbe NO
/* Компрессия данных при пересылки на Xтерминалы - с одной стороны (пропускной способности сети) хорошо, а с другой (компрессия она тоже времени требует) плохо */
#define BuildLBX NO
/* XC-APPGROUP Extension */
#define BuildAppgroup NO
/* Double-buffer extension */
#define BuildDBE NO
#define BuildDBElib NO
/* Расширение для контроля удаленного доступа к Xсерверу.*/
#define BuildXCSecurity NO
#define FontServerAccess NO
#define BuildRman NO
/*Render Module*/
#define BuildRender NO
#define UseRgbTxt YES
/**/
#define HasZlib YES
make World c таким конфигурационным файлом на моем Celeron300 занимает примерно 20 минут. После strip --strip-all XFree86 его размер - примерно 1.2 MБ. Теперь достаточно скопировать XFree86 на Х-терминалку, и перенести туда какие-нибудь шрифты, если вы не собираетесь использовать удаленный font-server. Чтобы разрешить клиентам подключаться к X-терминалке, достаточно на X-терминале сделать файл /etc/X0.hosts со списком адресов компьютеров-клиентов (иных вариантов у вас, впрочем, нет - тк все security extentions отключены).
|