Коммутация компьютера и Raspberry Pi 4 B
Чтобы видеть вывод с Raspberry Pi 4 B на компьютере, выполните следующие действия:
Схема соединения преобразователя USB-UART и Raspberry Pi 4 B
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, выполните следующие действия:
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-карту вручную, выполните следующие действия:
$ 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
# Образ будет содержать 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
# В следующих командах путь ~/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}
$ 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}
# В следующей команде [X] – последний символ в имени блочного устройства для SD-карты.
$ sudo pv -L 32M ${fs_image_name} | sudo dd bs=64k of=/dev/sd[X] conv=fsync