sysconf(_SC_IOV_MAX) = -1 ubuntu 18.04.1
Не могу понять, почему на ubuntu 20.04 этот вызов отдает честные 1024, а на 18.04 на единственной инсталяции отдает -1
Где вообще хранится база этих sysconf?
Не могу понять, почему на ubuntu 20.04 этот вызов отдает честные 1024, а на 18.04 на единственной инсталяции отдает -1
Где вообще хранится база этих sysconf?
Мы делаем и продаем программно-аппаратный комплекс, т.е. железку с софтом.
Внутри стоит крайне порезанная убунта с нашим софтом. Убунта запакована в squashfs образ, который лежит на флешке.
Поверх него монтируется раздел с настройками через overlayfs.
Иногда после неприятной перезагрузки всё ломается и подмонтировать всё таким пирогом не получается.
Сообщение при этом в ядре от overlayfs:
overlayfs: bad index found (index=index/00fb1d000100000000000000000000000000000000c100000000000000, ftype=2000, origin ftype=8000).
Как мы с этим работали?
Проблема где-то в районе: https://vcs.cs.uchicago.edu/kauffman/ubuntu-mainline-crack/blob/master/fs/overlayfs/namei.c#L724
Не знаю, будет ли ещё доступен код по ссылке, так что немного покажу его:
} else if (ovl_dentry_weird(index) || ovl_is_whiteout(index) ||
((inode->i_mode ^ d_inode(origin)->i_mode) & S_IFMT)) {
/*
* Index should always be of the same file type as origin
* except for the case of a whiteout index. A whiteout
* index should only exist if all lower aliases have been
* unlinked, which means that finding a lower origin on lookup
* whose index is a whiteout should be treated as an error.
*/
pr_warn_ratelimited("overlayfs: bad index found (index=%pd2, ftype=%x, origin ftype=%x).\n",
index, d_inode(index)->i_mode & S_IFMT,
d_inode(origin)->i_mode & S_IFMT);
goto fail;
К сожалению, по сути единственный рабочий способ на сегодня — выполнять самостоятельный overlay-fsck из initrd на загрузке. Для этого надо кусочком кода обойти все файлы на слоеной ФС и те, которые не получится просто открыть, надо удалить из upper dir (т.е. непосредственно с rw раздела).
Ещё workdir должен быть опустошен перед собиранием пирога.
вот такая грустная история =(
Мы собираем и продаем свой программно-аппаратный комплекс.
Нам нём стоит тщательно собранный и настроенный линукс (ох сколько крови попил systemd + udev) по которому есть ещё масса работ.
Например: надо сделать UI к бондингу.
Как называется подобная работа? Как искать человека, который будет дальше такое развивать?
Коллеги, нужно купить порядка 200 плат PCIe GPIO.
В серверной есть большая красная кнопка, по её нажатию надо срочно что-то сделать.
Какую купить плату, чтобы у неё гарантированно была first class поддержка в линуксе?
Полно всякого железа, который только под винду, такое не нужно.
Мы делаем прошивку и хочется у systemd забирать состояние портов и показывать, что в них воткнуто.
Я нашел только способ:
т.е. пойти и запросить эти данные, запустив команду.
К сожалению json формата не завезли.
Ещё в /run/systemd/netif/lldp можно увидеть файл с названием в виде числа. Номер растет и кажется отвечает за версию состояния.
Вопрос: как правильно забирать этот список? Дергать программу не хочется, потому что парсить её вывод достаточно нестабильно и туда любит просачиваться дополнительный вывод, который разрушит структуру ответа.
Файл на диске можно мониторить через inotify, но у них неизвестная структура.
Как правильно?
Стоит сервер, у него 4 интерфейса, все смотрят под разными айпишниками в интернет.
Как настроить роутинг так, чтобы ответы на HTTP запросы (т.е. ответные пакеты в TCP соединении) уходили по тому же интерфейсу и через тот же шлюз, что и пришли?
Т.е. если пакет прилетел на интерфейс eth0, то ответ слать в шлюз 195.23.0.1 если на eth1, то 192.23.1.1 и т.п.
Это возможно?
Коллеги, всем привет.
Мне нужно чтобы в libx264 появилось PAFF кодирование.
Если кто готов быстро его добавить (или может есть какие-то наработки), я был бы рад оплатить эту разработку (с выкладыванием под GPL в апстрим).
Не могу найти, есть ли всё таки сейчас в рамках rust-embedded (или rtfm) i2c slave.
Я хочу сделать i2c proxy, т.е. чтобы CPU ходил физически к одному устройству, думая, что там много разных.
Это нужно для того, чтобы микроконтроллер рисовал на экранчике всякие непристойности до того, как успел загрузиться линукс.
Ощущение, что этот кусок не заимплементили и надо дописать чутка.
Есть диск 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.
Хочу завести в 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 вместо загружаемого убута.
Вопросы:
нужен ли DTB для старта убута? Черт с ними с устройствами типа сети, пусть хоть хрюкнет чтоли в консоль.
можно ли рассчитывать, что убут собранный для джетсона, запустится под qemu с эмуляцией кортекса? Или они настолько разные, что даже printf не заработает?
Я хочу собрать своё ядро и хочу чтобы при его установке груб сгенерировал не стандартные пункты меню, а дополнительные (для отладки ядра).
Не могу найти, как это сделать. Это вообще предусматривалось его монструозными скриптами?
Во-вторых, хочется понять, есть ли штатный способ не указывать initrd, потому что я вкомпилил то, что мне нужно, в ядро.
Привет! Меня зовут Максим Лапшин, я руковожу проектом Flussonic и я ищу в наш офис системного администратора.
Нужен сисадмин, который сделает так, чтобы у программистов были компьютеры и интернет с вайфаем, у удаленщиков рабочий VPN, у директора винда, способная подключиться к налоговой.
Наш офис в Москве, возле станции метро Верхние Лихоборы (Окружная).
Зарплата: от 80 тыс рублей в месяц.
Примерный список задач, который надо решать:
Почти все в офисе люди самостоятельные, им линукс/макось настраивать не надо, но нескольким людям с виндой помогать надо (внезапно).
Из прочего:
Писать мне на на hire@flussonic.com
Я жру кактус и хочу (не то чтобы сильно нужно, но скорее хочется) запустить nfs в докере. Хочу nfs v4, чтобы не было никаких портмапперов и всё работало на одном порту (проще написать правила файрвола)
Ядерный nfs — даже и говорить об этом кошмаре не хочется =)
Нашел вроде бы работающий nfs-ganesha.
У него есть два места, которые делают его несовместимым с докером:
вызовы name_to_handle_at и open_by_handle_at надежно забанены в докере.
Я сходу не могу понять, зачем они вообще нужны userspace демону, задача которого открыть файл, прочитать из него и закрыть. Т.е. мне nfs сервер нужен примерно в таком же сценарии, как и какой-нибудь http сервер с range requests.
Что вообще эти вызовы делают? Может их на какую-нибудь иноду или кеш имен поменять?
UPD: получилось обойтись без этого, собрав overlayfs с явными ключами разрешающими работу NFS
/ # 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 и его надо тащить руками?
пытаюсь запустить драйвера 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-битном арме?
Есть девайс, подключен к интеловому серверу гигабитной сетью.
Сейчас uboot грузит ядро по гигабитной сети со ужасной скоростью порядка 10 мегабит в секунду. Суммарно 24 мегабайт грузятся почти 24 секунды (мегабайт в секунду).
Я немного прикинул, почему так получается и предположил, что проблема в следующем: сервер шлет следующий пакет только после подтверждения предыдущего клиентом. При MTU около 1 миллисекунды получается что за секунду приходит около 1000 пакетов по полтора килобайта, что должно дать нам оценку в 1-2 мегабайта в секунду.
Хочется эту скорость поднять.
Я вижу два варианта:
1) воткнуть в uboot http. Это даст возможность на полной скорости всё влить 2) воткнуть в uboot tftp с докачкой, т.е. поменять протокол и пусть сервер льет кадр за кадром (9-килобайтный MTU), без подтверждения, а потом клиент пришлет подтверждение полученным пакетам.
Т.е. надо поднять скорость перегона пакетов минимум в 50 раз, что бы выбрать хотя бы на половину сетевой интерфейс.
Вопрос: как же это правильнее сделать?
UPD: на арме всё таки можно сжать ядро: uboot aarch64 zImage: unsupported? (комментарий)
Есть ядро версии 4.9, к его дефолтному конфигу есть config-4.9.patch, который я сделал так:
diff -u .config.orig .config > config-4.9.patch
Что-то выключил, что-то включил.
Потом я применяю так: patch -p0 < config-4.9.patch
Ядро обновили до 4.12, соответственно патч больше не накладывается, потому что сдвинулись номера строк.
Если бы я писал сам утилиту для редактирования конфига ядра, то мне номера строк были бы не нужны, потому что все строки в конфиге ядра уникальные.
Наверняка уже тысячи людей делали подобное.
Как мне правильно поддерживать мои изменения к конфигу ядра?
Пытаюсь заюзать старый код от 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, а как это должно тут работать?
стоит сервер на котором весь софт мы можем залить какой хотим
надо дать эксплуатанту сервера (он не админ, у него нет рута) программу (например для андроида), которая позволит по USB шнурку настроить айпишник, может сбросить пароль.
Я не понимаю, какой протокол общения будет между ними. На сервере что-то должно слушать USB, на телефоне должно пытаться найти кого-то с другой стороны USB.
Что это за протокол? Просто интернет между ними поднимать или искать какой-то ещё протокол общения?
UPD: https://github.com/libimobiledevice/ Этот демон запускается на линуксе и ловит пришедший айфон. На айфоне запускаем софтину, которую мы сами написали и она пытается соединиться с устройством по шнурку. Прототип айосного приложения там же, на гитхабе.
с андроидом пока не получилось.
У меня есть несколько одинаковых серверов, в которых натыкано много сетевых карт.
Я для одного сервера написал systemd link правила по PCIe пути, выдающие имена, которые мне нужны.
Вопрос: можно ли рассчитывать на то, что в одной партии у одинаковых серверов будут одинаковые PCIe пути одинаковых карт?
← предыдущие | следующие → |