PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auto Pimp Double Action: Debian 4 Etch



Gargi
28.12.2007, 14:54
Jetzt wird es einwenig hart :) Als Fortführung meines Pimp- Threads hier die Automatisierung des ganzen. Ich habe gestern und heute an einem Script gebastelt, das "things easier" machen soll. Allerdings gilt das nur für folgendes Setup:

1) AMD Athlon X2
2) 32 bit System
3) Nvidia Grafikkarten

Das Script macht folgendes:

- Ändern der Repositories
- Dist-Upgrade auf Debian Lenny (EXPERIMENTIELL!!!!)
- Installieren eines Sack voll Programme
- Installieren von nonfree Paketen wie Java, Flashplayer, Realplayer, WinCodex und der ganze Schnickschnack
- Installieren von Buildtools und den aktuellen 2.6.21er Kernel (Achtung!!!! Nicht ganz unkritisch)
- Installieren der 9755er Nvidia Treibermodule. Dabei wird das Modul gepatcht, damit es sich auf den 2.6.21er Kernel installieren lässt.
- Vorbereiten für Beryl
- Herunterladen und Kompilieren von VirtualBox
- Änderung des Runlevelverhalten von Debian
- Diverse Patches

Das benötigt zwei Scripte, die Ihr beide im GLEICHEN Verzeichnis hinterlegen müsst. Vergesst nicht, die Scripte so zu bennen wie ich es hier angebe und diese mit chmod +x ausführbar zu machen.

Installiert dies NIEMALS über ein bereits laufendes Etch, da hier schon einige Änderungen vorgenommen sein könnten. Das ist also nur für FRISCHE Etch Installationen gedacht. An verschiedenen Scripten sind Eingaben erforderlich. Lest bitte die Fragen genau durch bevor Ihr was eingebt.

Dann legen wir mal los.

pimp.sh

#!/bin/sh
clear
echo Das Script beginnt nun mit dem Pimpen Deines Debian Etch.
echo Hierbei werden die Repositories erweitert, ein neuer Kernel
echo installiert, alles auf den letzten Stand gebracht,
echo Multimediaerweiterungen installiert, nonfree Pakete wie
echo Flashplayer, Realplayer etc. nachgezogen. Zudem wird der
echo Nvidiatreiber installiert, gepatcht und fuer den Beryl
echo vorbereitet. Hierzu ist ein Neustart des Systemes noetig.
echo Das Script erwartet noch einige Eingaben, deswegen lauft
echo "nicht weg :)"
echo WARNUNG! Wendet das NUR auf eine ganz frische Installation an!
echo Stelle bitte sicher, dass das fortsetzen.sh script im gleiche
echo Verzeichnis vorhanden ist !
echo
echo Fortfahren? j/n:
read antwort

if [ "$antwort" = "j" ]

# Installation starten

then

rm /etc/apt/sources.old
mv /etc/apt/sources.list /etc/apt/sources.old

touch /etc/apt/sources.list

echo "#" > /etc/apt/sources.list
echo "# deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20060810)]/ etch main" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20060810)]/ etch main" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# Debian Etch (testing)" >> /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian/ etch main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.de.debian.org/debian/ etch main contrib non-free" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "#Debian Multimedia" >> /etc/apt/sources.list
echo "deb http://www.debian-multimedia.org stable main" >> /etc/apt/sources.list
echo "deb http://www.debian-multimedia.org testing main" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "#Debian Updates" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ etch/updates main" >> /etc/apt/sources.list
echo "deb-src http://security.debian.org/ etch/updates main" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# Debian Sid (unstable)" >> /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian/ sid main contrib non-free" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# Debian Experimental" >> /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian/ experimental main contrib non-free" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# Beryl Install" >> /etc/apt/sources.list
echo "deb http://debian.beryl-project.org/ etch main" >> /etc/apt/sources.list
echo "deb-src http://debian.beryl-project.org/ etch main" >> /etc/apt/sources.list
echo "" >> /etc/apt/sources.list
echo "# Cinelerra" >> /etc/apt/sources.list
echo "deb http://www.kiberpipa.org/~minmax/cinelerra/builds/athlonxp/ ./" >> /etc/apt/sources.list

gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907

gpg --armor --export 1F41B907 | sudo apt-key add -

wget -O - http://debian.beryl-project.org/root@lupine.me.uk.gpg | sudo apt-key add -

apt-get update

apt-get install kernel-package build-essential initrd-tools libncurses5-dev pkg-config xserver-xorg-dev mc

apt-get dist-upgrade

apt-get update

apt-get install crystalcursors

rm /usr/share/icons/default/index.theme

ln -s /etc/X11/cursors/crystalwhite.theme /usr/share/icons/default/index.theme

apt-get install dvdauthor dvdbackup dvdrip dvdrtools dvdstyler k3b k9copy kaffeine mplayer qdvdauthor vamps vlc vobcopy xdvdshrink xine-ui wine avidemux audacity libquicktime0 xaralx blender wings3d kopete amarok iceweasel-l10n-de kontact kmail akregator knode kpilot korganizer ksync kaddressbook bogofilter spamassassin clamav gnome-art libgnomesu0 glipper ksnapshot kpowersave powersaved ksysguard ttf-freefont kitchensync digikam xchat-gnome yakuake cinelerra kdenlive aquamarine beryl beryl-core beryl-manager beryl-plugins beryl-plugins-data beryl-settings beryl-settings-bindings emerald emerald-themes

apt-get install totem-mozilla w32codecs liblame0 flashplugin-nonfree streamtuner xmms msttcorefonts banshee realplayer acroread

apt-get -t unstable install f-spot sun-java5-plugin

apt-get install linux-image-2.6.21-1-k7 linux-headers-2.6.21-1-k7

update-rc.d -f gdm remove

update-rc.d gdm start 99 5 . stop 01 1 2 3 4 6 .

touch /etc/patchini1.diff

echo "--- inittab 2007-01-30 23:27:29.000000000 +0100" > /etc/patchini1.diff
echo "+++ inittab.neu 2007-05-27 12:27:15.000000000 +0200" >> /etc/patchini1.diff
echo "@@ -2,7 +2,7 @@" >> /etc/patchini1.diff
echo " # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $" >> /etc/patchini1.diff
echo "" >> /etc/patchini1.diff
echo " # The default runlevel." >> /etc/patchini1.diff
echo "-id:2:initdefault:" >> /etc/patchini1.diff
echo "+id:3:initdefault:" >> /etc/patchini1.diff
echo "" >> /etc/patchini1.diff
echo " # Boot-time system configuration/initialization script." >> /etc/patchini1.diff
echo " # This is run first except when booting in emergency (-b) mode." >> /etc/patchini1.diff

patch /etc/inittab < /etc/patchini1.diff

rm /etc/patchini1.diff

mkdir /work
cp fortsetzen.sh /work/fortsetzen.sh
chmod +x /work/fortsetzen.sh
ln -s /work/fortsetzen.sh /bin/fortsetzen
chmod +x /bin/fortsetzen

echo
echo Warte 5 Sekunden...
sleep 5
clear

echo Der erste Teil der Pimp-Aktion ist erledigt. Ich starte den Rechner nun neu.
echo Du kommst nach dem Reboot an die Eingabeaufforderung.
echo Das ist so gewollt, dass erstmal der XServer NICHT startet.
echo Melde Dich dann als Root an und starte den zweiten Teil des
echo Scriptes mit folgendem Befehl:
echo
echo fortsetzen
echo
echo Das Script wird dann das Nvidiamodul und die VirtualBox installieren.
echo Danach wird das System wieder so eingestellt, dass die Maschine
echo automatisch wieder den XServer hochfaehrt.
echo
echo Druecke eine beliebige Taste um die Maschine neu zu starten

read

reboot

else
clear
echo Vorgang abgebrochen
echo
fi

fortsetzen.sh

#!/bin/sh

cd /work

clear

echo Fahre mit der Pimp-Aktion fort
echo Wollen Sie die Installation fortsetzen? j/n:
read antwort

if [ "$antwort" = "j" ]

# Download und Installation starten

then

clear

echo Stoppe GDM

sleep 3

/etc/init.d/gdm stop

wget http://us.download.nvidia.com/XFree86/Linux-x86/1.0-9755/NVIDIA-Linux-x86-1.0-9755-pkg1.run
chmod +x NVIDIA-Linux-x86-1.0-9755-pkg1.run

./NVIDIA-Linux-x86-1.0-9755-pkg1.run -x

cd NVIDIA-Linux-x86-1.0-9755-pkg1/usr/src/nv/

# Erstelle Patchscript und patche Makefile.kbuild
touch patchpar.diff

echo '--- Makefile.kbuild 2007-02-27 08:59:25.000000000 +0100' > patchpar.diff
echo '+++ Makefile.kbuild.neu 2007-05-27 00:53:11.000000000 +0200' >> patchpar.diff
echo '@@ -74,6 +74,8 @@' >> patchpar.diff
echo '' >> patchpar.diff
echo ' EXTRA_CFLAGS += -I$(src)' >> patchpar.diff
echo ' EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-multichar -Werror -O -fno-common -msoft-float -MD $(DEFINES) $(INCLUDES) -Wsign-compare -Wno-cast-qual -Wno-error' >> patchpar.diff
echo '+PARAVIRT_OPS := $(shell grep "D paravirt_ops" /boot/System.map-$(shell uname -r) | colrm 9)' >> patchpar.diff
echo '+EXTRA_LDFLAGS := --defsym paravirt_ops=0x$(PARAVIRT_OPS)' >> patchpar.diff
echo '' >> patchpar.diff
echo ' #' >> patchpar.diff
echo " # We rely on these two definitions below; if they aren't set, we set them to" >> patchpar.diff

patch Makefile.kbuild < patchpar.diff

cd ../../../

# Installation der Treiber.
./nvidia-installer --x-module-path=/usr/lib/xorg/modules

cd ../

# Entferne Arbeitsverzeichnisse und Nvidiadownload
rm -r NVIDIA-Linux-x86-1.0-9755-pkg1
rm NVIDIA-Linux-x86-1.0-9755-pkg1.run

# Erweitere den XServer um die Compositergänzungen
nvidia-xconfig --composite
nvidia-xconfig --allow-glx-with-composite
nvidia-xconfig --render-accel
nvidia-xconfig --add-argb-glx-visuals

sleep 3

# Installiere VirtualBox
clear
echo Installiere VirtualBox
echo "Spaeter muss Ihr Useraccount zu der Benutzergruppe VBOXUSERS"
echo "hinzugefuegt werden. Damit ich weiss, welcher User hinzugefuegt"
echo "werden muss gebe bitte Deinen Nutzernamen an:"
read name
user=$name;

# Fehlende Dateien nachinstallieren
apt-get update
apt-get install bcc iasl xsltproc xalan libxalan110-dev uuid-dev zlib1g-dev libidl-dev libsdl1.2-dev libxcursor-dev libqt3-headers libqt3-mt-dev libasound2-dev libstdc++5 subversion

# Entwicklerversion -OSE- von VirtualBox holen
svn co http://virtualbox.org/svn/vbox/trunk vbox

# VirtualBox kompilieren
cd vbox
./configure
source ./env.sh
kmk all
cd out/linux.x86/release/bin/src
make
make install
cd ../

# Teststart des VBox Modules und Autostart einrichten
modprobe vboxdrv
echo vboxdrv >> /etc/modules

# VBoxDateien in die entsprechenden Verzeichnisse kopieren und linken
cp -prf *.so /usr/lib/
mkdir /usr/local/virtualbox
cp -prf * /usr/local/virtualbox/
ln -s /usr/local/virtualbox/VirtualBox /usr/local/bin/VirtualBox
ln -s /usr/local/virtualbox/VBoxSVC /usr/local/bin/VBoxSVC

# Nutzergruppe anlegen und Standarduser anlegen
groupadd vboxusers
usermod -G vboxusers -a $name
chmod 660 /dev/vboxdrv
chgrp vboxusers /dev/vboxdrv

# Die permissions.rules patchen, damit die Rechte korrekt nach dem Reboot bestehen bleiben
touch /etc/udev/permpatch.diff

echo "--- permissions.rules 2007-05-27 12:54:21.000000000 +0200" > /etc/udev/permpatch.diff
echo "+++ permissions.rules.neu 2007-05-27 12:56:12.000000000 +0200" >> /etc/udev/permpatch.diff
echo "@@ -120,4 +120,6 @@" >> /etc/udev/permpatch.diff
echo ' SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"' >> /etc/udev/permpatch.diff
echo ' SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"' >> /etc/udev/permpatch.diff
echo "" >> /etc/udev/permpatch.diff
echo '+KERNEL=="vboxdrv", GROUP="vboxusers", MODE="0660"' >> /etc/udev/permpatch.diff
echo "+" >> /etc/udev/permpatch.diff
echo ' LABEL="permissions_end"' >> /etc/udev/permpatch.diff

patch /etc/udev/permissions.rules < /etc/udev/permpatch.diff
rm /etc/udev/permpatch.diff

clear
echo VirtualBox Installation abgeschlossen
echo
sleep 3


# Setze den Standard Runlevel auf Runlevel 5

touch /etc/inipatch2.diff

echo "--- inittab 2007-05-27 12:27:15.000000000 +0200" > /etc/inipatch2.diff
echo "+++ inittab.neu 2007-05-27 13:29:04.000000000 +0200" >> /etc/inipatch2.diff
echo "@@ -2,7 +2,7 @@" >> /etc/inipatch2.diff
echo " # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $" >> /etc/inipatch2.diff
echo "" >> /etc/inipatch2.diff
echo " # The default runlevel." >> /etc/inipatch2.diff
echo "-id:3:initdefault:" >> /etc/inipatch2.diff
echo "+id:5:initdefault:" >> /etc/inipatch2.diff
echo "" >> /etc/inipatch2.diff
echo " # Boot-time system configuration/initialization script." >> /etc/inipatch2.diff
echo " # This is run first except when booting in emergency (-b) mode." >> /etc/inipatch2.diff

patch /etc/inittab < /etc/inipatch2.diff
rm /etc/inipatch2.diff

clear
echo Starte die Maschine in 5 Sekunden neu
sleep 5

reboot

else
clear
echo Vorgang abgebrochen
echo
fi

Der Beryl muss danach selbst gestartet werden. Unter System -> Einstellungen -> Sitzungen könnt Ihr wie gewohnt den "beryl-manager" als Startprogramm eintragen.

Nach Änderungen der Runlevel ist es nun möglich, mittels

init 3

an der Konsole den GDM zu stoppen. Mit

init 5

startet Ihr ihn wieder.

Die zwei Patchzeilen für den Nvidiapatch habe ich hier gefunden:
.: NVidia driver on a Linux Kernel 2.6.2x :. (http://grizach.servebeer.com/nvpatch/)
Hinweise und sehr gute Tipps zum VirtualBox - Install findet Ihr auf der HowtoForge, die mir bei der Sache auch in einigen Punkten sehr hilfreich war:
HowtoForge - Linux Howtos and Tutorials | Howtos about Linux and Open Source (http://www.howtoforge.org/)

Viel Spaß!

cu
Gargi