Debian Linux auf einer Nokia IP130 installieren
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
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
- Festplatten Zugriffe minimieren: http://www.spencerstirling.com/computergeek/powersaving.html
- Grub2 Serial Console: http://forum.ubuntuusers.de/topic/grub-2-serielle-konsole/?highlight=light#post-2506397