Skip to content

USB-SSD Boot klappt nicht

Hardware
  • Hallo Frank, da ich noch sehr wenig Erfahrung mit dem RockPro habe, hat mir dein Forum schon sehr viel geholfen. Kompliment und Danke dafür!

    Ich habe ein kleines Problem und vielleicht hast du noch eine Idee:

    Mein Ziel ist es, den RockPro von einer Samsung 950Pro per USB zu booten, was ich bisher nicht hinbekommen habe. SPI Flash habe ich durchgeführt, das aktuelle Linux-Image bootet auch von einem USB-Stick, aber sobald ich das Image auf die SSD kopiere und davon Booten möchte, passiert nichts mehr.
    Leider habe ich keine serielle Konsole, so dass ich keine Fehlermeldungen bekomme.
    Muss die SSD noch irgendwie speziell formatiert oder vorbereitet werden? Ich habe bisher nur das Image (wie bei der SSD, MMC oder dem USB Stick) per Tool aufgespielt...

    Was mir noch aufgefallen war, wenn die nicht Boot-fähige SSD hinterher angeschlossen wurde, meldete FDisk, dass etwas mit dem Partitionsformat nicht i.O. Wäre. Die einzelnen Partitionen und Daten waren aber sichtbar...

    Funktioniert hat bisher der „alte“ Weg, nur das Root-Verzeichnis auf die SSD zu verschieben und weiterhin von der MMC oder SD zu booten...

    Viel Grüße
    Matthias

  • Hallo Matthias,

    zwei Fragen dazu.

    1. Welches Image benutzt du?
    2. Welche USB-Schnittstelle? USB3 geht nicht 😞
  • Hallo Frank,

    Vielen Dank für die schnelle Antwort!

    Versucht habe ich alle 3 USB-Ports, leider ohne Erfolg.
    Der USB-Stick bootet aber problemlos am 3er-Port ;)...

    Ich hatte das aktuelle Image von ayufan verwendet.

    Weitere Versuche kann ich aber erst morgen durchführen, da der RockPro noch meinen Schreibtisch im Büro ziert und ich erst morgen wieder im Office bin.

  • Hoch interessant die Aussage, das der USB-Stick am USB3 bootet 🙂

    Mit welchem Image meinte ich, z.B. bionic-minimal usw. Das Bionic-Minimal ist am stabilsten, meine Erfahrung. Die Desktop Images pack ich ja nicht an 😉

    Noch was, fdisk spuckt immer das hier aus (meine nvme, passiert bei einer sda auch)

    rock64@rockpro64v2_0:/var/www$ 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.
    
    The old ext4 signature will be removed by a write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x6b5bc78b.
    
    Command (m for help): q
    

    Ich ignoriere das. Der kommt irgendwie mit den 7 verschiedenen Partitionen nicht so richtig klar !?

  • Ich kann mit dem Stick gern morgen nochmals Rückmeldung geben, bin mir aber zu 99,9% sicher dass es am Freitag funktionierte. Hatte damit getestet, ob der SPI-Flash überhaupt geklappt hatte...

    Verwendet habe ich bisher immer das Stretch-Minimal-Image. Desktop möchte ich auch nicht und mit Stretch habe ich zumindest ein paar Erfahrungen vom Raspberry (Bin zwar IT-Leiter, komme aber eher aus dem Bereich Firewall / Windows / Storage, aber eher wenig Linux).
    Das Bionic beruht auf Ubuntu, oder? Kann ich mal testen, muss ich mich mal mit der Syntax auseinander setzen (Paketinstallation etc...) und ob alles läuft (Haupsächlich sollte „Homebridge“ genutzt werden)

    Wenn der Fehler in fdsik bei dir auch auftritt, dann passt das wohl soweit..

  • Ich flash mal gerade einen USB-Stick 😉

    Bionic-Minimal ist Ubuntu 18.04.1 LTS

  • Dann werd ich morgen auch noch ein wenig probieren 🙂
    Ich halte dich auf jedem Fall auf dem Laufenden!

  • WTF ??? ☺ Von einem USB-Stick startet der am USB3-Port.

    Nun muss ich nur noch herauskriegen warum der das nicht mit dem USB3-SATA-Adapter macht. Ich nehme mal testweise einen anderen 😉

    Danke für den Tipp!

  • Ergänzung

    Alle meine USB3-to-SATA-Adapter (3 Stück) funktionieren nicht am USB3-Port.

    Ein sehr oller USB Stick bootet perfekt am USB3-Port. 😋

    @matthias Probier die SSD morgen mal am USB2-Port, da sollte die funktionieren.

  • Danke, ich werde berichten 🙂

  • Ich hab eine provisorische Lösung gefunden. 🙂

    Wenn man einen aktiven USB3-Hub benutzt, also mit eigener Spannungsversorgung, dann bootete der schön von der USB3-SSD.

    frank@frank-MS-7A34 ~ $ ssh rock64@192.168.3.17
    rock64@192.168.3.17's password: 
    Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.4.132-1075-rockchip-ayufan-ga83beded8524 aarch64)
                    _                     __   _  _   
     _ __ ___   ___| | ___ __  _ __ ___  / /_ | || |  
    | '__/ _ \ / __| |/ / '_ \| '__/ _ \| '_ \| || |_ 
    | | | (_) | (__|   <| |_) | | | (_) | (_) |__   _|
    |_|  \___/ \___|_|\_\ .__/|_|  \___/ \___/   |_|  
                        |_|                           
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      System information as of Sun Aug 12 18:43:27 UTC 2018
    
      System load:  0.27               Processes:           168
      Usage of /:   0.5% of 234.58GB   Users logged in:     0
      Memory usage: 5%                 IP address for eth0: 192.168.3.17
      Swap usage:   0%
    
     * Check out 6 great IDEs now available on Ubuntu. There may even be
       something worthwhile there for those crazy EMACS fans ;)
    
       - http://bit.ly/6-cool-IDEs
    
    * Introducing Minimal Ubuntu for docker and clouds. 30 MB base image and
       optimised kernels on public clouds. Made for machines and containers.
    
       - https://bit.ly/minimal-ubuntu
    Last login: Sun Aug 12 18:34:35 2018 from 192.168.3.213
    rock64@rockpro64:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            992M     0  992M   0% /dev
    tmpfs           200M  472K  199M   1% /run
    /dev/sda7       235G  1.2G  224G   1% /
    tmpfs           996M     0  996M   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           996M     0  996M   0% /sys/fs/cgroup
    /dev/sda6       112M  4.0K  112M   1% /boot/efi
    tmpfs           200M     0  200M   0% /run/user/1000
    rock64@rockpro64:~$ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    [sudo] password for rock64: 
    4096+0 records in
    4096+0 records out
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 12.2915 s, 349 MB/s
    rock64@rockpro64:~$ lsusb
    Bus 004 Device 003: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. 
    Bus 004 Device 002: ID 2109:0812 VIA Labs, Inc. VL812 Hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 002: ID 2109:2812 VIA Labs, Inc. VL812 Hub
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    

    Na dann viel Spaß morgen beim Testen 😉 Und ohne Dich, wäre ich gar nicht auf die Idee gekommen. Nachdem du mit dem USB-Stick angefangen hast, ist bei mir so langsam der Groschen gefallen.

    Am USB3-Hub hat die SSD-Platte schon die ganze Zeit Spannung. Wenn der ROCKPro64 dann bootet, braucht es wahrscheinlich nicht so lange, bis die SSD erkannt wird. (Spekulation) Also, vermutlich ein Timing Problem. Aber da bin ich überfragt, da muss Kamil ran.

  • So, ich habe heut morgen mal getestet, leider bekomme ich es nicht hin.

    Habe beide Minimal-Images probiert, an allen 3 USB-Ports nichts zu machen. Mein Adapter hat 2 USB-Anschlüsse (1x USB2 + 1x zusätzlich für Stromversorgung, welche im Betrieb aber nicht notwenig ist), egal in welcher Konstellation, der RockPro bootet nicht. Habe den zusätzlichen Anschluß auch einmal "extern" gesteckt, damit zuverlässig Strom ankommt.. Keine Chance.
    Vermutlich mag der RockPro den Adapter nicht so gern. Bin im Moment wieder bei der Lösung nur das Root-Verzeichnis auf die SSD zu legen und den Boot weiterhin on der MMC ausführen zu lassen.
    USB-Hub hab ich derzeit nicht, bzw. muss ich mal auf die Suche gehen 🙂

    Mal noch eine kurze Frage:
    Wie führt man ein Update von uboot durch? Zuerst das Löschen-Image, danach das neue Image flashen?

  • Ich hatte heute auch ein paar Probleme, USB3 scheint noch eine Zicke zu sein 😞

    Zum u-boot aktualisieren. Wenn du den im SPI meinst, genauso würde ich das machen.

    • Erase Image rein
    • Flash-Image mit dem neuen u-boot

    Fertig.

    Das mit dem Umbiegen des Root-Devices nutze ich für eine NVMe SSD, geht ganz gut 🙂

  • Dann nochmals vielen Dank!

  • ROCKPro64 - RTC

    Hardware
    1
    0 Stimmen
    1 Beiträge
    336 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Samsung Portable SSD T5 500GB

    Hardware
    1
    0 Stimmen
    1 Beiträge
    285 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - PCIe Probleme

    Hardware
    3
    0 Stimmen
    3 Beiträge
    330 Aufrufe
    FrankMF

    Danke für dein Feedback.

  • ROCKPro64 - RTL8111/8168/8411 Netzwerkkarte

    Hardware
    4
    0 Stimmen
    4 Beiträge
    389 Aufrufe
    K

    na denn, tippe ich mal so auf default konfiguriert per dhcp 🙂

  • ROCKPro64 - PCIe NVMe SSD installieren

    Hardware
    1
    0 Stimmen
    1 Beiträge
    318 Aufrufe
    Niemand hat geantwortet
  • SATA Karte Marvell 88SE9230 Chipsatz

    Angeheftet Hardware
    19
    0 Stimmen
    19 Beiträge
    6k Aufrufe
    FrankMF

    Ok, es gibt noch eine andere Möglichkeit.

    Kamil hat mir noch ein wenig geholfen. Mit folgender Änderung werden die Platten gefunden.

    hmm, I had to add /etc/default/extlinux: libahci.skip_host_reset=1

    Sieht dann so aus.

    # Configure timeout to choose the kernel # TIMEOUT="10" # Configure default kernel to boot: check all kernels in `/boot/extlinux/extlinux.conf` # DEFAULT="kernel-4.4.126-rockchip-ayufan-253" # Configure additional kernel configuration options APPEND="$APPEND root=LABEL=linux-root rootwait rootfstype=ext4 libahci.skip_host_reset=1"

    Danach waren die Platten zu sehen.

    root@rockpro64:/tmp/etc/default# blkid /dev/sda2: SEC_TYPE="msdos" LABEL_FATBOOT="boot-efi" LABEL="boot-efi" UUID="ABCD-FC7D" TYPE="vfat" PARTLABEL="boot_efi" PARTUUID="72e36967-4050-4bb3-8f8f-bf6755c38f28" /dev/sda3: LABEL="linux-boot" UUID="8e289a3e-0f9b-4da1-a147-51e03390637c" TYPE="ext4" PARTLABEL="linux_boot" PARTUUID="fe944fd2-3e42-4202-8a95-656e9bdb4be6" /dev/sda4: LABEL="linux-root" UUID="3e9513c6-dfd1-48c9-bee2-04bb5a153056" TYPE="ext4" PARTLABEL="linux_root" PARTUUID="d2d1dd88-030d-4f74-998f-7c9ce7d385d0" /dev/sdb2: SEC_TYPE="msdos" LABEL_FATBOOT="boot-efi" LABEL="boot-efi" UUID="56C9-F745" TYPE="vfat" PARTLABEL="boot_efi" PARTUUID="919c8f73-5f25-4a01-9072-3a5ed9a88ff2" /dev/sdb3: LABEL="linux-boot" UUID="23c19647-f4a1-4197-a877-f1bb03456bef" TYPE="ext4" PARTLABEL="linux_boot" PARTUUID="093d0cc0-d122-4dce-aeb5-4e266b4b7d9d" /dev/sdb4: LABEL="linux-root" UUID="f1c74331-8318-4ee8-a4f7-f0c169fb9944" TYPE="ext4" PARTLABEL="linux_root" PARTUUID="964ab457-58d5-40c4-bb02-dfd37bd2f0da" /dev/sda1: PARTLABEL="loader1" PARTUUID="37466429-e4a4-495c-b9a1-3f74625a3cae" /dev/sdb1: PARTLABEL="loader1" PARTUUID="33f692b3-54cb-4a37-b602-21a2baf32fa0"

    Aber auch hiermit ist ein Boot von der SATA Platte nicht möglich.

    Ich möchte hier noch was vom kamil zitieren.

    (11:44:09) ayufanWithPM: will look later, but this controller is tricky, also on x86 as well
    (11:44:16) ayufanWithPM: jms585 seems to be significantly more stable

    Evt. bekommt er das gefixt 😉

  • ROCKPro64 - RP64.GPIO

    Angeheftet Verschoben Hardware
    6
    0 Stimmen
    6 Beiträge
    6k Aufrufe
    FrankMF

    Hallo zusammen,

    da ich weiß das dieser Artikel recht beliebt ist, wollen wir den heute mal aktualisieren. Vieles aus den vorherigen Beiträgen passt noch. Es gibt aber kleine Anpassungen.

    Hardware ROCKPro64v21. 2GB RAM Software Kamils Release 0.10.9 Linux rockpro64 5.6.0-1132-ayufan-g81043e6e109a #ayufan SMP Tue Apr 7 10:07:35 UTC 2020 aarch64 GNU/Linux Installation apt install python

    Danach laden wir das Projekt

    git clone https://github.com/Leapo/Rock64-R64.GPIO

    PIN Nummern anpassen

    cd Rock64-R64.GPIO/R64 nano _GPIO.py

    Datei ergänzen

    # Define GPIO arrays #ROCK_valid_channels = [27, 32, 33, 34, 35, 36, 37, 38, 64, 65, 67, 68, 69, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 96, 97, 98, 100, 101, 102, 103, 104] #BOARD_to_ROCK = [0, 0, 0, 89, 0, 88, 0, 0, 64, 0, 65, 0, 67, 0, 0, 100, 101, 0, 102, 97, 0, 98, 103, 96, 104, 0, 76, 68, 69, 0, 0, 0, 38, 32, 0, 33, 37, 34, 36, 0, 35, 0, 0, 81, 82, 87, 83, 0, 0, 80, 79, 85, 84, 27, 86, 0, 0, 0, 0, 0, 0, 89, 88] #BCM_to_ROCK = [68, 69, 89, 88, 81, 87, 83, 76, 104, 98, 97, 96, 38, 32, 64, 65, 37, 80, 67, 33, 36, 35, 100, 101, 102, 103, 34, 82] ROCK_valid_channels = [52,53,152,54,50,33,48,39,41,43,155,156,125,122,121,148,147,120,36,149,153,42,45,44,124,126,123,127] BOARD_to_ROCK = [0,0,0,52,0,53,0,152,148,0,147,54,120,50,0,33,36,0,149,48,0,39,153,41,42,0,45,43,44,155,0,156,124,125,0,122,126,121,123,0,127] BCM_to_ROCK = [43,44,52,53,152,155,156,45,42,39,48,41,124,125,148,147,124,54,120,122,123,127,33,36,149,153,121,50]

    Abspeichern.

    Datei test.py anlegen

    nano test.py

    Inhalt

    #!/usr/bin/env python # Frank Mankel, 2018, LGPLv3 License # Rock 64 GPIO Library for Python # Thanks Allison! Thanks smartdave! import R64.GPIO as GPIO from time import sleep print("Output Test R64.GPIO Module...") # Set Variables var_gpio_out = 156 var_gpio_in = 155 # GPIO Setup GPIO.setwarnings(True) GPIO.setmode(GPIO.ROCK) GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH) # Set up GPIO as an output, with an initial state of HIGH GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up GPIO as an input, pullup enabled # Test Output print("") print("Testing GPIO Input/Output:") while True: var_gpio_state_in = GPIO.input(var_gpio_in) var_gpio_state = GPIO.input(var_gpio_out) # Return State of GPIO if var_gpio_state == 0 and var_gpio_state_in == 1: GPIO.output(var_gpio_out,GPIO.HIGH) # Set GPIO to HIGH print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State IF : " + str(var_gpio_state)) # Print results else: GPIO.output(var_gpio_out,GPIO.LOW) # Set GPIO to LOW print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State ELSE: " + str(var_gpio_state)) # Print results sleep(0.5) exit() Beispiel

    Bild Text

    Wenn der Taster im Bild betätigt wird, soll die LED blinken.

    Wir benutzen folgende Ein- Augänge des ROCKPro64.

    # Set Variables var_gpio_out = 156 var_gpio_in = 155

    Das heißt:

    an Pin 1 (3,3V) kommt eine Strippe des Tasters an Pin 29 (Input) kommt eine Strippe des Tasters an Pin 31 (Output) kommt der Plus-Pol der LED an Pin 39 (GND) kommt der Minus-Pol der LED

    Somit wird auf den Eingang (Pin 29) bei Betätigung des Tasters 3,3 Volt angelegt. Damit wird dann der Eingang als High (1) erkannt. Die LED wird über den Ausgang (Pin 31) gesteuert.

    Starten kann man das Script mit

    python test.py

  • Serielle Konsole UART2

    Angeheftet Verschoben Hardware
    8
    0 Stimmen
    8 Beiträge
    3k Aufrufe
    FrankMF

    Ich verweise mal auf einen Artikel auf einer Webseite von mir, der Einsteiger Niveau hat.
    https://frank-mankel.de/wichtig/serielle-konsole

    Wenn es dann noch Probleme gibt, einfach fragen.

    Und beachte bitte, das wir hier nicht über PIs schreiben, sondern über ROCKPros. Da könnte es kleine Unterschiede geben. https://www.raspberrypi.org/documentation/configuration/uart.md