Benutzer-Werkzeuge

Webseiten-Werkzeuge

Übersetzungen dieser Seite:
de

bpi-r2:storage

Speicher

Quelle: http://forum.banana-pi.org/t/how-to-update-uboot-without-bpi-update/4023/2

es sieht so aus, als wenn /dev/mmcblk1, /dev/mmcblk1boot0 und /dev/mmcblk1boot1 unabhängige Geräte sind (bootx nicht Partitionen in /dev/mmcblk1)

SD

sdcard-bootsektor reverse-engineering http://forum.banana-pi.org/t/boot-fails-with-self-build-u-boot/5460/20

http://forum.banana-pi.org/t/how-to-build-an-ubuntu-debian-sd-image-from-scratch/6805/8

SD-Headers

  • SDMMC_BOOT-Signatur + Adresse des 2. Headers (0x00000200) - erste 440 byte (vor Partitionstabelle):
gunzip -c BPI-R2-HEAD440-0k.img.gz | dd of=/dev/loop8 bs=1024 seek=0
  • BRLYT-Signatur + Preloader-Adresse (0x00000800):
gunzip -c BPI-R2-HEAD1-512b.img.gz | dd of=/dev/loop8 bs=512 seek=1

MMC-Utils

über die mmc-utils kann man aus einem laufenden System testen, ob die EMMC-Partitionierung stimmt (sollte 0x48 sein siehe partition-konfiguration_des_emmc_aendern).

./mmc extcsd read /dev/mmcblk1
....
Boot configuration bytes [PARTITION_CONFIG: 0x48]
....

ich habe die mmc-utils auch in mein Kernel-Repo übernommen (mit angepasstem Makefile für Cross-Compile)

laut einem Forum-Nutzer (siehe hier) lässt sich die partition config mit den mmc-utils auch schreiben

./mmc bootpart enable 1 1 /dev/mmcblk1
[18:02] root@bpi-r2:~# ./mmc extcsd read /dev/mmcblk1 | grep PARTITION_CONFIG
Boot configuration bytes [PARTITION_CONFIG: 0x00]
[18:02] root@bpi-r2:~# ./mmc bootpart enable 1 1 /dev/mmcblk1
[18:03] root@bpi-r2:~# ./mmc extcsd read /dev/mmcblk1 | grep PARTITION_CONFIG
Boot configuration bytes [PARTITION_CONFIG: 0x48]

Betriebssystem auf EMMC installieren

http://forum.banana-pi.org/t/bpi-r2-new-image-ubuntu-16-04-v1-2-1-bt-and-wifi-ap-mode-are-working-fine-2017-11-27/4291

  1. Schreibmodus für /dev/mmcblk1boot0 aktivieren:
    echo 0 > /sys/block/mmcblk1boot0/force_ro
  2. Preloader von hier auf das boot-device schreiben:
    • gunzip -c BPI-R2-EMMC-boot0-DDR1600-0k-0905.img.gz | sudo dd of=/dev/mmcblk1boot0 bs=1024 seek=0
    • mit bpi-tools:
      bpi-bootsel BPI-R2-EMMC-boot0-DDR1600-0k-0905.img.gz /dev/mmcblk1boot0
  3. kopieren des OS-Abbildes auf EMMC (device=/dev/mmcblk1):
    • unzip -p <XXX.img.zip> | pv | dd of=<device> bs=10M status=noxfer
    • Alternative (mit bpi-tools):
      bpi-copy  <XXX.img.zip> <device>
  4. Ausschalten, SD entfernen und neu hochfahren

wenn sd-Karten-Abbild nicht auf emmc passt: Abbild verkleinern

manuelles kopieren des Betriebssystems

  • für ein neues SD-Card-Image wird der Bootblock eines vorhandenen Images benötigt
  • uboot installieren:
    dd if=BPI-R2-720P-2k.img of=/dev/mmcblk1 bs=1k seek=2 count=1022
  • Partitionstabelle auf der SD exportieren parttable.dat und auf emmc einspielen:
    root@bpi-r2:~# sfdisk -d /dev/mmcblk0 > parttable.dat
    root@bpi-r2:~# sfdisk /dev/mmcblk1 < parttable.dat
  • ggf. checken/vergrößern
  • Dateisysteme anlegen (mkfs) für p1=vfat (apt-get install dosfstools) und p2=ext4
    mkfs -t vfat /dev/mmcblk1p1
    mkfs -t ext4 /dev/mmcblk1p2
  • im bestehenden System mount-Punkte anlegen/konfigurieren
    mkdir -p /mnt/emmc/boot
    mkdir -p /mnt/emmc/root
    nano /etc/fstab
    # <file system>         <dir>           <type>  <options>               <dump>  <pass>
    /dev/mmcblk0p2          /               ext4    errors=remount-ro       0       1
    /dev/mmcblk0p1          /boot           vfat    defaults                0       0
    /dev/mmcblk1p2          /mnt/emmc/root  ext4    errors=remount-ro,noauto   0       1
    /dev/mmcblk1p1          /mnt/emmc/boot  vfat    defaults,noauto         0       0
  • mounten:
    mount /mnt/emmc/root
    mount /mnt/emmc/boot
  • rootfs entpacken/rüberkopieren
    rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot/*"} / /mnt/emmc/root/
  • kernel (p1) und Module (p2) rüberkopieren
    mkdir -p /mnt/emmc/boot/bananapi/bpi-r2/linux
    cp /boot/bananapi/bpi-r2/linux/uImage /mnt/emmc/boot/bananapi/bpi-r2/linux
    mkdir -p /mnt/emmc/root/lib/modules/
    cp -r /lib/modules/$(uname -r) /mnt/emmc/root/lib/modules/
  • uboot auf die richtige Partition konfigurieren
    sed 's/mmcblk0/mmcblk1/' /boot/bananapi/bpi-r2/linux/uEnv.txt > /mnt/emmc/boot/bananapi/bpi-r2/linux/uEnv.txt

Diskussion

bpi-r2/storage.txt · Zuletzt geändert: 2018/12/04 14:43 von frank