eMMC Modul



  • Heute ist ja meine Lieferung aus dem fernen Osten angekommen 😉

    Darunter war auch eine 32 GB eMMC Karte. Dann wollen wir mal schauen wie das so funktioniert.

    System

    rock64@rockpro64:~$ uname -a
    Linux rockpro64 4.4.132-1072-rockchip-ayufan-ga1d27dba5a2e #1 SMP Sat Jul 21 20:18:03 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    fdisk -l

    rock64@rockpro64:~$ 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: 4 MiB, 4161536 bytes, 8128 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: 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/mtdblock2: 256 KiB, 262144 bytes, 512 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/mmcblk1: 28.9 GiB, 31037849600 bytes, 60620800 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: 0x6f20736b
    
    Device         Boot      Start        End    Sectors   Size Id Type
    /dev/mmcblk1p1       778135908 1919645538 1141509631 544.3G 72 unknown
    /dev/mmcblk1p2       168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
    /dev/mmcblk1p3      1869881465 3805909656 1936028192 923.2G 79 unknown
    /dev/mmcblk1p4      2885681152 2885736650      55499  27.1M  d unknown
    
    Partition table entries are not in disk order.
    
    
    
    
    Disk /dev/mmcblk1boot1: 4 MiB, 4194304 bytes, 8192 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/mmcblk1boot0: 4 MiB, 4194304 bytes, 8192 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: 14.9 GiB, 15931539456 bytes, 31116288 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: 2934CDA1-05F4-468A-AC81-718F9FD97DB0
    
    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 31116254 30854111 14.7G Linux filesystem
    
    
    Disk /dev/sda: 223.6 GiB, 240057409536 bytes, 468862128 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: 0x17830656
    
    Device     Boot Start       End   Sectors   Size Id Type
    /dev/sda1       65535 468862127 468796593 223.6G 83 Linux
    
    
    Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 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
    Disklabel type: dos
    Disk identifier: 0xb9aa5cfb
    
    Device     Boot Start        End    Sectors   Size Id Type
    /dev/sdb1        2048 1953525167 1953523120 931.5G 83 Linux
    
    
    Disk /dev/zram0: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram1: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram2: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram3: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram4: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram5: 166 MiB, 173989888 bytes, 42478 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    

    Mal was kürzen, die SD-Karte

    Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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: 2934CDA1-05F4-468A-AC81-718F9FD97DB0
    
    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 31116254 30854111 14.7G Linux filesystem
    

    Die eMMC Karte

    Disk /dev/mmcblk1: 28.9 GiB, 31037849600 bytes, 60620800 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: 0x6f20736b
    
    Device         Boot      Start        End    Sectors   Size Id Type
    /dev/mmcblk1p1       778135908 1919645538 1141509631 544.3G 72 unknown
    /dev/mmcblk1p2       168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
    /dev/mmcblk1p3      1869881465 3805909656 1936028192 923.2G 79 unknown
    /dev/mmcblk1p4      2885681152 2885736650      55499  27.1M  d unknown
    
    Partition table entries are not in disk order.
    
    
    
    
    Disk /dev/mmcblk1boot1: 4 MiB, 4194304 bytes, 8192 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/mmcblk1boot0: 4 MiB, 4194304 bytes, 8192 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
    

    System kopieren

    rock64@rockpro64:/usr/local/sbin$ sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1
    31116288+0 records in
    31116288+0 records out
    15931539456 bytes (16 GB, 15 GiB) copied, 1784.49 s, 8.9 MB/s
    

    Das Ganze dauert etwas, also ruhig mal Kaffee trinken oder was anderes 😉

    rock64@rockpro64:~$ sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M
    3798+1 records in
    3798+1 records out
    15931539456 bytes (16 GB, 15 GiB) copied, 486.644 s, 32.7 MB/s
    

    Dank eines Tipps aus dem Forum, ich hatte bs=4M nicht angehangen, geht es jetzt deutlich schneller! Thank you! Dauert jetzt bei mir nur noch ca. 10 Minuten. Damit kann man leben 😉

    Speedtest

    rock64@rockpro64:~$ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    4096+0 records in
    4096+0 records out
    4294967296 bytes (4.3 GB, 4.0 GiB) copied, 43.7304 s, 98.2 MB/s
    

    Das Ganze noch mit iozone

    rock64@rockpro64:~$ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 
    	Iozone: Performance Test of File I/O
    	        Version $Revision: 3.429 $
    		Compiled for 64 bit mode.
    		Build: linux 
    
    	Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
    	             Al Slater, Scott Rhine, Mike Wisner, Ken Goss
    	             Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
    	             Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
    	             Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
    	             Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
    	             Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
    	             Vangel Bojaxhi, Ben England, Vikentsi Lapa.
    
    	Run began: Wed Jul 25 16:28:19 2018
    
    	Include fsync in write timing
    	O_DIRECT feature enabled
    	Auto Mode
    	File size set to 102400 kB
    	Record Size 4 kB
    	Record Size 16 kB
    	Record Size 512 kB
    	Record Size 1024 kB
    	Record Size 16384 kB
    	Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    	Output is in kBytes/sec
    	Time Resolution = 0.000001 seconds.
    	Processor cache size set to 1024 kBytes.
    	Processor cache line size set to 32 bytes.
    	File stride size set to 17 * record size.
                                                                  random    random     bkwd    record    stride                                    
                  kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
              102400       4     3640     4406     8138     8161     8221     3806                                                          
              102400      16    15447    18884    32456    32616    32407    18112                                                          
              102400     512    86681    90801   104477   104538   105025    90173                                                          
              102400    1024    91425    94894   107187   107413   106724    88925                                                          
              102400   16384    93649    95187   115293   115418   115404    95819                                                          
    
    iozone test complete.
    

    Resizing

    Nach dieser Aktion ist die Partition Nr.7 kleiner als die eMMC-Karte groß ist. Die eMMC-Karte hat 32 GB, die SD-Karte hatte 16GB. dd kopiert ja stumpf 1:1 alles rüber. Was machen? Kamil hat unter /usr/local/sbin ein paar Scripte liegen. Darunter resize_rootfs.sh Dieses Script ist dafür da, die Partition Nr.7 auf die maximale Größe des Gerätes zu vergrößern. Genau das was ich brauche 😉

    rock64@rockpro64:/usr/local/sbin$ sudo ./resize_rootfs.sh 
        [sudo] password for rock64: 
        Resizing /dev/mmcblk1 (sd/emmc -- /dev/mmcblk1p7)...
        + sgdisk -e /dev/mmcblk1
        Warning: The kernel is still using the old partition table.
        The new table will be used at the next reboot or after you
        run partprobe(8) or kpartx(8)
        The operation has completed successfully.
        + echo ,+,,,
        + sfdisk /dev/mmcblk1 -N7 --force
        Checking that no-one is using this disk right now ... FAILED
        
        This disk is currently in use - repartitioning is probably a bad idea.
        Umount all file systems, and swapoff all swap partitions on this disk.
        Use the --no-reread flag to suppress this check.
        
        Disk /dev/mmcblk1: 28.9 GiB, 31037849600 bytes, 60620800 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: 2934CDA1-05F4-468A-AC81-718F9FD97DB0
        
        Old situation:
        
        Device          Start      End  Sectors  Size Type
        /dev/mmcblk1p1     64     8063     8000  3.9M Linux filesystem
        /dev/mmcblk1p2   8064     8191      128   64K Linux filesystem
        /dev/mmcblk1p3   8192    16383     8192    4M Linux filesystem
        /dev/mmcblk1p4  16384    24575     8192    4M Linux filesystem
        /dev/mmcblk1p5  24576    32767     8192    4M Linux filesystem
        /dev/mmcblk1p6  32768   262143   229376  112M Microsoft basic data
        /dev/mmcblk1p7 262144 31116254 30854111 14.7G Linux filesystem
        
        /dev/mmcblk1p7: 
        New situation:
        Disklabel type: gpt
        Disk identifier: 2934CDA1-05F4-468A-AC81-718F9FD97DB0
        
        Device          Start      End  Sectors  Size Type
        /dev/mmcblk1p1     64     8063     8000  3.9M Linux filesystem
        /dev/mmcblk1p2   8064     8191      128   64K Linux filesystem
        /dev/mmcblk1p3   8192    16383     8192    4M Linux filesystem
        /dev/mmcblk1p4  16384    24575     8192    4M Linux filesystem
        /dev/mmcblk1p5  24576    32767     8192    4M Linux filesystem
        /dev/mmcblk1p6  32768   262143   229376  112M Microsoft basic data
        /dev/mmcblk1p7 262144 60619709 60357566 28.8G Linux filesystem
        
        The partition table has been altered.
        Calling ioctl() to re-read partition table.
        Re-reading the partition table failed.: Device or resource busy
        The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
        Syncing disks.
        + partprobe /dev/mmcblk1
        + resize2fs /dev/mmcblk1p7
        resize2fs 1.44.1 (24-Mar-2018)
        Filesystem at /dev/mmcblk1p7 is mounted on /; on-line resizing required
        old_desc_blocks = 2, new_desc_blocks = 4
        The filesystem on /dev/mmcblk1p7 is now 7544695 (4k) blocks long.
    

    Neustarten, danach hat die Partition 29GB

     rock64@rockpro64:~$ df -h
     Filesystem      Size  Used Avail Use% Mounted on
     udev            992M     0  992M   0% /dev
     tmpfs           200M  488K  199M   1% /run
     /dev/mmcblk1p7   29G  1.3G   26G   5% /
     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/mmcblk1p6  112M  4.0K  112M   1% /boot/efi
     tmpfs           200M     0  200M   0% /run/user/1000
    

    Fazit

    Die eMMC-Karte auf einem ROCKPro64 scheint ja ganz gut nutzbar zu sein. Ist aber noch zu früh für ein endgültiges Fazit. Was mir jetzt schon auffällt, wenn man oft sie Images ausprobiert, ist eine SD-Karte unschlagbar. Einfach zu handeln. Wenn eine Version aber mal relativ fix ist, kann man auch eine eMMC Karte nehmen.

    Ich will SPI 🙂

    Update

    Wenn ich eine 32GB SD-Karte nehme klappt es nicht, bekomme dann eine Fehlermeldung. Nehmt eine SD-Karte die etwas kleiner ist als das eMMC-Modul. Bsp.: 16GB SD-Karte - 32GB eMMC-Modul 😉


 

Diese Artikel könnten Dich auch interessieren.

  • 1
  • 2
  • 2
  • 1
  • 4
  • 1
  • 1
  • 12