Делал тут кое-какие эксперименты с rsh, и обнаружил, что в ol9/rhel9
$ ls -lZ /usr/bin/rsh
-rwxr-xr-x. 1 root root system_u:object_r:bin_t:s0 15504 Dec 3 2022 /usr/bin/rsh
[root@
ls показывает его красным, как будто установлен suid bit, но бит не установлен. При этом rsh ведь действительно требует привилегий, чтобы использовать порты 513-1023. Как это реализуется в нынешнем мире?
Как пользоваться сабжем? Как я понимаю, чтобы послать валидный пакет, надо считать его контрольную сумму. А она считается вместе с заголовками пакета ip, который недоступен.
python-pcs решает эту проблему через libpcap формируя пакеты на уровне ethernet, но это извращение.
В исходниках линуксного ping6.c они включают опцию IPV6_CHECKSUM и сетевой стек всё считает сам, что несомненно логично. Но как её включить в python’e?
Кто как делает сабж в больших проектах? Имеется огромная система, которая содержит сотни модулей разработанных клиентом, которые в свою очередь используют другие сотни библиотек 3rd party.
Для того чтобы при разработке не было полного хаоса, для 3rd party на глобальном уровне выставляются интервалы версий вида [X.y;X+1.0), чтобы использовались всегда самые новые минорные версии, которые не ломают совместимость.
Вопрос, как обеспечить воспроизводимые на уровне версий модулей и библиотек 3rd party сборки релизов?
Теоретически это должно решаться с помощью mvn versions:resolve-ranges, но для наследованных версий этот метод не работает. Баг https://github.com/mojohaus/versions-maven-plugin/issues/298 открыт ещё в 2018м, но на него нет никакой реакции. Видимо, люди делают воспроизводимые сборки по-другому.
Ситуация такая. Есть некое веб приложение от IBM, использующее dojo для генерации страниц. И есть фреймворк для тестирования этого приложения (который использует Selenium).
Теперь нужно протестировать сам фреймворк. Для этого страницы приложения сохраняются статически, и вызываются потом юнит-тестами.
К сожалению, страницы довольно сложные (100K+ строк кода) и если их сохранить в Firefox -> Save Page As -> Complete Page и восстановить - выглядят зачастую не так как в онлайне.
Нету ли какого-нибудь инструмента, который бы при сохранении все вызовы веб-сервисов заменять содержимым последнего вызова? Чтобы сохраненная страница была полностью автономна?
Моё гугл-фу тут слабовато: находятся результаты как тестировать с помощью селениума, а мне по существу нужно тестировать сам селениум с обвязкой.
JDK 10.0.1, чойта я не вижу ни jmod, ни jar для derby. Не могли же её молча выкинуть? И ничего не нагугливается. Я что, один пользовался jar'ом из JDK, остальные апачевский пользовали?
Занимаюсь видеобиосом для PowerPC, захотел проверить код на обычном писюке.
План такой: вытащить ПЗУ, загрузить свой биос (он на Форте, поэтому платформо-независим) и увидеть, что видюха проинициализирована.
При наличии ПЗУ мой биос всё инитит, устанавливает правильный режим.
При отсутствии - пищит, но загружает мой биос. Экран остаётся чёрным. Отсутсвует hsync.
До того как начну копаться в своём биосе - хочу уточнить, что это в принцпипе работает. Там же какие-то заморочки с legacy портами isa. Может, если основной биос не находит видеобиоса, то видюха вообще потом не видна? Как в случае нескольких видюх - когда биос отключает все кроме одной (речь про старые биосы и карты до SLI и Crossfire).
Кто-нибудь пробовал, например, Xы загрузить без видеобиоса? Ну, или оффтопик какой?
Неохота с нуль-модемным кабелем возиться, чтобы отлаживать.
Продолжаю разбирать старый хлам.
Стояла в компе (Tualatin 1.3Ghz) видюха Matrox Millenium 450.
Потомку захотелось запустить на этой машинке minecraft.
Minecraft запустился, скорость 5 FPS. Смотрю - валяется GeForce2 Ti. Согласно википедии она должна быть существенно быстрее Matroxа в OpenGL. Установил закрытые legacy дрова (впервые в жизни), glxinfo говорит, что Direct rendering on и на вид, вроде всё включено. В логах - никаких ошибок. glxgears показывает ~5000 FPS.
А вот скорость minecraft теперь упала до одного кадра в 10 минут. Я даже не смог войти в меню options, чтобы посмотреть, что можно отключить.
Это так и должно быть? Как я понимаю, matrox использует софтовый рендеринг? И как же он быстрее? Может, надо было другую версию дров взять? Может, в legacy они отключили что-то?
Может, открытые дрова лучше на старых картах? Есть у кого Geforce2, или все выкинули?
Хотябы tuxracer на ней должен без тормозов идти? Всё-таки в ней 32мега памяти вместо 8 в матроксе.
Имеет ли смысл сабж?
Пытаюсь собрать комп для старых квестов. Нашёл в кладовке AWE32. Под досом - работает, но но под ДОСом, как минимум в некоторые квесты на этой машинке играть невозможно: P3-1300 для них быстроват.
Соотвественно, можно поставить Linux, там есть dosbox и scummvm. Но там есть и pulseaudio. Будут хардверные фичи AWE32 использоваться, или он с pulseaudio превратится просто в тормозящую isaшную звуковуху, и лучше ставить SB Live?
ScummVM его не цепляет - не находит файла с ресурсами (что неудивительно, поскольку в списке поддерживаемых его нет). FreeSCI 0.6 - 0.6.4 вроде цепляют, но далеко не уйти - не работает инвентарь. Вроде, в инете пишут, что обычный Space Quest 1 vga с FreeSCI работал - похоже, у русской версии есть своя специфика.
Имеется скрипт (не мой), который ежедневно бэкапит несколько терабайт данных. Объёмы данных потихоньку росли, и выяснилось, что сейчас этот скрипт полностью выкидывает из дискового кэша сотню гигов кэша приложения и приложение начинает нещадно тормозить.
Попробовал запустить программку nocache. Но у неё на здешнем сервере даже тесты не проходят. Сервер - RHEL 5.
Почитал я интернеты и офигел: In kernels before 2.6.18, POSIX_FADV_NOREUSE had the same semantics as POSIX_FADV_WILLNEED. This was probably a bug; since kernel 2.6.18, this flag is a no-op.
Можно ли в RHEL 5 как-то организовать бэкап данных без смс и регистрации загаживания кэша?
Рамы до терабайта клиент добить пока что не может.
Возникло странное желание запустить одну маленькую (~400К), но закрытую прогу для обычного линукса, на телефоне с андроидом (SGS3 c CM11).
В принципе, понятно, что надо сделать: собрать qemu-linux-user статически и зафигячить chroot с минимальными библиотеками для x86.
Поскольку под андроид раньше не собирал, погуглил, но не нашёл, чтобы хоть кто-нибудь собирал user mode qemu для Android.
Ну, думаю, ладно - попробую сам. Но нынешнему QEMU нужен glib, а чтобы собрать glib нужен pkgconfig, а чтобы собрать pkgconfig - нужен glib. Это всё, конечно, решается, но возни много.
И в общем, решил я сначала спросить: может, всё проще делается? Или, может, наоборот, вообще не делается из-за ограничений Android? Например, под линуксом/x86_64 у меня статически собраный бинарник qemu имеет размер 68 мегов, это уже дофига, а сборка под arm наверняка ещё побольше получится.
Откуда берётся стек в программе выполняющейся без ОС (загрузчике ОС, например)?
Насколько я себе представляю, его нужно создавать самому. Или есть какая-то магия gcc?
Пример из практики, код NetBSD.
int stack[8192/4 + 4] __attribute__((__aligned__ (4), __used__));
А в соседнем файле,
int devopen() {
...
/* allow disk blocks up to 65536 bytes */
char buf[65536];
Локальный массив, по стандарту, создаётся на стеке. Но стека-то столько нет. В результате, у меня buf наползает на код. И как только что-то большое записывается в buf - наступает конец. Однако, есть куча сообщений в сети, что этот код работает. Но, чёрт побери, как?
Имеется большой проект, в котором частенько чего-нибудь ломают. Пишу в своей локальной ветке модуль для этого проекта, который, соответственно, не работает, если в основном проекте что-то сломали.
Процедура поиска бага выглядит таким образом:
git bisect
(увидеть номер тестируемой версии)
git checkout my_branch
git checkout -b testing
git rebase my_branch (тестируемая версия)
(проверить, работает ли)
git branch -d testing
git checkout (тестируемая версия)
git bisect good/bad
(и т.д)
Имеется домашний сервер с Linux'ом и белым ip. Что нужно разрешить в iptables, чтобы ноутбук с Cisco AnyConnect, подключненный через домашний сервер, мог соединяться?
Думал, что из домашней сети форвардится вообще весь трафик. Но что-то AnyConnect'у не нравится - не может начать сессию. Забавный момент, что если открыть сессию не через домашний сервер, а через телефон, потом можно переключиться на домашний сервер и VPN продолжает работать.
Текущие правила iptables для FORWARD:
:PREROUTING ACCEPT [3848:186272]
:POSTROUTING ACCEPT [873:48418]
:OUTPUT ACCEPT [1279:69120]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
-A FORWARD -d 192.246.40.244 -j DROP
-A FORWARD -i eth0 -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o ppp0 -j DROP
Разве "-A FORWARD -i eth0 -o ppp0 -j ACCEPT" - без указания протокола, не разрешает перенаправлять вообще всё? Или для UDP нужно отдельное правило?
Есть закрытый драйвер (ELF для Солярис/спарк, но это скорее всего, не принципиально), содержащий примерно такой код:
static struct type_a struct1 = {
1,
func1_from_other_module,
static_func2,
};
static struct type_b struct2 = {
/* Тут тоже полно ссылок на локальные и внешние фукции */
};
Как посредством objcopy (или ещё чего) сделать что-нибудь из следующего:
поменять в struct1 ссылку static_func2 на func2_from_other_module ?
зарезервировать место между struct1 и struct2 ?
или перенести struct1 в конец файла (и обновить ссылки на неё)?
Второй-третий пункт опциональны. Просто, в новой версии соляры, type_a cущественно расширился, и теперь структуры наползают друг на друга. К счастью, пожертвовав некоторой функциональностью на это забить, но лучше сделать всё чисто.
Добрался я до момента, когда солярис/спарк в эмуляторе уже начинает грузиться и даже грузит boot block. Но этот boot block почему-то не находит следующую фазу загрузки - ufsboot.
Одно время сан давал исходники всем купившим 8ку или 9ку. Они их до сих пор продают учебным заведениям за символическую цену. Ни у кого не завалялось?
Посмотреть бы, как бут-блок работает. Там в принципе 8 килобайт всего, когда-нибудь и дебаггером расковыряю, но вдруг у кого на полке лежат...
Ищу имиджи ПЗУ (OpenBoot) от машинок архитектуры sun4m (sun4u тоже может пригодиться на будущее).
Мне это надо для доведения qemu до состояния, когда он сможет запускать солярис.
Покамест удалось найти имиджи от SparcStation-10 и 20. К сожалению обе эти машинки очень слабо эмулируются qemu, так что пока прогресс нулевой.
Особенно сильно разыскиваются имиджи от SS-5, поскольку её железо лучше всего поддерживается на настоящий момент. Но если у кого завалялись ПЗУ или имиджи от LC, LX или Sun-4/6x0 - буду премного благодарен.
Или может, кто знает Forth и FCode? Есть небольшая функция (определающая объём присутсвующей памяти), которую надо отладить. Подозреваю, что для спеца по FCode - это 5 минут, но среди разработчиков qemu таких, к сожалению, нет.
Пытаюсь запустить solaris/sparc под qemu, как оказалось с opensolaris он не дружит, потому что не умеет толком 64 бита. Перерыл всю рапиду, нигде не могу найти загрузочную-установочную дискету для solaris/sparc 8-9. Ни у кого в загашнике нет, случаем?