F2FS
Das Flash-Friendly File System (F2FS) ist ein Open-Source Projekt unter der Federführung von Samsung. Es sorgt im Wesentlichen dafür, dass die Schreibzugriffe gleichmäßig über den Speicher verteilt werden. Das erhöht die Lebensdauer einer SD-Karte deutlich, weshalb F2FS eine gute Alternative zum Standard-Filesystem des Raspberry Pi OS ist: ext4.
Sie können Ihr Raspberry Pi OS nach F2FS migrieren, indem Sie einen USB-Stick als Zwischenspeicher verwenden.
Backup
Zunächst müssen Sie eine Sicherung der Daten von der SD-Karte und vom USB-Stick machen.
Konvertierung
Sie installieren die benötigten Softwarepakete.
sudo apt-get update
sudo apt-get install f2fs-tools
Das Dateisystem des USB-Sticks (in meinem Fall auf dem Device /dev/sda erkannt) wird mit fdisk für den Transfervorgang neu erstellt.
pi@raspberrypi:~ $ sudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sda: 7.2 GiB, 7743995904 bytes, 15124992 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 Disklabel type: dos Disk identifier: 0xc3072e18 Device Boot Start End Sectors Size Id Type /dev/sda1 8064 15124991 15116928 7.2G 82 Linux swap / Solaris Command (m for help): d Selected partition 1 Partition 1 has been deleted. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-15124991, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-15124991, default 15124991): Created a new partition 1 of type 'Linux' and of size 7.2 GiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda1 mke2fs 1.43.4 (31-Jan-2017) Creating filesystem with 1890368 4k blocks and 473280 inodes Filesystem UUID: 923c060e-48fe-40e8-aa8b-025e934bc623 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Das Filesystem wird montiert und die Daten kopiert.
sudo mount /dev/sda1 /mnt
sudo rsync -avx / /mnt/
Boot from USB
Um von dem USB-Stick booten zu können, muss in der Datei /mnt/etc/fstab die Rootpartition auf /dev/sda1 gelegt werden.
proc /proc proc defaults 0 0
PARTUUID=e1bb85a1-01 /boot vfat defaults 0 2
#PARTUUID=e1bb85a1-02 / ext4 defaults,noatime 0 1
/dev/sda1 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
In der Datei /boot/cmdline.txt wird der Eintrag root= angepasst.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Jetzt wird der Pi vom USB-Stick gebootet.
sudo umount /mnt
sudo shutdown -r 0
Boot from F2FS
Nun wird das Filesystem auf der SD-Karte initialisiert und anschließend alles zurück kopiert.
sudo mkfs.f2fs /dev/mmcblk0p2
sudo mount /dev/mmcblk0p2 /mnt
sudo rsync -avx / /mnt/
Um von dem F2FS booten zu können, muss in der Datei /mnt/etc/fstab die Rootpartition wieder zurück gelegt werden. Dieses mal ändert sich der Typ des Filesystems auf f2fs.
proc /proc proc defaults 0 0
PARTUUID=e1bb85a1-01 /boot vfat defaults 0 2
PARTUUID=e1bb85a1-02 / f2fs defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
In der Datei /boot/cmdline.txt wird der Eintrag root= erneut und der Eintrag rootfstype= erstmalig angepasst.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=e1bb85a1-02 rootfstype=f2fs elevator=deadline fsck.repair=yes rootwait
Jetzt kann der USB-Stick entfernt und der Pi vom F2F2 gebootet werden.
sudo umount /mnt
sudo shutdown -r 0