Systemcall v AIX/POWER7,8

mhi_

Systemcall v AIX/POWER7,8
« kdy: 23. 09. 2018, 18:00:19 »
Nemate nekdo predstavu jak vypadaji syscally v AIXu 7.1 (POWER) ?

disassemblovany _exit vypada:
ROM:00000000 4C C6 33 42                 crorc   4*cr1+eq, 4*cr1+eq, 4*cr1+eq
ROM:00000004 44 00 00 02                 sc


podle str. 45 z http://www.lsd-pl.net/asmcodes-slides.pdf

crorc cr6,cr6,cr6
and
svca
special instruction


r2  denotes system call number
r3-r10 filled with arguments

lr register filled with the  return from  syscall address

Nejak mi to uplne nesedi... Pomohl by mi nejaky cisty hello world naprogramovany v assembleru.

Druha otazka je jak funguji shared libs v AIXu, protoze vsechny konci v /unix, u ktereho netusim jak se prolinkuje (vzdyt je to kernel? kde se berou userspace data z nej???)


Ivan

Re:Systemcall v AIX/POWER7,8
« Odpověď #1 kdy: 23. 09. 2018, 21:22:22 »
Uz je to vice nez 15 let co jsem se o takovy veci zajimal. Drive to bylo tak, ze PPC melo specialni instrukci na syscall jeste drive nez  x86. Executable formar byl XCOFF, coz je takovy lepsi COFF z DOSu. Je rozsireny o moznost mit 32bit a 64bit symboly v jednom souboru. Takze neresis jaka je cesta k 32/64 knihovnam. Knihovna je jen jedna a basta.

Ono i dynamicke linkkovani fungovalo jinak. Jestli se nepletu, tak kernel neumel swapovat stranky ale pouze cele soubory,
a adresni prostor procesu nebyl linearni a pro pristup ke knihovnam se pouzivalo neco jako segmentovy registr.
Kdyz se nacetla knihovna do pameti tak ti neco reklo, pro knihovnu abc.a pouzij hodnutu segmentoveho registru 123.
A ke knihovne se pak pristupovalo pres dve hodnoty 123:<offset>. Ta hotnota segmentoveho registru byla stejna pro vsechny procesy, ktere tu knihovnu pouzivaly.

Drive jsem si myslel, ze na AIXu neni rozdil mezi sdilenou a statickou knihovnou - .a vs. .so. Ze na AIXu je to uplne to samy. Nakonec jsem zjistil ze v tom nejaky rozdil je, ale vubec to neni analogicke tomu jak to funguje na architekturach kde se pouziva .ELF.

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #2 kdy: 24. 09. 2018, 13:33:47 »
S temi selektory/segmenty (123:) to myslite jak? Power architektura prece nic takoveho neumi, nebo se pletu? V disassemblovanem kodu jsem nic takoveho taky nepostrehl. Netvrdim, ze v XCOFFu takova vec neni, ale po relokacich/importech v pameti by to melo byt uz ciste linearni.

Budu si ke shared libs evidentne jeste neco nastudovat, chtelo by to neco na zpusob "Solaris Internals" i "AIX internals" :). Kazdopadne jestli tu nekdo tusi jak chodi ty syscally, prosim prosim. Do Idy kernel AIXu nenahraju ani z casti, GNU binutils jsou nanic, a lovit z dumpu v pameti kusy kodu je pro mne nepouzitelne (navic na AIX7 nemam roota a doma mam stroj jen do AIX 5).

Ida_lover

Re:Systemcall v AIX/POWER7,8
« Odpověď #3 kdy: 24. 09. 2018, 14:57:24 »
Doma mam stroj jen do AIX 5).

So syscalom neopradim, ale mozno by som vedel o Power, co zvlada AIX 7.1. Mne ho ponúkali za 6000Kc a bol pri Brne. Mozem posunut kontakt.

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #4 kdy: 24. 09. 2018, 23:43:10 »
O jaky model presne slo ? Diky.

(nejsem si ale uplne jist, jestli to je ta spravna cesta - kazdou i banalni otazku resit tim, ze si poridim prislusne zarizeni)


trollo bijec

Re:Systemcall v AIX/POWER7,8
« Odpověď #5 kdy: 25. 09. 2018, 09:10:23 »
9113 550 P5  asiriada@gmail.com

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #6 kdy: 25. 09. 2018, 13:06:19 »
Aktualne se mi povedlo "nabootovat" AIX7.2 na mem x86 notebooku (qemu 3.0.0 umi obstojne POWER9/CHRP). Je to neuveritelne pomale (boot trva desitky minut, a treba "ls -la" naskakuje viditelne po radcich :) ) a samozrejme to neni plnohodnotna instalace (pouze shell a nejake veci okolo bez prekladace), nicmene teoreticky by to mohlo fungovat (pujdou-li binarky ze 7.1 nejak dostat do tohoto mini-systemu).

MartinX111

Re:Systemcall v AIX/POWER7,8
« Odpověď #7 kdy: 25. 09. 2018, 14:33:29 »
.... a samozrejme to neni plnohodnotna instalace (pouze shell a nejake veci okolo bez prekladace)....

V standartnej instalacii AIXu sa C kompilator uz davno nenachadza. Da sa pouzit alebo xlC od IBM (plateny) alebo gcc (free). 

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #8 kdy: 25. 09. 2018, 15:25:05 »
Ja vim, blbe jsem to napsal. Na zive instalaci (kde nemam roota) mam gcc, tam kde mam roota bezim v podstate z RAM disku, ale muzu tam prikopirovat co uznam za vhodne, zatim ale pouze jednosmerne Linux->AIX.

Docela by mi pomohlo, kdyby mi nekdo prozradil jak je za bootfile.exe (ELF loader + AIX kernel + ram0) pripojen ten ramdisk,v nem bych potreboval oeditovat par veci, aby mi to startovalo rychleji.

MartinX111

Re:Systemcall v AIX/POWER7,8
« Odpověď #9 kdy: 25. 09. 2018, 19:03:25 »
Boot image obsahuje kernel, ramdisk a tzv. ODM (vid nizsie) ktore su ulozene za sebou a firmware ich v podstate len skopiruje sekvencne z boot disku (boot logical volume) do pamate a nasledne skoci do kernelu. Prikaz, ktory vyraba boot image na disku je "bosboot", nemam teraz poruke AIX a netusim ci je to skript alebo binarka, ak je to skript tak by sa dalo pozriet co sa konkretne robi pri vytvarani boot image. Tento prikaz pouziva /usr/lib/boot and /usr/lib/boot/protoext na zaklade coho vytvori obsah boot image.
Priebeh bootovania riadi skript rc.boot.
Su tam 3 fazy - (1) detekcia a inicializacia devices potrebnych na inicializaciu rootvg (2) Samotna  inicializacia rootvg a namotnovanie filesystemov z disku (3) detekcia ostatnych devices. Pri kazdej faze sa spusti rc.boot s parametrom cislo fazy. Prve 2 fazy bezi rc.boot z ramdisku, v 3 faze uz bezi z HDD. Devices deteguje a inicializuje prikaz "cfgmgr", ktory taha data z ODM (Object Data Manager, je konfiguracna databaza, co je nieco ako registry vo Windows). ODM je umiestnena v /etc/objrepos na inicialiciu devices su dolezite "databazy" PdDv, PdAt, CuDv, CuAt, CuDvDr, CuDep, ...
Obsah ODM sa da listovat prikazom "odmget".   

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #10 kdy: 27. 09. 2018, 08:23:21 »
Diky za popis. To co mne zajimalo je jak je (init) ram0 embeddnuty do kernelu, abych to z toho mohl nejak vyparat a upravit dle vlastniho uvazeni (mam jen binarni bootovatelny image). Dalsi problem co mam je asi v tom, ze mi nejde cely gzipnuty kernel rozbalit, v nejakem miste i ten AIXovy uncompress selze.

Jinak tech variant fungovani rc.boot muze byt vic, zrovna v mem pripade to tak je, ale v principu se tam spousti to same.

MartinX111

Re:Systemcall v AIX/POWER7,8
« Odpověď #11 kdy: 27. 09. 2018, 16:11:12 »
Jinak tech variant fungovani rc.boot muze byt vic, zrovna v mem pripade to tak je, ale v principu se tam spousti to same.

Ono to zavisi od obsahu ODM, napriklad v databaze Config_Rules je definovane, v ktorej faze sa bude konfigurovat ktory device.
To, ako je boot image detailne usporiadany netusim, odporucam pozriet si na funkcnom AIXe ten prikaz "bosboot", ktory boot image vyraba a subory, ktore bosboot pouziva. 
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.cmds1/bosboot.htm

ondrej

Re:Systemcall v AIX/POWER7,8
« Odpověď #12 kdy: 28. 09. 2018, 10:59:08 »
Zdravim, bohuzel neporadim neresil sem:( Kdyby jste se prece jen rozhodl pro zelezo muzu levne prodat P5+ 550Q 9133-55A, 7.1 na tom rozbehate mam k tomu upravene hmc da se rozbehat ve virtualboxu. Je to o cene vaseho casu myslim ze pokud na tom stravite dva dny resenim prostredi, mate doma za tu cenu zelezo.

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #13 kdy: 28. 09. 2018, 12:27:54 »
ondrej: Umisteni serveru a predstava o cene?

[ Offtopic: Chvili jsem o tom uvazoval jak mi shora nekdo nabizel taky P5ku za 6000, driv kdyz jsem chtel pochopit neco o spalovacich motorech, koupil jsem si rozbitou sekacku a tu dal dohromady. Tento postup ze mne neco zaujme a koupim si k tomu "vybaveni" je dost cesta do pekel: takhle mam z kazde sve "ery" doma hromadu harampadi, ke kteremu se nostalgicky vracim, ale jinak je nanic. I kdyz pravda, tu sekacku pouzivame porad :).  ]

mhi_

Re:Systemcall v AIX/POWER7,8
« Odpověď #14 kdy: 28. 09. 2018, 12:33:31 »
Jeste jedna drobnost, AIX jak se zda se da rozbehat v plne instalaci v QEMU, emulace spousty zarizeni funguje jak ma, mozna bych tomu mel dat cas a vyzkouset na necem rychlejsim (i7ka apod.) emulovat. Zatim mi to bezelo na notebooku kde je nejaky ultrapomaly procesor.