links:
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
Загрузка платы:
Загрузка с CD карты: Переключатель Положение 1 OFF 2 ON 3 ON 4 ON 5 OFF Загрузка с eMMC: Переключатель Положение 1 OFF 2 ON 3 ON 4 OFF 5 OFF
сборка ядра
Переходим в каталог в котором будем собирать ядро: 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 Скачиваем ядро: 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/
скрипт для поднятия сети
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
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
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
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
!!! Важный файлик который передает параметры загружаемого ядру
!!! Например это строка 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Гбит
не работают эти в эйдж роутере
но пользу мне кое какую принесли
задираем скорость тем самым рубим автосоглосование
прям на плате выгружаем
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. Сброс 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:
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/
Пример конфигов:
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:
Запуск плейбуков:
-----------------
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
-------------------------------------