Diese Anleitung geht davon aus, daß sich Cubian bereits auf dem NAND-Flash befindet. Das Cubian-Betriebssystem benutzt folgende Partitionen auf dem NAND-Flash:

  • nanda -> Boot-Bereich
  • nandb -> Root-Filesystem

In dieser Anleitung werden wir den Bootbereich auf 'nanda' belassen, der Root-Filesystembereich von 'nandb' auf die Festplatte umgezogen. Zum Booten wird das NAND-Flash verwendet, für Filesystem und Swap die SATA-Festplatte.

 

Festplatte vorbereiten

Der Cubietruck ist herunterzufahren und von der Stromversorgung zu trennen. Die im Gehäuseunterteil eingebaute SATA-Festplatte ist über das mitgelieferte SATA-Kabel am Cubietruck anzuschließen. Bitte bei den beiden weißen Steckverbindern auf die Kabelfarben achten!

SATA-Anschluß

Hier sieht man die Verbindung mit dem SATA-Kabel:

SATA-HDD am Cubietruck

Nach dem Booten des Cubietruck ist ein SSH-Terminal zu verbinden. Man meldet sich als Benutzer 'cubie' an und wechselt die Shell, damit man zum 'root'-Benutzer wird:

sudo bash

Die SATA-Platte muß für das Root-Filesystem eine primäre Partition erhalten, welche mit dem Filesystem 'ext4' formatiert wird. Mit folgenden Befehlen wird die Harddisk vorbereitet:

Alle verfügbaren Speicher auflisten, hier findet man das NAND-Flash (grün markiert) und die Festplatte (rot markiert):

fdisk -l

Disk /dev/nand: 7700 MB, 7700742144 bytes
255 heads, 63 sectors/track, 936 cylinders, total 15040512 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000 Disk /dev/nand doesn't contain a valid partition table
Disk /dev/nanda: 67 MB, 67108864 bytes 255 heads, 63 sectors/track, 8 cylinders, total 131072 sectors Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System
Disk /dev/nandb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders, total 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/nandb doesn't contain a valid partition table
Disk /dev/nandc: 3321 MB, 3321888768 bytes 255 heads, 63 sectors/track, 403 cylinders, total 6488064 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xffffffff Disk /dev/nandc doesn't contain a valid partition table
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/sda doesn't contain a valid partition table

Der Befehl 'fdisk' zeigt bei NAND-Partitionen an, daß keine gültige Partitionstabelle vorhanden ist. Das liegt daran, daß der 'fdisk'-Befehl nicht für NAND-Flash ausgelegt ist. Wir sehen zumindest, welche NAND-Partitionen vorhanden sind. Da im Beispiel eine 500GB-Festplatte zum Einsatz kommt, muß man zuerst die Partitionen planen:

  • 300GB -> Root-Filesystem
  • 50GB -> Swap-Bereich
  • 150GB -> Für Daten-Backups

Jetzt wird die Festplatte partitioniert, man gibt die Gerätedatei der gesamten Platte an. 'fdisk' hat einen Befehlsmode:
fdisk /dev/sda

d<Enter>1<Enter> Löschen einer eventuell vorhandenen Partition

p  Nachsehen, ob der Befehl erfolgreich war

Die Partitionen sollten den Typ "83" erhalten!

n<Enter>p<Enter>1<Enter><Enter>+300G<Enter> für das Root-Filesystem

n<Enter>p<Enter>2<Enter><Enter>+50G<Enter> für den SWAP

n<Enter>p<Enter>3<Enter><Enter><Enter> für den Backup-Bereich

v Die Partitionierung wird mit Verify überprüft

w Partititionstabelle auf Festplatte schreiben und 'fdisk' beenden.

Das Ergebnis sollte folgendermaßen aussehen (bei einer 500GB-Platte):

Device Boot Start End Blocks Id System
/dev/sda1 2048 629147647 314572800 83 Linux
/dev/sda2 629147648 734005247 52428800 83 Linux
/dev/sda3 734005248 976773167 121383960 83 Linux

Die erste Partition für das Root-Filesystem wird mit EXT4 formatiert:
mkfs.ext4 /dev/sda1

 

Cubian auf die Festplatte übertragen

Jetzt ist das Root-Filesystem von /dev/nandb auf die erste Partition der Harddisk /dev/sda zu kopieren. Das kann viele Minuten (20-30) dauern, der 'dd'-Befehl gibt keine Rückmeldung - bitte Geduld!
dd if=/dev/nandb of=/dev/sda1 bs=1M

Nach dem Kopieren ist das Root-Dateisystem auf der Festplatte zu überprüfen und ggf. zu reparieren:
e2fsck -f /dev/sda1

Beim Kopieren des NAND-Inhalts mit "dd" ist das Filesystem von /dev/sda1 auf die Größe des /dev/nandb geschrumpft. Nach der Überprüfung wird das Dateisystem der Kopie an die Größe der Partition 1 der Platte angepasst (auch das dauert ein paar Minuten ohne Bildschirmausgabe):
resize2fs /dev/sda1

Hinweis Die folgenden Befehle weichen von anderen Anleitungen im Internet ab. Die Datei 'uEnv.txt' liegt nicht mehr auf /dev/nanda sondern im Rootfilesystem (/dev/nandb) im Unterverzeichnis 'boot'. Dies liegt vermutlich daran, dass ich die neuesten Updates von Cubian installiert habe.

Jetzt müssen die Boot-Parameter in der Datei "uEnv.txt" angepasst werden, damit das Cubietruck in Zukunft von der Festplatte bootet. Zuerst wird die zweite NAND-Partition an einen Hilfspunkt gemountet und anschließend das Bootfile editiert:

mkdir /mnt/temp

mount /dev/nandb /mnt/temp

Das File befindet sich im /boot-Unterverzeichnis. Der Parameter "root=/dev/nandb" ist zu ersetzen durch die erste Plattenpartition "root=/dev/sda1":

nano /mnt/temp/boot/uEnv.txt

console=tty0
root=/dev/sda1 rootwait
extraargs=console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:$
machid=10bb

Nach Anpassung der Datei auf 'nandb' muß sie auch noch auf '/dev/sda1' angepaßt werden. Dorthin hatten wir mit dem 'dd'-Befehl vorhin den Inhalt von /dev/nandb kopiert:

sync

umount /dev/temp

nano /boot/uEnv.txt

console=tty0
root=/dev/sda1 rootwait
extraargs=console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:$
machid=10bb

Jetzt ist noch die Filesystem-Tabelle anzupassen:

nano /etc/fstab

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1        /                     ext4      defaults         0         1

Jetzt alle Änderungen auf die Festplatte schreiben und neu booten:
sync

reboot

Nach dem Boot meldet man sich wieder als 'cubie'-Benutzer an und stellt fest, welche Bereiche der Platte verwendet werden:

sudo bash

df -h

Filesystem    Size      Used       Avail   Use%   Mounted on
rootfs        296G      742M      280G      1%                 /
/dev/root   296G      742M      280G      1%                 /
devtmpfs   912M           0      912M      0%            /dev
tmpfs        183M      176K      183M      1%            /run
tmpfs         5.0M           0      5.0M      0%       /run/lock
tmpfs        365M           0      365M      0%      /run/shm

Man sieht an der 'Size', dass die Partition mit 296GB für das Root-Filesystem verwendet wird.

 

Einrichten des Datenbereichs

Auf der SATA-Platte ist noch Partition 3 mit etwa 150GB verfügbar. Sie soll später für Datenbank-Exporte oder Backups dienen:

Die dritte Partition für das Root-Filesystem wird mit EXT4 formatiert:
mkfs.ext4 /dev/sda3

Ein Mountpoint wird erstellt:
mkdir /mnt/backup

und die Partition an den Mountpoint verbunden:
mount /dev/sda3 /mnt/backup


Dies funktioniert nur bis zum nächsten Boot. Damit der Mount permanent eingerichtet wird, muß man ihn in der Filesystem-Tabelle eintragen:

nano /etc/fstab

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1                           /     ext4     defaults           0          1
/dev/sda3           /mnt/backup     ext4      defaults          0          2

reboot

Nach dem Reboot wieder anmelden und

mount

eingeben. Das Backup-Filesystem ist jetzt eingebunden:

/dev/sda3 on /mnt/backup type ext4 (rw,relatime,data=ordered)

Ba jetzt können dort Daten gespeichert werden!

 

Einrichtung eines Swap-Bereichs auf einer Partition

Wenn ein Swap auf einer eigenen Partition eingerichtet wird, funktioniert er wesentlich performanter ein Filesystem-Swap. Zuerst bereiten wir die zweite Partition /dev/sda2 vor und ergänzen dann die /etc/fstab. In einem dritten Schritt wird der Filesystem-Swap entfernt.

sudo bash

cat /proc/swaps

zeigt uns den aktuellen Swap:

Filename                                Type            Size    Used    Priority

das heißt, daß kein Swap eingerichtet ist. Der Swap wird jedoch für speicherintensive Anwendungen (z.B. Datenbanken) benötigt, wenn der Kernel temporär Speicherbereiche in den Swap auslagern muß. Zuerst wird die Partition für den Swap vorbereitet:

mkswap /dev/sda2

Anschließend wird der swap gestartet:

swapon /dev/sda2


Mit dem Editor wird der Swap in der /etc/fstab permanent verankert:

nano /etc/fstab

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/sda1 / ext4 defaults 0 1
/dev/sda2 swap swap defaults 0 0
/dev/sda3 /mnt/backup ext4 defaults 0 2

und neu gebootet:

reboot

Nach dem reboot wieder als 'cubie' anmelden und in den Root-Kontext schalten:

sudo bash

Jetzt Swap-Informationen abrufen:

swapon -s

Filename        Type             Size    Used   Priority
/dev/sda2   partition  52428796            0         -1

Jetzt ist auch der Swap eingerichtet, wir können mit dem Cubietruck arbeiten.

 

Nutzung

Spätestens jetzt sollten einige wichtige Grundkonfigurationen am System vorgenommen werden. Diese sind im Folgekapitel beschrieben!