rtld i386 versus amd64

Dan Lukes dan at obluda.cz
Wed Feb 16 17:47:13 CET 2011


On 02/16/11 17:02, Petr Matousek:
>> A ted jeste potrebuju aby se nasel nekdo, kdo vyresi tu druhou
>> polovinu problemu - a zjevil kde se, sakra, rika jaka rtld knihovna se
>> ma pouzit ;-)
>
> http://fxr.watson.org/fxr/source/compat/ia32/ia32_sysvec.c?im=10#L163
> http://fxr.watson.org/fxr/source/kern/imgact_elf.c?im=10#L768
>
> co tohle?

Hm, jakpakto jsem mel ten grep napsanej, ze mi tohle nenasel ...

Tam nekde to skutecne je.

Ja jsem si to ale mezitim pri skrabani brambor prerozmyslel a mozna se 
obejdu bez toho.

Teda - ja o tom premyslim jako o teoretickem problemu. Budu to urcite 
nekdy potrebovat, ale ted nemam cas to dotahnout do konce. Kdyby to 
nekoho zajimalo, tak soucasna predstava jak to udelat je

Vychazim z i386 systemu stejne verze jaky bude mit AMD64 na jaky hodlam 
prejit.  rec je o normalne bezicim systemu kam se pristupuje na dalku po 
siti, v /usr/src jsou zdrojaky, v /usr/obj je jsou relozene veci PRO 
AMD64 (jak se tam dostali ? odjinud, respektive, je to sitove 
primoutovany vzdaleny disk). Takze:

1) nainstalovat LIB32 set.
  to by jeste nemelo mit na bezici system naprosto zadny vliv

2) nakopirovat na stroj AMD64 kernel obsahujici COMPAT32

3) do rc.conf dat
ldconfig32_paths="$ldconfig32_paths $ldconfig_paths"
ldconfig_local32_dirs="ldconfig_local32_dirs ldconfig_local_dirs"


3) reboot

nyni mame amd64-kerne/i386 world system - mel by byt ovsem normalne 
funkcni (vcetne portu) - kernel je 64, world je kompletne 32 bitu a 32 
bitu kernel podporuje, ma tam i potrebne knihovny, vcetne 
/libexec/ld-elf32.so.1

4) nyni je treba nainstalovat spravny /libexec/ld-elf.so.1

stavajici /libexec/ld-elf.so.1 pochazejici pro i386 byl pro 64bit kernel 
zcela nepouzitelna, ale dokud neni na disku jediny 64 bitovy binar, tak 
by to melo byt fuk protoze se nepouzival.


5) na rade jsou systemove dynamicke knihovny (/lib, /usr/lib)

6) regenerovat databazi pro ldconfig

7) preinstalovat programy make a install

8) ted uz by to melo unest klasicky 'installworld'

9) restart

mame konzistentni amd64-kernel/amd64-world system. Porty jsou stale 
i386, ale mely by bezet, protoze kompatibilita je pritomna

10) kompletni reinstalace portu na jejich amd64 varianty

11) odstranit upravy rc.conf

12) hotovo, restart

  ==================

nesnazim se nekoho presvedcit at to jde zkouset - spis kdyby to nekoho 
zajimalo nebo to potreboval, nebo tam na prvni pohled videl nejaky zadrhel.

Ja sam se ted nebudu pokouset to zkouset a doladit do finalne 
pouziteneho stavu ...

Dan


More information about the Users-l mailing list