I'll 2nd the motion for any insight/direction on where to look to make changes such that during the boot process a remastered KNOPPIX can handle multiple graphics cards and they can be recognized and configured.
Thanks in advance.
Hi,
I have been customizing my own Knoppix CD, but in one thing I am failing: I want to have all my graphic adapters recognized and put together as Xinerama screens one "RightOf" the other.
I began with the problem to find the PCI addresses of the vga cards, and I found the following:
But I don't really understand how Knoppix gets its XF86Config-4 file, where the information comes from and stuff. Could you explain to me how the X configuration system works and how I can change it to support multiple screen environments if more than one graphic card is installed?Code:lspci -m|grep VGA|cut -b 1-7|sed -e s/\\./:/
Thanks in advance, Mathis
EDIT:
Just to clarify, I am trying to make a bootable Knoppix CD which can automatically discover one, two, three... graphic cards and configure them nicely with KDE to be right of the previous one.
I am aware of existing topics which seem to be about this problem, but it seems to me that some of them have a HD install of knoppix and the others have one graphic card with dual head support.
I'll 2nd the motion for any insight/direction on where to look to make changes such that during the boot process a remastered KNOPPIX can handle multiple graphics cards and they can be recognized and configured.
Thanks in advance.
I had to find a way, and so I created a shell script which modifies the XF86Config-4 created by Knoppix.
I put the script (which I called updateconfig.sh) and dms.txt (see below) into the newly created directory /var/multiscreen (in the KNOPPIX tree) and modified my /etc/init.d/xsession to look like this:
And it works fine! Here is the script:Code:... case "$X" in *XFree86*) XCONFIG="/etc/X11/XF86Config-4"; BPP="-depth"; NORESET="-noreset"; ;;vesa|fbdev) for i in xserver knoppix; do echo 'XSERVER="XFree86"' >> /etc/sysconfig/$i; echo 'XMODULE="'"$X"'"' >> /etc/sysconfig/$i; done echo "${NORMAL}" echo -n "${BLUE}Retrying with Server ${GREEN}XFree86(${YELLOW}$X${GREEN})${NORMAL} " rm -f /etc/X11/XF86Config-4 mkxf86config >/dev/null 2>&1 X=XFree86 ; XCONFIG="/etc/X11/XF86Config-4"; BPP="-depth"; NORESET="-noreset"; XOPTIONS="" ;; esac # now get a new XF86Config-4 for *all* VGA cards /var/multiscreen/updateconfig.sh # Try hwsetup-generated flags first, if present $X $NORESET -xf86config "$XCONFIG" $XOPTIONS $DPI :0 2>/dev/null && break ...
It is accompanied by a template with standard "Device", "Monitor" and "Screen" Sections (named dms.txt):Code:# update /etc/X11/XF86Config-4 to support multiple screens if available # # Mathis Dirksen-Thedens [ [email protected] ] # August 2004 # # written for KNOPPIX 3.4 # # this script needs to know the following file locations: # $infile what is configured yet by KNOPPIX # $outfile where the new configuration shall be written to # (if identical to $infile the output is temporarily redirected # and moved to $infile later) # $dms where the template with standard "Device", "Monitor" and # "Screen" sections of XF86Config-4 is infile=/etc/X11/XF86Config-4 outfile=$infile dms=/var/multiscreen/dms.txt # ---------- no modifications needed from this line on ----------- if [ $infile == $outfile ]; then out_tmp=$outfile.new else out_tmp=$outfile fi echo "" anz=`lspci -m|grep VGA|wc -l` echo -n found $anz VGA cards adrhex=`lspci -m|grep VGA|cut -b 1-7|sed -e s/\\\./:/|sort` # hex -> dec adr="" for adr_i in $adrhex do hexnumber1=`echo $adr_i | cut -d : -f 1 | tr [a-z] [A-Z]` hexnumber2=`echo $adr_i | cut -d : -f 2 | tr [a-z] [A-Z]` hexnumber3=`echo $adr_i | cut -d : -f 3 | tr [a-z] [A-Z]` decnumber1=`echo "obase=10;ibase=16; $hexnumber1" | bc` decnumber2=`echo "obase=10;ibase=16; $hexnumber2" | bc` decnumber3=`echo "obase=10;ibase=16; $hexnumber3" | bc` adr=$adr" "$decnumber1\:$decnumber2\:$decnumber3 done echo \ \(adresses: $adr\) echo "" already=`grep BusID $infile | expand | sed -e s/PCI\:// | sed -e s/[A-Za-z#\ \"]//g` anzalready=`echo $already | sed -e s/[0-9\:]/x/g | wc -w` echo already configured: $already \($anzalready of $anz\) adr_new="" for adr_i in $adr do cnt=0 for adr_a in $already do if [ $adr_i != $adr_a ]; then let "cnt+=1" fi done if [ $cnt == $anzalready ]; then adr_new=$adr_new" "$adr_i fi done echo still to configure: $adr_new echo "" # $out_tmp vorbereiten cp $infile $out_tmp cat $out_tmp|sed -e s/"\"Screen0\" 0\ 0"/"\"Screen0\" 0 0\n Option \"Xinerama\" \"on\""/ > $out_tmp.tmp mv $out_tmp.tmp $out_tmp i=1 for adr_i in $adr_new do # neue Blöcke Device/Monitor/Screen einfügen cat $dms | sed -e s/\#\#\#NUMMER\#\#\#/$i/g | sed -e s/\#\#\#ADRESSE\#\#\#/$adr_i/g >> $out_tmp # neue Zeile in Block ServerLayout einfügen let "a=i-1" newline=" Screen "$i" \"Screen"$i"\" RightOf \"Screen"$a"\"" cat $out_tmp|sed -e s/\#.*BusID/\\tBusID/|sed -e s/"\"Screen0\" 0\ 0"/"\"Screen0\" 0 0\n$newline"/ > $out_tmp.tmp mv $out_tmp.tmp $out_tmp # Counter erhöhen let "i+=1" done # falls nötig Konfiguration sichern und überschreiben: if [ $infile == $outfile -a $anz != $anzalready ]; then mv $infile $infile.bak mv $out_tmp $infile else rm $out_tmp fi if [ $anz == $anzalready ]; then if [ $infile == $outfile ]; then echo configuration was left unchanged else echo old configuration was copied to $outfile fi else echo new configuration was written to $outfile fi echo ""
If you like this, feel free to enhance it even more, but be aware that lspci gives you the addresses in hex numbers while X needs them decimal! (This was the biggest annoyance while writing the script.)Code:Section "Device" Option "sw_cursor" Identifier "Card###NUMMER###" Driver "vesa" VendorName "All" BoardName "All" BusID "PCI:###ADRESSE###" EndSection Section "Monitor" Identifier "Monitor###NUMMER###" Option "DPMS" "true" ModelName "Standard-Monitor" HorizSync 28.0 - 96.0 # Warning: This may fry old Monitors VertRefresh 50.0 - 60.0 # Extreme conservative. Will flicker. TFT default. # Default modes distilled from # "VESA and Industry Standards and Guide for Computer Display Monitor # Timing", version 1.0, revision 0.8, adopted September 17, 1998. # $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.4 1999/11/18 16:52:17 tsi Exp $ # 640x350 @ 85Hz (VESA) hsync: 37.9kHz ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync # 640x400 @ 85Hz (VESA) hsync: 37.9kHz ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync # 720x400 @ 85Hz (VESA) hsync: 37.9kHz ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync # 640x480 @ 72Hz (VESA) hsync: 37.9kHz ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync # 640x480 @ 75Hz (VESA) hsync: 37.5kHz ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync # 640x480 @ 85Hz (VESA) hsync: 43.3kHz ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync # 800x600 @ 56Hz (VESA) hsync: 35.2kHz ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync # 800x600 @ 60Hz (VESA) hsync: 37.9kHz ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync # 800x600 @ 72Hz (VESA) hsync: 48.1kHz ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync # 800x600 @ 75Hz (VESA) hsync: 46.9kHz ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync # 800x600 @ 85Hz (VESA) hsync: 53.7kHz ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync # 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace # 1024x768 @ 60Hz (VESA) hsync: 48.4kHz ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync # 1024x768 @ 70Hz (VESA) hsync: 56.5kHz ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync # 1024x768 @ 75Hz (VESA) hsync: 60.0kHz ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync # 1024x768 @ 85Hz (VESA) hsync: 68.7kHz ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync # 1152x864 @ 75Hz (VESA) hsync: 67.5kHz ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync # 1280x960 @ 60Hz (VESA) hsync: 60.0kHz ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync # 1280x960 @ 85Hz (VESA) hsync: 85.9kHz ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync # 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync # 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync # 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync # 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync # 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync # 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync # 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync # 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync # Extended modelines with GTF timings # 640x480 @ 100.00 Hz (GTF) hsync: 50.90 kHz; pclk: 43.16 MHz ModeLine "640x480" 43.16 640 680 744 848 480 481 484 509 -HSync +Vsync # 768x576 @ 60.00 Hz (GTF) hsync: 35.82 kHz; pclk: 34.96 MHz ModeLine "768x576" 34.96 768 792 872 976 576 577 580 597 -HSync +Vsync # 768x576 @ 72.00 Hz (GTF) hsync: 43.27 kHz; pclk: 42.93 MHz ModeLine "768x576" 42.93 768 800 880 992 576 577 580 601 -HSync +Vsync # 768x576 @ 75.00 Hz (GTF) hsync: 45.15 kHz; pclk: 45.51 MHz ModeLine "768x576" 45.51 768 808 888 1008 576 577 580 602 -HSync +Vsync # 768x576 @ 85.00 Hz (GTF) hsync: 51.42 kHz; pclk: 51.84 MHz ModeLine "768x576" 51.84 768 808 888 1008 576 577 580 605 -HSync +Vsync # 768x576 @ 100.00 Hz (GTF) hsync: 61.10 kHz; pclk: 62.57 MHz ModeLine "768x576" 62.57 768 816 896 1024 576 577 580 611 -HSync +Vsync # 800x600 @ 100.00 Hz (GTF) hsync: 63.60 kHz; pclk: 68.18 MHz ModeLine "800x600" 68.18 800 848 936 1072 600 601 604 636 -HSync +Vsync # 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz ModeLine "1024x768" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync # 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ModeLine "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync # 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ModeLine "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync # 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ModeLine "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync # 1280x960 @ 72.00 Hz (GTF) hsync: 72.07 kHz; pclk: 124.54 MHz ModeLine "1280x960" 124.54 1280 1368 1504 1728 960 961 964 1001 -HSync +Vsync # 1280x960 @ 75.00 Hz (GTF) hsync: 75.15 kHz; pclk: 129.86 MHz ModeLine "1280x960" 129.86 1280 1368 1504 1728 960 961 964 1002 -HSync +Vsync # 1280x960 @ 100.00 Hz (GTF) hsync: 101.70 kHz; pclk: 178.99 MHz ModeLine "1280x960" 178.99 1280 1376 1520 1760 960 961 964 1017 -HSync +Vsync # 1280x1024 @ 100.00 Hz (GTF) hsync: 108.50 kHz; pclk: 190.96 MHz ModeLine "1280x1024" 190.96 1280 1376 1520 1760 1024 1025 1028 1085 -HSync +Vsync # 1400x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 122.61 MHz ModeLine "1400x1050" 122.61 1400 1488 1640 1880 1050 1051 1054 1087 -HSync +Vsync # 1400x1050 @ 72.00 Hz (GTF) hsync: 78.77 kHz; pclk: 149.34 MHz ModeLine "1400x1050" 149.34 1400 1496 1648 1896 1050 1051 1054 1094 -HSync +Vsync # 1400x1050 @ 75.00 Hz (GTF) hsync: 82.20 kHz; pclk: 155.85 MHz ModeLine "1400x1050" 155.85 1400 1496 1648 1896 1050 1051 1054 1096 -HSync +Vsync # 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ModeLine "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync # 1400x1050 @ 100.00 Hz (GTF) hsync: 111.20 kHz; pclk: 214.39 MHz ModeLine "1400x1050" 214.39 1400 1512 1664 1928 1050 1051 1054 1112 -HSync +Vsync # 1600x1200 @ 100.00 Hz (GTF) hsync: 127.10 kHz; pclk: 280.64 MHz ModeLine "1600x1200" 280.64 1600 1728 1904 2208 1200 1201 1204 1271 -HSync +Vsync EndSection Section "Screen" Identifier "Screen###NUMMER###" Device "Card###NUMMER###" Monitor "Monitor###NUMMER###" DefaultColorDepth 16 SubSection "Display" Depth 1 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 4 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 15 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 32 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection
If you enhance it, please send me an email ot post it on this site, thank you.
The one big flaw is that the VESA driver operates the second, third... VGA card(s). If someone knows how to detect this properly please let me know.
If you try this on other versions of Knoppix, please tell how it worked! Thanks

Microbotics Starboard 2MB + SCSI Sidecar for Amiga 1000 Vintage Computer READ
$329.00
RGB2HDMI Amiga 500 UltraLong (Accelerator Friendly) HDMI Games, non-RTG A500
$50.00
Pi1541 Zero with Epyx Fastload Hat, Case & 16gb SD for Commodore 64 and 128
$79.99
Amiga Emplant Emulator Card For Commodore Amiga 2000 4000 3000
$249.00
Amiga 1000 Computer w/ Monitor Keyboard Mouse Disc Drive Sidecar Expansion Discs
$950.00
Amiga 2000 2630/CPU 68030 25Mhz
$300.00
Commodore Amiga 4000 Motherboard Rev B - untested
$225.00
Commodore Amiga 500 Motherboard Rev 5, A500 #548 (As-Is)
$64.75
External fully assembled GreaseWeazle 3.5 inch Floppy Drive
$135.00
OPEN BOX - AMIGA Genlock Interface Vintage Video Adapter 1300- GREAT
$329.95