NVMe - Booten jetzt möglich



  • Macht das Bitte nur, wenn ihr wisst was der SPI ist und wenn ihr wisst, was ihr im Fehlerfall machen müsst. Danke!

    Da sich ja schon seit längerer Zeit so nicht mehr richtig viel tut, schau ich nur noch gelegentlich ins Pine64-Forum. Das war gestern Abend mal wieder der Fall und da schreibt jemand, das er den neuen u-boot für den ROCKPro64 fertig hat. Das weckt natürlich meine Neugierde 🙂 Es handelt sich um diesen u-boot

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)
    

    Der liebe Kamil hatte das ja schon vor Monaten angekündigt, aber leider nicht umgesetzt. Gut, das wir uns im Open Source Umfeld bewegen, da haben mehrere Menschen Zugriff auf die Daten. Ok, weiter

    Hier der Link zum Forum.

    Ich oute mich mal, die Binaries die er dort vorstellt, sagen mir zwar was, ich weiß aber nicht so richtig was ich damit anfangen soll. Ein paar Versuche hier waren leider erfolglos. Also habe ich den ganzen Beitrag nochmal aufmerksam gelesen und bin dann über das Script

    flash_spi.img.gz
    

    gestolpert. Dazu hat der Autor sigmaris eine Github Seite mit Anleitung erstellt.

    https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI
    

    Ok, das bekommen wir hin 🙂

    Also, das Script entpackt und auf eine SD-Karte geschrieben. Den ROCKPro64 damit gestartet und wir sehen einen u-boot Yeah!

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)               
    Channel 0: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    Channel 1: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    256B stride                                                                     
    256B stride                                                                     
    lpddr4_set_rate: change freq to 400000000 mhz 0, 1                              
    lpddr4_set_rate: change freq to 800000000 mhz 1, 0                              
    Trying to boot from BOOTROM                                                     
    Returning to boot ROM...              
    

    Ein paar schnelle Versuche mit verschiedenen Datenträgern war nicht so erfolgreich. Da es spät war, habe ich abgebrochen. Heute Morgen dann beim ersten Kaffee noch mal richtig drüber nachdenken....

    Ok, wenn ich von der PCIe NVMe SSD starten möchte, brauche ich dort das komplette Image drauf. Doch wie stelle ich das dann jetzt an? Man könnte den Adapter in einen PC einbauen, man könnte die Karte in einen freien Slot einbauen, wäre beides möglich bei mir. Aber, ich bin faul. Morgens unterm Schreibtisch rum rutschen? Nö.

    Wir schreiben uns das aktuelle Image vom Kamil auf eine SD-Karte. In den Homeordner kopieren wir das entpackte Image vom Kamil.

    buster-minimal-rockpro64-0.9.16-1163-arm64.img
    

    Damit starten wir jetzt den ROCKPro64. Nach Passwortwechsel, das kennt ihr ja sicherlich bereits alles, befinden wir uns im Homeordner. Dort liegt nun unser Image. Das soll nun auf die PCI NVMe SSD.

    Schauen wir mal, ob alles da ist.

    sudo fdisk -l
    [sudo] password for rock64: 
    Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/mtdblock0: 384 KiB, 393216 bytes, 768 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 /dev/mtdblock1: 3.6 MiB, 3768320 bytes, 7360 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 /dev/mtdblock2: 32 KiB, 32768 bytes, 64 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 /dev/mtdblock3: 12 MiB, 12582912 bytes, 24576 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 /dev/nvme0n1: 232.9 GiB, 250059350016 bytes, 488397168 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 /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 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: gpt
    Disk identifier: 4252573B-53A6-4918-89A6-7802D8D8031F
    
    Device          Start       End   Sectors  Size Type
    /dev/mmcblk0p1     64      8063      8000  3.9M Linux filesystem
    /dev/mmcblk0p2   8064      8191       128   64K Linux filesystem
    /dev/mmcblk0p3   8192     16383      8192    4M Linux filesystem
    /dev/mmcblk0p4  16384     24575      8192    4M Linux filesystem
    /dev/mmcblk0p5  24576     32767      8192    4M Linux filesystem
    /dev/mmcblk0p6  32768    262143    229376  112M Microsoft basic data
    /dev/mmcblk0p7 262144 124735454 124473311 59.4G Linux filesystem
    

    Image ?

    rock64@rockpro64:~$ ls
    buster-minimal-rockpro64-0.9.16-1163-arm64.img
    

    Gut, alles vorhanden. Dann mal los.

    rock64@rockpro64:~$ sudo dd of=/dev/nvme0n1 if=/home/rock64/buster-minimal-rockpro64-0.9.16-1163-arm64.img bs=1M
    2045+0 records in
    2045+0 records out
    2144337920 bytes (2.1 GB, 2.0 GiB) copied, 36.9288 s, 58.1 MB/s
    

    Hier, der dd Befehl incl. Erfolgsmeldung. Damit wäre das Image jetzt auf der PCIe NVMe SSD. Wir können nun die SD-Karte entfernen und mit der NVMe Karte booten.

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)              
    Channel 0: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                        
    Channel 1: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                        
    256B stride                                                                    
    256B stride                                                                    
    lpddr4_set_rate: change freq to 400000000 mhz 0, 1                              
    lpddr4_set_rate: change freq to 800000000 mhz 1, 0                              
    Trying to boot from BOOTROM                                                    
    Returning to boot ROM...                                                        
                                                                                   
    U-Boot SPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36 +0000)        
    Trying to boot from SPI                                                        
    NOTICE:  BL31: v2.2(release):v2.2-277-gb1af2a51                                
    NOTICE:  BL31: Built : 15:44:18, Jan  3 2020                                    
                                                                                   
                                                                                   
    U-Boot 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36 +0000)            
                                                                                   
    Model: Pine64 RockPro64                                                        
    DRAM:  2 GiB                                                                    
    PMIC:  RK808                                                                    
    MMC:   dwmmc@fe320000: 1, sdhci@fe330000: 0                                    
    Loading Environment from SPI Flash... SF: Detected gd25q128 with page size 256 B
    *** Warning - bad CRC, using default environment                                
                                                                                   
    In:    serial@ff1a0000                                                          
    Out:   serial@ff1a0000                                                          
    Err:   serial@ff1a0000                                                          
    Model: Pine64 RockPro64                                                        
    rockchip_dnl_key_pressed: adc_channel_single_shot fail!                        
    Net:   eth0: ethernet@fe300000                                                  
    Hit any key to stop autoboot:  0                                                
    Card did not respond to voltage select!                                        
    Card did not respond to voltage select!                                        
                                                                                   
    Device 0: Vendor: 0x144d Rev: 1B2QEXE7 Prod: S466NX0K606125A                    
               Type: Hard Disk                                                    
               Capacity: 476940.0 MB = 465.7 GB (976773168 x 512)                  
    ... is now current device                                                      
    Scanning nvme 0:7...                                                            
    Found /boot/extlinux/extlinux.conf                                              
    Retrieving file: /boot/extlinux/extlinux.conf                                  
    2073 bytes read in 4 ms (505.9 KiB/s)                                          
    select kernel                                                                  
    1:      kernel-4.4.202-1237-rockchip-ayufan-gfd4492386213                      
    2:      kernel-4.4.202-1237-rockchip-ayufan-gfd4492386213-memtest              
    3:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339                      
    4:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339-memtest  
    [...gekürzt...]
    

    YEAH! Der ROCKPro64 bootet direkt von der PCIe NVMe SSD. Dazu bedarf es jetzt nur noch, das der u-boot im SPI Speicher drin ist.

    Noch kurz das Filesystem anzeigen lassen

    rock64@rockpro64:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            960M     0  960M   0% /dev
    tmpfs           193M  7.7M  185M   4% /run
    /dev/nvme0n1p7  1.9G  1.1G  669M  62% /
    tmpfs           963M     0  963M   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           963M     0  963M   0% /sys/fs/cgroup
    /dev/nvme0n1p6  112M  4.0K  112M   1% /boot/efi
    tmpfs           193M     0  193M   0% /run/user/1000
    

    Somit sollte sich auch der Kernel Problem los aktualisieren lassen, was ja vorher immer recht mühsam war.

    Aktuell nutzt der ROCKPro64 dieses Image

    Linux rockpro64 4.4.197-1236-rockchip-ayufan-g30faab37e339 #1 SMP Tue Oct 22 11:35:10 UTC 2019 aarch64
    

    Dann installieren wir mal 4.4.202-1237-rockchip-ayufan
    https://github.com/ayufan-rock64/linux-kernel/releases/

    Nach dem Reboot

                    _                     __   _  _   
      _ __ ___   ___| | ___ __  _ __ ___  / /_ | || |  
     | '__/ _ \ / __| |/ / '_ \| '__/ _ \| '_ \| || |_ 
     | | | (_) | (__|   <| |_) | | | (_) | (_) |__   _|
     |_|  \___/ \___|_|\_\ .__/|_|  \___/ \___/   |_|  
                         |_|                           
     Linux rockpro64 4.4.202-1237-rockchip-ayufan-gfd4492386213 #1 SMP Sat Nov 23 13:55:47 UTC 2019 aarch64
    

    So muss das funktionieren. Sehr lange drauf gewartet!

    Vielen Dank an sigmaris für die tolle Arbeit!

    Und jetzt mal Schauen, ob das auch von USB3 geht, das ging gestern Abend auch nicht.....

    Wie ich gerade sehe, muss das Root Filesystem noch vergrößert werden.

    Ok, Problem gelöst. Bitte hier nachlesen.



  • Jetzt müssen wir mal schauen, ob das Ganze auch stabil läuft...



  • Nachdem ich jetzt ein wenig rumgespielt habe, folgende Empfehlung.

    Der u-boot ist ja zum Testen da, mit einer PCIe NVMe SSD oder einer SD-Karte bootet er einwandfrei. Mit meiner eMMC-Karte nicht, so wie auch nicht an USB2 und USB3. Sollte ihr also so ein Gerät zum Booten benutzen, müsst ihr den gewohnten Weg gehen.


Log in to reply
 

Diese Artikel könnten Dich auch interessieren.

  • 1
  • 1
  • 5
  • 1
  • 8
  • 3
  • 1
  • 1