Eintr├Ąge zu Tag: Grub

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

Grub reparieren, installieren

Erstellt: 03.05.2008 13:28

Wenn man hin und wieder das eine oder andere kleine Experiment auf seinem Computer vornimmt, wie testweise ein neues Betriebssystem zu installieren, kann es passieren, dass man seinen Bootmanager Grub vernichtet. cool ist

Mit der Hilfe einer Live-CD, ich nutzte hier die von Ubuntu, kann man relativ einfach Grub wiederherstellen. Ich gehe hier davon aus, dass Grub auf der Live-CD installiert ist, wie es bei Ubuntu und anderen der Fall ist. Falls nicht holt man sich das Paket Grub mit dem passenden Paketmanager nach dem Booten.

Sobald die Live-CD gebootet ist (Man achtet auf die Bootreihenfolge im BIOS) startet man eine Konsole.
Um das Arbeitet zu vereinfachen holt man sich root-Rechte. Auf der Ubuntu-Live-CD geschieht das mit:

$ sudo -s

Wer seine Festplatte mit den Partitionen nicht auswendig kennt, kann sie mit:

# fdisk -l /dev/sda

... nachschauen, ich gehe ab hier davon aus, dass das System mit Grub auf /dev/sda liegt, dies muss man natürlich auf sich anpassen. Eventuell liegt die Schwierigkeit hier die Partitionen den Mountpunkten richtig zuzuordnen. Ein Indiz dabei ist die Grösse. Ein weiterer Hinweis kann die Datei /etc/fstab geben auf der root-Partition des eigenen Systems.

Bei mir sieht die Zuordnung folgend aus:
/dev/sda7 ist /
/dev/sda8 ist /usr
/dev/sda9 ist /var

Die Mountpunkte /home und /tmp sind nicht wichtig. Sollte man /boot oder andere wichtige Verzeichnisse auf eigenen Partitionen haben sowie Unterverzeichnisse von /usr oder /var diese eventuell auch Mounten.
Ein bisschen ungewohnt muss man den Filesystemtyp auf jeden Fall mitgeben.
Zuerst mountet man nun seine wichtigen Partitionen nach (z.B.) /mnt.
Hier sind das /, /usr und /var, danach gegebenen Falles noch andere, wie oben erläutert wurde.

# mount -t ext3 /dev/sda7 /mnt
# mount -t ext3 /dev/sda8 /mnt/usr
# mount -t ext3 /dev/sda9 /mnt/var

Nun mountet man seine restliche Systemumgebung nach /mnt:

# mount -t proc proc /mnt/proc
# mount -t sysfs sys /mnt/sys
# mount -o bind /dev /mnt/dev

Konnte alles erfolgreich gemountet werden, hat man seine aktuelle Installation im Verzeichnis /mnt.
Mit chroot (change root) setzt man man sein aktuelles root-Verzeichnis der Live-CD auf /mnt:

# chroot /mnt /bin/bash

Jetzt lässt sich Grub auf sein Laufwerk neu installieren:

# grub-install /dev/sda

Ist dies erfolgreich beendet die ganze Umgebung noch sauber verlassen:

# cd /
# umount -a
# exit
# cd /
# umount -a
# reboot

Nach dem Reboot ist Grub wieder wie neu sich freut



Tagged: Grub Linux

1 Kommentar | Nach oben

Hintergrundbild im GRUB-Bootmanager (Bootsplash)

Erstellt: 13.01.2008 02:56

Der öde blau/schwarz/weisse Bootmanager Grub, lässt sich mit wenig Aufwand um ein Hintergrundbild und ein paar Farben aufwerten.

Hinweis: Diese Anleitung funktioniert nichtmehr ab Grub 2.0!

Was man als erstes braucht ist ein Bild, klar. Es sollte von sich aus schon nicht allzuviele Farbübergänge und Farben haben, denn wir müssen das Bild auf gerade Mal 14 Farben reduzieren und eine Auflösung von 640x480.
Das ganze muss in das "X PixMap" Bildformat. Das sind Bilder im ASCII-Format.

Nun zur Tat, verkleinern, Farben reduzieren, konvertieren, komprimieren:

Entweder man nutzt einfach die Konsole:

Dazu holt man sich erst ein kleines Paket für Bildbearbeitung (wenn man das nicht schon hat), so kann man auf lästige komplizierte Graphikprogramme verzichten:

# apt-get install imagemagick

Danach das Bild bearbeiten:

$ convert -resize 640x480 -colors 14 /bildpfad/bild.jpg image.xpm

Oder alternativ kann man auch Gimp benutzen:

Bild>Bild Skalieren Breite:640 Höhe:480
Bid>Modus>Indiziert.. Maximale Anzahl Farben: 14
Speichern mit der Endung xpm

Als nächstes das neue Bild komprimieren:

$ gzip image.xpm

Man erhält die Datei /bildpfad/image.xpm.gz

Das Bild ist nun fertig, jetzt kann man es in den Grub-Ordner kopieren:

# cp /bildpfad/image.xpm.gz /boot/grub/

Nun sollte man noch in der Datei /boot/grub/menu.lst folgende Zeile hinzufügen:

splashimage=(hd0,1)/boot/grub/image.xpm.gz

Das 0 hier im Beispiel steht für die Festplatte, die 1 für die Partition. Diese beiden Zahlen, müssen auf die Platte und Partition verweisen, wo sich auch das Bild befindet. Wenn man sich nicht sicher ist, schaut man am einfachsten in der Datei /boot/grub/menu.lst nach. Hier finden sich die Kernel welche gebootet werden können. Nimmt man hier die Werte hinter root, liegt man ziemlich sicher richtig. zwinkert

title		Debian GNU/Linux, kernel 2.6.22
root (hd0,1)
kernel /boot/vmlinuz-2.6.2[...]

Fertig sich freut
Beim Rebooten kann man sich jetzt des neuen Bildes erfreuen. lacht

Sollte man nun Schwierigkeiten haben die Menueinträge in Grub zu lesen, weil die Farbe der Schrift und die des Bildes zu ähnlich sind, kann man dies auch noch ändern. Dazu Fügt man unter die hinzugefügte Zeile "splashimage.." noch folgende zwei Zeilen hinzu:

foreground ffffff
background 8b0000

foreground ist die Farbe der Schrift und des Rahmens, background die Farbe des Schattens der Schrift und des ausgewählten Eintrages. Der Wert dahinter, ist die Farbe im hexadezimalen Format.

Ganz Fertig cool ist



Tagged: Grub Linux

Kommentar verfassen | Nach oben