Debian Linux auf einer Nokia IP130 installieren

Aus Laub-Home Wiki

Vorbereitung

Flashen den Box:

Installation Debian Linux auf Nokia IP130

Als erstes muss die Platte aus der Nokia Box gebaut werden und diese an einen anderen Rechner gehängt werden (via USBtoIDE Adapter oder direkt per IDE). Nun kann die Platte mittels Debian Netinstall CD installiert werden. Am besten sorgt man dafür das es die einzige Festplatte im System ist, da man sonst darauf achten muss,das die richtige HDD für die Installation ausgewählt und der Boot Loader auch auf die richtige Platte geschrieben wird.
Achtung:
Es muss eine eigene /boot Partition am Anfang der Festplatte mit ca. 200MB angelegt werden, da sonst das System nach einem Kernel Update eventuell nicht mehr booten kann, da er das Kernel Image nicht mehr findet. Bei älteren Rechnern war das nun mal so :-)

Falls es nicht möglich ist, von der USB angeschlossenen Festplatte zu booten, kann sie in einem besthenden Linux System als chroot Umgebung eingebunden werden und hier alle nötigen Änderungen erfolgen:

Anschließend muss man die Grub Konfig und die fstab dann soweit anpassen:
/boot/grub/menu.lst

root    (hd0,0)
kernel  /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet

Achtung!!! Bei Debian Squeeze ist es sda1
/etc/fstab bei Lenny

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda1       /boot           ext3    errors=remount-ro 0       1
/dev/hda2       /               ext3    errors=remount-ro 0       1
/dev/hda5       none            swap    sw              0       0

/etc/fstab bei Squeeze

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /boot           ext3    errors=remount-ro 0       1
/dev/sda2       /               ext3    errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0

Nun noch einen Bug mit dem "pcspkr" beheben:

echo "blacklist snd-pcsp" >> /etc/modprobe.d/blacklist.conf

Anschließend muss mindestens noch der Openssh Server installiert werden:

aptitude update
aptitude install openssh-server

Nun sollten noch folgende Einstellungen unternommen werden um die Serielle Konsole zu aktivieren.

Einrichtung der Seriellen Konsole Grub v1

Hierzu muss als erstes der Grub Bootloader angepasst werden:

nano /boot/grub/menu.lst

In dieser Datei müssen folgende Zeilen hinter den Eintrag "Pretty colours" und unbedingt vor die Zeile "### BEGIN AUTOMAGIC KERNELS LIST" hinzugefügt werden:

# Pretty colours
color cyan/blue white/blue

# Enable Serial Console
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console

und folgendes angepasst werden:

title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-686 root=/dev/hda2 ro quiet console=tty0 console=ttyS0,9600n8
initrd          /initrd.img-2.6.26-2-686

title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-686 root=/dev/hda2 ro single console=tty0 console=ttyS0,9600n8
initrd          /initrd.img-2.6.26-2-686

Damit diese Einstellungen auch nach einem Kernel Update da sind sollten folgende Zeilen auch noch angepasst werden:
/boot/grub/menu.lst

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/hda2 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)
......
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet console=tty0 console=ttyS0,9600n8
......
## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(single-user) single
# altoptions=(single-user mode) single console=tty0 console=ttyS0,9600n8

Einrichtung der Seriellen Konsole Grub v2

folgende Datei editieren: /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,9600n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1"

anschließend aktivieren:

update-grub

Serielle Konsole nach dem Booten

Nun noch die inittab anpassen:

nano /etc/inittab
/etc/inittab anpassen
	kommentieren:
		#2:23:respawn:/sbin/getty 38400 tty2
		#3:23:respawn:/sbin/getty 38400 tty3
		#4:23:respawn:/sbin/getty 38400 tty4
		#5:23:respawn:/sbin/getty 38400 tty5
		#6:23:respawn:/sbin/getty 38400 tty6
	auskommentieren:
		T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

Netzwerk Interfaces anpassen

In folgender Datei müssen alle Netzwerkinterface Einträge gelöscht werden:

nano /etc/udev/rules.d/70-persistent-net.rules

Bei Debian Squeeze Netzwerkkartentreiber nachinstallieren

Bei Debian Squeeze sind die Netzwerkkarten Treiber aus den Free Repositorys geflogen, deshalb muss man hier die NON Free Repositorys einbinden und die Firmware nachinstallieren:
/etc/apt/sources.list

# Non-Free Repo
deb http://ftp.de.debian.org/debian/ squeeze non-free
deb-src http://ftp.de.debian.org/debian/ squeeze non-free

Nun die Firmware nachinstallieren:

aptitude update
aptitude install firmware-linux-nonfree

Starten der Nokia Box

Nun kann das System heruntergefahren werden und die Platte wieder in die Nokia Box gebaut werden. Nun sollte man die Box mit einem Konsolen Kabel mit dem PC verbinden und auf diesem zum Beispiel mit Putty eine Konsolen Verbindung zur Box öffnen (Achtung: Flow control auf NONE setzten). Nun sollte wenn alles richtig eingerichtet ist beim Einschalten der Nokia Box die Bootmeldungen im Konsolen Fenster erscheinen.

Modul Bug beheben

Um folgende Fehler beim Booten zu beseitigen:

FATAL: Error inserting fan (/lib/modules/2.6.26-2-686/kernel/drivers/acpi/fan.ko): No such device
WARNING: Error inserting process(/lib/modules/2.6.26-2-686/kernel/drivers/acpi/processor.ko): No such device
FATAL: Error inserting thermal (/lib/modules/2.6.26-2-686/kernel/drivers/acpi/thermal.ko): Unknown symbol in module, or unknown parameter

muss in der Datei

/usr/share/initramfs-tools/scripts/init-premount/thermal

folgende Zeilen auskommentiert werden:

i386|amd64|ia64)
        #modprobe fan
        #modprobe thermal
        ;;
esac

Danach das initrd image mit folgendem Befehl neu bauen:

update-initramfs -u /boot/initrd.img-2.6.26-2-686

und neustarten. Nun sollten die Fehler beseitigt sein.

ACPI deaktivieren

Um den folgenden Fehler zu beseitigen muss man den Kernel Optionen in der Datei /boot/grub/menu.lst acpi=off anhängen.
Fehler:

 ACPI: Unable to load the System Description Tables

Lösung: /boot/grub/menu.lst

.....
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet acpi=off console=tty0 console=ttyS0,9600n8
.....
title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda2 ro quiet acpi=off console=tty0 console=ttyS0,9600n8
initrd          /boot/initrd.img-2.6.26-2-686

Festplatte in den Standby schicken

Fstab anpassen

Interessant ist es natürlich auch, die Festplatte bei nicht Benutzung in den Standbymodus zu schicken. Dafür muss als erstes die Festplatte mit der Option noatime, /tmp und /var/run in den Ram gemountet werden:
/etc/fstab:

/dev/hda1       /               ext3    errors=remount-ro,noatime 0       1
tmpfs           /tmp            tmpfs   defaults        0       0
tmpfs           /var/run        tmpfs   defaults        0       0

Syslog anpassen

Nun noch die dämlichen Syslog Meldungen abschalten die alle 20 Minuten kommen:

Aug 20 05:55:19 localhost -- MARK --

/etc/default/rsyslog

RSYSLOGD_OPTIONS="-m 0"

Man kann in der Datei /etc/rsyslog.conf unterbinden das mehrere Logfiles geschrieben werden in dem man folgende Zeilen auskomentiert:

#auth,authpriv.*                        /var/log/auth.log

#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
#kern.*                         -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
#mail.*                         -/var/log/mail.log
#user.*                         -/var/log/user.log

#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
#mail.err                       /var/log/mail.err

#news.crit                      /var/log/news/news.crit
#news.err                       /var/log/news/news.err
#news.notice                    -/var/log/news/news.notice

#*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
#*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

Falls man einen SysLog Server hat, kann man alle Nachrichten dort hin schicken und das Lokale Logging komplett deaktivieren:

*.* @192.168.1.1
#*.*;auth,authpriv.none          -/var/log/syslog

und nun den Syslog Dienst neustarten:

/etc/init.d/rsyslog restart

Swappen anpassen

Um das lästige Swappen ein wenig zu veringern sollte folgende Zeile der Datei
/etc/sysctl.conf angehängt werden:

vm.swappiness=0

Cron Hourly deaktivieren

in der Datei /etc/crontab sollte folgende Zeile auskomentiert werden:

#17 *   * * *   root    cd / && run-parts --report /etc/cron.hourly

NTP Drift File aufs Ramfs legen

in der Datei sollte folgende Option auf das TMP Dir umgelegt werden:
/etc/ntp.conf

driftfile /tmp/ntp.drift

Samba zum Schweigen bringen

Um das Logging des samba Dienstes auf /tmp umzulegen wird folgendes dem init script unter der start Option hinzugefügt:
/etc/init.d/samba

case "$1" in
start)

# Logfiles auf /tmp umleiten
if [ ! -d /tmp/samba ] ; then
     mkdir /tmp/samba
fi
if [ ! -d /var/log/samba ] ; then
     rm -rf /var/log/samba
     ln -s /tmp/samba /var/log/samba
fi
if [ ! -d /var/cache/samba ] ; then
     rm -rf /var/cache/samba
     ln -s /tmp/samba /var/cache/samba
fi

Nun kann man noch das Logging weit moeglichst deaktivieren und alle Ausgaben an das Syslog schicken, hierzu müßen folgende Zeilen in die Global Sektion der smb.conf:

log file = /tmp/samba/samba-log.%m
log level = 0
syslog only = yes

Hier noch ein Tipp, da die Box keinen Drucker Anschluss hat, braucht man beim Samba Server auch keine Druckerunterstützung. Hierbei wird auch unter Windows das Symbol "Drucker und Faxgeräte" im Root Verzeichnis des Samba Servers deaktiviert.
/etc/samba/smb.conf unter der "Global" Sektion:

printcap name = /dev/null
load printers = no
printing = bsd
show add printer wizard = no
disable spoolss = yes

Mehr Infos zum Samba konfigurieren

Samba Server konfigurieren

NoFlushD installieren

Installieren:

aptitude install noflushd

Konfigurieren: /etc/default/noflushd

# This is a configuration file for /etc/init.d/noflushd.

# Tune this file to suit your needs.  For a standard laptop setup,
# you stand a good chance that simply uncommenting the entries
# for TIMEOUT, and DISKS will suffice.

# Time in minutes before a disk is spun down. The disk is only spun
# down after this much time has passed without any reads from the disk.
TIMEOUT="5"

# Disks to spin down. Noflushd currently only works with ide hard disks;
# scsi disks require a kernel patch. You may spin down multiple disks by
# listing them all here separated by spaces. If this variable is unset,
# noflushd tries to auto-detect all disks on the system, and spins them
# down using the default timeout given above.
DISKS=/dev/hda

# If you prefer to craft your own set of parameters to handle more complex
# situations, uncomment this line and see noflushd(8) for details about the
# parameters the daemon takes. Note that if this line is uncommented, the
# TIMEOUT and DISKS lines above are ignored.
#PARAMS="-r /dev/sdb -n 60,5 /dev/hda -t 15,default /dev/hdc"

Will man nun wissen wie lange die Festplatte so im Standbymodus verbleibt muessen folgende Einstellungen vorgenommen werden:
/etc/default/noflushd

# This is a configuration file for /etc/init.d/noflushd.

# Tune this file to suit your needs.  For a standard laptop setup,
# you stand a good chance that simply uncommenting the entries
# for TIMEOUT, and DISKS will suffice.

# Time in minutes before a disk is spun down. The disk is only spun
# down after this much time has passed without any reads from the disk.
TIMEOUT="5"

# Disks to spin down. Noflushd currently only works with ide hard disks;
# scsi disks require a kernel patch. You may spin down multiple disks by
# listing them all here separated by spaces. If this variable is unset,
# noflushd tries to auto-detect all disks on the system, and spins them
# down using the default timeout given above.
DISKS=

# If you prefer to craft your own set of parameters to handle more complex
# situations, uncomment this line and see noflushd(8) for details about the
# parameters the daemon takes. Note that if this line is uncommented, the
# TIMEOUT and DISKS lines above are ignored.
#PARAMS="-r /dev/sdb -n 60,5 /dev/hda -t 15,default /dev/hdc"
PARAMS="-t 2 -v /dev/hda "

entscheidend ist hier der Schalter -v, damit wird die Ausgabe im Syslog aktiviert:

May 10 18:11:34 hostname noflushd[2319]: Spinning down /dev/hda.
May 10 18:17:40 hostname noflushd[2319]: Spinning up /dev/hda after 6 minutes.

Nun kann man hierfür ein eigenes Logfile schreiben lassen. Bei syslog-ng geht dies durch das anhängen folgendes Codes:
/etc/syslog-ng/syslog-ng.conf

# noflushd
destination d_noflushd { file("/var/log/noflushd"); };
filter f_noflushd { program(noflushd); };

log {
        source(s_all);
        filter(f_noflushd);
        destination(d_noflushd);
};

oder by rsyslog:

# Logfile for noflushd
if $programname == 'noflushd' then /var/log/noflushd

Und schon bekommt man ein Logfile in dem Man sehen kann wann die HDD schlafen ging und nach welcher Zeit sie wieder wach wurde.

Debugging

Wenn die Platte doch wieder angeht, kann so geprüft werden wer der Übeltäter ist:
Festplatten Zugriffe unter Linux Protokollieren

Quellen