[HowTo] Raspbian von Festplatte betreiben

  • Hin und wieder könnte vielleicht die Versuchung aufkommen, nicht für alle schreib intensiven Arbeiten SD-Karten belasten zu müssen, sondern dafür lieber eine "echte" Festplatte her zunehmen. Das ist eigentlich kein Problem, alle Werkzeuge werden vom Raspbian mitgeliefert.

    Wir brauchen:

    • einen Pi
    • eine SD-Karte, die ein Raspbian aufnehmen kann (aktuell reicht da noch eine 2GB-Karte)
    • eine leere Festplatte mit einem USB-Anschluss (externe USB-Platte
      mit eigener Stromversorgung oder eine Festplatte mit einem ATA-zu-USB-
      oder SATA-zu-USB-Adapter sowie einer Stromversorgung)

      Eine nicht-leere Platte geht natürlich auch, aber darauf möchte ich jetzt hier nicht eingehen.

    1. Programmieren der SD-Karte wie gewohnt
    2. Start des Pi mit dieser Karte, Anfangskonfiguration vornehmen
    3. Anschluss der USB-Platte. Normalerweise sollten jetzt im Syslog bzw.
      auf der Console entsprechende Meldungen erscheinen, dass die Platte
      gefunden wurde. Sie dürfte als /dev/sda im System zu sehen sein.
    4. Einrichten der Platte (Ich gehe nachfolgend immer davon aus,
      dass auf der verwendeten Platte nichts mehr drauf war! Die alten Daten
      sind dann weg - richtig weg!!!)
      :

      • Platte partitionieren mit

        Code
        sudo cfdisk /dev/sda


        Ich habe bei mir eine Uralt-PATA-Platte mit 8GB an einem
        PATA-zu-USB-Adapter hängen. Diese habe ich mit ca. 7,5 GB für eine
        Linux-Partition (Type 83), den Rest für Swap (Type 82) eingerichtet.

        Partitionsdaten auf die Platte schreiben und cfdisk beenden.

      • Dateisystem erzeugen mit

        Code
        sudo mkfs.ext4 /dev/sda1
      • Swap erzeugen mit

        Code
        sudo mkswap /dev/sda2

    [*]Einbinden der Platte mit

    Code
    sudo mount /dev/sda1 /mnt

    [*]Kopieren aller Daten von der SD-Karte auf die Festplatte mit

    Code
    cd /mntsudo cp -axuv /.

    Den Inhalt von /mnt/boot können wir dann löschen, da dieses Verzeichnis von der VFAT-Partition der SD-Karte gemountet wird.[*]Bearbeiten der fstab-Datei auf der Festplatte (!!!)

    Code
    sudo vi /mnt/etc/fstab

    Hier ändern wir diesen Eintrag:
    /dev/mmcblk0p2 / ext4 defaults,noatime 0 1

    wird zu
    #/dev/mmcblk0p2 / ext4 defaults,noatime 0 0

    Und diese Einträge kommen neu dazu:
    /dev/sda1 / ext4 defaults,errors=remount-ro 0 1

    /dev/sda2 none swap sw 0 0

    Abspeichern nicht vergessen[*]Bearbeiten der cmdline.txt auf der SD-Karte. Das kann man sowohl auf
    dem Pi machen als auch auf einem ganz normalen PC, die Partition ist
    vfat und die cmdline.txt eine normale Textdatei. Auf dem Pi wäre das
    dann:

    Code
    sudo vi /boot/cmdline.txt

    Dort finden wir etwas weiter hinten in der Zeile den Eintrag
    root=/dev/mmcblk0p2

    Diesen ändern wir nach
    root=/dev/sda1

    Und wieder abspeichern.Das war's dann schon. Man kann sich jetzt noch den Spaß machen
    und den Swap-Bereich testen. Das Anschalten des Platten-Swap-Bereichs
    geht ganz einfach mit

    Code
    sudo swapon -a

    Zwischen einem "free" vor und einem "free" nach dem swapon sollte dann
    entsprechend ein Größenunterschied bei der "Swap:"-Angabe vorliegen, der
    der Größe der Swap-Partition entspricht.

    Ein Neustart des Pi mit dem Affengriff oder

    Code
    sudo reboot


    sollte problemlos durchlaufen und wir sollten mit

    Code
    mount


    so etwas sehen:

    /dev/root on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)

    tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=18812k,mode=755)

    tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)

    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

    tmpfs on /dev type tmpfs (rw,relatime,size=10240k,mode=755)

    tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=126520k)

    devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)

    /dev/mmcblk0p1 on /boot type vfat
    (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro)


    Wer will, kann jetzt noch das dphys-swapfile deaktivieren, aber das
    macht eigentlich keinen großen Unterschied, da /var jetzt auch mit auf
    der Festplatte liegt.

    Ab jetzt laufen sämtliche Dateizugriffe nur noch über die Festplatte,
    die SD-Karte wird nur zum Booten benutzt - und da dann auch nur lesend.
    Rein theoretisch könnte man jetzt auch z.B. mit einer alten SD-Karte
    mit 256MB booten. Den Aufwand habe ich mir aber nicht gemacht, mir kam
    es vor allem darauf an, meine SD-Karten für den Life-Einsatz zu schonen.

    Ich möchte mich für die Anleitung bei hummel66 vom http://raspberrycenter.de Forum sehr herzlich bedanken

    HTPC: MLD 5.4 64Bit | ASRock Q1900M | 4GB Ram | DigitalDevices DVB-S2 | SSD 64GB | HDD 2,5 500GB | 250GB Backup HDD

    Einmal editiert, zuletzt von mafe68 (21. Februar 2013 um 10:59)

  • Hallo mafe68,
    zunächst vielen Dank für das HowTo. Genau so etwas habe ich gesucht.

    Leider habe ich keinen Erfolg. Ich bleibe bei:
    [*]Kopieren aller Daten von der SD-Karte auf die Festplatte mit
    cd /mntsudo cp -axuv /. hängen.
    Ich glaube da fehlt ein Leerzeichen, die Zeile müßte so aussehen:
    cd /mnt sudo cp -axuv /.
    So funktioniert es aber auch nicht. Ich komme nur in das Verzeichnis /mnt. Ein nachfolgendes sudo cp -axuv /. bekommt die Fehlermeldung: Fehlender Zieldatei-Operand hinter "/."
    Was nun? Ich habe probeweise an dieser Stelle ein: sudo cp -axuv /. /mnt eingegeben. Dann hats kopiert. Am Ende aber die Fehlermeldung /mnt kann nicht in sich selbst kopiert werden.
    Neuer Anlauf: Zuerst ein cd / und dann ein sudo cp -axuv /. /mnt
    Es hat wieder kopiert, diesmal ohne Fehlermeldung. Aber die Verzeichnisse /dev und proc sind leer.

    Was mache ich falsch?

    Edit: Alle Aktivitäten auf dem raspi mache ich über eine Remotedesktopverbindung von einem WIN-XP. Vieleich ist das wichtig.
    Gruß Gerhard

    Einmal editiert, zuletzt von gkd (28. Juni 2013 um 03:00)

  • Hallo Pikeman,
    der Tip hat geholfen. Jetzt wird kopiert.
    Leider hängt sich cp zwischendurch auf.
    Es kommt eine Fehlermeldung:
    cp: lesen von "/proc/sysrq-trigger": Eingabe-/Ausgabefehler
    cp: "/var/proc/sysrq-trigger" konte nicht erweitert werden: Ein-/Ausgabefehler
    cp läuft weiter.
    7 Zeilen später:
    "/proc//kmsg " -> "/var/proc/kmsg"
    An dieser Stelle bleibt cp stehen.Keine Fehlermeldung aber es geht nicht weiter.
    Zunächst dachte ich meine Sd-Karte ist nicht ok. Habe dann eine Sandisk Extreme genommen. Das Ergebnis ist das Gleiche.
    cp bleibt exakt an der selben Stelle stehen.
    Mir ist aufgefallen, beide Dateien sysrq-trigger und kmsg haben 0 Bytes.
    Nach cp-Abbruch steht nichts Neues in /mnt.

    Was nun ?

    Gruß Gerhard

  • Moin erst mal,

    ich stehe noch ganz am Anfang was Linux, programmieren etc, angeht, daher verzeiht mir meine Fragen ;)
    Was bedeutet "1. Programmieren der SD-Karte wie gewohnt" ?
    Ich bekomme meinen Pi erst diese Woche. Also gibt es kein "wie gewohnt" bei mir.

    Danke im voraus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!