LINUX.ORG.RU

Сообщения max_lapshin

 

Как настроить множественные интерфейсы, чтобы HTTP ответ уходил туда, откуда пришел

Форум — Admin

Стоит сервер, у него 4 интерфейса, все смотрят под разными айпишниками в интернет.

Как настроить роутинг так, чтобы ответы на HTTP запросы (т.е. ответные пакеты в TCP соединении) уходили по тому же интерфейсу и через тот же шлюз, что и пришли?

Т.е. если пакет прилетел на интерфейс eth0, то ответ слать в шлюз 195.23.0.1 если на eth1, то 192.23.1.1 и т.п.

Это возможно?

 

max_lapshin
()

Доработка libx264 для PAFF (interlaced) кодирования

Форум — Job

Коллеги, всем привет.

Мне нужно чтобы в libx264 появилось PAFF кодирование.

Если кто готов быстро его добавить (или может есть какие-то наработки), я был бы рад оплатить эту разработку (с выкладыванием под GPL в апстрим).

 

max_lapshin
()

Rust stm32 i2c slave

Форум — Development

Не могу найти, есть ли всё таки сейчас в рамках rust-embedded (или rtfm) i2c slave.

Я хочу сделать i2c proxy, т.е. чтобы CPU ходил физически к одному устройству, думая, что там много разных.

Это нужно для того, чтобы микроконтроллер рисовал на экранчике всякие непристойности до того, как успел загрузиться линукс.

Ощущение, что этот кусок не заимплементили и надо дописать чутка.

 , ,

max_lapshin
()

Как правильно отмонтировать upperdir и сторадж при overlayfs?

Форум — Admin

Есть диск sda2, он монтируется в /disk на нём есть файл: /disk/firmware.squashfs, он монтируется в /ro на нём есть файл /disk/settings.img, он монтируется в /rw

потом собирается /overlay -t overlay -o upperdir=/ro,lowerdir=/rw (упрощенно)

При шатдауне надо перемонтировать в ro сам settings.img и sda2.

Как это вообще планировалось делать правильно?

Есть старый совет: https://askubuntu.com/questions/181353/howto-cleanly-unmount-a-root-filesystem-thats-using-aufs

но он только про aufs.

 ,

max_lapshin
()

нужен ли DTB для запуска uboot aarch64 в qemu

Форум — Development

Хочу завести в qemu тестирование загрузки uboot-ом ядра по сети на nvidia jetson.

Пытаюсь запустить так:

	qemu-system-aarch64 \
		-machine virt -cpu cortex-a57 \
		-net nic,macaddr=52:54:00:12:34:50 -net socket,connect=127.0.0.1:1234 \
		-bios output/uboot.bin

Никакого dtb я не передаю. Сейчас запускается qemu и там monitor вместо загружаемого убута.

Вопросы:

  1. нужен ли DTB для старта убута? Черт с ними с устройствами типа сети, пусть хоть хрюкнет чтоли в консоль.

  2. можно ли рассчитывать, что убут собранный для джетсона, запустится под qemu с эмуляцией кортекса? Или они настолько разные, что даже printf не заработает?

 , ,

max_lapshin
()

ubuntu, grub2 и кастомное ядро: отдельные пункты меню

Форум — Development

Я хочу собрать своё ядро и хочу чтобы при его установке груб сгенерировал не стандартные пункты меню, а дополнительные (для отладки ядра).

Не могу найти, как это сделать. Это вообще предусматривалось его монструозными скриптами?

Во-вторых, хочется понять, есть ли штатный способ не указывать initrd, потому что я вкомпилил то, что мне нужно, в ядро.

 , ,

max_lapshin
()

в Эрливидео нужен сисадмин в офис

Форум — Job

Привет! Меня зовут Максим Лапшин, я руковожу проектом Flussonic и я ищу в наш офис системного администратора.

Нужен сисадмин, который сделает так, чтобы у программистов были компьютеры и интернет с вайфаем, у удаленщиков рабочий VPN, у директора винда, способная подключиться к налоговой.

Наш офис в Москве, возле станции метро Верхние Лихоборы (Окружная).

Зарплата: от 80 тыс рублей в месяц.

Примерный список задач, который надо решать:

  • закупка персональных компьютеров
  • закупка и обслуживание серверов, работающих в офисе
  • обслуживание IP-телефонии в офисе
  • обслуживание доступа удаленных сотрудников к офису
  • обеспечение работы интернета в офисе
  • работа сети по офису (розетки, провода, вайфай)
  • обслуживание принтеров
  • поддержка сетевой инфраструктуры (настроить DHCP, VLAN, роутинг)
  • поддержка офисных сервисов: например Nextcloud
  • опыт работы с линукс (установка/настройка ОС семейства Ubuntu/Debian, настройка сети в Linux или другие популярные веб-приложения, настроить резервные копии в “облако”, уметь собрать Linux RAID, восстановить его)

Почти все в офисе люди самостоятельные, им линукс/макось настраивать не надо, но нескольким людям с виндой помогать надо (внезапно).

Из прочего:

  • оформление по ТК РФ, с полностью белой зарплатой
  • ДМС
  • обеды в офисе

Писать мне на на hire@flussonic.com

 , ,

max_lapshin
()

чем заменить name_to_handle_at и open_by_handle_at

Форум — Development

Я жру кактус и хочу (не то чтобы сильно нужно, но скорее хочется) запустить nfs в докере. Хочу nfs v4, чтобы не было никаких портмапперов и всё работало на одном порту (проще написать правила файрвола)

Ядерный nfs — даже и говорить об этом кошмаре не хочется =)

Нашел вроде бы работающий nfs-ganesha.

У него есть два места, которые делают его несовместимым с докером:

https://github.com/phdeniel/nfs-ganesha/blob/master/src/FSAL/FSAL_VFS/os/linux/handle_syscalls.c#L191

https://github.com/phdeniel/nfs-ganesha/blob/master/src/FSAL/FSAL_VFS/os/linux/handle_syscalls.c#L314

вызовы name_to_handle_at и open_by_handle_at надежно забанены в докере.

Я сходу не могу понять, зачем они вообще нужны userspace демону, задача которого открыть файл, прочитать из него и закрыть. Т.е. мне nfs сервер нужен примерно в таком же сценарии, как и какой-нибудь http сервер с range requests.

Что вообще эти вызовы делают? Может их на какую-нибудь иноду или кеш имен поменять?

UPD: получилось обойтись без этого, собрав overlayfs с явными ключами разрешающими работу NFS

 ,

max_lapshin
()

busybox + nfsv4: прогать самому?

Форум — Development
/ # mount 10.115.10.1:/ /ro -t nfs -o vers=4,ro -v
mount: NFSv4 not supported
mount: mounting 10.115.10.1:/ on /ro failed

https://github.com/mirror/busybox/blob/master/util-linux/mount.c#L959

Я правильно понимаю, что в busybox отсутствует код для монтирования nfsv4 и его надо тащить руками?

 ,

max_lapshin
()

DVB на arm64

Форум — Linux-hardware

пытаюсь запустить драйвера https://github.com/DigitalDevices/dddvb на jetson ( arm64)

Не получается не то что настроить тюнер, а вообще сделать что-либо с ними:

# ./astra --femon 'dvb://#adapter=3&type=S2&frequency=11785&polarization=R&symbolrate=27500' |head -20
Oct 18 13:29:13: INFO: [main] Starting Astra v.5.61
Oct 18 13:29:13: INFO: check license
Oct 18 13:29:13: ERROR: [core/socket 4] getaddrinfo() failed 'ls1.cesbo.com' [No address associated with hostname])
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]
Oct 18 13:29:13: ERROR: [dvb_input 3:0] FE_SET_PROPERTY DTV_CLEAR failed [Inappropriate ioctl for device]

в интернетах говорят про проблему dvb на arm64: https://tvheadend.org/issues/2665 типа из-за размера структур проблемы.

Кто-нибудь пробовал завести DVB плату на 64-битном арме?

 ,

max_lapshin
()

ускорить загрузку ядра в uboot

Форум — Development

Есть девайс, подключен к интеловому серверу гигабитной сетью.

Сейчас uboot грузит ядро по гигабитной сети со ужасной скоростью порядка 10 мегабит в секунду. Суммарно 24 мегабайт грузятся почти 24 секунды (мегабайт в секунду).

Я немного прикинул, почему так получается и предположил, что проблема в следующем: сервер шлет следующий пакет только после подтверждения предыдущего клиентом. При MTU около 1 миллисекунды получается что за секунду приходит около 1000 пакетов по полтора килобайта, что должно дать нам оценку в 1-2 мегабайта в секунду.

Хочется эту скорость поднять.

Я вижу два варианта:

1) воткнуть в uboot http. Это даст возможность на полной скорости всё влить 2) воткнуть в uboot tftp с докачкой, т.е. поменять протокол и пусть сервер льет кадр за кадром (9-килобайтный MTU), без подтверждения, а потом клиент пришлет подтверждение полученным пакетам.

Т.е. надо поднять скорость перегона пакетов минимум в 50 раз, что бы выбрать хотя бы на половину сетевой интерфейс.

Вопрос: как же это правильнее сделать?

UPD: на арме всё таки можно сжать ядро: uboot aarch64 zImage: unsupported? (комментарий)

 , ,

max_lapshin
()

Поучите пользоваться patch: как накатить патчи к ядру к разным версиям?

Форум — Development

Есть ядро версии 4.9, к его дефолтному конфигу есть config-4.9.patch, который я сделал так:

diff -u .config.orig .config > config-4.9.patch

Что-то выключил, что-то включил.

Потом я применяю так: patch -p0 < config-4.9.patch

Ядро обновили до 4.12, соответственно патч больше не накладывается, потому что сдвинулись номера строк.

Если бы я писал сам утилиту для редактирования конфига ядра, то мне номера строк были бы не нужны, потому что все строки в конфиге ядра уникальные.

Наверняка уже тысячи людей делали подобное.

Как мне правильно поддерживать мои изменения к конфигу ядра?

 ,

max_lapshin
()

как создать виртуальный platform_device в ядре?

Форум — Development

Пытаюсь заюзать старый код от 2012 года https://gist.github.com/maxlapshin/99c01ab4cf4e48d76819f4a96f6b8a90

dvb_dummy_adapter.c

Штука делает простую вещь: программа настраивает тестовый DVB тюнер и начинает сосать данные. Данные попадают те, которые заливаются в тюнер из юзерленда через /dev/dvb/adapter0/dvr0

Сейчас драйвер устроен как platform_driver

В нём есть старый код, который deprecated: в инициализации драйвера идет прямое создание устройства:

https://gist.github.com/maxlapshin/99c01ab4cf4e48d76819f4a96f6b8a90#file-dvb_...

platform_device_register_simple

Это мало того, что очень не рекомендуется, так ещё и не дает выгрузить драйвер: после rmmod в /sys/devices/platform/dvb_dummy_adapter.0 остаются данные

Вопрос: а как отказаться от platform_device_register_simple если такого устройства нет?

Как сообщить ядру, что я хочу что бы создалось устройство dvb_dummy_adapter@0, которое будет обслуживаться этим драйвером?

Если я правильно понимаю, то в нормальных условиях какой-то пробник шины найдет устройство и запустит ему функцию probe, а как это должно тут работать?

 , , ,

max_lapshin
()

как соединить сервер с мобилой по шнурку (протокол общения по USB)?

Форум — Development

стоит сервер на котором весь софт мы можем залить какой хотим

надо дать эксплуатанту сервера (он не админ, у него нет рута) программу (например для андроида), которая позволит по USB шнурку настроить айпишник, может сбросить пароль.

Я не понимаю, какой протокол общения будет между ними. На сервере что-то должно слушать USB, на телефоне должно пытаться найти кого-то с другой стороны USB.

Что это за протокол? Просто интернет между ними поднимать или искать какой-то ещё протокол общения?

UPD: https://github.com/libimobiledevice/ Этот демон запускается на линуксе и ловит пришедший айфон. На айфоне запускаем софтину, которую мы сами написали и она пытается соединиться с устройством по шнурку. Прототип айосного приложения там же, на гитхабе.

с андроидом пока не получилось.

 , ,

max_lapshin
()

стабильность PCI путей

Форум — Admin

У меня есть несколько одинаковых серверов, в которых натыкано много сетевых карт.

Я для одного сервера написал systemd link правила по PCIe пути, выдающие имена, которые мне нужны.

Вопрос: можно ли рассчитывать на то, что в одной партии у одинаковых серверов будут одинаковые PCIe пути одинаковых карт?

 ,

max_lapshin
()

uboot aarch64 zImage: unsupported?

Форум — Admin

Ядро собирается в 30 мегабайт Image и порядка 6 мегабайт zImage

uboot на aarch64 не умеет грузить zImage.

Кто-нибудь видел объяснения, почему так?

Может встречал патчи для 64-битного декомпрессора?

UPD: uboot aarch64 zImage: unsupported? (комментарий) возможно

 , ,

max_lapshin
()

Управление systemd-networkd через API

Форум — Development

Привет.

Я хочу управлять настройками сетевого интерфейса из веб-интерфейса.

Сеть построена на systemd-networkd

1) не могу найти, есть ли правильный способ спросить у systemd какие настройки сети используются?

Хочется узнать, что там вообще: dhcp или статический адрес и если статика, то какая?

2) судя по strace, networkctl ходит через NETLINK. Это разумный и легитимный способ получения фактической информации о сети?

 ,

max_lapshin
()

Что происходит в ядре, когда драйвер делает udelay?

Форум — Development

В драйвере, который я сейчас патчу, обильно разбросаны udelay, что бы попасть в тайминги железки на параллельном порту.

Когда драйвер делает udelay, то он остается на ядре и занимает его? Другие драйверы или юзерские программы не могут пользоваться этим ядром?

Или всё таки внутри ядра есть какой-нибудь шедулер, который займет это время чем-то ещё?

 , ,

max_lapshin
()

Как правильно поллить результат inb (данные с порта)?

Форум — Development

По LPT порту воткнута железка, на которой есть кнопка.

Когда кнопка нажата, из порта по адресу можно прочитать 1, когда не нажата — 0

Как правильно с этим работать? Поллить раз в 100 мс, или искать способ заставить эту конструкцию генерировать прерывание?

 , , , ,

max_lapshin
()

Bounty: добавить в драйвер ядра intel/igb управление software defined pins

Форум — Job

Есть сетевая карта intel i350 ( Intel i350: как подергать за gpio )

У неё есть возможность воспользоваться software defined pins.

У меня есть экземпляр карты (к сожалению пока только один, серию ещё будем заказывать), у которого к одному из пинов припаяна внешняя система

Мне нужно из userland управлять этими пинами.

Судя по документации и коду, который я вижу https://github.com/torvalds/linux/blob/master/drivers/net/ethernet/intel/igb/...

нужно подергать за нужные биты регистра CTRL (раздел 8.2.1) и CTRL_EXT (8.2.3) для доступа к пинам от 0 до 3.

Выглядит, что надо добавить к драйверу API для работы через gpio.

Я хочу:

1) получить возможность подергать за эти биты (это нужно сделать максимально быстро любым, даже самым грязным способом)

2) оформить это в виде патча к ядру линукса

3) по возможности отправить этот патч в mainline

UPD: вопрос снят, будем вливать патч в апстрим

 , , ,

max_lapshin
()

RSS подписка на новые темы