Fórumok
Van egy 32 bites alkalmazás amit szeretnék szóra bírni egy modern rendszeren.
Eredetileg egy VirtualBox image-ben egy yocto alapú disztró amit nem tudok bootolni.
Ezt a rootfst-t lementettem, bechrootoltam rá.
Segmentation faulttal áll meg, de strace barátunk segített:
open("/dev/sda", O_RDONLY|O_NONBLOCK) = -1 ENOENT (Nincs ilyen fájl vagy könyvtár)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++
Szegmentálási hiba (core készült)
Próbáltam alátenni egy USB pendrive-ot de azon nem megy a HDIO_GET_IDENTITY ioctl:
open("/dev/sda", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, HDIO_GET_IDENTITY, 0x80c4660) = -1 EINVAL (Érvénytelen argumentum)
close(3) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++
Szegmentálási hiba (core készült)
Van esetleg valami módszer arra, hogy specifikus ioctl-eket "eltérítsek", esetlegesen létezik valamilyen blokkeszköz emulátor amivel be tudnám csapni a programot?
Hozzászólások
hat lehet irni egy egyszeru wrappert C-ben es LD_LIBRARY_PRELOAD-al betolteni, igy lehet atverni pl. a vinyo sorozatszamot ellenorzo programokat
vagy futtasd qemu-val az mindent is tud emulalni :)
Erről a wrapper-es megoldásról lenne valamilyen támpontod? Egy socketcan interfészhez hozzá kellene férnie a programnak, nem tudom mennyire egyszerű qemu alól.
Pontosan mit is csinálnál? A yocto image-n van egy progi (valamiféle célprogram) amit a host rendszeren futtatnál, és ez a progi akarna megnyitni valami miatt a /dev/sda-t? Ami bele van vasalva ebbe a célprogramba?
Akar meg a loopback-ot is kiprobalhatod, es ha nincs /dev/sda akkor csinalsz egy symlinket ezen a neven ami a /dev/loopx-re mutat. Nem adnek sok eselyt hogy pont tudja ezt az ioctl-t, de hátha.