Минимальный X-Server

Задача - построить 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 - Гц 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 отключены).

Источник
free-templates.ru