Eintr├Ąge zu Tag: Alix

Debian-Grundsystem auf CF-Karte installieren

Erstellt: 02.01.2016 13:05

Auf Embedded-Boards wie der Alix, kann ein Betriebssystem meistens nicht direkt installiert werden.
Deshalb installiere ich in diesem Beispiel von einem Debian-Hostsystem mit debootstrap ein bootbares Debian-Grundsystem auf eine CF-Karte.

Hierbei handelt es sich noch nicht um eine optimierte Konfiguration sondern um einen allgemeinen Leitfaden.


In diesem Beispiel wird angenommen, dass die CF-Karte auf dem Hostsystem /dev/sdc ist. Mit dmesg kann man sich informieren, welches Laufwerk zuletzt eingesteckt wurde.

Auf dem Hostsystem werden zuerst parted zum partitionieren, debootstrap für die Installation des Grundsystems und makedev zum initialisieren des /dev auf der CF-Karte installiert:

# aptitude install parted debootstrap makedev

Nun wird die CF-Karte vorbereitet. Dafür werden zuerst vorhandene Partitionen gelöscht, wie die FAT32-Partition(-en), die beim Kauf der Karte meistens vorhanden sind. parted ist ein einfaches Werkzeug dafür. "p" zeigt an, was sich auf der Karte befindet. "?" gibt eine Befehlsübersicht und mit "q" verlässt man parted wieder.

# parted /dev/sdc
(parted) p                                                               
Model: Generic- Compact Flash (scsi)
Disk /dev/sdc: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4162kB  16.0GB  16.0GB  primary  fat32        boot, lba

(parted) rm 1 # Löscht die Partition Nummer eins

Jetzt kann eine eigene Partitionierung geschrieben werden. Um es einfach zu halten, werden hier nur zwei Partitionen erstellt, eine für das System (8192MiB) und eine für Swap (128MiB). Der Platz dahinter wird freigelassen.

(parted) mklabel msdos
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes                                                  
(parted) unit MiB
(parted) mkpart primary 0% 8192
(parted) mkpart primary 8192 8320
(parted) set 1 boot on
(parted) p                                                               
Model: Generic- Compact Flash (scsi)
Disk /dev/sdc: 15248MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start    End      Size     Type     File system  Flags
 1      1.00MiB  8192MiB  8191MiB  primary               boot, lba
 2      8192MiB  8320MiB  128MiB   primary               lba
(parted) q

...und /dev/sdc1 mit ext4 sowie /dev/sdc2 mit als swap formatieren:

# mkfs.ext4 /dev/sdc1
# mkswap /dev/sdc2

Ein Verzeichnis zum Mounten der CF-Karte erstellen und diese mounten:

# mkdir /mnt/cfcard
# mount /dev/sdc1 /mnt/cfcard/

Nun kann das Grundsystem installiert werden, debootstrap werden dabei die Architektur (bei der Alix i386), die Distribution (jessie), das Verzeichnis der gemounteten CF-Karte (jessie) und ein Spiegelserver von Debian mitgegeben, hier wäre das der Spiegel vom Schweizer Institut Switch (http://mirror.switch.ch/ftp/mirror/debian/).
Das ganze dauert nun eine Weile, bis am Ende die Meldung über den Abschluss der Installation kommt.

# debootstrap --arch i386 jessie /mnt/cfcard http://mirror.switch.ch/ftp/mirror/debian/
[...]
I: Base system installed successfully.

Eine initiale Struktur im /dev der CF-KArte wird angelegt.

# cd /mnt/cfcard/dev
# MAKEDEV generic

Nun werden die System-Mountpunkte hinzugefügt und das chroot betreten

# mount -t proc proc /mnt/cfcard/proc/
# mount -o bind /dev /mnt/cfcard/dev/
# mount -t sysfs sys /mnt/cfcard/sys/
# chroot /mnt/cfcard /bin/bash

Am besten installiert man nun den Lieblingseditor.

# apt-get install vim

Als nächstes müssen die beiden zu Anfangs erstellen Partitionen nach /etc/fstab eingetragen werden, damit diese beim Booten gemounted werden können

Die dafür nötige UUID erfährt man mit blkid, da die CF-Karte immernoch auf /dev/sdc ist, kann direkt danach gegrept werden:

# blkid | grep sdc
/dev/sdc1: UUID="5a63a141-ac3a-4e8e-a11f-3bc37a8895e7" TYPE="ext4" PARTUUID="2d4512a0-01"
/dev/sdc2: UUID="59bec5fd-811b-436f-b629-9cd6555e150e" TYPE="swap" PARTUUID="2d4512a0-02"

Diese Werte trägt man anschliessend mit dem zuvor installierten Editor nach /etc/fstab ein, zusammen mit den restlichen Parametern:

# /etc/fstab
UUID=5a63a141-ac3a-4e8e-a11f-3bc37a8895e7 / ext4 noatime,errors=remount-ro       0       1
UUID=59bec5fd-811b-436f-b629-9cd6555e150e none swap sw 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0

Eine /etc/hostname und eine /etc/hostname mit dem Hostnamen des Systems werden ebenfalls erstellt oder ergänzt (diese wurden vom Hostsystem übernommen):

# /etc/hosts
127.0.0.1       localhost meinsystem meinsystem.xig.lan
::1             localhost ip6-localhost ip6-loopback meinsystem meinsystem.xig.lan
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

# /etc/hostname
meinsystem

Ebenfalls erstellt und konfiguriert werden sollte /etc/resolv.conf (auch diese wurde vom Hostsystem übernommen und kann so gelassen werden wie sie ist, falls das Gewünschte drinn steht)

# /etc/resolv.conf
nameserver 172.20.1.1
search xig.lan

Damit das Gerät auch über das Netzwerk erreichbar ist, braucht es eine anfängliche Netzwerkkonfiguration in /etc/network/interfaces. Die Alix hat zwei Ethernet-Schnittstellen, für den Anfang konfiguriere ich diese mit DHCP, je nach Vorliebe können auch feste IPs vergeben werden, dies lasse ich hier allerdings aus.

# /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

# The primary network interface
allow-hotplug eth1
iface eth1 inet dhcp
# This is an autoconfigured IPv6 interface
iface eth1 inet6 auto

Damit nach dem ersten Booten Pakete installiert werden können, braucht es in /etc/apt/sources.list für Debian Jessie folgende Einträge:

# /etc/apt/sources.list
deb http://mirror.switch.ch/ftp/mirror/debian/ jessie main non-free contrib
deb-src http://mirror.switch.ch/ftp/mirror/debian/ jessie main non-free contrib

deb http://mirror.switch.ch/ftp/mirror/debian/ jessie-updates main
deb-src http://mirror.switch.ch/ftp/mirror/debian/ jessie-updates main

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

Der erste Eintrag (deb http://mirror.switch.ch/ftp/mirror/debian jessie main) sollte schon vorhanden sein durch debootstrap, je nach Geschmack wird noch mit "non-free contrib" gewürzt, damit nicht-freie Paketquellen mit einbezogen werden.

Jetzt werden noch locales und die Zeitzone konfiguriert:

# apt-get install locales
# dpkg-reconfigure locales
# dpkg-reconfigure tzdata

Wird am System eine Tastatur angeschlossen sein, konfiguriert man noch diese:

# apt-get install console-setup
# dpkg-reconfigure keyboard-configuration

(An dieser Stelle könnte jetzt noch die Serielle Schnittstelle konfiguriert werden, da der Artikel aber schon ziemlich lang ist und man über SSH zugreifen kann, lasse ich dies aus.)

Jetzt braucht das System natürlich noch einen Kernel. Vorhande Kernel auflisten:

# apt-cache search linux-image
linux-image-3.16.0-4-586 - Linux 3.16 for older PCs
linux-image-3.16.0-4-686-pae - Linux 3.16 for modern PCs
linux-image-3.16.0-4-686-pae-dbg - Debugging symbols for Linux 3.16.0-4-686-pae
linux-image-3.16.0-4-amd64 - Linux 3.16 for 64-bit PCs
linux-image-486 - Linux for older PCs (dummy package)
linux-image-586 - Linux for older PCs (meta-package)
linux-image-686-pae - Linux for modern PCs (meta-package)
linux-image-686-pae-dbg - Debugging symbols for Linux 686-pae configuration (meta-package)
linux-image-amd64 - Linux for 64-bit PCs (meta-package)

Die Meta-Pakete zeigen immer auf den jeweils aktuellsten Kernel, deshalb empfielt es sich, sich für einen von diesen zu entscheiden. Für die alte Alix ist linux-image-586 das Richtige:

# apt-get install linux-image-586

Ohne Bootloader geht garnichts, auch dieser muss installiert und auf die CF-Karte (immernoch /dev/sdc) installiert werden:

# apt-get install grub-pc
# grub-install /dev/sdc
# update-grub

Damit per SSH zugegriffen werden kann, braucht es auch noch einen SSH-Server, das Meta-Paket ssh installiert Server und Client.

# apt-get install ssh

root-Passwort setzen:

# passwd

User anlegen (für den SSH-Login):

# adduser user

Aufräumen:

# apt-get clean

Chroot verlassen und die CF-Karte unmounten:

# exit
# cd
# umount /mnt/cfcard/dev
# umount /mnt/cfcard/sys
# umount /mnt/cfcard/proc
# umount /mnt/cfcard

Nun kann die CF-Karte in das System (z.B. die Alix) eingesetzt, das System mit dem Netzwerk verbunden und gebootet werden.

Sollte man wie oben DHCP konfiguriert haben, findet man das System relativ leicht mit nmap, das Netz muss natürlich auf das Eigene angepasst werden:

# nmap -sP 172.20.1.00/24
Nmap scan report for 172.20.1.188
Host is up (-0.10s latency).
MAC Address: 00:0D:B9:15:E6:C9 (PC Engines GmbH)

(Alternativ schaut man im Log des DHCP-Servers ;) )

Nun kann mit dem zuvor angelegten User auf das frische System eingelogt werden:

$ ssh user@172.20.1.188

 



Tagged: Alix Debian Grub Hardware Linux

Kommentar verfassen | Nach oben