[BSD] folyamatirányító rendszer FreeBSD-n
Zahemszky Gábor
Gabor at Zahemszky.HU
2009. Okt. 6., K, 12:27:41 CEST
> Délután/este ki fogom tenni letölthető helyre. Mivel az egy nyílt
> forrású(?) program, nincs akadálya hogy kiadjam.
Hát lehet az AT&T-féle ksh, az nyílt forráskódú, lhet a pdksh, az is,
szóval majd nem tekintjük terjesztésnek :-)
> $ file ksh
> ksh: FreeBSD/i386 compact demand paged executable
> FreeBSD-s bináris x86-on, ergo mennie kellene. Mégsem megy, de miért
> is?
Reményeim szerint be is fejezhetjük a keresgélést. Ez egy a.out
formátumú bináris, aminek működéséhez (legalábbis az én 7-stable-mon)
kell egy kernel opció:
options COMPAT_AOUT
no most ez alapból nincs benne a generikus kernelben.
(fellelhetősége: /sys/i386/conf/NOTES fájl - az halványan rémlik, hogy
ez viszont i386 architektúrán van *csak*, tehát iszonyat erős 64-bites
rendszerre ne akard rátenni. Spec amd64 arch-on nem ismert ez az
opció.) Ha valóban ez a baj, akkor se értem, hogy miért nem megy
5.5-ön, legalábbis most megnéztem a relnotes-t és nem szerepel benne,
hogy eltávolítoták volna a default konfigból.
> Ezt közben sikerült magamtól megcsinálnom, az alapján tudom állítani
> hogy az előző levelemben említett COMPAT_43 és COMPAT_FREEBSD4 benne
> vannak a kernel konfigurációjában.
Akor próbálj egy másikat a fenti COMPAT_AOUT -tal is :-)
> d) És végül kernel konfig. Rossz hírem, van, nem bizos, hogy működik:
> >
> > strings -n 3 /kernel | grep '^___' | sed -n -e 's/^___//p'
> >
> Kimenete mindössze ennyi:
> _
> _````QQQQ
Igen, ez sajnos default kernel esetén csak ennyit tud kiköpni (azt pl.
nem sikerült kiderítenem, hogy mi a mogorva jó égért nem lehet ez az
opciót def-be betenni lassan 15 éve).
> Annyit hozzáteszek hogy a /boot/kernel/kernel állományon követtem el
> az adott sort, amely:
> $ file kernel
> kernel: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD),
> dynamically linked (uses shared libs), not stripped
>
> [...] De menni csak akkor fog, ha okosan volt egy:
> > options INCLUDE_CONFIG_FILE
> > a kernel konfigjában (erre viszont az rémlik, hogy nem volt
> > default).
> >
> Rengeteg szimbólumot ad a strings kimente, a konfiguráció viszont úgy
> látszik nincsen benne.
>
> Közben kis keresgéléssel azt találtam, hogy valamikor óta (fenti
> opció
> > esetén!) "config -x /kernel" a megfelelő parancs, és a man config
> > legvégén ott a fent említett parancs - már egyszerűsített formában.
> >
> Működő rendszeren nincs config parancs,
???
type config szerint /usr/sbin/config - azaz nincs benne a default
USER-PATH-ban.
> 5.5 alatt van, de nincs -x
> kapcsolója. Szimplán kiadva a parancsot meg a fordítási környezetet
Akkor ennél újabb ez az opció, nem kezdtem el keresgélni, hogy mióta
ismeri. De mondom, a megfelelő opció nélkül érdektelen mind a két forma.
> keresi. Ahogy a manlap is írja, a conf aljegyzékből kell kiadni ezt a
> parancsot. Mivel nincs fordított környezetem, ez a lehetőség kiesett.
Másból viszont nem fogod tudni kinyerni (jó, ez nem igaz, elvi szinten
biztos ki lehet találni - pl. nm -mel szimbólumokat kinyerni, azok
segítségével obj -fájlokat meghatározni, stb).
Visszatérmnék az eredeti kérdésre:
nem lehet, hogy az 5.4 -es gépen jelenleg *nem* a default kernel
konfiggal fordított kernel van? (pl uname -a legutolsó adata a használt
kernel konfig fájl neve - és ha mázlid van, még meg is van az a fájl,
és készen vagyunk :-) ) Mert akkor pl lehet, hogy korábban valaki
beletette azt az opciót.
Zahy
--
#!/bin/ksh
Z='21N16I25C25E30, 40M30E33E25T15U!';
IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
set -- $Z;for i;{ [[ $i = ? ]]&&print $i&&break;
[[ $i = ??? ]]&&j=$i&&i=${i%?};
typeset -i40 i=8#$i;print -n ${i#???};
[[ "$j" = ??? ]]&&print -n "${j#??} "&&j=;typeset +i i;};
IFS=' 0123456789 ';set -- $Z;for i;{ [[ $i = , ]]&&i=2;
[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l i;};print "$j"
További információk a(z) BSD levelezőlistáról