Forum Linux.général Migration SCO Unix FreeBSD

Posté par  .
Étiquettes :
0
10
avr.
2008
Bonjour,

J'essaie actuellement de migrer une application en cobol tournant sur SCO UNIX Openserver release 5 sur une distrib FreeBSD.
J'ai choisie cette distribution car c'est a priori celle qui permet la plus grande interoperabilité au niveau des binaires du runtime cobol et ne disposant
pas des sources de l'application je ne peux absolument pas recompiler les programmes cobol.

A priori la dernière version de freeBSD (7.0) permet d'executer des binaires de SCO.

J'ai essayé plusieurs fichiers binaires issues de SCO mais aucun ne fonctionne.

Voici un recapitulatif de ce que j'ai déjà fait avec comme exemple un binaire SCO ls.

# readelf -a ls
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8049d70
Start of program headers: 52 (bytes into file)
Start of section headers: 42576 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 6
Size of section headers: 40 (bytes)
Number of section headers: 18
Section header string table index: 16



# ./ls
ELF binary type "0" not known.
./ls: Exec format error. Binary file not executable.
# brandelf -t FreeBSD ls
# ./ls
ELF interpreter /usr/lib/libc.so.1 not found
Abort

Ici a priori il y a un problème avec les librairies de gcc
J'ai donc essayé avec le libc.so.1 issu de SCO

Je copie la totalité des librairies sur la FreeBSD
/opt/K/SCO/Unix/5.0.4Eb/usr/lib/

Je crée un lien

#ln -s /usr/lib/libc.so.1 /opt/K/SCO/Unix/5.0.4Eb/usr/lib/


Et quand je fais le ls

# ./ls
Bad system call (core dumped)
# ktrace ./ls
Bad system call (core dumped)
# kdump
1203 ktrace RET ktrace 0
1203 ktrace CALL execve(0xbfbfeb8b,0xbfbfea4c,0xbfbfea54)
1203 ktrace NAMI "./ls"
1203 ktrace NAMI "/usr/lib/libc.so.1"
1203 ls RET execve 0
1203 ls CALL [9512]
1203 ls RET [9512] -1 errno 78 Function not implemented
1203 ls PSIG SIGSYS SIG_DFL
1203 ls NAMI "ls.core"


Donc la je bloque, je ne sais pas si c'est un problème de librairie ou peut-être que "l'emulation" n'est pas bien chargée
ou encore j'ai lu qu'on l'on pouvait modifier les appels systèmes (syscalls.master je crois)

Merci infiniment


Voici au passage le rc.conf

# cat rc.conf

# -- sysinstall generated deltas -- # Wed Mar 26 15:00:14 2008
# Created: Wed Mar 26 15:00:14 2008
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
keymap="fr.iso.acc"
linux_enable="YES"
svr4_enable="YES"
ibcs2_enable="YES"
sysvipc_enable="YES"
nfs_client_enable="YES"
inetd_enable="NO"
ifconfig_bfe0="inet 10.0.0.42 netmask 255.0.0.0"
gateway_enable="YES"
defaultrouter="10.0.0.2"

moused_type="auto"
moused_enable="YES"
usbd_enable="YES"
gdm_enable="YES"
moused_port="/dev/mse0"

#dbus_enable="YES"
#polkitd_enable="YES"
#hald_enable="YES"
system_tools_backends_enable="YES"
  • # A priori

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour,
    Essaye plutôt quelque chose comme
    ln -s /lib/libc.so.X /lib/libc.so.1

    essaye d'installer le compat (/usr/ports/misc) en descendant et en faisant a chaque fois des liens symboliques vers la libc en question.

    sinon ton seul espoir est :
    ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releas(...)
    • [^] # Re: A priori

      Posté par  . Évalué à 1.

      Merci pour la réponse

      Bon j'ai essayé mais rien n'y fait

      MAIS je si j'utilise une librairie de FreeBSD ( par exemple libc.so.7 )

      Ce n'est plus un problème de system call mais de Segmentation fault :

      Petit recapitulatif :

      Avec la lib SCO Openserveur

      # ktrace ./ls
      Bad system call (core dumped)
      # kdump
      1203 ktrace RET ktrace 0
      1203 ktrace CALL execve(0xbfbfeb8b,0xbfbfea4c,0xbfbfea54)
      1203 ktrace NAMI "./ls"
      1203 ktrace NAMI "/usr/lib/libc.so.1"
      1203 ls RET execve 0
      1203 ls CALL [9512]
      1203 ls RET [9512] -1 errno 78 Function not implemented
      1203 ls PSIG SIGSYS SIG_DFL
      1203 ls NAMI "ls.core"

      Avec la lib Freebsd

      # ktrace ./ls
      Segmentation fault (core dumped)
      # kdump
      1237 ktrace RET ktrace 0
      1237 ktrace CALL execve(0xbfbfeb8b,0xbfbfea4c,0xbfbfea54)
      1237 ktrace NAMI "./ls"
      1237 ktrace NAMI "/usr/lib/libc.so.1"
      1237 ls RET execve 0
      1237 ls PSIG SIGSEGV SIG_DFL
      1237 ls NAMI "ls.core"

      La j'avoue que ne sais pas lequel est le pire ;)

      Par contre je suis en train de regarder du coté de l'emulation ibcs2 et j'avoue qu'il y a peut-être un problème de ce coté :

      En effet, logiquement si cette emulation est présente sur ma machine lorsque je fais un brandelf -lv je devrais voir apparaitre ibcs2 ?!

      J'ai comme l'impression que mon executable SCO n'est pas emulé mais bien executé comme un executable FreeBSD ce qui pourrait generer ce problème d'appel système.

      Bref, je ne sais pas trop quoi faire, donc si quelqu'un à une idée ?!

      Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.