Xubuntu 06.10

Aus Zenega Wiki

Wechseln zu: Navigation, Suche

Ich will versuchen hier die komplette Installation von Xubuntu 06.10 auf eine S100 zu beschreiben. Mit Kubuntu oder Ubuntu sollte es genauso gehen, da es ja die selbe Codebasis ist.

Inhaltsverzeichnis

Grundinstallation

Ich hab eine 2,5" HDD (5GB) und ein CDROM-Laufwerk angeschlossen und die Alternativ-CD (siehe Links) von Ubuntu gebootet. Normale geht nicht weil die mehr Speicher braucht.

Vorsichtshalber hab ich mit install fb=false acpi=off gestartet. Partionen hab ich selbst angepasst, eine Große für das System und 512MB für Swap, vorsichtshalber.

Die restliche Installation lief normal durch und das System hat dann gestartet. Dann hab ich noch über LAN die aktuellen Updates eingespielt und mit den restlichen Punkten weiter gemacht.

WLAN

Da für die Hardware der prism54-Treiber zuständig ist, welcher aber WPA nicht unterstützt, wurde eine Lösung über Ndiswrapper gewählt. Der hier beschriebene Treiber bezieht sich auf die XG-601MB Netzwerkkarte!

Statt Punkt 2. aus der Anleitung wurden folgende Schritte gemacht:

unzip XG-30x_60x_90x.zip
ndiswrapper -i XGSeries2.1.14/XGSeries\ WPA\ Utility\ U2.0.0.6MDC2.3.1.6D2.1.14FW2.4.3_20040213Demo8/Release\ Files/Drivers/wlanCIG.inf

Die WPA-Konfiguration sollte man nach folgendem Artikel machen: WLAN/WPA Supplicant

Bei Reboots kam es zu Problemen, der Ndiswrapper konnte die Karte nicht inizialisieren, wahrscheinlich weil sie beim herunterfahren nicht richtig deaktiviert wurde. Folgende Zeile in /etc/init.d/networking am Ende des Stopbereiches, sollte das Problem beheben:

lsmod | grep ndiswrapper > /dev/null && rmmod ndiswrapper

Kernel Teil 1

Ungetestet!!!

Einfach die beiden Pakete linux-image-2.6.17.14-ubuntu1_s100v1_i386.deb (aktualisiert 07.02.2007) und linux-headers-2.6.17.14-ubuntu1_s100v1_i386.deb (aktualisiert 07.02.2007) herunterladen und mit dpkg -i linux-image-2.6.17.14-ubuntu1_s100_i386.deb linux-headers-2.6.17.14-ubuntu1_s100_i386.deb installieren.

Jetzt sollte man noch /boot/grub/menu.lst anpassen um den neuen Kernel zu booten und notfalls wieder zum Alten zurück zu können.

Grafik Teil 1

Für den Grafikteil benötigt man die IEGD 6.1 Treiber von Intel. Dieses Paket muss man unter Windows installieren und dann aus dem Verzeichnis IEGD_6_1_Gold\plugins\com.intel.iegd.drivers_6.1.0\Linux das Archiv IEGD_6_1_Linux.tgz auf die S100 spielen (Home von root). Oder direkt auf die s100 laden mittels wget.

Das Archiv enthält den AGP-Patch, ein DRM-Modul für die Intelhardware und Treiber + Module für Xorg.

Weiteres Vorgehen:

  • wget "http://nixda.biz/zenega/dwl/klick.php?url=/zenega/downloads/&file=IEGD_6_1_Linux.tgz&size=3667719" im home vom root
  • installIEGD61.sh.gz herunterladen ins Home von root
  • gunzip installIEGD61.sh.gz zum entpacken des Installscripts
  • bash installIEGD61.sh zum ausführen des Scripts, was das IEGD-Archiv entpackt und die Treiber + Module von Xorg an die richtigen Stellen kopiert.
  • xorg.conf.gz (aktuallisiert 06.02.2007) herunterladen und in /etc/X11 ablegen
  • Mit mv xorg.conf xorg.conf.orig; gunzip xorg.conf wird die original Konfiguration gesichert und die angepasste installiert

Somit ist die Xorg-Installation fast fertig, nur noch in der Datei /etc/X11/xinit/xserverrc am Ende der exec-Zeile -ignoreABI anfügen. Dadurch wird der X-Server gezwungen die Module von Intel zu nehmen, auch wenn die Version falsch ist (Intel bietet bisher nur Treiber für Xorg 7.0, aber Ubuntu verwendet 7.1).

Kernel Teil 2

Der zweite Teil der Kernelinstallation betrifft das DRM-Modul, für das Intel eigenen Sourcecode zur Verfügung stellt.

Der Code liegt nach dem installieren von Xorg aus dem vorherigen Abschnitt unter /root/IEGD_Patches/Drm. Außerdem sollte man nach der Kernelinstallation aus dem ersten Teil noch einmal gebootet haben, so das die Ausgabe von uname -a passt, sonst findet das Makefile einige Headerdateien nicht.

Durch ein make in dem oben genannten Verzeichnis wird, das Modul gebaut und installiert. Man sollte dann noch depmod -a aufrufen, damit der Kernel seine Treiberliste aktuallisieren kann.

Jetzt kann man das Modul mit modprobe intel laden.

Grafik Teil 2

Die abschliessende Arbeit an der Grafikausgabe ist etwas gepfriemel.

Zu erst beendet man den GDM (falls noch einer läuft) mit /etc/init.d/gdm stop, so dass kein X-Server mehr läuft. Dann startet man den X-Server von Hand mit startx, jetzt sollte eine Ausgabe auf dem TV erscheinen.

Über die folgenden Parameter aus der xorg.conf kann man die Position und die Skalierung des Bildes auf den TV anpassen:

Option "Config/0/Port/2/Attr/4" "19"  : Horizontale Position
Option "Config/0/Port/2/Attr/5" "5"   : Vertikale Position
Option "Config/0/Port/2/Attr/6" "655" : Breite
Option "Config/0/Port/2/Attr/7" "565" : Höhe

Diese Werte sind aus dem Forum, aus einem Post von mvogl, passend zu seinem alten Grundig TV.

Man muss also immer den X-Server starten, abschätzen wo man etwas verändern muss, Werte anpassen und das Ganz von vorne.

Media Center

Dieser Abschnitt beschreibt das einrichten eines Media Centers, momentan MMS.

Zuerst legt man einen Benutzer an, unter dem X und der Media Center laufen, (hier tv) adduser tv. Es werden Passwort, Name und noch weiter Informationen abgefragt.

Danach muss man den Benutzer noch in die Gruppe audio packen, sonst kann er keinen Sound abspielen: usermod -a -G audio tv

Im nächsten Schritt muss man dpkg-reconfigure x11-common aufrufen und den Zugriff für Jeden erlauben, Nice-Level kann man auf 0 lassen.

MMS installieren

Für diese Installation wurde die aktuelle Version 1.0.8.1 verwendet und mit der Zeile

./configure --prefix=/usr --enable-picture-epg --enable-game --disable-cd --enable-alsaplayer

gebaut (Anleitung für Dapper).

Man kann auch das mms_1.0.8.1-1_i386.deb verwenden, welches mit oben genannten Parameter gebaut wurde. Einfach herunterladen und mit dpkg -i mms_1.0.8.1-1_i386.deb installieren.

Alternativ: http://www.prodeia.de/mms/ (mit Abhängigkeiten) http://mms.kicks-ass.org/forum/viewtopic.php?t=596

MMS konfigurieren

Die Standardkonfiguration von MMS wird in das Verzeichnis /etc/mms installiert, diese kopiert man mit cp -r /etc/mms /home/tv/.mms. Danach kann /home/tv/.mms/config an seine Gegebenheiten anpassen und testweise mms von der Konsole starten (natürlich muss der X-Server laufen).

Eine englische Beschreibung der Konfiguration findet man unter 1, 2, 3 und 4.

Für eine bessere Tastenbelegung der S100 Fernbedienung kann man diese input-keyboard Datei für MMS benutzen: input-keyboard

Die Installation dieser Datei kann folgendermaßen geschehen:

mv /etc/mms/input-keyboard /etc/mms/input-keyboard_backup
wget -O /etc/mms/input-keyboard http://www.student.uni-kl.de/~maschaef/s100/input-keyboard.txt

Dann noch ein Neustart von MMS und schon ist die S100 Standartfernbedienung für MMS brauchbar.

Um evtl. noch den mplayer vernünftig mit der S100 Fernbedienung steuern zu können, einfach folgende modifizierte input.conf in ~/.mplayer/ kopieren: input.conf

Analog zu der input-keyboard Datei kann auch die Installation der input.conf geschehen:

su tv
wget -O ~/.mplayer/input.conf http://www.student.uni-kl.de/~maschaef/s100/input.conf.txt

Anmerkung: Falls mms bei euch unter einem anderen Benutzernamen als "tv" ausgeführt wird, müsst ihr einfach su "Benutzername" verwenden.

X-Server und MMS starten

Der X-Server wird über ein kleines Script gestartet, welches man als /etc/init.d/mms ablegt:

#! /bin/bash
#
### BEGIN INIT INFO
# Provides:
# Required-Start: haldaemon
# Required-Stop:
# Default-Start:  3 5
# Description:    Starte X-Server und MMS
### END INIT INFO
case "$1" in
  start)
    su -c 'startx 2> /tmp/Xorg.log &' - tv
    ;;
  stop)
    killall mms
    ;;
  *)
  echo "Usage: $0 {start|stop}"
  exit 1
esac
exit 0

Durch folgende Zeilen wird MMS dann beim Booten gestartet und beim Herunterfahren wieder beendet:

ln -s ../init.d/mms /etc/rc2.d/S98mms
ln -s ../init.d/mms /etc/rc6.d/K98mms
ln -s ../init.d/mms /etc/rc0.d/K98mms

Beim Starten von X wird statt eines Windowmanagers einfach MMS gestartet, in dem man die Datei /home/tv/.xinitrc mit folgendem Inhalt erstellt:

#!/bin/sh
STARTUP=~/bin/startmms.sh
. /etc/X11/Xsession

Da man der Xsession nur einen Dateinamen (ohne Parameter übergeben kann), wurde ein Script zwischengeschaltet, /home/tv/bin/startmms.sh, welches folgendermassen aussieht:

#!/bin/bash
mms > /tmp/mms.log

Dadurch wird die Ausgabe von MMS ins die Datei /tmp/mms.log (/tmp wird bei jedem neustart geleert, also keine Angst wegen der größe).

MMS beenden

Um MMS herunterfahren zu können benötigt man ein kleines Script (hier /home/tv/bin/mms-halt.sh):

#!/bin/sh
/usr/bin/sudo -u root /sbin/halt -p

Dieses trägt man dann in /home/tv/.mms/control ein:

shutdown_script = /home/tv/bin/mms-halt.sh

Doch noch darf der User tv das nicht, erst muss man als root mit sodoedit /etc/sudoers die folgende Zeile eintragen:

tv ALL=NOPASSWD: /sbin/halt -p

Das war's auch schon.

LED

Im Forum gibt es ein Script zum anpassen der LEDs, dieses wurde für Ubuntu angepasst:

#! /bin/bash
#
### BEGIN INIT INFO
# Provides:
# Required-Start: haldaemon
# Required-Stop:
# Default-Start:  3 5
# Description:    Stops LED blinking on S100
### END INIT INFO

#/bin/stty 38400 cs8 -parenb -cstopb < /dev/ttyS1 > /dev/ttyS1
#echo -e 'xa2xb2xa2xb2xa2xb2' > /dev/ttyS1

case "$1" in
  start)
  #grünes Blinken abschalten
  /bin/stty 38400 cs8 -parenb -cstopb -F /dev/ttyS1
  ls -l /dev/ttyS1
  echo -e '\xa2\xb2\xa2\xb2\xa2\xb2' > /dev/ttyS1
#  modprobe i2c-i810
  ;;

  stop)
  # This will simulate a press of the power button (red blinking, poweroff)
  /bin/sync
  modprobe -r i2c-i810
  /bin/sync
  /bin/stty 38400 cs8 -parenb -cstopb -F /dev/ttyS1
  echo -e "\xa2\xb1\xa2\xb1\xa2\xb1" > /dev/ttyS1
  ;;

  *)
  echo "Usage: $0 {start|stop}"
  exit 1
esac

exit 0

Das Script liegt unter /etc/init.d, z.B. unter dem Namen s100LED.sh, und muss ausführbar sein.

Dann noch mit folgenden Befehlen Links für das Starten und Beenden anlegen:

ln -s ../init.d/s100LED.sh /etc/rc2.d/S99s100
ln -s ../init.d/s100LED.sh /etc/rc0.d/K99s100
ln -s ../init.d/s100LED.sh /etc/rc6.d/K99s100

HD Tuning

Da die verwendete Platte sehr laut läuft, wurde versucht dieses mit einigen Optionen von hdparm abzuschwächen. Verwendet wurde folgende Zeile:

hdparm -d1 -c3 -X66 -k1 -m16 -B254 -M128 -S5 /dev/hda

Diese Parameter stehen für:

  • -d1 DMA-Modus einschalten
  • -c3 32 Bit Data mit sync
  • -X66 DMA-66-Modus
  • -k1 Settings über einen Reset hinaus halten
  • -m16 16 Multisektor
  • -B254 Advanced Power Management auf schlechtesten Wert
  • -M128 Akustik Management aud besten Wert
  • -S5 Spindown Zeit, also anhalten der Platte, auf 25s

Diese Zeile trägt man am besten in die Datei /etc/rc.local ein, so dass sie bei jedem Start ausgeführt wird.

Weiter Informationen findet man unter hdparm LinuxWiki.

GDM statt MMS

Von dauergast aus dem Forum

Damit der Start von gdm klappt (um also nach dem Hochfahren der S100 letztendlich am gewohnten Anmeldebildschirm herauszukommen) ist die Datei gdm-cdd.conf im Verzeichnis /etc/gdm/ anzupassen. Am Ende dieses Files ist bei den command-tags die -ignoreABI Option zu ergänzen. Sollte dann so aussehen (hier nur das Ende der gdm-cdd.conf, da nur dort Änderungen notwendig sind):

# Definition of the standard X server.
[server-Standard]
name=Standard server
command=/usr/bin/X -br -ignoreABI -audit 0
flexible=true
# Indicates that the X server should be started at a different process
# priority. Values can be any integer value accepted by the setpriority C
# library function (normally between -20 and 20) with 0 being the default. For
# highly interactive applications, -5 yields good responsiveness. The default
# value is 0 and the setpriority function is not called if the value is 0.

#priority=0

# To use this server type you should add -query host or -indirect host to the
# command line.
[server-Terminal]
name=Terminal server
# Add -terminate to make things behave more nicely
command=/usr/bin/X -br -ignoreABI -audit 0 -terminate
# Make this not appear in the flexible servers (we need extra params anyway,
# and terminate would be bad for xdmcp choosing). You can make a terminal
# server flexible, but not with an indirect query. If you need flexible
# indirect query server, then you must get rid of the -terminate and the only
# way to kill the flexible server will then be by Ctrl-Alt-Backspace.
flexible=false
# Not local, we do not handle the logins for this X server.
handled=false

# To use this server type you should add -query host or -indirect host to the
# command line.
[server-Chooser]
name=Chooser server
command=/usr/bin/X -br -ignoreABI -audit 0
# Make this not appear in the flexible servers for now, but if you wish to
# allow a chooser server then make this true. This is the only way to make a
# flexible chooser server that behaves nicely.
flexible=false
# Run the chooser instead of the greeter. When the user chooses a machine they
# will get this same server but run with "-terminate -query hostname".
chooser=true

ToDo

  • VLC testen
  • Pakete abspecken
  • Bootgeschwindigkeit erhöhen

Kernel selber bauen

Der Kernel von Ubuntu muss etwas angepasst werden, damit er mit der S100 runder läuft. Aus verschiedenen Forumsposts und dem Patch aus dem Intel Paket für das AGP-Modul wurde ein kompletter Patch für Ubuntu gemacht.

Benötigte Dateien:

  • s100kernel.config.gz eine angepasst Kernelkonfiguration, viele nutzlose Teile wurden deaktiviert, einige fest eingebaut; USB-Treiber und Videotreiber sind fast komplett enthalten, wer diese nicht braucht kann da noch ausmisten
  • ubuntu-2.6.17.14-s100.patch.gz Patch für AGP, I2C und Framebuffer

Im weiteren wird davon ausgegangen das die Dateien im Home von root liegen und entpackt wurden (mit gunzip).

Genaues Vorgehen (als root):

  • apt-get install linux-source-2.6.17 um die Sourcen zu installieren (make, gcc und Co sollten auch schon installiert sein)
  • cd /usr/src; tar xvfj linux-source-2.6.17.tar.bz2 zum Entpacken der Sourcen
  • cd linux-source-2.6.17; patch -p0 < ~/ubuntu-2.6.17.14-s100.patch zum patchen des Kernels
  • cp ~/s100kernel.config .config um die Kernelkonfiguration zu übernehmen
  • (make menuconfig um evtl noch Teile wie Videotreiber auszumisten)
  • make bzImage modules um den Kernel + Module zu bauen
  • Kaffeepause...
  • Wenn alles glatt gelaufen ist, kann man eigene Pakete mit dem Befehl make-kpkg binary erstellen.
  • Diese muss man dann noch installieren, sie liegen im Verzeichnis /usr/src
  • Jetzt sollte man noch /boot/grub/menu.lst anpassen um den neuen Kernel zu booten und notfalls wieder zum Alten zurück zukönnen

Alternativ kann man auch das Sourcepaket nehmen, welches mit dem Kernel aus der obigen Installation übereinstimmt: linux-source-2.6.17.14-ubuntu1_s100v1_all.deb (aktualisiert 07.02.2007)

Links