Wenn alles funktionieren würde, könnte man den u-boot in den SPI-Speicher flashen und dann würde der ROCKPro64 von der NVMe-Platte booten. Das unterstützt der u-boot aktuell nicht und das SPI flashen funktioniert meiner Meinung nach auch noch nicht. Meine letzten Versuche waren zu mindestens erfolglos.
Früher auf den BananaPi's haben wir ja immer das Rootverzeichnis umgebogen auf die Festplatte und auf der SD-Karte den Aufruf entsprechend angepasst. Dann brauchte man die SD-Karte nur kurz zum Starten, aber alles andere passierte dann auf der Festplatte. Die bessere Wahl, vor allen Dingen wenn man billige SD-Karten einsetzt.
Dann versuchen wir es mal, ob man das auch entsprechend umbiegen kann.
Hardware
- ROCKPro64
- NVMe PCIe Karte
- Samsung 960 EVO m.2 256GB
Software-Empfehlung.
Kamil's 0.7.11 als bionic-minimal-rockpro64-0.7.11-1075-arm64.img.xz
Den aktuellsten Kernel den man benutzen kann ist 4.4.154-1128-rockchip-ayufan
Mainline teste ich zu einem späteren Zeitpunkt.
Vorbereitungen
Das Image auf eine SD-Karte schreiben, damit den ROCKPro64 booten. Danach den aktuellsten Kernel installieren.
Die vier Files von https://github.com/ayufan-rock64/linux-kernel/releases/ runterladen. Danach installieren.
sudo dpkg -i *.deb
Reboot. Danach bitte die Schritte in dieser Anleitung abarbeiten. Somit wären wir nun auf einem aktuellen Stand. Jetzt an die Hardware.
Partitionen löschen (PCIe-NVMe-SSD)
rock64@rp64_nextcloud:~$ sudo fdisk /dev/nvme0n1
Welcome to fdisk (util-linux 2.31.1).
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/nvme0n1: 465,8 GiB, 500107862016 bytes, 976773168 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: 0x76dd7679
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 * 2048 1499135 1497088 731M 83 Linux
/dev/nvme0n1p2 1501182 976771071 975269890 465G 5 Extended
/dev/nvme0n1p5 1501184 976771071 975269888 465G 83 Linux
Command (m for help): d
Partition number (1,2,5, default 5):
Partition 5 has been deleted.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 has been deleted.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help):
Command (m for help): d
No partition is defined yet!
Could not delete partition 366717289473
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Partition anlegen
rock64@rp64_nextcloud:~$ sudo fdisk /dev/nvme0n1
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-976773167, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-976773167, default 976773167):
Created a new partition 1 of type 'Linux' and of size 465,8 GiB.
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Partition formatieren
rock64@rp64_nextcloud:~$ sudo mkfs.ext4 /dev/nvme0n1
mke2fs 1.44.1 (24-Mar-2018)
Found a dos partition table in /dev/nvme0n1
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 122096646 4k blocks and 30531584 inodes
Filesystem UUID: 7ec25e75-55c9-4d5d-ba79-be53459d7cf9
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
Disk Label erstellen
sudo e2label /dev/nvme0n1 TEST
Label anzeigen
rock64@rockpro64:/boot/extlinux$ sudo blkid
/dev/mmcblk0p6: SEC_TYPE="msdos" LABEL="boot" UUID="F4D5-2B6F" TYPE="vfat" PARTLABEL="boot" PARTUUID="7c5ac738-ff0f-458f-a5af-a4c8e68d4eb2"
/dev/mmcblk0p7: LABEL="linux-root" UUID="94cf8a89-37ac-40f6-8ead-97986ad4c98f" TYPE="ext4" PARTLABEL="root" PARTUUID="e5904a49-a20b-4300-9e2d-538409b62957"
/dev/nvme0n1: LABEL="TEST" UUID="fa0af070-498d-4c88-af1f-126f0390e5b8" TYPE="ext4"
/dev/zram0: UUID="cc0465f6-402f-41dd-b980-41f52d65a3fd" TYPE="swap"
/dev/zram1: UUID="31513e1d-e80d-4b27-98b1-bf2bdbee302b" TYPE="swap"
/dev/zram2: UUID="c62d350e-61ee-433d-9b5a-63e5d6459c84" TYPE="swap"
/dev/zram3: UUID="a6306cf0-8e68-47d1-9c39-6a46f68bd912" TYPE="swap"
/dev/zram4: UUID="10375922-5008-4f22-beb5-0d09c0f398d0" TYPE="swap"
/dev/zram5: UUID="a1911e3e-0589-4927-ac12-92e37b0e8e9b" TYPE="swap"
/dev/mmcblk0: PTUUID="2c9a4a22-7aa8-4a1b-815e-0c3e2e7065e6" PTTYPE="gpt"
/dev/mmcblk0p1: PARTLABEL="loader1" PARTUUID="45411944-1c6e-4279-8d0b-138e5d048f46"
/dev/mmcblk0p2: PARTLABEL="reserved1" PARTUUID="aae3009f-3c99-4421-801a-d7e8d25ba5b4"
/dev/mmcblk0p3: PARTLABEL="reserved2" PARTUUID="512b7b26-a5b8-4e8d-a362-fd692f4fd316"
/dev/mmcblk0p4: PARTLABEL="loader2" PARTUUID="88a77e9a-27e0-40e7-899b-effcabc6dcaa"
/dev/mmcblk0p5: PARTLABEL="atf" PARTUUID="b03779fe-7974-40a7-879d-2fe630f01ba2"
Mounten der SSD
Wir mounten nach /mnt
sudo mount /dev/nvme0n1 /mnt
Root Verzeichnis kopieren
Nun kopieren wir die komplette SD-Karte auf die SSD.
sudo rsync -ax / /mnt/
Bootparameter ändern
sudo nano /boot/extlinux/extlinux.conf
Inhalt
root=LABEL=linux-root
ändern in
root=LABEL=TEST
Abspeichern - Fertig! Neustarten!
Kontrolle
Nach einem Neustart schauen wir uns mal eben die Platten an
rock64@rockpro64:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 388M 460K 388M 1% /run
/dev/nvme0n1 229G 1.4G 216G 1% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mmcblk0p6 112M 4.0K 112M 1% /boot/efi
tmpfs 388M 0 388M 0% /run/user/1000
Da ist die NVMe Platte mit 229GB Kapazität.
Den oberen Teil habe ich am 1. März 2019 aktualisiert, der Rest folg noch!
Problem
Im Moment geht nur ein Kaltstart, ein Reset am Taster oder auch ein
sudo shutdown -r now
funktionieren im Moment nicht. Muss ich mich mal auf die Suche machen
Update
Ein shutdown now funktioniert einwandfrei, auch nach dem Aufwecken über den Power-Button.
Kernel-Update
Aufpassen, bei einem Kernel-Update müsst ihr die Änderungen in der Datei /boot/extlinux/extlinux.conf wiederholen.
Das Problem gestaltet sich etwas komplexer. Da wir ja bei dem Kernel-Update auf der NVMe-Karte rumrödeln, ist auf der SD-Karte der Ordner /boot nicht aktuell, so das immer wieder der alte Kernel geladen werden würde.
Aber, auch das lässt sich relativ einfach anpassen. Wir sind im gestarteten System mit dem aktualisierten Kernel. Bevor wir neustarten, machen wir nun das.
Die SD-Karte mounten
sudo mount /dev/mmcblk0p7 /mnt
Den alten Ordner /boot sichern
sudo mv /mnt/boot /mnt/boot_BAK
Den Ordner /boot von der NVMe-Karte kopieren
sudo cp -r /boot /mnt/boot
Die Datei extlinux.conf wieder anpassen
sudo nano /mnt/boot/extlinux/extlinux.conf
Das kennt ihr ja jetzt schon Danach ist der Ordner /boot auf der SD-Karte und der NVMe-Karte identisch und das System startet den neuen Kernel. Ok, etwas umständlich, aber leider geht SPI Flash ja noch nicht. Und ob das dann mit NVMe geht steht noch in den Sternen. Aber so kann man ja auch erst mal was spielen
Aktuelles System
rock64@rockpro64:~$ uname -a
Linux rockpro64 4.4.132-1081-rockchip-ayufan-g50be7e64a779 #1 SMP Tue Jul 31 20:09:25 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Laufwerke
rock64@rockpro64:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 388M 444K 388M 1% /run
/dev/nvme0n1 229G 1.4G 216G 1% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mmcblk0p6 112M 4.0K 112M 1% /boot/efi
tmpfs 388M 0 388M 0% /run/user/1000
Mainline
Mit dem Mainline-Kernel habe ich kein funktionierendes System hinbekommen.