Подготовка Raspberry Pi 4 B к запуску примеров

21 мая 2024

ID preparing_sd_card_rpi

Коммутация компьютера и Raspberry Pi 4 B

Чтобы видеть вывод с Raspberry Pi 4 B на компьютере, выполните следующие действия:

  1. Соедините пины преобразователя USB-UART на базе FT232 с соответствующими GPIO-пинами Raspberry Pi 4 B (см. рис. ниже).

    RPI_USB

    Схема соединения преобразователя USB-UART и Raspberry Pi 4 B

  2. Соедините USB-порт компьютера и преобразователь USB-UART.
  3. Установите PuTTY или другую аналогичную программу. Настройте параметры следующим образом: bps = 115200, data bits = 8, stop bits = 1, parity = none, flow control = none. Задайте порт USB, через который подключен преобразователь USB-UART, используемый для получения вывода с Raspberry Pi 4 B.

Чтобы компьютер и Raspberry Pi 4 B могли взаимодействовать через сеть Ethernet, выполните следующие действия:

  1. Соедините сетевые карты компьютера и Raspberry Pi 4 B с коммутатором или друг с другом.
  2. Выполните настройку сетевой карты компьютера, чтобы ее IP-адрес был в одной подсети с IP-адресом сетевой карты Raspberry Pi 4 B (параметры сетевой карты Raspberry Pi 4 B задаются в файле dhcpcd.conf, который находится по пути <название примера>/resources/...).

Подготовка загрузочной SD-карты для Raspberry Pi 4 B

Если при сборке примера был создан образ rpi4kos.img, то достаточно записать получившийся образ на SD-карту. Для этого подключите SD-карту к компьютеру и выполните следующую команду:

# В следующей команде path_to_img – путь к файлу образа,

# [X] – последний символ в имени блочного устройства для SD-карты.

$ sudo pv -L 32M path_to_img | sudo dd bs=64k of=/dev/sd[X] conv=fsync

Если при сборке примера был создан образ kos-image, то перед записью образа на SD-карту, её нужно дополнительно подготовить. Загрузочную SD-карту для Raspberry Pi 4 B можно подготовить автоматически и вручную.

Чтобы подготовить загрузочную SD-карту автоматически, подключите SD-карту к компьютеру и выполните следующие команды:

# Для создания файла образа загрузочного носителя (*.img)

# выполните скрипт:

$ sudo /opt/KasperskyOS-Community-Edition-<version>/common/rpi4_prepare_sdcard_image.sh

# В следующей команде path_to_img – путь к файлу образа

# загрузочного носителя (этот путь выводится по окончании

# выполнения предыдущей команды), [X] – последний символ

# в имени блочного устройства для SD-карты.

$ sudo pv -L 32M path_to_img | sudo dd bs=64k of=/dev/sd[X] conv=fsync

Чтобы подготовить загрузочную SD-карту вручную, выполните следующие действия:

  1. Выполните сборку загрузчика U-Boot для платформы ARMv8, который будет автоматически запускать пример. Для этого выполните следующие команды:

    $ sudo apt install git build-essential libssl-dev bison flex unzip parted gcc-aarch64-linux-gnu pv -y

    $ git clone --depth 1 --branch v2022.01 https://github.com/u-boot/u-boot.git u-boot-armv8

    $ cd u-boot-armv8

    $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- rpi_4_defconfig

    $ echo 'CONFIG_SERIAL_PROBE_ALL=y' > ./.custom_config

    $ echo 'CONFIG_BOOTCOMMAND="fatload mmc 0 ${loadaddr} kos-image; bootelf ${loadaddr} ${fdt_addr}"' >> ./.custom_config

    $ echo 'CONFIG_PREBOOT="pci enum;"' >> ./.custom_config

    $ ./scripts/kconfig/merge_config.sh '.config' '.custom_config'

    $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- u-boot.bin

  2. Подготовьте образ с файловой системой для SD-карты.

    # Образ будет содержать boot-раздел на 1 ГБ в fat32 и три раздела по 350 МБ в ext2, ext3 и ext4 соответственно.

    $ fs_image_name=sdcard.img

    $ dd if=/dev/zero of=${fs_image_name} bs=1024k count=2048

    $ sudo parted ${fs_image_name} mklabel msdos

    $ loop_device=$(sudo losetup --find --show --partscan ${fs_image_name})

    $ sudo parted ${loop_device} mkpart primary fat32 8192s 50%

    $ sudo parted ${loop_device} mkpart extended 50% 100%

    $ sudo parted ${loop_device} mkpart logical ext2 50% 67%

    $ sudo parted ${loop_device} mkpart logical ext3 67% 84%

    $ sudo parted ${loop_device} mkpart logical ext4 84% 100%

    $ sudo parted ${loop_device} set 1 boot on

    $ sudo mkfs.vfat ${loop_device}p1

    $ sudo mkfs.ext2 ${loop_device}p5

    $ sudo mkfs.ext3 ${loop_device}p6

    $ sudo mkfs.ext4 -O ^64bit,^extent ${loop_device}p7

  3. Скопируйте загрузчик U-Boot и встроенное программное обеспечение (англ. firmware) для Raspberry Pi 4 B на полученный образ файловой системы, выполнив следующие команды:

    # В следующих командах путь ~/mnt/fat32 используется для примера.

    # Вы можете использовать другой путь.

    $ mount_temp_dir=~/mnt/fat32

    $ mkdir -p ${mount_temp_dir}

    $ sudo mount ${loop_device}p1 ${mount_temp_dir}

    $ git clone --depth 1 --branch 1.20220331 https://github.com/raspberrypi/firmware.git firmware

    $ sudo cp u-boot.bin ${mount_temp_dir}/u-boot.bin

    $ sudo cp -r firmware/boot/. ${mount_temp_dir}

  4. Заполните конфигурационный файл для загрузчика U-Boot в образе используя следующие команды:

    $ sudo sh -c "echo '[all]' > ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'arm_64bit=1' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'enable_uart=1' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'kernel=u-boot.bin' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'dtparam=i2c_arm=on' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'dtparam=i2c=on' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'dtparam=spi=on' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'device_tree_address=0x2eff5b00' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'device_tree_end=0x2f0f5b00' >> ${mount_temp_dir}/config.txt"

    $ sudo sh -c "echo 'dtoverlay=uart5' >> ${mount_temp_dir}/config.txt"

    $ sudo umount ${mount_temp_dir}

    $ sudo losetup -d ${loop_device}

  5. Запишите получившийся образ на SD-карту. Для этого подключите SD-карту к компьютеру и выполните следующую команду:

    # В следующей команде [X] – последний символ в имени блочного устройства для SD-карты.

    $ sudo pv -L 32M ${fs_image_name} | sudo dd bs=64k of=/dev/sd[X] conv=fsync

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!