HowTo - Debian auf Samsung X30 WVC 1500

Debian auf Notebooks und speziellen Geräten wie eingebetteten Systemen, Routern, Set-Top-Boxen, ...
Antworten
Shade
Beiträge: 3
Registriert: 02.05.2004 19:46:58
Wohnort: München
Kontaktdaten:

HowTo - Debian auf Samsung X30 WVC 1500

Beitrag von Shade » 03.11.2004 16:53:31

Debian auf einem Samsung X30 WVC 1500
Version 1.2 (Vom 05.11.2004)
---
1.0 = Current Dokument
1.1 = ACPI Patch successfull! Funktionstasten funktionieren!
1.2 = ACPI, Speedstep und alle anderen Sachen wie Baterieanzeige funktionieren! (Downloads werden heute Abend zur Verfügung stehen!
--
Nachtrag: Kernel Config, XFree86 Config, osl.c (Modded) und X30.hex uploaded! Siehe HowTo Footer!
---

Hi Folks!

Ich möchte hier ein kleines HowTo für die Installation von Debian Sarge auf einem Samsung X30 Notebook verfassen. Zum jetzigen Stand kann ich sagen, es funktioniert alles bis auf meine ACPI DSDT Tabelle, welche von Samsung leider auch in der Bios Version UE05 noch fehlerhaft ist. Das Samsung X30 ist ein schlankes, leichtes und mit einem sehr gutem Display bestücktes Notebook. Nun zu meinem HowTo, mit Quellen von "c_t" aus dem Gentoo Forum, danke für deine Hinweise und deine Anleitung für Gentoo! 8)

Inhaltsverzeichnis
  • 1. Installation
    1.1 Grundinstallation
    1.2 X (Grafisches Grundsystem) Installation

    2. Hardwareunterstützung
    2.1 Netzwerk
    2.2 Wireless Lan
    2.3 ACPI & Speed-Stepping
    2.4 USB
    2.5 Firewire
    2.6 Toutchpad
    2.7 Funktionstasten

    3 Abschluss
    3.1 Nvidia Module
    3.2 Wlan Module
    3.3 Kernel Compilierung
1. Installation

1.1 Grundinstallation

Die Grundinstallation geht relativ einfach und schnell von der Hand. Ich benutzte eine Netzwerk Installation von Sarge. Ich finde es am besten wenn man selbst auswählen kann welche Komponenten man installieren will. Fangt also am besten mit diesem Basis-OS an. Ihr braucht nach der Grundinstallation folgende Packete:

Code: Alles auswählen

apt-get update && apt-get upgrade && apt-get install gcc g++ patch make automake mc bzip2 gzip unzip gnome ncurses-dev bison lynx wget acpid gdm nvidia-glx smbclient nmap openssl python2 libgtk2.0-common synaptic xfree86-driver-synaptics kernel-source-2.6.8  
:!: Ich werde weitere, benötigte, Packete falls ich diese übersehen habe, nachtragen. Nobody is perfect ;) Für die Nvidia Treiber und die Intel Centrino WLAN Treiber müssen wir unseren neuen Kernel in der Version 2.6.8 natürlich erst einmal mit den Standarteinstellungen starten. Das gehen wir wie folgt an:

Code: Alles auswählen

cd /usr/src/
bunzip2 kernel-source-2.6.8.tar.bz2
ln -s ./kernel-source-2.6.8 ./linux
cd linux
make menuconfig
make
cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.6.8-x30
Dann sollten wir noch unseren GRUB Bootloader entsprechend konfigurieren. Ich habe das so getan:

Code: Alles auswählen

vi /boot/grub/menue.lst
title Debian GNU Linux 2.6.8 Samsung X30 WVC 1500
root (hd0,0)
kernel /boot/vmlinuz-2.6.8-x30 ro 
root=/dev/hda2
savedefaults
boot
Speichern und rebooten! Dann kommen wir zum nächsten Punkt, Fehlermeldungen etc sollten jetzt ignoriert werden da wir ja zum jetzigen Zeitpunkt noch keine Konfiguration vorgenommen haben.

1.2 X Installation (Grafisches System)

Als nächstes sollten wir uns die neusten Treiber für unsere Nvidia GeForce 5200 GO 64MB holen. Das können wir bei Nvidia Derzeitige Version: 1.0-6111 vom 06.08.2004. Wir erstellen uns am besten ein Verzeichnis und installieren von dort aus:

Code: Alles auswählen

su
cd /
mkdir install
cd /install
wget http://download.nvidia.com/XFree86/Linux-x86/1.0-6111/NVIDIA-Linux-x86-1.0-6111-pkg1.run
Zur Installation kommen wir später, zuerst muss der Kernel entsprechend konfiguriert werden.

2. Hardwareunterstützung

Nun müssen wir unseren Kernel entpacken und dann für unser Samsung X30 WVC entsprechend einrichten. Eine Kernel .config der Version 2.6.8 wird hier als Anhang veröffentlicht.

Code: Alles auswählen

cd /usr/src/linux
make menuconfig
Nun erstellen wir uns eine passende Konfiguration für unser X30 Notebook. Zuerst sollte natürlich der "Loadable Modulsupport im Kernel aktiviert werden:

Code: Alles auswählen

Loadable module support  --->
    [*] Enable loadable module support
    [*]   Module unloading
    [*]   Automatic kernel module loading 
2.1 Netzwerk

Die Netzwerkkarte "Broadcom BCM4401" ist vom Kernel unterstützt:

Code: Alles auswählen

    Device Drivers  --->
     Networking support  --->
     [*] Networking support
     [*]   Network device support
             Ethernet (10 or 100Mbit)  --->
            [*] EISA, VLB, PCI and on board controllers
            <*>   Broadcom 4400 ethernet support (EXPERIMENTAL) 
2.2 Wireless Lan

Die Intel 2100 WLAN Karte wird leider noch nicht vom Kernel unterstützt aber Intel war so freundlich und hat einen Linux / Unix Treiber veröffentlicht. Diesen könnt ihr hierfinden, derzeitige Version 0.58 vom 2. November 2004. Wir benötigen aber auch hierfür im Kernel den Standart Wireless Lan Support ohne jegliche Gerätetreiber:

Code: Alles auswählen

    Device Drivers  --->
     Networking support  --->
     [*] Networking support
     [*]   Network device support
             Wireless LAN (non hamradio) --->
             [*] Wireless LAN Drivers (non hamradio) & Wireless Extensions
Somit ist Wireless Lan zumindest im Kernel aktiviert. die Treiber werden später installiert. Alle noch nötigen Einstellungen im Kernel werden hier noch veröffentlicht. Eine vollständige .config des 2.6.8er Debian Kernels wird hier ebenfalls noch aufgetragen.

2.3 Strompaarmodus & ACPI

Hier sind am schwierigsten Punkt bei der ganzen Installation angekommen. Leider ist die DSDT Tabelle auch in Version UE05 (Bios Version X30) fehlerhaft.

2.3.1 Centrino SpeedStep

Zunächst aber installieren wir folgende Packete:

Code: Alles auswählen

 apt-get install cpufreqd
Als nächstes müssen wir ACPI im Kernel aktivieren

Code: Alles auswählen

 Power management options (ACPI, APM)  --->
    [*] Power Management support
        CPU Frequency scaling  --->
        [*] CPU Frequency scaling
              Default CPUFreq governor (userspace)  --->
        <*>   'performance' governor
        <*>   'powersave' governor
        [*]     /proc/sys/cpu/ interface (2.4. / OLD)
        <*>   CPU frequency table helpers
        ---   CPUFreq processor drivers
        <*> Intel Enhanced SpeedStep 
Jetzt sollten wir uns die Konfigurationsdatei ansehen, diese liegt unter:

Code: Alles auswählen

 /etc/cpufreqd
:!: Die Raute vor "acpi_workaround=1" muss dringend bestehen bleiben, da wir unser ACPI später noch Patchen werden und somit benötigen wir diesen Schritt nicht!

Das Config-File sollte in etwas so aussehen:

Code: Alles auswählen

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi #(acpi, apm or pmu)
# Uncomment the following line to enable ACPI workaround (see cpufreqd.conf(5))
# acpi_workaround=1
verbosity=4 #(if you want a minimal logging set to 5)

[Profile]
name=hi_boost
minfreq=66%
maxfreq=100%
policy=performance

[Profile]
name=medium_boost
minfreq=33%
maxfreq=66%
policy=performance

[Profile]
name=lo_boost
minfreq=0%
maxfreq=33%
policy=performance

[Profile]
name=lo_power

minfreq=0%
maxfreq=33%
policy=powersave

# conservative mode when not AC
[Rule]
name=conservative
ac=off                   # (on/off)
battery_interval=0-100   
cpu_interval=0-40
profile=lo_boost

# need some power
[Rule]
name=lo_cpu_boost
ac=off                   # (on/off)
battery_interval=0-100
cpu_interval=30-80
profile=medium_boost

# need big power (not if battery very low)
[Rule]
name=hi_cpu_boost
ac=off                   # (on/off)
battery_interval=50-100
cpu_interval=70-100
profile=medium_boost

# full power when AC
[Rule]
name=AC_on
ac=on                   # (on/off)
profile=hi_boost

# full power when watching DVDs and not AC:
# this is the last rule and takes less
# precedence with respect to the others
[Rule]
name=dvd_watching
ac=off                   # (on/off)
battery_interval=0-100
programs=xine,mplayer,avidemux
cpu_interval=0-100
profile=hi_boost
2.3.2 ACPI Allgemein

-> UPDATE: Nun nach einem langen Tag im Büro und lagem nachdenken und nachfragen ist es mir gelungen den Kernel doch noch zu überzeugen das .hex File welches für unser X30 modded wurde unter zu jubeln. Bitte beachtet die Änderungen und Ergänzungen am Anfang und Ende dieses HowTo's !! Ich werde jedoch noch einige Änderungen vornehmen. Falls Fragen zu ACPI oder anderen Komponenten sind, schreibt mir eine PM oder eine eMail an: w.kern (at )wireless-winds.de . Desweiteren funktioniert nun auch die Anzeige der Batterie unter Gnome 2.6. Einen Kernel in der Version 2.6.8 mit Debian Pachtes stelle ich hier noch als Download rein. Sobald das Problem mit 2.6.9 und den Nvidia Treibern gelöst ist werden ich auch diesen hier einstellen.

Nicht nur c_t aus dem Gentoo Forum hat mit diesem Thema Stunden und Wochen verbracht. auch ich habe bis zum heutigen Datum noch keine vernünftige Lösung für den ACPI Patch gefunden. Ich möchte es euch jedoch nicht vorenthalten wie es klappen "sollte" ;) Zuerst sollten wir unser BIOS mit der neusten Version versorgen, das geht mit diesem Link dieses Nero Image brennen wir am besten auf einen RW (Der Kosten wegen), diesen können wir dann später wieder löschen. Nun legen wir nach Abschluss diesen RW (R) in das Laufwerk ein. Nun bootet ein Mini DOS, wir führen UE05.exe aus und machen das unter Umständen 2x, falls es beim ersten mal nicht klappen sollte. Bei mir war es zumindest so... Gründe hierfür finde ich bis Dato keine. Aber es läuft. Wie schon erwähnt, auch das neue Bios hat DSDT Probleme in der ACPI Tabelle. Wir müssen dieses also Bugfixen, ein sehr guter (Englischsprachiger) Link befindet sich hier. Ich muss allerdings dazu sagen dass ich etwas durcheinander bin wegen diesen ganzen ACPI Patches. Ich werde jedoch trotzdem das wiedergeben was "c_t" im Gentoo Forum sagte, denn bei Ihm scheint es so geklappt zu haben.

:!: WICHTIG: Macht Sicherheitskopien von Kernel Image, Kernel Config und der SourceTree vom Kernel !! Ihr werdet sie brauchen!

Ihr solltet nun also das Howto von oben besuchen und euch mit Abschnitt 9a beschäftigen. Wir benötigen also eine Bugfixed Version von unserem DSDT ACPI Table. Unter diesem Link gibt es eine bereits auf dieses Modell angepasste Version. Hierbei sollte man die "statische" Methode in Kapitel 9a wählen. Welche den Patch direkt fest in den Kernel einbaut.

Vorgehensweise DSDT Patch (Bugfixed one from top)
  • 1. Wir Laden uns bei Intel die neusten ACPI Compiler runter. Diesen erstellen wir mittels:

    Code: Alles auswählen

    tar xzf acpica-unix-VERSION.tar.gz
    cd acpica-unix-VERSION/compiler
    make
    Das "VERSION" hängt von der derzeit gültigen Version ab, ergänzt es bitte dadurch.

    2. Wir erstellen unser .hex File aus der Bugfixed Version für das X30 von oben, das bewerkstelligen wir mittels:

    Code: Alles auswählen

    cp /acpica-unix-VERSION/compiler/iasl /install/
    cd /install
    wget http://acpi.sourceforge.net/dsdt/tables/Samsung/X30_WVC_1500/Samsung-X30_WVC_1500-2.0_UE05-custom.asl.gz
    gunzip Samsung-X30_WVC_1500-2.0_UE05-custom.asl.gz
    ./iasl -tc Samsung-X30_WVC_1500-2.0_UE05-custom.asl
    Wir sollten nun ein .aml und ein .hex File haben welches wir nutzen können.

    3. Ein File namens "dsdt_override.diff" erstellen, mit folgendem Inhalt:

Code: Alles auswählen

--- drivers/acpi/osl.c	2003/01/14 16:22:32	1.1
+++ drivers/acpi/osl.c	2003/01/14 16:25:43
@@ -25,6 +25,7 @@
  *
  */
 
+#include <acpi/dsdt_table.h>
 #include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -208,7 +209,8 @@
 	if (!existing_table || !new_table)
 		return AE_BAD_PARAMETER;
 
-	*new_table = NULL;
+	*new_table = (strncmp(existing_table->signature, DSDT_SIG, 4)) ? NULL \
+			: (struct acpi_table_header *) AmlCode;
 	return AE_OK;
 }
 

Herunterladbar auch hier. Nun sollte der Kernel gepatcht werden. Das machen wir mit:

Code: Alles auswählen

cd /usr/src/linux
patch -p1 < /path/to/dsdt_override.diff
Wenn keine error Meldungen auftreten ist der Patch geglückt. Der patch erwartet nun das neue .hex File in seinem SourceTree. So wollen wir es ihm geben:

Code: Alles auswählen

cp /install/Samsung-X30_WVC_1500-2.0_UE05-custom.hex /usr/src/linux/include/acpi/dsdt_table.h
2.4 USB ...

2.5 Firewire ....

2.6 Toutchpad ...

2.7 Funktionstasten ....


3.0 Abschluss

Nun ist es an der Zeit seine Nvidia Treiber ebenfalls zu installieren, daher werden wir dies noch abschließend tun. Dazu gehen wir wie folgt vor:

Code: Alles auswählen

cd /install
sh NVIDIA-Linux-x86-1.0-6111-pkg1.run
Die Lizenz wird mit "Yes" angenommen, Fragen bzgl. eines "precompiled kernel headers" verneinen wir, wir brauchen auch keine von "download.nvidia.com" also auch auf diese Frage ein "no". Nun sollte Nvidia den Treiber für euren Kernel backen.

Was fehlt nun noch? Richtig! Die Wireless Lan Treiber! Welche wir mit folgendem befehl installieren:

Code: Alles auswählen

cd /install
wget http://mesh.dl.sourceforge.net/sourceforge/ipw2100/ipw2100-0.58.tgz
tar -xvfz ipw2100-0.58.tgz
cd /ipw2100-0.58
vi Makefile
Scrollen Sie nun bis zu dieser Zeile:
# CONFIG_IPW2100_LEGACY_FW_LOAD=y
und löschen Sie das Rautezeichen vorne dran weg. Nun speichern und quit. Nun führen wir noch aus:

Code: Alles auswählen

make
su
make install
Dies sollte nun die Treibermodule installiert haben. Die Firmware müssen wir jedoch noch installieren, sie ist downloadbar hier. Wir lesen die Lizenzbestimmungen und downloaden das File. Nun machen wir noch folgendes:

Code: Alles auswählen

tar xvfz ipw2100-fw-1.2.tgz
mkdir /etc/firmware
cp ipw2100-1.3-i.fw ipw2100-1.3-p.fw ipw2100-1.3.fw /etc/firmware
Zum Test geben wir nun mal ein:

Code: Alles auswählen

modprobe ipw2100
iwconfig
Wir sollten nun *hoffentlich* keine errors entdecken. Wir kompilieren nun unseren Kernel mit allen gewünschten Treibern und Komponenten. Dazu gehen wir in das Verzeichnis des Kernels und geben ein:

Code: Alles auswählen

 cd /usr/src/linux/
make menuconfig
make bzImage modules modules_install
Sollte diese Compilierung nun komplett sein und OHNE errors durchgelaufen sein, müssen wir den Kernel (Bei Grub Betrieb) nur noch in Boot kopieren:

Code: Alles auswählen

 cp ./arch/i386/boot/bzImage /boot/vmlinuz-2.6.8-x30
und die /boot/grub/menue.lst entsprechend bearbeiten.

Nun haben wir nun ein Debian auf dem X30 welches zu 99,9% funktioniert. Denn der Memory Card Slot für den Sony MemoryStick funktioniert leider nicht.... Ich werde dieses Tutorial noch mehrmals überarbeiten, Vorschläge und Hinweise sind gerne gesehen! ;)

Links:
Kernel-Config
XFree86-Config
x30.asl
X30.hex
Debian-Kernel-Source-2.6.8-Patched
Modded "osl.c"


Regards and have fun!

Shade 8)
Zuletzt geändert von Shade am 09.11.2004 20:01:53, insgesamt 11-mal geändert.

Benutzeravatar
C_A
Beiträge: 1082
Registriert: 22.04.2004 14:51:01
Lizenz eigener Beiträge: GNU General Public License

Re: HowTo - Debian auf Samsung X30 WVC 1500

Beitrag von C_A » 03.11.2004 17:04:00

Shade hat geschrieben: Vorschläge und Hinweise sind gerne gesehen! ;)
Mein Vorschlag wäre, das ganze ins wiki zu stellen. 8)

c_t
Beiträge: 2
Registriert: 17.11.2004 17:46:35
Kontaktdaten:

Beitrag von c_t » 17.11.2004 17:51:02

hi shade,

wäre cool wenn du das, was unter http://bugme.osdl.org/show_bug.cgi?id=3203#c12 beschrieben ist auch mal ausprobieren könntest... geht darum, das display nach s3 resume wieder zu aktivieren.

danke, christoph
You know gentoo? http://www.gentoo.org ;)

Benutzeravatar
deBeck
Beiträge: 616
Registriert: 23.09.2004 20:52:27
Wohnort: Süd-Schwarzwald

Beitrag von deBeck » 09.01.2005 23:44:52

Vieleicht findet der Autor hier noch weitere Anregungen - ist zwar nicht das selbe Notebook, aber viele der Probleme sind ähnlich :

Asus M6N :

[urlhttp://]de.wikibooks.org/wiki/Asus_M6N-Kompendium[/url] (da könnte dein HowTo hin ;-) )
http://www.encke.net/encke/modules.php? ... m&forum=11
http://m6n.ath.cx/forum/

c_t
Beiträge: 2
Registriert: 17.11.2004 17:46:35
Kontaktdaten:

Beitrag von c_t » 06.02.2005 11:09:09

hi,

mit dem 2.6.10-kernel (zumindest mit der von gentoo gepatchten version, siehe http://dev.gentoo.org/~dsd/gentoo-dev-sources/) benötige ich keinen einzigen acpi-patch mehr! Custom-DSDT-Loading ist da schon mit integriert, man muss die Kerneloption nur erst aktivieren, in dem man in Device Drivers ---> Generic Driver Options ---> folgendes aktiviert:

Code: Alles auswählen

[ ] Select only drivers that don't need compile-time external firmware 
 [*] Prevent firmware from being built 
 <*> Hotplug firmware loading support
und den kernel recompiled, dann kann man bei den Acpi-Kernel-Optionen direkt den Pfad zum DSDT-Hex-file angeben.

Wie gesagt, das ewige patchen hat bei mir momentan zum Glück mal ein Ende. Die Standby modi funktionieren aber immer noch nicht :(

Grüße, c_t
You know gentoo? http://www.gentoo.org ;)

Antworten