How to create a microSD card with the image

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Другие языки:

Recording the finished image on the card

Selecting the desired image

  • Go to the finished images page in Github and select the desired image:
    • for Wiren Board 4 - name ends as _wb4
    • for Wiren Board Smart Home 3.5 - ends as _wb3
      • if the serial number of your Wiren Board Smart Home 3.5 is more than 300 - use the image with newwifi in the title
    • for WB rev. 2.8 - ends as _wb28
    The image will have an .dd extension, either .DD.gz, or img.zipper .dd, or .dd.gz, or img.zip
  • Unpack the archive
  • Follow the instructions for your operating system


For Windows

  • download a program to record images(for example, Win32DiskImager)
  • insert the microSD card into the reader
  • find out the letter under which it appeared (for example "F:")
  • ignore messages about the disk format before use, if such appear
  • make sure no other programs are using this card
  • in Win32DiskImager, select the unpacked map image, select the drive letter, and then click Write


For Linux

  • insert the microSD card into the reader
  • find out the name of the device corresponding to the map. This is usually /dev/mmcblk0 or /dev/sdX (where X is the letter). This command can help
    dmesg | tail
    Do not confuse the device name! Incorrectly specifying the name of the device, you will lose all data on your computer forever!
  • unmount the map partitions that Linux mounted automatically:
    • if the device is called /dev/mmcblk0, the partitions are called /dev/mmcblk0p1, /dev/mmcblk0p2, etc.
    • if the device is called /dev/sdb, the partitions are /dev/sdb1, /dev/sdb2, etc.
  • An example of a command:
    umount /dev/mmcblk0p1
  • flash the card:
    sudo dd if=sdcard.dd of=/dev/mmcblk0 bs=4M

, where "sdcard.dd" is path to the previously downloaded unzipped image file.

An example of the process:

wget https://github.com/contactless/wirenboard/releases/download/0.6-20140614/sdcard_20140614.img.zip
unzip sdcard_20140614.img.zip
umount /dev/mmcblk0p2
umount /dev/mmcblk0p1
sudo dd if=sdcard_20140614.img of=/dev/mmcblk0 bs=4M conv=fdatasync
sync


Creating an image in parts

Attention! This is a complex version of self-preparation of the image of the card. It is better to use the option described above.

Attention! On November 6, 2015 instruction below is also hopelessly outdated.

Build together

According to [1]

  • split the flash drive into two sections
  • boot u-boot to the first partition
  • create a filesystem on the second partition
  • copy the root filesystem to the second partition

First you need to find out the name of the device with the flash card. Use the search. You can, for example, try to run the program GParted and see it. Dev /dev/sdb, and may look like /dev/mmcblk0

When the device is found, we create a variable to facilitate the use of the following commands

MYDISK="/dev/sdb"

Between the quotes write the name of your device with a flash card.


Partition table

Before starting, make sure that the partitions on the card are not mounted.

Now we will create card partitions using the script. [2] [2]

Download script:

wget [https://raw.github.com/contactless/wirenboard/master/image/create_partitions.sh]

Run the script and specify the name of the device with the flash card:

sudo bash create_partitions.sh $MYDISK


Bootloader

See Building U-Boot.

An image loader to write to the partition: loaderu-boot

Download image

wget "https://github.com/contactless/wirenboard/blob/master/contrib/u-boot/u-boot.sb.cl25?raw=true" -O u-boot.sb

Find out the names of the partitions. The script divided the card into partitions, we need to know the name of the first of them. If the device name for the microSD card was /dev/sdX, the first partition will have the device name /dev/sdX1. If the device was named /dev/mmcblkX , the first section is partition /dev/mmcblkXp1 (note the p before the partition number).

Finding the name of the first section, enter it here:

MYDISK1="/dev/sdb1"

Now download the partition image to the card

sudo dd if=u-boot.sb of=$MYDISK1 bs=512 seek=4


Creating FS

Find the name of the second section on the flash drive and write it in a variable

MYDISK2="/dev/sdb2"

rootfs will become the name of this partition.

sudo mkfs.ext4 $MYDISK2 -L rootfs


Copy image to partition

Released image (including kernel, dtbs, modules and firmware): releases


See also Image Building

wget https://github.com/contactless/wirenboard/releases/download/0.1/rootfs.tar.gz

Now we need to mount the file system we created earlier. How to do it in the terminal?

By default in Ubuntu it is mounted in /media/$USER/rootfs/. Find where the system is mounted on your computer.

Unpack the image into a section:

 sudo tar xfpz rootfs.tar.gz -C /media/$USER/rootfs/


Unmount the file system:

umount /media/user/rootfs


Example

Ubuntu OS, SD card is connected to the built-in reader and defined as /dev/mmcblk0. The repository is downloaded, we are in its root.

Image file rootfs.tar.gz is located inside the rootfs system folder.

cd image
sudo umount /dev/mmcblk0p1
sudo ./create_partitions.sh  /dev/mmcblk0
sudo dd if=../contrib/u-boot/u-boot.sb  of=/dev/mmcblk0p1 bs=512 seek=4
sudo ./create_fs.sh /dev/mmcblk0p2


# Ubuntu automount:
udisksctl mount -b /dev/mmcblk0p2

#extract rootfs
sudo tar xfpz ../rootfs/rootfs.tar.gz -C /media/$USER/rootfs/

umount /dev/mmcblk0p2


See FS standart image.