The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Настройка xorg.conf на лету при загрузке"
Отправлено den23513, 14-Май-07 23:26 
Доброе время суток!
Я сделал свой Linux-livecd но у меня глюки с автоматическим определением графических карточек.
Сначала я написал такой скриптик, который вызывается всегда при запуске startx или kdm демона, и фаил /etc/X11/xorg.conf не найден:

# Detect video card
HOME=/tmp Xorg -configure >/dev/null 2>&1
NEW_XORG_CONFIG_FILE="/etc/X11/xorg.conf"
    
# Create config directory if not exists
if ! [ -e /etc/X11 ]; then
   install -m755 -d /etc/X11
fi
    
# Get detected parameters from temporary file
VIDEO_DRIVER=`cat /tmp/xorg.conf.new | awk '/^Section "Device"/,/EndSection/ {print}' | tail -5 | head -1 | awk '{print $2}'`
HSYNC=`cat /tmp/xorg.conf.new | awk '/^Section "Monitor"/,/EndSection/ {print}' | grep 'HorizSync' | awk -F'#' '{print $2}'`
VREFRESH=`cat /tmp/xorg.conf.new | awk '/^Section "Monitor"/,/EndSection/ {print}' | grep 'VertRefresh' | awk -F'#' '{print $2}'`
    
# Set default parameters if video not detected
if [ "${HSYNC}" = "" ]; then
   HSYNC="HorizSync    31.5 - 81.1"
fi
if [ "${VREFRESH}" = "" ]; then
   VREFRESH="VertRefresh    56-75"
fi
    
# If detected vmware driver - change it to vesa (it work better)
if [ "${VIDEO_DRIVER}" = "\"vmware\"" ]; then
   VIDEO_DRIVER="\"vesa\""
fi
    
# Create config file
cat > ${NEW_XORG_CONFIG_FILE} << EOF
Section "ServerLayout"
    Identifier    "DeniX"
    Screen 0    "Screen0"    0 0
    InputDevice    "Mouse0"    "CorePointer"
    InputDevice    "Keyboard0"    "CoreKeyboard"
EndSection

Section "Files"
    RgbPath        "/usr/share/X11/rgb"
    ModulePath    "/usr/lib/X11/modules"
    FontPath    "/usr/lib/X11/fonts/misc/"
    FontPath    "/usr/lib/X11/fonts/TTF/"
    FontPath    "/usr/lib/X11/fonts/OTF"
    FontPath    "/usr/lib/X11/fonts/Type1/"
    FontPath    "/usr/lib/X11/fonts/CID/"
    FontPath    "/usr/lib/X11/fonts/100dpi/"
    FontPath    "/usr/lib/X11/fonts/75dpi/"
EndSection

Section "Module"
    Load        "extmod"
    Load        "glx"
    Load        "dri"
    Load        "dbe"
    Load        "GLcore"
    #Load        "v4l"
    Load        "record"
    Load        "xtrap"
    Load        "type1"
    Load        "freetype"
EndSection

Section "InputDevice"
    Identifier    "Keyboard0"
    Driver        "kbd"
    Option        "XkbModel"    "pc105"
    Option        "XkbLayout"    "us,ru,il"
    Option        "XkbVariant"    ",phonetic,"
    Option        "XkbOptions"    "grp:lwin_toggle,grp_led:scroll"
    Option        "Autorepeat"    "250 30"
EndSection

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "Protocol" "IMPS/2"
    Option        "Device" "/dev/input/mice"
    Option            "ZAxisMapping" "4 5"
    Option        "Buttons"    "5"
EndSection

Section "Monitor"
    Identifier    "Monitor0"
    VendorName    "Monitor Vendor"
    ModelName    "Monitor Model"
    ${HSYNC}
    ${VREFRESH}
    Option        "DPMS"    "true"
    #DisplaySize    400    300
    #Option        "StandbyTime"    "10"
    #Option        "SuspendTime"    "20"
    #Option        "Offtime"    "30"
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        ${VIDEO_DRIVER}
EndSection

Section "Extensions"
    Option        "Composite"    "0"
    Option        "RENDER"    "Enable"
EndSection

Section "Screen"
    Identifier    "Screen0"
    Device        "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection "Display"
        Viewport   0 0
        Depth      1
        Modes      "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth      4
        Modes      "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth      8
        Modes      "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth      15
        Modes       "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth      16
        Modes       "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Viewport   0 0
        Depth      24
        Modes       "1024x768" "800x600" "640x480"
    EndSubSection
EndSection
EOF
# Remove temporary config file
rm -rf /tmp/xorg.conf.new

Работает на ура, НО не на всех железяках.
Например если в компе карточка с чипсетом nvidia, после выполнения скрипта мусор на экране и система виснет.
Если с чипсетом brookdale, черный экран, и нифига невидно. Система не виснет. если повторно попытаться запустить - все работает.
В wmware этот скрипт ваще отказывается выполняться грит мол screens not found или что-то в таком роде.
После кучи бессонных ночей я понял что ошибок в скрипте нет и если его выполнить отдельно (в ручную) перезапустить комп, то иксы поднимаются без проблем с конфигом, который мой скрипт создал.
Косяк в самом xogr который у меня версии 7.1 (собирал сам из исходников)
Что получается: если выполнить Xorg -configure а потом startx все пучком, а если создать такой скрипт:
#! /bin/sh
Xorg -configure
startx

то иногда работает, а иногда - черный экран (в лучшем случае, в худшем - виснет)

Вобщем я решил отказаться от вышепредставленного скрипта и решить эту проблему по другой схеме.
Не запускать Xorg -configure вообще
Создать шаблон под xorg.conf
С помощью lspci узнать данные о граф. адаптере
Используя эти данные sedом заменить драйвер в файле конфигурации.
И наконец вопрос:
Существует ли база данных с графическими адаптерами и модулями которую я мог бы использовать при данной схеме только для xorg сервера? (Ну что-то типа pci.ids из пакета pciutils)
Или может ваще существуют более простые решения данной задачи?
Заранее благодарен!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру