Archive

Posts Tagged ‘Debian’

Projekt Pause

May 12th, 2010 Kettil No comments

DokumentIch habe leider gerade keine Zeit  das Projekt “ReadOnly Debian on Wrap” weiterzuführen. So bald ich wieder Zeit habe, werde ich die Dokumentation weiterführen. Ich hoffe, dass ich zwischen durch mal kleine HowTo veröffentliche, die nachträglich ins Projekt eingepasst werden.

Gerade über das Thema ReadOnly bin ich nicht so glücklich und muss mal schauen, wie ich es am besten löse.

ShortUrlShortUrl Categories: HowTo, Linux Tags: , , , ,
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

[HowTo] Debian auf einer CF-Karte installieren

December 28th, 2009 Kettil No comments

Dies ist der erste Abschnitt von meinem Projekt “ReadOnly Debian on Wrap”. Das Ziel des Projektes ist ein „read only“ System auf einer CompactFlash auf einem Wrap “wrap2e3″ laufen zu bekommen. Der Server soll mein Netzwerk verwalten und braucht dafür folgende Dienste DHCP, Bind9, NTP und ein WINS-Server.

Jede Haftung meinerseits wegen evtl. entstandener Schäden oder Kosten ist ausgeschlossen. Du benutzt diese Anleitung und die darin enthaltenen Scripte auf eignenden Risiko. Ich übernehme keinerlei Gewährleistung für die Funktion des hier beschriebenen Verfahrens. Ich gehe davon aus, dass ihr wisst, was ihr macht und nicht einfach alles blind kopiert!

Vorbereitung

Um Linux auf einer CompactFlash-Karte (CF-Karte) zu installieren, brauchen wir ein Computer mit einem CF-Lesegerät. Da wir Debian auf der CF installieren wollen, muss auf dem Hostsystem auch Debian installiert sein.

Bei meinem Computer spreche ich die CF-Karte über das Device hdc an. Bei euch kann es ein anderes Device sein. Ich setze voraus, dass ihr wisst, welches Device eure CF-Karte hat und entsprechend die Anleitung anpasst.

Partitionierung der CF-Karte

Um auf der CF-Karte Debian zu installieren, müssen wir die CF-Karte partitionieren und ein Dateisystem erstellen.

Alle Daten auf der CF-Karte werden in diesem Arbeitsschritt gelöscht!

Für die Erstellung der Partition benutzen wir cfdisk.

homer:~# cfdisk -z /dev/hdc

Als erstes löschen wir über [ Delete ] eventuelle vorhandene Partitionen. Über [ Write ] erstellen wir eine neue Partition. Am Ende sollte es wie folgt aussehen:

                                  cfdisk 2.12r
 
                              Disk Drive: /dev/hdc
                        Size: 1020837888 bytes, 1020 MB
              Heads: 16   Sectors per Track: 63   Cylinders: 1978
 
    Name        Flags      Part Type  FS Type          [Label]        Size (MB)
 ------------------------------------------------------------------------------
    hdc1        Boot        Primary   Linux                             1020,84 
 
     [Bootable]  [ Delete ]  [  Help  ]  [Maximize]  [ Print  ]
     [  Quit  ]  [  Type  ]  [ Units  ]  [ Write  ]
 
                 Toggle bootable flag of the current partition

Über [ Quit ] verlassen wir cfdisk.

Dateisystem ext2

Ich habe mich für das Dateisystem ext2 und gegen ext3 entschieden, weil wir die Journal-Funktion von ext3 nicht brauchen.

homer:~# mke2fs /dev/hdc1
mke2fs 1.40-WIP (14-Nov-2006)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
124672 Inodes, 249220 Blöcke
12461 Blöcke (5.00%) reserviert für den Superuser
erster Datenblock=0
Maximum filesystem blocks=255852544
8 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
15584 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376
 
Schreibe Inode-Tabellen: erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
 
Das Dateisystem wird automatisch alle 39 Mounts bzw. alle 180 Tage überprüft,
je nachdem, was zuerst eintritt. Veränderbar mit tune2fs -c oder -t .
homer:~#

Die CF-Karte ist nun für die Installation bereit. Als letzter schritt mounten wir die CF-Karte ins System ein.

homer:~# mkdir -p /mnt/wrap
homer:~# mount /dev/hdc1 /mnt/wrap/

Debian Logo

Installation von Debian Lenny

Im folgenden Abschnitt installieren wir Debian Lenny. Da wir nicht über eine Installation-CD gehen, müssen wir die einzelnen Schritte manuell abarbeiten. Den Abschnitt für die Festplatte bzw. in unseren Fall die CF-Karte haben wir im letzten abschnitt vorbereitet. Im nächsten Schritt installieren wir das Minimum von den benötigen Programmen und die Ordnerstruktur. Dies kann mehrere Minuten dauern.

homer:~# debootstrap lenny /mnt/wrap/ http://ftp.debian.de/debian

Um im “neuen” Debian zu arbeiten und ohne das Gast-System zu beeinflussen, benutzen wir chroot.

homer:~# chroot /mnt/wrap/
Konfiguration von apt-get

Wir passen die sources.list an, um benötigte Programm über apt-get zu installieren.

homer:/# nano /etc/apt/sources.list

Die Datei sollte am Ende wie folgt aussehen:

deb ftp://ftp2.de.debian.org/debian lenny contrib main non-free
deb-src ftp://ftp2.de.debian.org/debian lenny contrib main non-free
 
deb ftp://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free
deb-src ftp://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

Wir laden als nächstes die aktuelle Programmliste herunter und wir aktualisieren gleich auch die Programme

homer:/# apt-get update
Writing extended state information... Done
Get:1 ftp://ftp2.de.debian.org lenny Release.gpg [1032B]
Get:2 ftp://ftp2.de.debian.org lenny/updates Release.gpg [835B]
Get:3 ftp://ftp2.de.debian.org lenny Release [73.6kB]
Get:4 ftp://ftp2.de.debian.org lenny/updates Release [40.8kB]
Get:5 ftp://ftp2.de.debian.org lenny/contrib Packages [92.7kB]
Get:6 ftp://ftp2.de.debian.org lenny/main Packages [6911kB]
Get:7 ftp://ftp2.de.debian.org lenny/non-free Packages [123kB]
Get:8 ftp://ftp2.de.debian.org lenny/contrib Sources [46.2kB]
Get:9 ftp://ftp2.de.debian.org lenny/main Sources [2982kB]
Get:10 ftp://ftp2.de.debian.org lenny/non-free Sources [58.5kB]
Get:11 ftp://ftp2.de.debian.org lenny/updates/main Packages [306kB]
Get:12 ftp://ftp2.de.debian.org lenny/updates/contrib Packages [20B]
Get:13 ftp://ftp2.de.debian.org lenny/updates/non-free Packages [20B]
Get:14 ftp://ftp2.de.debian.org lenny/updates/main Sources [76.0kB]
Get:15 ftp://ftp2.de.debian.org lenny/updates/contrib Sources [20B]
Get:16 ftp://ftp2.de.debian.org lenny/updates/non-free Sources [20B]
Fetched 10.7MB in 3min47s (47.2kB/s)
Reading package lists... Done             
 
Current status: 5 updates [+5], 22891 new [+22891].
homer:/# apt-get upgrade
Installation und Konfiguration der Sprach bzw. des Zeichensatzes

Um Probleme mit der Spracheinstellung zu umgehen, installieren wir locales. Mit locales kann man die Spracheinstellungen vom Betriebssystem einstellen bzw. ändern.

homer:/# apt-get install locales
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following NEW packages will be installed:
  locales
0 packages upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 4492kB of archives. After unpacking 12.0MB will be used.
Do you want to continue? [Y/n/?]

Während der Installation können wir die Fragen mit YES beantworten. Nach der Installation konfigurieren wir die Spracheinstellungen.

homer:/# dpkg-reconfigure locales
Package configuration                                                                   
 
 lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu Configuring locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 x Locales are a framework to switch between multiple languages and allow users to   x
 x use their language, country, characters, collation order, etc.                    x
 x                                                                                   x
 x Please choose which locales to generate. UTF-8 locales should be chosen by        x
 x default, particularly for new installations. Other character sets may be useful   x
 x for backwards compatibility with older systems and software.                      x
 x                                                                                   x
 x Locales to be generated:                                                          x
 x                                                                                   x
 x    [ ] en_US.ISO-8859-15 ISO-8859-15                                              x
 x    [*] en_US.UTF-8 UTF-8                                                          x
 x    [ ] en_ZA ISO-8859-1                                                       a   x
 x    [ ] en_ZA.UTF-8 UTF-8                                                      a   x
 x    [ ] en_ZW ISO-8859-1                                                       a   x
 x    [ ] en_ZW.UTF-8 UTF-8                                                          x
 x                                                                                   x
 x                                                                                   x
 x                                                                                   x
 x                                                                                   x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Im ersten Dialog können wir die gewünschten Sprache und den dazugehörigen Zeichensatz auswhlen. Im folgenden Dialog werden die ausgewählten nochmal übersichtlich dargestellt. Ich habe folgende ausgewählt…

Package configuration                                                                   
 
 lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu Configuring locales tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
 x Many packages in Debian use locales to display text in the correct language for   x
 x the user. You can choose a default locale for the system from the generated       x
 x locales.                                                                          x
 x                                                                                   x
 x This will select the default language for the entire system. If this system is a  x
 x multi-user system where not all users are able to speak the default language,     x
 x they will experience difficulties.                                                x
 x                                                                                   x
 x Default locale for the system environment:                                        x
 x                                                                                   x
 x                                    None                                           x
 x                                    de_DE.UTF-8                                    x
 x                                    en_US.UTF-8                                    x
 x                                                                                   x
 x                                                                                   x
 x                                                                                   x
 x                                                                                   x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Wir schauen uns die aktuellen Einstellung der Sprache bzw. des Zeichensatzes an und passen sie an…

homer:/# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
POSIX
de_DE.utf8
en_US.utf8
homer:/# echo "LC_ALL=de_DE.UTF-8" >> /etc/default/locale
homer:/# echo "LC_ALL=de_DE.UTF-8" >> /etc/environment
homer:/# export LC_ALL=de_DE.UTF-8
Installation von GRUB

Im nächsten Schritt der Installation wollen wir GRUB, den Bootloader, installieren und konfigurieren.

homer:/# aptitude install grub
homer:/# mkdir -p /boot/grub
homer:/# nano /boot/grub/menu.lst

Die Konfigurationsdatei sollte z.B. wie folgt aussehen.

# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.
serial --unit=0 --speed=38400
## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default         0
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout         5
# Pretty colours
color cyan/blue white/blue
## ## End Default Options ##
title           Debian GNU/Linux, kernel 2.6.8
root            (hd0,0)
kernel          /vmlinuz root=/dev/hda1 reboot=bios ramdisk_size=49152 console=ttyS0,38400n8 nokeyb
initrd          (hd0,0)/initrd.img
savedefault
boot
 
title           Debian GNU/Linux, kernel 2.6.8
root            (hd0,0)
kernel          /vmlinuz root=/dev/hda1 console=ttyS0,38400n8 reboot=bios
initrd          (hd0,0)/initrd.img
boot
 
### END DEBIAN AUTOMAGIC KERNELS LIST

Damit wir über die “serielle Konsole” auch den Bootloader benutzen können, sollte der “serial speed” gleichen den des WRAPs sein. In meinem Fall ist es die Rate 38400. Wir erstellen zwei Booteinträge. Der erste Eintrag initialisiert zusätzlich eine RamDisk und gibt die Größe (in KiloByte) an, wie viel vom Arbeitsspeicher benutzt werden darf. Die RamDisk unterstützt uns später, dass auf die CF-Karte keine Schreiboperationen mehr durchgeführt werden (Stichwort: readonly).

Installation des Kernels

Als vorletzten Schritt installieren wir den Kernel. Für die Installation benötigen wir das virtuelle Dateisystem /proc. Gleichzeitig erstellen wir die Liste (fstab) der zu mountenden Dateisysteme beinhaltet. Daraufhin können wir endlich den Kernel installieren…

homer:/# mount /proc
homer:/# echo "proc        /proc     proc    defaults                    0       0" >> /etc/fstab
homer:/# echo "/dev/hda1   /         ext3    defaults,errors=remount-ro  1       1" >> /etc/fstab
homer:/# apt-get install linux-image-2.6-686
Initiallisierung von GRUB

Als letzten Schritt der Installation müssen wir GRUB noch initialisieren. Dafür müssen wir den chroot-Käfig verlassen.

homer:/# exit
homer:/# grub-install --root-directory=/mnt/wrap /dev/hdc

Nachbereitung

Nachdem die Installation fertig ist, müssen wir noch kleine Grundeinstellungen vornehmen, bevor die CF-Karte vom WRAP booten lassen. Da der WRAP kein Bildschirmanschluss hat müssen wir die Konsolen-Ausgabe auf den seriellen Ausgang umleiten. Wie bei der GRUB-Konfigurationsdatei, sollten wir den “serial speed” gleichen Wert wählen.

homer:/# echo "T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100" >> /mnt/wrap/etc/inittab

Später soll der WRAP auch ohne Anschluss des Serielle Kabel laufen. Der daraus resultierte Nachteil, dass das Boot nicht mehr mitverfolgt werden kann (da z.B. der SSH-Server erst nach dem booten aktiv wird), um dies zu umgehen aktivieren wir das loggen des Bootvorgangs.

homer:/# nano /mnt/wrap/etc/default/bootlogd

In der Datei müssen wir von “NO” auf “YES” umschalten. Die Datei sollte wie folgt aussehen:

# Run bootlogd at startup ?
BOOTLOGD_ENABLE=Yes

Damit der Server auch über das Netzwerk erreichbar ist, müssen wir das Netzwerk-Interface anpassen.

homer:/# nano /mnt/wrap/etc/network/interfaces

Wir sorgen dafür, dass der WRAP seine IP und Co über den DHCP-Server bekommt.

# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.
 
# The loopback network interface
auto lo
iface lo inet loopback
 
#allow-hotplug eth0
auto eth0
iface eth0 inet dhcp

Als letztes geben wir den neuen WRAP-Server noch ein Namen:

homer:/# echo "serverName" > /mnt/wrap/etc/hostname

Nun können wir endlich die CF-Karte in den WRAP stecken und hoffen, dass der Kleine ohne Probleme hochfährt. Fürs Debuggen brauchen wir ein Nullmodem-Kabel und ein PC mit einem Seriellen Anschluss. Mit dem Nullmodem-Kabel verbinden wir den PC mit dem WRAP. Mit einem Emulator (z.B. HyperTerminal) lauschen wir am richtigen seriellen Port. Wenn alles richtig läuft, sollten wir im Emulator sehen, wir der WRAP hochfährt.

Das System sollte jetzt läufen. In den nächsten Schritten wird auf dem WRAP einige Server installiert werden (z.B. NTP, BIND, DHCP) und die Schreibrate soll verringert bzw. readOnly gemacht werden.

Ich hoffe, euch hat das Howto geholfen bzw. angeregt und würde mich über ein Kommentar freuen, wenn ihr das Howto benutzt habt. Gefundene Fehler oder Verbesserungsvorschläge sind in den Kommentare immer willkommen. :mail:

Links:

ShortUrlShortUrl Categories: HowTo, Linux Tags: , , , ,
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...