LINUX.ORG.RU

Сообщения Vinill

 

Qt5 - непонятное

Eсть рабочая программка, написанная на Qt5. Если ее запускать локально, допустим из-под kde из консоли - никаких вопросов.
Если запускать в виде #> ./prg -display xx.xx.xx.xx:0.0 - серое окно.
Вылечилось изменением строки запуска на #> QT_X11_NO_MITSHM=1 ./prg -display xx.xx.xx.xx:0.0
Но при этом режим отображения.. никакой, вообщем. Вроде как 256 битная палитра - все серое и убогое. Собранное на Qt4 - тоже самое. Qt3 - огонь и без всяких проблем с шаремемори. Но Qt3 как-то не хочется.
Это как-нибудь лечится?

 

Vinill ()

sk_buff - внести изменения в пакет ip

Пробую внести изменения в IPv4 пакет - добавить 4 байта опций. Проверяю конкретно на DNS запросах, смотрю wiresharkом.
Опции добавляются, тело DNS запроса - корректное, а вот в UDP заголовке - все нормально, кроме порта назначения - он может быть какой угодно. При этом проверял на выходе из функции-обработчика - все значения стоят какие надо.
Где этот dstport может перетираться? Почему? Уже не пойму, куда рыть..

Так вешается обработчик:

  nfho.hook     = hook_func;                       
  nfho.hooknum  = NF_INET_POST_ROUTING;
  nfho.pf       = PF_INET;
  nfho.priority = NF_IP_PRI_FIRST;functions
  nf_register_hook(&nfho);
Вот код добавления опций
  switch (ip_hdr(skb)->protocol)
  {
    case IPPROTO_UDP:
      if (skb_is_nonlinear(skb)) {
        if (skb_linearize(skb)) {
          printk(KERN_ERR "LABEL: Can't linearize skb.\n");
          goto out;
        }
      }
      if (skb_tailroom(skb) < 4) {
        if (pskb_expand_head(skb, 0, 4, GFP_ATOMIC)) {
          printk(KERN_ERR "LABEL: Can't get memory for options.\n");
          goto out;
        }
      }
      if (!skb_make_writable(skb, skb->len)) {
        printk(KERN_ERR "LABEL: skb not writable.\n");
        goto out;
      }
      data      = skb_network_header((skb)) + ip_hdrlen((skb)); //char *data;
      data_size = skb_tail_pointer(skb) - data; // int data_size
      memmove(data + 4, data, data_size);
      memmove(data, OWN_OPT, 4); // unsigned char OWN_OPT[4]
      // узакониваем все наши изменения
      skb_put(skb, 4);
      ip_hdr(skb)->ihl += 1;
      ip_hdr(skb)->tot_len = ntohs(skb->len);
      ip_send_check(ip_hdr(skb));
      skb_set_transport_header(skb, ip_hdr(skb)->ihl * 4);
      break;
  }
out:
  return NF_ACCEPT;

 , ,

Vinill ()

путаница с езернетами

Есть плата сPCI с встроенными 4-мя сетевыми. И на ней же стоит в мезонине контроллер с еще 4-мя сетевыми.
Нумерация eth0-eth3 - это встроенные, eth4-eth7 - добавленные.
Но примерно на одну загрузку из трех непонятно с чего нумерация начинается с добавленного контроллера и продолжается со встроенных, то есть получается eth0-eth3 - добавленные, eth4-eth7 - встроенные.
Соответственно, вся сеть настроена неправильно - ничего не работает.
Привязка по МАС в данном случае невозможна да и не заработает она, как я понимаю.
Почему такое может быть? UEFI? ядро? udev? я даже не пойму, с чего начинать и куда смотреть. Спасибо.

 

Vinill ()

GRUB2 и несжатое ядро

grub2 прекрасно грузит сжатое ядро, но при попытке подсунуть такое же, но не gzip-ованное - выдает error: bad magic number

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

 

Vinill ()

про syslogd

если я правильно понимаю - этот сислогд помимо того, что пишет в файл - так он еще все кидает руту на консоль(даже по ssh). как избавиться от этой напасти? man syslogd и man syslog.conf курил. ткните просто пальцем, позязя..

 

Vinill ()

Пропадают прерывания от железки

Есть процессорный модуль PC/104 с Atom на борту. Есть некая железка. Есть исходники драйвера на эту железку.
На ядре 2.6.18 - работает, на ядре 3.2 - работает, на ядре 3.16 - работает, на ядре 4.2 - минут через 15 пропадают прерывания от железки.
После перезагрузки драйвера появляются, но интервал в полтора раза больше, чем должен быть и опять пропадают. И так до тех пор, пока и перезагрузка драйвера уже не спасает.
Я вообще не могу понять даже - что это происходит? Если кто-нибудь что-нибудь подскажет - буду очень признателен ).

 

Vinill ()

где можно скачать драйвер на video intel hd? 01.org не дает

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

 , ,

Vinill ()

lspci ничего не видит..

есть дефолтовое ядро 3.2.1-r2, есть initramfs, сгенеренный командой genkernel --install initramfs
.в этом самом initramfs был изменен init - он должен перед монтированием диска вывалится в shell. а в shell надо руками набрать несколько команд.
так вот если в этом shell набрать lspci, вывод будет такой:

00:00.0 
00:02.0 
00:02.1 
00:1c.0 
00:1c.1 
00:1c.2 
00:1d.0 
00:1d.1 
00:1d.2 
00:1d.3 
00:1d.7 
00:1e.0 
00:1e.2 
00:1e.3 
00:1f.0 
00:1f.1 
00:1f.3 
а что я такое натворить умудрился?

 

Vinill ()

usb <-> com непонятное

есть переходник usb <-> com, на него в системе есть драйвер, называется cdc_atm.
система появление устройства отслеживает, создает /dev/ttyACMx.
но вот в федоре 15 с ядром 2.6.36 все работает как надо, а в генте с ядром 3.2.1 - не хочет. то есть файл /dev/ttyACMx - создается, открывается - но данные не ходят ни туда, ни оттуда. в федоре - все ок.
кроме того есть возможность влезть внутрь переходника - так вот там видно, что он очень старается передать данные - но их не берут и после заполнения буфера он перестает пытаться )
еще момент - федора стоит на машине с обычным биос, а гента - на машине с uefi. хотя этот uefi уже провертели по всякому...
если кто-нибудь что-нибудь подскажет, буду очень признателен )

 

Vinill ()

nfs, iptables и все, все, все.. )

есть три машины - pc1, pc2 и pc3. на них следующие сетевые интерфейсы: eth0 на рс1, eth1 и eth2 на рс2, eth3 на рс3.
машина рс2 является шлюзом для рс1, через который эта рс1 видит рс3. рс3 не знает про рс1.
на рс2 настроена маршрутизация и маскарад для рс1. а еще рс2 - бездисковая, т. е. грузится с рс1 и файловую систему берет по nfs тоже с рс1.
все это прекрасно живет - рс1 ходит где хочет и делает что хочет, рс2 все обеспечивает, а рс3 все это терпит.
теперь возникла необходимость с рс3 подключиться к nfs серверу на рс1. при этом рс3 знать про рс1 необходимости нет. с помощью DNAT пробросили порты - вуаля - рс3 прекрасно подключается к рс1. и с рс1 по-прежнему можно заходить на рс3. и рс2 пинговать. вот только файловая система у рс2 (которая по nfs берется с рс1) отваливается ровно в тот момент, когда подключается рс3. т. е. на рс2 фактически остается работать только ядро ))

может, объяснит кто-нибудь, что это такое? )

 ,

Vinill ()

обратиться к com порту из модуля

сабж, собственно.
если коротко - есть железка, которая подключается по usb и в системе выглядит как соm порт. данные, которые по этому порту бегают - обрабатываются в другом модуле ядра.
можно сделать прокладку на userspace, которая занималась бы перегонкой данных, а можно достучаться до com порта напрямую из kernelspace. как это сделать - понятно. но везде почему-то это делать не советуют. почему - не говорят :). может кто-нибудь просветить на эту тему? не очень хочется прокладку городить...

Vinill ()

проблема после пересборки ядра

пересобрал ядро. после этого перестал грузится сторонний модуль. пишет:
kernel: extra_module: version magic '3.2.1-gentoo-r2 SMP mod_unload modversions ATOM ' should be '3.2.1-gentoo-r2 SMP mod_unload ATOM '
в ядре отключена проверка версии модулей(MODVERSIONS=n). на более ранних версиях ядер этого хватало. куда б деть этот версион мэджик? из ядра просто были выкинуты лишние модули. пересобрать модуль не получится.
при сборке с MODVERSIONS=y заявляет:
kernel: extra_module: disagrees about version of symbol module_layout

Vinill ()

подскажите по драйверу

написаны два модуля. собираются под ядра 2.6 и под 3.2. под ядром 2.6 нет вообще никаких проблем, под ядром 3.2 при загрузке одного из модулей все нормально, при загрузке второго во время вызова request_irq в логи попадает такой дамп:

Apr 19 21:58:06 localhost kernel: ------------[ cut here ]------------
Apr 19 21:58:06 localhost kernel: WARNING: at fs/proc/generic.c:323 __xlate_proc_name+0x8e/0x98()
Apr 19 21:58:06 localhost kernel: Hardware name: To Be Filled By O.E.M.
Apr 19 21:58:06 localhost kernel: name 'own_module2'
Apr 19 21:58:06 localhost kernel: Modules linked in: own_module2(O+) ipv6 crc_ccitt snd_hda_codec_realtek serio_raw pcspkr i2c_i801 i2c_core thermal snd_hda_intel ac video e100 fan backlight mii intel_agp intel_gtt snd_hda_codec snd_pcm iTCO_wdt iTCO_vendor_support processor button thermal_sys snd_timer snd agpgart snd_page_alloc tg3 libphy e1000 fuse xfs exportfs nfs nfs_acl auth_rpcgss lockd sunrpc jfs ext4 jbd2 raid10 dm_snapshot dm_crypt dm_mirror dm_region_hash dm_log dm_mod scsi_wait_scan hid_sunplus hid_sony hid_samsung hid_pl hid_petalynx hid_monterey hid_microsoft hid_logitech hid_gyration hid_ezkey hid_cypress hid_chicony hid_cherry hid_belkin hid_apple hid_a4tech sl811_hcd usbhid ohci_hcd ssb uhci_hcd usb_storage ehci_hcd usbcore usb_common aic94xx libsas lpfc qla2xxx megaraid_sas megaraid_mbox megaraid_mm megaraid aacraid sx8 DAC960 cciss 3w_9xxx 3w_xxxx mptsas scsi_transport_sas mptfc scsi_transport_fc scsi_tgt mptspi mptscsih mptbase atp870u dc395x qla1280 imm parport dmx3191d sym53c8xx qlogicfas408 gdth advansys initio BusLogic arcmsr aic7xxx aic79xx scsi_transport_spi sg pdc_adma sata_inic162x sata_mv ata_piix ahci libahci sata_qstor sata_vsc sata_uli sata_sis sata_sx4 sata_nv sata_via sata_svw sata_sil24 sata_sil sata_promise pata_pcmcia pcmcia pcmcia_core
Apr 19 21:58:06 localhost kernel: Pid: 21030, comm: insmod Tainted: G           O 3.2.1-gentoo-r2 #3
Apr 19 21:58:06 localhost kernel: Call Trace:
Apr 19 21:58:06 localhost kernel: [<c012f2d6>] warn_slowpath_common+0x65/0x7a
Apr 19 21:58:06 localhost kernel: [<c01f687d>] ? __xlate_proc_name+0x8e/0x98
Apr 19 21:58:06 localhost kernel: [<c012f34f>] warn_slowpath_fmt+0x26/0x2a
Apr 19 21:58:06 localhost kernel: [<c01f687d>] __xlate_proc_name+0x8e/0x98
Apr 19 21:58:06 localhost kernel: [<c01f68cf>] __proc_create+0x48/0xe2
Apr 19 21:58:06 localhost kernel: [<c01f6d63>] proc_mkdir_mode+0x1e/0x43
Apr 19 21:58:06 localhost kernel: [<c01f6d97>] proc_mkdir+0xf/0x11
Apr 19 21:58:06 localhost kernel: [<c017259e>] register_handler_proc+0xc2/0xd0
Apr 19 21:58:06 localhost kernel: [<c0170baf>] __setup_irq+0x2d7/0x375
Apr 19 21:58:06 localhost kernel: [<c0170d1c>] request_threaded_irq+0xcf/0xf4
Apr 19 21:58:06 localhost kernel: [<e01fcb30>] ? msp_drv_poll+0x50/0x50 [msp]
Apr 19 21:58:06 localhost kernel: [<e00f348b>] msp_drv_init+0x426/0x843 [msp]
Apr 19 21:58:06 localhost kernel: [<c0414f86>] ? mutex_unlock+0x8/0xa
Apr 19 21:58:06 localhost kernel: [<c0182d45>] ? trace_module_notify+0x1fb/0x205
Apr 19 21:58:06 localhost kernel: [<c0414f86>] ? mutex_unlock+0x8/0xa
Apr 19 21:58:06 localhost kernel: [<c04186d1>] ? notifier_call_chain+0x26/0x48
Apr 19 21:58:06 localhost kernel: [<c0149001>] ? __blocking_notifier_call_chain+0x3d/0x48
Apr 19 21:58:06 localhost kernel: [<c010120b>] do_one_initcall+0x71/0x11e
Apr 19 21:58:06 localhost kernel: [<e00f3065>] ? exch_setup+0x2b/0x2b [msp]
Apr 19 21:58:06 localhost kernel: [<c0158b6f>] sys_init_module+0x1316/0x1506
Apr 19 21:58:06 localhost kernel: [<c041aed8>] sysenter_do_call+0x12/0x28
Apr 19 21:58:06 localhost kernel: ---[ end trace e41e5c7373962a7d ]---

насколько я понял, это вылетает когда цепляется прерывание и эта информация отображается куда-то в fs /proc, которой что-то не нравится. тогда непонятно, почему этого не происходит при загрузке первого модуля - в этом плане они идентичны. и хотя модуль работает, хотелось бы такого дампа в логе избавиться.

Vinill ()

Дурацкий, наверное, вопрос, но ....

собираю ядро (2.6.32-ххх) для чего-то типа дистрибутива, который будет стоять на другой машине, на которой нет ничего кроме COM и ethernet. почему-то, прежде чем сливать туда, хочется проверить у себя )).
initrd нет. и при загрузке - оппа - Warning: unable to open initial console.
почему - понятно - /dev/console ис оут. udev, типа и все такое. создать у себя в /dev/ такое устройство к успеху не привело - udev, мать его.....
подскажите, пожалуйста, что тут можно сотворить. а то разработчики udev сейчас столько на карму примут.. )))

Vinill ()

не собирается ядро

сижу на федоре 15 с ядром 2.6.38. появилась необходимость собрать ядро другой версии. ядро 2.6.32 еще собралось, ядро 2.6.18 выдает:

scripts/mod/sumversion.c: В функции «get_src_version»:
scripts/mod/sumversion.c:384:16: ошибка: «PATH_MAX» undeclared (first use in this function)
scripts/mod/sumversion.c:384:16: замечание: each undeclared identifier is reported only once for each function it appears in
scripts/mod/sumversion.c:384:7: предупреждение: неиспользуемая переменная «filelist» [-Wunused-variable]
make[2]: *** [scripts/mod/sumversion.o] Error 1
make[1]: *** [scripts/mod] Error 2
make: *** [scripts] Error 2
конфиг ядра везде брал дефолтный. ясно, что что-то с инклудами - но что именно и оно вообще борется?

Vinill ()

mingw что-то туплю

не знаю, оффтоп или нет, но может кто-то ответит:
надо было установить gcc на винду - установили mingw, выполняем make - и оба-на - уж не знаю кто - толи make при передаче gcc, толи сам gcc вообще не разбирают пути к файлам. а проект разветвленный и если в makefile есть строка собрать файл типа D:\home\1\1.cpp (причем слэш хоть / хоть \), gcc пишет что файла dhome11.cpp он не нашел - и ведь где-то он прав, зззараза ))). mingw последний, свежескаченный.
подскажите пожалуйста, что я делаю не так?

Vinill ()

написан драйвер, система очень тихо плачет... )

подскажите, пожалуйста - написан драйвер, написано ПО с ним работающее, и все работает - но, сцука, недолго. по истечении какого-то времени все дохнет, перед этим в логе появляется крик души:

Feb 25 00:07:07 kernel: Error querying loaded modules - Function not implemented
Feb 25 00:07:07 kernel: ACPI: Unable to locate RSDP
Feb 25 00:07:09 kernel: ISA access: No IT8888G PCI to ISA bridge found

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

Vinill ()

неявное преобразование типов в с++

пишется программка на с++, в ней подключаются системные заголовочные файлы. в одном из этих файлов есть примерно такой кусок кода:
static __inline __ int* foo()
{
int *asd;
....
return (void*)asd + 10;
}
компилятор с++ тут-же вскидывается на неявное преобразование. если писать на с, а не на с++ все нормально. как-нибудь можно компилятору сказать, чтобы он на это внимание не обращал?

Vinill ()

Очень долгое подключение ssh клиента к системе

Из-за чего может происходить сабж? Время подключения порядка 3-х минут - просто тупо о чем-то молча думает.. После подключения все летает, рядом стоят аналогичные системы, там таких задержек не наблюдается. Порылся в конфигах, вплоть до сверки каталогов /etc на данной системе и на не тормозной, ничего не нашел

Vinill ()

Little Endian <-> Big Endian

Есть программа, которая крутится на Intel машине, и выдает по сети данные (float) всем, кто попросит. Нужно ее перевести на Sun. Проблема в том, что те, кто просит данные, давно и надежно сидят на Intel, протокол обмена устоявшийся и менять его никто будет, поэтому преобразование данных Big Endian в Little Endian приходится крутить на Sun. Есть ли в ассемблере Sparc что-нибудь аналогичное Intel-овскому swapb?

Vinill ()

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