Raspberry Pi "auf USB Stick" umstellen
SD Karten die im Raspberry Pi als “Festplatten” verwendet werden zeichnen sich durch eine kurze Lebensdauer bei häufigen Schreibzugriffen aus. Was “kurz” im Einzelfall bedeuten kann weiß ich noch nicht. Es gibt aber die Möglichkeit den Hauptteil des Betriebssystems auf einen USB Datenträger zu verlagern. Dann wird die SD Karte nur noch kurz zum Booten verwendet und der Rest findet auf dem USB Datenträger statt.
Hier die Dokumentation der bei mir erfolgreichen Schritte die im wesentlichen von dieser Erklärung übernommen worden sind.
Unter welchem Namen ist der USB Stick im Raspberry Pi registriert?
#dmesg
....
....
[2554855.886854] usb 1-1.3: n new high-speed USB device number 5 using dwc_otg
[2554855.988411] usb 1-1.3: New USB device found, idVendor=0781, idProduct=5572
[2554855.988449] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2554855.988499] usb 1-1.3: Product: Cruzer Switch
[2554855.988518] usb 1-1.3: Manufacturer: SanDisk
[2554855.988535] usb 1-1.3: SerialNumber: 4C532000040914100541
[2554855.990296] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[2554855.990674] scsi0 : usb-storage 1-1.3:1.0
[2554856.988561] scsi 0:0:0:0: Direct-Access SanDisk Cruzer Switch 1.26 PQ: 0 ANSI: 6
[2554856.993958] sd 0:0:0:0: [sda] 62530624 512-byte logical blocks: (32.0 GB/29.8 GiB)
[2554856.996190] sd 0:0:0:0: [sda] Write Protect is off
[2554856.996233] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[2554857.000782] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[2554857.023009] sda: sda1
[2554857.028734] sd 0:0:0:0: [sda] Attached SCSI disk
Aha, also “sda” heißt die “Festplatte”. Nun mit fdisk eine neue Partition einrichten. Mit “p” sieht man welche Partitionen eingerichtet sind. Diese Windows Partition brauchen wir nicht mehr und wandeln sie einfach in eine Linux Partition um. Man könnte auch löschen und neu anlegen. “t” fragt uns nach dem Typ und “83” ist eine Linux Partition. Mit “w” wird das ganze final auf den USB Stick geschrieben.
#fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 32.0 GB, 32015679488 bytes
255 heads, 63 sectors/track, 3892 cylinders, total 62530624 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
/dev/sda1 32 62530623 31265296 c W95 FAT32 (LBA)
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
Changed system type of partition 1 to 83 (Linux)
Command (m for help): p
....
Device Boot Start End Blocks Id System
/dev/sda1 32 62530623 31265296 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information.
Syncing disks.
Dann noch formatieren:
#mke2fs -t ext4 -L rootfs /dev/sda1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=rootfs
OS type: Linux
....
....
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Und nachdem wir diese neue Partition “gemounted” haben können wir auch damit etwas anfangen
#mount /dev/sda1 /mnt
Und? Ist schon alles da?
#df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.6G 3.4G 0 100% /
/dev/root 3.6G 3.4G 0 100% /
devtmpfs 211M 0 211M 0% /dev
tmpfs 44M 296K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 34% /boot
/dev/sda1 30G 44M 28G 1% /mnt
So, jetzt kopieren wir alles auf den neuen USB Stick. Dazu verwenden wir das Programm rsync und installieren es noch wenn noch nicht geschehen.
#apt-get install rsync
#sudo rsync -axv / /mnt
Nun sagen wir dem Raspberry Pi das er ab sofort nicht mehr von der SD Karte sondern vom USB Stick booten soll. Nicht erschrecken - in der Datei ist nur eine lange Zeile enthalten.
Nach einem Backup tauschen wir die “normale” Bootpartition “root=/dev/mmcblk0p2” gegen die neue Partition aus “root=/dev/sda1”
#cp /boot/cmdline.txt /boot/cmdline.orig
#nano /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait
Und dann auch noch den USB Stick als Root Filesystem einbinden und die alte mit einem “#” auskommentieren.
#nano /mnt/etc/fstab
proc /proc proc defaults 0 0
/dev/sda1 / ext4 defaults,noatime 0 1
/dev/mmcblk0p1 /boot vfat defaults 0 2
#/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
Neu booten und freuen ;-)
Und nach einem Neustart sollte es dann so aussehen
#df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 30G 3.5G 25G 13% /
/dev/root 30G 3.5G 25G 13% /
devtmpfs 211M 0 211M 0% /dev
tmpfs 44M 272K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 34% /boot