Tomsk Sysadmins Forum
Unix => Разное => Topic started by: Xray_Linux_Root on June 19, 2007, 16:31:47
-
Надо всего навсего подготовить рабочий сервак (на базе ASPLinux 11.2 или Fedora) для запуска FoxPro (того что для SCO Unix был). В общем-то задачка простая, если бы не это "бы".
Пройдясь поиском по всемогущему интернету нашёл в общем-то всё необходимое:
1. http://foxpopuli.narod.ru/ix/readfpu.htm (http://foxpopuli.narod.ru/ix/readfpu.htm) - статейка для старта
2. http://linux-abi.sourceforge.net/ (http://linux-abi.sourceforge.net/) - страничка проекта
3. http://ace-host.stuart.id.au/russell/files...patch-linuxabi/ (http://ace-host.stuart.id.au/russell/files/debian/sarge/kernel-patch-linuxabi/) - набор патчей для более свежих ядер (за основу взял 2.6.17 с kernel.org)
4. ядро пропатчил, нужные опции включил (в ядро - ), но на выходе получаю слово в слово как тут: http://ubuntuforums.org/showthread.php?t=4...1&highlight=abi (http://ubuntuforums.org/showthread.php?t=445931&highlight=abi)
CC [M] fs/binfmt_coff.o
fs/binfmt_coff.c: In function ‘coff_load_object’:
fs/binfmt_coff.c:569: warning: implicit declaration of function ‘__set_mm_counter’
fs/binfmt_coff.c:569: error: ‘file_rss’ undeclared (first use in this function)
fs/binfmt_coff.c:569: error: (Each undeclared identifier is reported only once
fs/binfmt_coff.c:569: error: for each function it appears in.)
что значит: implicit declaration of function ‘__set_mm_counter’ - неявное объявление функции ‘__set_mm_counter’ я представления не имею т.к. знаю из "языков программирования" только bash. Но догадываюсь что ‘__set_mm_counter’ просто нигде не описано.... и пройдясь поиском по всему каталогу с исходниками ядра убедился в этом, найдя только ‘set_mm_counter’. И естественно произвёл замену ‘__set_mm_counter’ на ‘set_mm_counter’ в этом файлике binfmt_coff.c (т.к. откопал подобное тут: http://www.mail-archive.com/pld-cvs-commit...g/msg02233.html (http://www.mail-archive.com/[email protected]/msg02233.html) ).
5. О чудо! Оно собралось.
6. Пускаю бинарник [user@lnxserver ~]$ /usr/local/foxpro/foxpro.pr
А чудес больше не происходит..... в консоли наблюдаю только чёрный экран и не более, тогда по alt+f2 переключаюсь во вторую консоль и запускаю top. Так вот обнаруживается что процесс foxpro.pr откусил 99,9% CPU......
Здесь описаны абсолютно все произведённые манипуляции от начала наложения патча до запуска самого приложения, т.е. доп. подготовка никакая больше не велась ни до ни после.
Так вот, вопрос к гурманам по связке FoxPro+Linux где я что-то упустил или что-то не так сделал?
З.Ы. Под руками имеется сервак на сборной солянке из mandrake+debian на который сборщики гордо повесили российский бренд, на нём FoxPro пашет....
-
Мдя......
Снова сам с собой общаюсь
Короче идём сюда http://sourceforge.net/project/showfiles.php?group_id=13130 (http://sourceforge.net/project/showfiles.php?group_id=13130) и берём ibcs-3_3.tgz (http://downloads.sourceforge.net/linux-abi/ibcs-3_3.tgz?modtime=1179479933&big_mirror=0), делаем всё как написано в приложенной инструкции и будет вам счастье
А чтобы в логи всякая хрень не писалась, при выполнении бинарников, можно наложить вот этот патчик:
diff -Naur orig/sco/ioctl.c new/sco/ioctl.c
--- orig/sco/ioctl.c 2007-02-27 22:02:00.000000000 +0600
+++ new/sco/ioctl.c 2007-06-20 10:55:21.000000000 +0700
@@ -163,9 +163,6 @@
class_str[2] = class & 0x0000FF ? (char)((class ) & 0xFF) : '.';
class_str[3] = 0;
- printk(KERN_DEBUG "sco: ioctl(%d, %lx[%s], 0x%p) unsupported\n",
- fd, ioctl_num, class_str, arg);
-
return -EINVAL;
}
diff -Naur orig/sco/tapeio.c new/sco/tapeio.c
--- orig/sco/tapeio.c 2007-02-27 22:02:00.000000000 +0600
+++ new/sco/tapeio.c 2007-06-20 10:55:31.000000000 +0700
@@ -100,8 +100,6 @@
case 64: /* MT_REPORT */
#endif
default:
- printk (KERN_ERR "abi: SCO tape ioctl func=%d arg=%x unsupported\n",
- cmd & 0xff, (int)data);
return -EINVAL;
}
diff -Naur orig/sco/vtkbd.c new/sco/vtkbd.c
--- orig/sco/vtkbd.c 2007-02-27 22:02:00.000000000 +0600
+++ new/sco/vtkbd.c 2007-06-20 10:55:13.000000000 +0700
@@ -85,6 +85,5 @@
}
/* FALLTHROUGH */
}
- printk(KERN_ERR "%s: vtkd ioctl 0x%02x unsupported\n", __FILE__, cmd);
return -EINVAL;
}
З.Ы. Причём пашет даже с текущим ядром версии 2.6.21.5