Installation von Linux und Programmen

Hardware
partitionieren und formatieren
normale Linux-Installation
Bootloader, Systemstart
Kernelmodule
Runlevel
Kernel schnitzen
aus sourcecode ein Programm installieren
shared libraries
Debian- und rpm-Packagemanagement

 

Hardware

Vorbereitung

SuSe Hardwaredatenbank cdb suse.de
Hersteller, Erfahrungsberichte, Installationsquelle: CD, DVD, NFS, FTP, SMB(Windows-Freigabe), FAT16, FAT32

NFS: mount -t nfs 192.168.1.1:/daten/install /mnt/

Bootdisketten unter Linux erstellen dd if=/media/cdrom/disks/bootdisk of=/dev/fd0
Bootdisketten unter Windows erstellen R:\dosutils\rawwrite\rawwrite.exe(oder rawwritewin.exe)

Im /proc/-Verzeichnis kann man nur lesen(z.B. mit cat /Verzeichnis/Datei).

/proc/interrupts IRQ-Vergabe
/proc/pci PCI-Vergabe, auch mit lspci
/proc/ioports  
/proc/dma  
/usr/share/pci.ids HardwareHerstellerliste
pciids.sourceforge.net

Download der aktuellen Herstellerliste
pci.ids.bz2, bunzip pci.ids.bz2, mv pci.ids /usr/share

/proc/Kcore Arbeitsspeicher
/proc/sys/net/ip-v4/ip-forward Routerweiterleitung
/proc/cpuinfo  
/proc/version Linux-Version
/proc/devices Geräte
/proc/partitions  

In einigen Fällen kann man auch schreibend ins /proc-Verzeichnis eingreifen. Mit
echo 1 > /proc/sys/net/ipv4/ip_forward macht man z.B. einen Linuxrechner zum Router. Dieser Befehl muß bei jedem reboot ausgeführt werden.

 

Seitenanfang oder Hauptseite

partitionieren und formatieren

/dev/hda1 /boot ext2 20 MB, innerhalb der 1. 1024 Mb
/dev/hda1 / reiserFS 2 Gb
/dev/hda1 swap swap 128 Mb
       

Wenn Windows mit im Spiel ist sollte erst Windows98, dann WindowsXP(NT, 2000) und als Letztes Linux installiert werden.
Das Bootflag sollte auf / gelegt werden.
Partitionierung mit fdisk /dev/hda oder bequemer cfdisk. 1 Block entspricht 8,2 Mb.

Weiteres zum Thema in Dateien, Verzeichnisse und Geräte.

Seitenanfang oder Hauptseite

 

normale Linux-Installation

 

Manuelle Installation, Sprache
Netzwerkkartentreiber laden, Installation über Netzwerk NFS-Server: 192.168.1.1, Verzeichnis: /linux/install

 

Seitenanfang oder Hauptseite

 

Bootloader, Systemstart

normale Linux-Installation

Manuelle Installation, Sprache
Netzwerkkartentreiber laden, Installation über Netzwerk NFS-Server: 192.168.1.1, Verzeichnis: /linux/install

 

MBR

1 MBR pro Platte, 1 boot-MBR pro Partition, Größe 466 Byte
Der Bootloader gehört innerhalb der ersten 1024 Zylinder, es sei denn, es wurde der LBA-Modus der Platte im BIOS eingestellt.
Bootreihenfolge: BIOS, MBR, Hardwareadresse zu lilo oder grub, Kernel und initrd(/boot muß ext2 sein), init 1-5

Fehler:

piepen MBR defekt
nichts nichts geladen
L Plattenparameter im BIOS falsch oder Platte ist defekt
LI Plattengeometrie(Image auf falsche Größe) oder boot.b fehlt
lilo geht, der Rest nicht Lilo falsch eingestellt oder Kernel umbenannt
Kernel steht Filesystemunterstützung fehlt

reparieren: mit CD starten, lilo neu ausführen, Sicherung zurück spielen

 

Bootsektor kopieren:
dd if=dev/hda of=/tmp/bootsek.lin count=1 bs=512
Bootdiskette erstellen:
dd if=/tmp/bootsek.lin of=/dev/fd0
oder
dd if=/boot/vmlinuz of=/dev/fd0

Starten unter Windows mit boot.ini:
c:\bootsek.lin

Wenn der Bootprompt von LILO oder GRUB beim Start des Systems erscheint, dann erwartet der Bootmanager dei Eingabe eines Systems(meist ist nach Ablauf von einigen Sekunden eine Standardeingabe voreingestellt).
LILO boot: linux aha152x=0x300,10,7
startet Linux unter LILO mit SCSI-Unterstützung.
kernel /bzImage-2.2.14 ro root=/dev/hda3 aha152x=0x300,10,7
startet Linux unter GRUB mit SCSI-Unterstützung.

Kernelmeldungen werden mittels klogd in die Datei /var/log/messages geschrieben. Dort stehen auch weitere Meldungen, die der Daemon syslod hereinschreibt. Diese Meldungen können während der Laufzeit mit
tail -f /var/log/messages eingesehen werden.
Da die Daemons hierfür schon geladen sein müssen, fehlt hier der Beginn des Bootvorganges. Diesen kann man mit dmesg aufrufen.

ohne Bootmanager: an 1. Sektor der 1. Platte den Bootloader oder Kernel auf Floppy; rdev Kernel (root-Device angeben)

lilo

/etc/lilo.conf
man 5 lilo.conf

# globale Einstellungen    
  append="reboot=warm" Übergabe von Kernelparametern, hier keine Speicherprüfung
  boot=/dev/hda Bootinfos auf dem MBR von /hda möglich ist auch /dev/hda4, für die Beschreibung des Bootsektors der Partition
  vga=normal  
  lba32 große Platten über 1024 Cylinder, bei LBA-Modus können angesprochen werden
  message=/boot/message Datei mit Nachrichten
  timeout=300 in Zehntel-Sekunden oder prompt, wenn kein timeout erwünscht
  Image=/boot/vmlinuz Kernelangabe, auch /boot/bzimage-1.0.9, ist bei Standardkernel nicht nötig
  label="Suse Linux" Anzeige im Bootmenü
  root=/dev/hda2  
  initrd=/boot/initrd die zu ladende initiale Ramdisk, Kernelmodule(z.B. reiserFS)
# andere OS    
  other=/dev/hda3  
  label=dos  
     
  other=/dev/hda2  
  alias=win auch bei Eingabe des kürzeren Wortes win wird Windows gestartet
  label=Windows  

weitere lilo-Dateien: /boot/boot.b, /boot/boot-menu.b, /boot/boot-tmp.b
anderes Konfigurationsfile angeben: lilo -C Datei
Nach Änderung der /etc/llo.conf "lilo" als Befehl ausführen!!!

initrd bauen

1. /lib/modules/2.4.18-default/kernel/fs/xfs/xfs.o
2. vi etc/sysconfig/kernel
3. einbauen: INITRD_MODULES="reiserfs xfs" , abspeichern
4. mk_initrd
5. lilo

Mit lilo -u kann der Bootmanager wieder entfernt werden.

 

grub

/sbin/grub-install /dev/hda zur Installation von grub einmalig ausführen oder bei Zerstörung des MBR
/boot/grub/menu.lst
(fd0),=floppy, (hd0,1)=1.Platte,1.Partition

/boot/grub/grub.conf:

color write/blue black/gray  
default 0 der erste Eintrag wird standardmäßig benutzt
timeout 8 in Sekunden
gfxmenu (hd0,0)/boot/message irgendwelchen Nachrichten eintragen
splashimage=(hd0,0)/grub/splash.xpm.gz Hintergrundbild
   
title Linux  
kernel (hda2,0)/vmlinux root=/dev/sdb3 vga=0x314 hdc=ide-scsi ide=nodma apm=off aspi=off initrd (hd0,2)/boot/initrd kernelstandort, root-FileSystem(/), VGA-Auflösung(oder ask25x80), Brenner(ide->scsi), APM=aus, ASPI=aus, Standort-initrd(zusätzliche Module)
   
title linux-alt (2.2.14)  
root (hd0,0) Nicht das Wurzelverzeichnis, sondern ie Partition, auf der die Kerneldateien und die grub-Konfigurationsdateien liegen, Nummer der Platte und Partition
kernel /bzImage-2.2.14 ro root=/dev/hda3 Angabe des Kernels auf der Partition der root-Angabe
initrd /initrd-2.2.14.img Ramdiskdatei
   
title WinXP  
root(hd0,0) Partition der boot.ini
chainloader +1 1. Teil der Windows Partition
   
title win98  
map (hd0,0) (hd0,1) Windows98 bootet normalerweise nur von der ersten Partition der ersten Festplatte. Durch den Befehl map (hd0,0) (hd0,1) wird die Partition hd0,0 zur zweiten Partition (hd0,1) und mit der nächsten Zeile wird entsprechend die zweite Partition zur ersten. Aus der Sicht des Windows-Systems ist also die zweite Partition jetzt die erste und umgekehrt. Damit ist für Windows die Welt wieder in Ordnung und es glaubt, von der ersten Partition zu booten.
map (hd0,1) (hd0,0)  
rootnoverify entspricht der Angabe root bei Linux-Einträgen, ohne mount
chainloader +1 Windows wird über einen chainloader gebootet

 

Systemstart

man bash invocation

/etc/profile user-unabhängig, Befehle und Variablen
~/.bash_profile  
~/bash_login  
~/.profile wird immer abgearbeitet
~/.bashrc  
~/.bash_logout für ev. Aufräumarbeiten
   
su -l login-shell mit enviroment nach Systemstart
Bootloader loswerden:
fdisk /mbr bis Version win-me
Bei Win2k muss man von der Windows CD booten, im Setup Taste R dann K drücken. In der Wiederherstellungskonsole Installieren auswählen, passwort eingeben, dann in der folgenden Eingabeaufforderung FIXMBR eingeben, mit j bestätigen und rebooten.
Bei XP genauso, außer Taste k.

 

Seitenanfang oder Hauptseite

 

Kernelmodule

Der Linuxkernel ist kein monolithisches Gebilde mehr, wie früher, sondern setzt sich aus verschiedenen Modulen zusammen. Diese Module können mit dem Kernel fest verdrahtet sein, was bei grundlegenden Eigenschaften, wie Gerätetreiber oder Treiber des Dateisystems, auch sinnvoll sein. Bei anderen Treibern, wie USB-Geräte, ist es eher sinnvoll, diese Module nachzuladen, sowie, nach Gebrauch, wieder zu entladen. Alles was fest in dem Rechner steckt, sowie alles was zum booten gebraucht wird, sollte fest im Kernel eingebunden sein.
Die Kernelmodule des Linux-Kernels findet man unter /lib/modules/Kernelversion. Die Module bestehen aus Objektdateien (Endung .o) und sind in diversen Unterverzeichnissen verteilt.
Das Programm depmod untersucht die Abhängigkeiten aller Module und schreibt die Ergebnisse in die Datei /lib/modules/Kernelversion/modules.dep. Jedesmal, wenn neue Module ins Modulverzeichnis kopiert werden, muß anschließend dieses Programm aufgerufen werden.

lsmod zeigt alle geladenen Module im Format Name, Größe, Wie-oft-gebraucht und Liste der Module, die das Modul benötigen
insmod ne io=0x300 irq=5 Laden eines Treibers, hier ne2000 mit Angabe zu IRQ und IO-Adresse
modprobe ppa läd einen Treiber, incl. nötige Zusatzmodule, Modulparameter in /etc/modules.conf, hier Zip-Drive mit Parallelporttreiber
rmmod -r treiber entladen des Treibers, r=incl. aller Abhängigkeiten
modinfo 3c509 Treiberinformationen
options ne io=0x320 irq=7 Parameterübergabe für /etc/modules.conf, für das Programm modprobe
alias Aliasname Modulname einen verständlichen Namen für ein Modul definieren
pre-install Modul Kommando Ausführen eines Befehls(z.B. Laden eines anderen Moduls) vor dem eigentlichen Laden des Modules
post-install Modul Kommando Ausführen eines Befehls nach dem eigentlichen Laden des Modules
pre-remove Modul Kommando Ausführen eines Befehls vor dem eigentlichen Ent-Laden des Modules
post-remove Modul Kommando Ausführen eines Befehls nach dem eigentlichen Ent-Laden des Modules
uname Ausgabe von Kernelinformationen

 

 

Seitenanfang oder Hauptseite

 

Runlevel

Runlevel werden in dem Verzeichnis /etc/inittab definiert. Mit dem Befehl init 5 wechselt man in den Runlevel 5.

Runlevel 0 Halt
Runlevel 1 Singel User Mode, ohne Netz, für die Systemverwaltung
Runlevel 2 Multi User Mode, ohne Netz
Runlevel 3 Multi User Mode mit Netz
Runlevel 4 reserviert
Runlevel 5 Multi User Mode mit Netz und grafischer Oberfläche
Runlevel 6 reboot

shutdown, reboot, poweroff, suspend und halt sind Befehle den rechner runterzufahren, bzw. zu rebooten.

Um ein Programm automatisch in einem Runlevel laufen zu alassen, braucht man ein Start-Stop-Script, welches man in das jeweilige Verzeichnis /etc/init.d/ symbolisch verlinkt. Die eingetragenen scripte werden der Reihenfolge nach abgearbeitet(deshalb auch die Zahlen).

Start-Stop-Script

case "$1" in
start) /usr/local/thttpd
;;
stop) killall thttpd
;;
esac

/etc/init.d/rc3.d # ln -s /etc/init.d/nfs S17nfs - für den Start, slink in runlevel eintragen
/etc/init.d/rc3.d # ln -s /etc/init.d/nfs K17nfs - für Stop, slink in runlevel eintragen

Seitenanfang oder Hauptseite

 

Kernel schnitzen

benötigt make, gcc, configure; installation z.B. mit yast -i make; Informationen zur z.B. cpu mit cat /proc/cpuinfo

aktuelle Kernelversion besorgen: kernel.org
Versionen betehen aus Major.Minor.Patch(Bsp. 2.4.24)
Bei der Minor-Nummer bedeutet eine gerade Zahl eine stabile Version und eine ungerade, das hinzugekommene Teilkomponenten noch getestet werden.

sux-l zum Wechseln zu root mit nötigen Umgebungsvariablen in X
nach /usr/src/ entpacken (tar xjvf datei.gz)
ln -s /usr/src linux-2.4.24 linux link erzeugen
cd /usr/src/linux
Zur Auswahl der Kernelmodule nimmt man make xconfig(dialog-Grafik) oder make menuconfig(dialog-Text) oder make config(text), wobei xconfig bequemer zu benutzen ist.
Alles was man zum booten usw. braucht, als Kernel oder Modul, wird jetzt eingetragen:
z.B. loadable, Prozessor, block device(lspci), FileSystem(reiserfs, MSDOS, NFS, loopback Device, usw.), Network Device + Options, character support, General setup (elf binaries, apm, aspi) save + exit
.config
make dep
make bzImage
make modules
make modules installation
cp /usr/src/linux arch/i386/boot/bzImage /boot

vi /boot/grub/menulist, bzw. lilo einstellen
Reboot

Das dauert eine Weile.

Beim 2.6er-Kernel heißt es
make config, make, make modules install

Seitenanfang oder Hauptseite

 

aus sourcecode ein Programm installieren

benötigt gunzip, gzip, bzip, bzip2, tar, configure, make, weitere Programme und devel-libraries je Anforderung des Programms
Quellcode(tar-Archiv, ) besorgen, auspacken, Readme lesen

cd /usr/src  
bzcat Archivname.tar.bz2 | tar -xvf - Auspacken eines bz2-gepackten Archivs, "Leerzeichen -" am Ende ist notwendig
tar -xvzf Datei.tar Auspacken eines tar-Archivs,x=extract, v=verbose-Anzeige, z=zip oder gzip(*.bz), f=file=Datei, j=entpacken von bz2-Archiven(bzcat ist damit nicht notwendig)
cd ins erzeugte Verzeichnis
./configure makefile erzeugen, ev. Nachbearbeiten(Textdatei, Pfade nachbearbeiten, etc.), Erfolg wird mit "Creating Makefile" quittiert
make Programm(e) erzeugen + damit makefile kompilieren
make install Programme + man-pages installieren, in Verzeichnisse schieben
ln -s /Pfad/datei linkname link erzeugen, um ihn danach auf die X-Oberfläche zu schieben
   

www.acme.com hat viele Programme

Reihenfolge make makefile:
./configure Quelle.c(Punkt für den Pfad des makefiles)->
Präprozessor ->
Quelle.cc ->
compiler ->
Quelle.o ->
linker ->
quelle.exe

ldconfig für die shared libraries ausführen

Start-Stop-Script

Beispiel /etc/init.d/thttpd:

case "$1" in
start) /usr/local/thttpd
;;
stop) killall thttpd
;;
esac

Seitenanfang oder Hauptseite

 

shared libraries(wie Windows dll's)

shared libraries sind Programmteile, die von mehreren Programmen genutzt werden können, aber nur ein Mal in den Speicher geladen werden.
bash -> ld.so - linux-loader(z.B. ldd /bin/df), läd die für das Programm benötigten libraries, erst danach wird das eigentliche Programm von ld.so aufgerufen
/etc/ld.so.conf - Pfade der shared libraries

ldd /bin/ls - benötigte Bibliotheken einer binaryDatei ermitteln, hier ls
feststellen, ob die Bibliotheken geladen sind(für das gesamte OS nur einmal)
fehlende in den Speicher laden
Programm in den Speicher schieben, Programm starten

Suche nach Bibliotheken in:
LD_LIBRARY_PATH in diese Umgebungsvariable werden die Verzeichnispfade der libraries eingetragen
z.B. export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/etc erweitert das Suchmuster um /etc

ldconfig integriert alle Libraries die gefunden werden in die Datei, muß nach Installation von Programmen neu ausgeführt werden
/etc/ld.so.cache enthält eine binäre Liste der schon benutzten libraries

Pfade werden gesucht in:
/etc/ld.so.cache
/lib - beim booten
/usr/lib - nach dem booten
/etc/ld.so.conf

Treiber laden

 

Seitenanfang oder Hauptseite

 

Debian- und rpm-Packagemanagement

 

rpm Red Hat Packagemanagement

einfache Installation und Deinstallation
installierte rpm-Archieve werden in einer Datenbank erfasst
Der Name für ein rpm-Paket lautet z.B. xnc-5.0.2-x86.rpm
Quelle: www.rpmfind.net, ftp.gwdg.rpm

rpm -qa Archivname Liste aller installierten Pakete, auch -q --all
rpm -qi xdevel Infos(Paket ohne Versionsnummer eingeben), auch --query --info
rpm -ql Archivname welche anderen Pakete werden benötigt, auch --list
rpm -qf Datei Dateien zu welchem Programm
rpm -qpR Paket Anzeige der weiter benötigten Bibliotheken = rpm --query --require
rpm –i Archivname Installation und Link auf die grafische Oberfläche, auch --install
rpm -e Archivname Datei deinstallieren
rpm -Uhv Archivname update
rpm -qd Paket Auflisten der Dokumentationsdateien, auch --docfiles
rpm -q --whatrequire Datei wird das Paket von anderen Programmen benötigt?, auch --whatrequires Funktion ist möglich
rpm -q --scripts Paket | less gibt alle 4 scripts auf Standardout, sollte mit less oder cat gepiped werden
rpm -e Paket Deinstallation eines Paketes, auch --uninstall

 

Bibliotheken automatisch suchen:
for i in $(rpm -qpR xnc.rpm);
do test -e /lib/$i && echo $i ok || echo Fehler
test -e /usr/$i && echo $i ok || echo Fehler2
done

 

Debian dpkg

Debian ist stabiler, aber nicht so aktuell. Installierte Programme lassen sich besser deinstalieren.

unpack, configure, /etc/dpkg/dpkg.cfg, /var/lib/dpkg/*, /etc/apt/apt.conf, /etc/apt/sources.list, dpkg, dselect, dpkg-reconfigure, apt-get, (atic?), alien

Programmname_Versionsnummer_Architektur.dep

/var/lib/dpkg/* Infos über Pakete, , wird von dpkg genutzt, /available=Paketinformationen, /status=Status der Installation, /info=scripte und Prüfsummen
dpkg -i Paketdatei.dep Installiert das Paket, andere Schreibweise --install, entspricht rpm -i
dpkg -R -i Verzeichnis installiert alle Pakete in dem Verzeichnis
dpkg -p Paketname Informationen aus der Datei /var/lib/dpkg/available, auch --print-avail
dpkg -r Paket deinstalliert Paket , auch --remove
dpkg -P Paket deinstalliert alle Pakete, auch --purge
dpkg -l Paketnamensmuster zeigt alle installierten Paketnamen, hier alle Pakete nach dem Muster, auch --list
dpkg -L Paket Anzeige aller Dateien eines Paketes, auch --listfiles
dpkg -reconfigure Paket erneutes rekonfigurieren des Pakets, hat aber nur Bedeutung, wenn ein Paket ein debconf-Script enthält
dpkg-deb Packen und Entpacken, wird von anderen Programmen benutzt
apt-get upgrade Paket Paketbeschreibungen(/etc/apt/sources.list)
apt-get install Paket Installation des Programms (in /etc/apt/apt.conf.d oder /etc/apt/apt.conf. sind die Informationen gespeichert)
apt-get remove Paket Deinstallation des Programms
apt-get source Paket von Quelle wird installiert , die Quellen(z.B. Internet), von denen die Programme gezogen werden müssen vorher definiert werden
deselect Menü für dpkg und apt-get
alien –to-rpm Paket.dep Debian zu rpm-Paket umwandeln
alien –to-dep Paket.rpm rpm zu Debian-Paket umwandeln

Die Installation besteht aus folgenden Einzelschritten:
1. Die Kontrolldateien des neuen Paketes werden entpackt.
2. Wenn eine ältere Version des selben Paketes bereits installiert war, wird das PreRemove-Script der älteren Version ausgeführt.
3. Das PreInst-Script des neuen Paketes wird ausgeführt.
4. Die Dateien des neuen Paketes werden entpackt und gleichzeitig werden die Dateien einer eventuell existierenden älteren Version gesichert, so daß im Falle eines Fehlers die Installation des neuen Paketes rückgängig gemacht werden kann.
5. Wenn eine ältere Version existierte, dann wird das PostRemove-Script der älteren Version ausgeführt.
6. Das neue Paket wird durch das Abarbeiten des PostInstall-Scripts konfiguriert.

Seitenanfang oder Hauptseite