links:
|
1 2 3 4 5 6 7 |
https://github.com/SolidRun/lx2160a_uefi https://images.solid-run.com/LX2k/lx2160a_uefi - загрузчики, могут помочь проверить плату на работоспособность... https://solid-run-images.sos-de-fra-1.exo.io/LX2k/lx2160a_uefi/lx2160acex7_2000_700_3200_8_5_2_sd_ee5c233.img.xz https://github.com/SolidRun/lx2160a_build/tree/develop-lsdk-21.08-pre-upstream-serdes-driver https://images.solid-run.com/LX2k/lx2160a_build/lsdk-21.08 https://images.solid-run.com/LX2k/lx2160a_build/lsdk-21.08/2026-03-06_7b197e5 https://solid-run-images.sos-de-fra-1.exo.io/LX2k/lx2160a_build/lsdk-21.08/2026-03-06_7b197e5/lx2160acex7_2000_700_2900_8_5_2-7b197e5.img.xz |
Загрузка платы:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Загрузка с CD карты: Переключатель Положение 1 OFF 2 ON 3 ON 4 ON 5 OFF Загрузка с eMMC: Переключатель Положение 1 OFF 2 ON 3 ON 4 OFF 5 OFF |
сборка ядра
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Переходим в каталог в котором будем собирать ядро: cd /opt Ставим не обходимые пакеты для сборки в систему: apt install git make gcc linux-libc-dev pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential xz-utils libncurses5-dev Скачиваем патчи солидрана: git clone https://github.com/SolidRun/lx2160a_build.git cd lx2160a_build git branch -a git checkout remotes/origin/develop-lsdk-21.08 cd .. Скачиваем ядро: git clone --depth 1 https://github.com/nxp-qoriq/linux -b LSDK-21.08 Переходим в каталог ядра: cd linux Производим слияние конфигов: cp ../lx2160a_build/configs/linux/lx2k_additions.config arch/arm64/configs/ ./scripts/kconfig/merge_config.sh arch/arm64/configs/defconfig arch/arm64/configs/lsdk.config arch/arm64/configs/lx2k_additions.config Нужно как то себя обозначить для дальнейшего использования git: git config --global user.email "you@example.com" git config --global user.name "Your Name" Применяем патчи: git am ../lx2160a_build/patches/linux-LSDK-21.08/*.patch Получаем настройки текущего ядра: Достаточно любой из команд, но ничего страшного если выполните по рядку zcat /proc/config.gz > .config make oldconfig На этом этапе можно добавить batman_adv в конфиг vim .config найти строку CONFIG_BATMAN_ADV ( используй / для поиска) и привести ее к виду CONFIG_BATMAN_ADV=m CONFIG_BONDING=m Теперь производим сборку и установку make -j$(nproc) make modules_install make install Если требуется можно сохранить старое ядро mv /boot/Image /boot/Image.original mv /boot/Image.gz /boot/Image.gz.original Вот так мы установим новое ядро: cp arch/arm64/boot/Image.gz arch/arm64/boot/Image /boot/ |
скрипт для поднятия сети
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
cat > /usr/local/sbin/cx-lx2-network.sh << "EOF" #!/bin/bash # Script to bring up high speed network interfaces ont the SolidRun LX2160A # Clearfog / Honeycomb for n in 9 7 10 8 do /usr/bin/ls-addni dpmac.$n done exit 0 EOF cat > /etc/systemd/system/ls-addni.service << "EOF" [Unit] DefaultDependencies=no Description=Bring up high-speed network interfaces Before=network-pre.target Wants=network-pre.target [Service] Type=oneshot ExecStart=/usr/local/sbin/cx-lx2-network.sh TimeoutSec=0 RemainAfterExit=yes [Install] RequiredBy=network.target EOF chmod +x /usr/local/sbin/cx-lx2-network.sh systemctl daemon-reload systemctl enable ls-addni.service |
sysctl.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
net.ipv4.ip_forward=1 net.ipv4.tcp_max_tw_buckets = 65536 #net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 0 net.ipv4.tcp_max_syn_backlog = 131072 net.ipv4.tcp_syn_retries = 3 net.ipv4.tcp_synack_retries = 3 net.ipv4.tcp_retries1 = 3 net.ipv4.tcp_retries2 = 8 #net.ipv4.tcp_rmem = 16384 174760 349520 #net.ipv4.tcp_wmem = 16384 131072 262144 net.ipv4.tcp_mem = 262144 524288 1048576 net.ipv4.tcp_max_orphans = 65536 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_low_latency = 1 #net.ipv4.tcp_syncookies = 0 net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 #net.ipv4.tcp_rmem = 4096 87380 67108864 #net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_rmem = 16384 174760 67108864 net.ipv4.tcp_wmem = 16384 131072 67108864 sysctl -w net.ipv4.tcp_window_scaling=1 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 |
BATMAN-ADV
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
apt install -y git libnl-3-dev libnl-genl-3-dev libnl-genl-3-dev make pkg-config gcc Установка нового модуля batman-adv cd /opt/ git clone https://github.com/open-mesh-mirror/batman-adv.git cd batman-adv git checkout v2024.2 sed -i '/export/s/=n/=y/' Makefile make -j`nproc` make install echo "batman-adv" | tee -a /etc/modules Сборка и установка программы управления batman_adv cd /opt/ git clone https://github.com/open-mesh-mirror/batctl.git cd batctl/ git checkout v2024.2 make -j`nproc` make install |
solidrun 2160
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
https://solidrun.atlassian.net/wiki/spaces/developer/pages/197494288/HoneyComb+LX2+ClearFog+CX+LX2+Quick+Start+Guide https://github.com/SolidRun/lx2160a_build https://solid-run-images.sos-de-fra-1.exo.io/LX2k/lx2160a_build/20240731-2a7ab21/lx2160acex7_2000_700_3200_8_5_2-2a7ab21.img.xz 1. Включаем загрузку с сд карты (off on on on off) 2. Прерываем загрузку нажатием любой кнопки 3. Записываем в mmc образ load mmc 0:1 0xa4000000 ubuntu-core.img mmc dev 1 mmc write 0xa4000000 0 0xd2000 4. Загружаемся в новь созданный образ boot 5. Логинемся root/root 6. Меняем разметку на диске mmc fdisk /dev/mmcblk1 жмем p - показать размер текущей системы жмем d - удалить раздел жмем n - создадим раздел !!! внимание нужно отступить 131072 вводим 131072 после всех операций с разделами для сохранения жмем w 7. Увеличиваем фс resize2fs /dev/mmcblk1p1 8. Выключаем устройство и переключаем перемычки на загрузку mmc (off on on off off) 9. ssh root echo "PermitRootLogin yes" >> /etc/ssh/sshd_config systemctl restart sshd 10. dhcp cat > /etc/network/interfaces.d/eth2 << "EOF" auto eth2 iface eth2 inet dhcp EOF |
/extlinux/extlinux.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
!!! Важный файлик который передает параметры загружаемого ядру !!! Например это строка isolcpus=3-15 изолирует все ядра начиная с 4 по 16 cat ./extlinux/extlinux.conf timeout 30 default linux menu title linux-lx2160a boot options label primary menu label primary kernel linux /boot/Image.gz fdtdir /boot/ # APPEND console=ttyAMA0,115200 earlycon=pl011,mmio32,0x21c0000 default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf root=PARTUUID=30303030-01 rw rootwait APPEND console=ttyAMA0,115200 earlycon=pl011,mmio32,0x21c0000 default_hugepagesz=1024m hugepagesz=1024m hugepages=2 isolcpus=3-15 iommu.passthrough=1 pci=pcie_bus_perf root=PARTUUID=30303030-01 rw rootwait |
Задрать линии SFP+ на 10Гбит
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
не работают эти в эйдж роутере но пользу мне кое какую принесли задираем скорость тем самым рубим автосоглосование прям на плате выгружаем dd if=/dev/mmcblk1 bs=512 skip=28672 | dtc -I dtb -O dts > ./dpc.dts редактируем интерфейсы 7,8,9,10 mac@7 { link_type = "MAC_LINK_TYPE_PHY"; serdes_cfg = "custom"; serdes_eq = <1>; serdes_preq = <3>; serdes_post1q = <0x07>; serdes_amp = <0x1f>; max_rate = <10000>; // остальные существующие параметры остаются как были }; компелируем обраьтно dtc -I dts -O dtb -o dpc-new.dtb dpc.dts шьем dd if=dpc-new.dtb of=/dev/mmcblk1 bs=512 seek=28672 conv=notrunc ребутаем reboot |
Быстро bridge
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 1. Сброс IP-адресов на всех четырёх интерфейсах ip addr flush dev eth1 ip addr flush dev eth2 ip addr flush dev eth3 ip addr flush dev eth4 # 2. Создаём мост br0 (можно добавить опцию STP, например, stp_state 1) ip link add name br0 type bridge # 3. Для каждого интерфейса: опускаем, делаем членом моста, поднимаем for iface in eth1 eth2 eth3 eth4; do ip link set $iface down # отключаем интерфейс ip link set $iface master br0 # добавляем в мост ip link set $iface up # включаем обратно (теперь он работает как порт моста) done # 4. Поднимаем сам мост ip link set br0 up |
Сборка из контейнера Docker:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
0. Сначала качаем гит git clone -b develop-ls-6.6.52-2.2.0 https://github.com/SolidRun/lx2160a_build.git 1. Выполняем предварительную сборку образа докер docker build -t lx2160a_build docker 2. Собираем: 2.0 параметры: DDR_SPEED Частота памяти DDR4. 2400, 2600, 2900, 3200 BUS_SPEED Частота шины (Bus Frequency). 550-800 (с шагом 100) CPU_SPEED Частота процессора. 600-2200 (с шагом 100) (или SOC_SPEED) SERDES Конфигурация SERDES (для портов). SD1_SD2_SD3 BOOT_LOADER Выбор загрузчика. u-boot, uefi XMP_PROFILE Включение XMP-профиля для памяти. docker run --rm -i -t -v "$PWD":/work -e DDR_SPEED=3200 -e CPU_REVISION=2 -e BUS_SPEED=700 -e CPU_SPEED=2000 lx2160a_build -u $(id -u) -g $(id -g) 2.1 или так docker run --rm -i -t -v "$PWD":/work \ -e DDR_SPEED=3200 \ -e XMP_PROFILE=1 \ -e CPU_REVISION=2 \ -e BUS_SPEED=700 \ -e CPU_SPEED=2000 \ lx2160a_build -u $(id -u) -g $(id -g) 2.2 или так docker run --rm -i -t -v "$PWD":/work \ -e SOC_SPEED=2000 \ -e BUS_SPEED=700 \ -e DDR_SPEED=2900 \ -e SERDES=8_5_2 \ -e BOOT_LOADER=u-boot \ lx2160a_build -u $(id -u) -g $(id -g) 2.3 или так docker run --rm -i -t -v "$PWD":/work:Z \ -e SOC_SPEED=2000 \ -e BUS_SPEED=700 \ -e DDR_SPEED=2900 \ lx2160a_uefi build Очистка: # 1. Остановите и удалите старый контейнер (если был запущен) docker stop $(docker ps -aq) 2>/dev/null || true docker rm $(docker ps -aq) 2>/dev/null || true # 2. Удалите каталоги с результатами сборки внутри проекта lx2160a_build rm -rf build/ images/ uefi-build/ uefi-images/ |
Пример конфигов:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
cat > /etc/systemd/resolved.conf << "EOF" # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See resolved.conf(5) for details [Resolve] DNS=8.8.8.8 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=no-negative #DNSStubListener=yes #ReadEtcHosts=yes EOF cat > /etc/network/interfaces << "EOF" # interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: #source-directory /etc/network/interfaces.d auto eth0 allow-hotplug eth0 iface eth0 inet dhcp auto eth0:0 iface eth0 inet static address 192.168.127.121/24 auto eth1 allow-hotplug eth1 iface eth1 inet static address 10.11.1.1/24 auto eth2 allow-hotplug eth2 iface eth2 inet static address 10.11.2.1/24 auto eth3 allow-hotplug eth3 iface eth3 inet static address 10.11.3.1/24 auto eth4 allow-hotplug eth4 iface eth4 inet static address 10.11.4.1/24 #add routers link auto eth2:0 iface eth2:0 inet static address 10.44.3.254/24 #virtal interface auto dummy0 iface dummy0 inet static address 1.1.1.1 netmask 255.255.255.255 pre-up modprobe dummy || true post-up ip link set dummy0 up EOF cat > /etc/hostname << "EOF" gw1 EOF cat > /etc/hosts << "EOF" # Static table lookup for hostnames. # See hosts(5) for details. 127.0.0.1 localhost 127.0.1.1 gw1 EOF |
Off top HINT:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Запуск плейбуков: ----------------- docker-compose run --rm ansible-playbook ping.yaml docker-compose run --rm ansible --version ----------------- Включение rhash если это возможно: ---------------------------------- ethtool -K eth4 rxhash on ethtool -K eth1 rxhash on ethtool -K eth2 rxhash on ethtool -K eth3 rxhash on ---------------------------------- Посмотреть прерывания: ---------------------- for irq in $(grep <НАЗВАНИЕ ИНТЕРФЕЙСА> /proc/interrupts | cut -d: -f1); do echo "IRQ $irq -> $(cat /proc/irq/$irq/smp_affinity_list)" done for irq in $(grep eth1 /proc/interrupts | cut -d: -f1); do echo "IRQ $irq -> $(cat /proc/irq/$irq/smp_affinity_list)" done ---------------------- Информация по интерфейсам: ------------------------- restool dpni info dpni.1 ------------------------- Показать сконфигурированые интерфейсы: ls-listni --------- #dprc.1/dpni.4 (interface: eth4, end point: dpmac.8) #dprc.1/dpni.3 (interface: eth3, end point: dpmac.10) #dprc.1/dpni.2 (interface: eth2, end point: dpmac.7) #dprc.1/dpni.1 (interface: eth1, end point: dpmac.9) #dprc.1/dpni.0 (interface: eth0, end point: dpmac.17) ------- Пример скрипта создания интерфейсов на lx2160: cat /usr/local/sbin/cx-lx2-network.sh ------------------------------------- #!/bin/sh # Simple script with 8 queues for SolidRun LX2160A for dpmac in 9 7 10 8; do # on queues ls-addni "dpmac.$dpmac" --num-queues=16 --num-tcs=4 # off queuse #ls-addni "dpmac.$dpmac" done ------------------------------------- |