Hercules Emülator (Z/OS)

Başlatan sema, 07 Nisan 2012 - 11:41:48

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sema

Selamlar :) Bir proje için IBM MainFrame işletim sistemi olan Z/OS'u bilgisayarımıza kurmamız gerekiyor. Ancak işletim sistemi ne yazık ki kişisel bilgisayarlara kurulamıyor. Yalnız Main Frame makinalarda çalışan programların çalıştırılmasını sağlayan bir emülator var: Hercules. Bunu kurduk, bu sefer de konfigüre dosyasına takıldık. Oradaki verileri kendi bilgisayarımıza göre yapılandırmamız gerekiyordu ama açıkçası verilerden pek de bir şey anladığımız söylenemez. Bu konuda herhangi bir fikri ya da daha önceden çalışması olan arkadaşların bize yardımcı olabileceğini umuyoruz. Hercules'i, elbette ki Ubuntu'ya kurduk. Depolarda mevcut. Site şu:

Hercules

Pek bir şey anlamadığımız konfigüre dosyamız da şu:

hercules.cnf
susema

if

@sema, http://old.nabble.com/hercules.cnf-td20392736.html

Z/OS'un çalışması için ayar dosyasının ayarlanmasını mı istiyor Hercules?

sema

@if, aynen öyle. Hatta bize verdiği hercules çıktısını da verelim buraya. Verdiği hatalar burada, bir kısmını düzeltmeye çalıştık ama çoğu duruyor:

su@su:~$ hercules
Hercules Version 3.07
(c)Copyright 1999-2010 by Roger Bowler, Jan Jaeger, and others
Built on Jun 19 2011 at 04:13:05
Build information:
  Debian
  Modes: S/370 ESA/390 z/Arch
  Max CPU Engines: 8
  Using setresuid() for setting privileges
  Dynamic loading support
  Using shared libraries
  HTTP Server support
  Regular Expressions support
  Automatic Operator support
  National Language Support
  Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8 fetch_dw store_dw multi_byte
Running on su Linux-3.0.0-17-generic.#30-Ubuntu SMP Thu Mar 8 17:34:21 UTC 2012 i686 MP=2
HHCHD018I Loadable module directory is /usr/lib/hercules
Crypto module loaded (c) Copyright Bernard van der Helm, 2003-2010
  Active: Message Security Assist
          Message Security Assist Extension 1
          Message Security Assist Extension 2
HHCCF008E Error in hercules.cnf line 13: Syntax error: OSTAILOR
HHCCF008E Error in hercules.cnf line 16: Syntax error: CPUSERIAL
HHCCF008E Error in hercules.cnf line 18: Syntax error: CPUVERID
HHCCF008E Error in hercules.cnf line 24: Syntax error: MAINSIZE
HHCCF008E Error in hercules.cnf line 25: Syntax error: XPNDSIZE
HHCCF020W Vector Facility support not configured
HHCCF008E Error in hercules.cnf line 29: Syntax error: ENGINES
HHCHT001I HTTP listener thread started: tid=B72E8B70, pid=5518
cckd invalid keyword: GCINT
cckd command parameters:
help Display help message
stats Display cckd statistics
opts Display cckd options
comp=<n> Override compression (-1 .. 2)
compparm=<n> Override compression parm (-1 .. 9)
ra=<n> Set number readahead threads (1 .. 9)
raq=<n> Set readahead queue size (0 .. 16)
rat=<n> Set number tracks to read ahead (0 .. 16)
wr=<n> Set number writer threads (1 .. 9)
gcint=<n> Set garbage collector interval (sec) (1 .. 60)
gcparm=<n> Set garbage collector parameter (-8 .. 8)
    (least agressive ... most aggressive)
nostress=<n> 1=Disable stress writes
freepend=<n> Set free pending cycles (-1 .. 4)
fsync=<n> 1=Enable fsync()
trace=<n> Set trace table size (0 .. 200000)
HHCHT013I Using HTTPROOT directory "/usr/local/share/hercules/"
comp=-1,compparm=-1,ra=2,raq=4,rat=2,wr=2,gcint=10,gcparm=0,nostress=0,
freepend=-1,fsync=0,trace=0,linuxnull=0
HHCCF008E Error in hercules.cnf line 40: Syntax error: PANTITLE
HHCHT006I Waiting for HTTP requests on port 8081
HHCPN196E Invalid logopt value TIMESTAMP
HHCCF008E Error in hercules.cnf line 46: Syntax error: LEGACYSENSEID
HHCCF008E Error in hercules.cnf line 48: Syntax error: HERCPRIO
HHCCF008E Error in hercules.cnf line 49: Syntax error: TODPRIO
HHCCF008E Error in hercules.cnf line 50: Syntax error: DEVPRIO
HHCCF008E Error in hercules.cnf line 51: Syntax error: CPUPRIO
HHCCF008E Error in hercules.cnf line 53: Syntax error: TIMERINT
HHCCF008E Error in hercules.cnf line 57: Syntax error: DIAG8CMD
HHCPN219E Unsupported function; enter 'HELP AUTOMOUNT' for syntax.
HHCPN207E Invalid AUTOMOUNT directory: "/tapes": Böyle bir dosya ya da dizin yok
HHCCF008E Error in hercules.cnf line 62: Syntax error: AUTOMOUNT
HHCPN217E Empty list.
HHCCF008E Error in hercules.cnf line 63: Syntax error: AUTOMOUNT
HHCHD018I Loadable module directory is /usr/local/hercules
HHCHD100I Loading dyncrypt ...
HHCHD005E dyncrypt already loaded
HHCCF028S Invalid program product OS license setting restricted
HHCCF008E Error in hercules.cnf line 72: Syntax error: AUTO_SCSI_MOUNT
HHCCF008E Error in hercules.cnf line 73: Syntax error: MOUNTED_TAPE_REINIT
HHCCF008E Error in hercules.cnf line 75: Syntax error: INCLUDE
HHCCF008E Error in hercules.cnf line 76: Syntax error: IGNORE
HHCCF008E Error in hercules.cnf line 77: Syntax error: INCLUDE
HHCCF065I Hercules: tid=B773D8D0, pid=5518, pgid=5518, priority=0
HHCCF042E Device type 3215-C not recognized
HHCCF042E Device type 1442 not recognized
HHCCF042E Device type 3505 not recognized
HHCCF042E Device type 3525 not recognized
HHCCF042E Device type 1403 not recognized
HHCCF042E Device type 1403 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type SYSG not recognized
HHCDA002E 0120:File not found or invalid 'dasd/mvsv5r.120'
HHCCF044E Initialization failed for device 0120
HHCDA002E 0121:File not found or invalid 'dasd/mvsv5d.121'
HHCCF044E Initialization failed for device 0121
HHCDA002E 0122:File not found or invalid 'dasd/mvswk1.122'
HHCCF044E Initialization failed for device 0122


Ben de bu arada verdiğin sayfaya bakayım ama muhtemelen daha önce bakmışımdır.

Ek: @if, orada hercules.cnf dosyasının nereye konulacağını soruyor. Biz o aşamayı geçtik.
susema

if

@sema, o örneği vermemin sebebi bu ayarları yapmaya gerek yok gibi bir anlam ifade etmesindendi ki yanlışmış, gördük.

Bütün seçenekleri ayarlamaya gerek olmadığını düşünüyorum çünkü bir tane örnek buldum google vasıtasıyla, CentOS için ayarlanmış ve bütün seçenekleri girilmemişti. Biz hayati olduğunu düşündüklerimizle başlayalım.

http://robpetti.com/?p=5 dursun burada.


    #
    #     System parameters
    #


    ARCHMODE   z/Arch
    OSTAILOR   z/OS
    LOADPARM   0120.... # bundan bir şey anlamadım


Diye başlayayım dedim de çok karışık:) İlk elden denemeden zor görünüyor. Meselâ "STIDP instruction" nedir? Nerededir?

sema

:) @if, evet oldukça karışık görünüyor. Daha önceki araştırmalarımda ben de oldukça basit configüre dosyaları görmüştüm, şimdilik hata veren satırları yorum satırı olarak ayarladım. Bağlanmaya çalışıyor ama yine bağlanamıyor. Şimdiki çıktımız şu, bazı cihazların tanınmadığını söylüyor ama yine de bağlanmaya çalışıyor:

su@su:~$ sudo hercules
Hercules Version 3.07
(c)Copyright 1999-2010 by Roger Bowler, Jan Jaeger, and others
Built on Jun 19 2011 at 04:13:05
Build information:
  Debian
  Modes: S/370 ESA/390 z/Arch
  Max CPU Engines: 8
  Using setresuid() for setting privileges
  Dynamic loading support
  Using shared libraries
  HTTP Server support
  Regular Expressions support
  Automatic Operator support
  National Language Support
  Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8 fetch_dw store_dw multi_byte
Running on su Linux-3.0.0-17-generic.#30-Ubuntu SMP Thu Mar 8 17:34:21 UTC 2012 i686 MP=2
HHCHD018I Loadable module directory is /usr/lib/hercules
Crypto module loaded (c) Copyright Bernard van der Helm, 2003-2010
  Active: Message Security Assist
          Message Security Assist Extension 1
          Message Security Assist Extension 2
HHCCF020W Vector Facility support not configured
cckd invalid keyword: GCINT
cckd command parameters:
help Display help message
stats Display cckd statistics
opts Display cckd options
comp=<n> Override compression (-1 .. 2)
compparm=<n> Override compression parm (-1 .. 9)
ra=<n> Set number readahead threads (1 .. 9)
raq=<n> Set readahead queue size (0 .. 16)
rat=<n> Set number tracks to read ahead (0 .. 16)
wr=<n> Set number writer threads (1 .. 9)
gcint=<n> Set garbage collector interval (sec) (1 .. 60)
gcparm=<n> Set garbage collector parameter (-8 .. 8)
    (least agressive ... most aggressive)
nostress=<n> 1=Disable stress writes
freepend=<n> Set free pending cycles (-1 .. 4)
fsync=<n> 1=Enable fsync()
trace=<n> Set trace table size (0 .. 200000)
comp=-1,compparm=-1,ra=2,raq=4,rat=2,wr=2,gcint=10,gcparm=0,nostress=0,
freepend=-1,fsync=0,trace=0,linuxnull=0
HHCPN196E Invalid logopt value TIMESTAMP
HHCPN219E Unsupported function; enter 'HELP AUTOMOUNT' for syntax.
HHCHD018I Loadable module directory is /usr/local/hercules
HHCHD100I Loading dyncrypt ...
HHCHD005E dyncrypt already loaded
HHCCF028S Invalid program product OS license setting restricted
HHCCF065I Hercules: tid=B77188D0, pid=9851, pgid=9850, priority=0
HHCCF042E Device type 3215-C not recognized
HHCCF042E Device type 1442 not recognized
HHCCF042E Device type 3505 not recognized
HHCCF042E Device type 3525 not recognized
HHCCF042E Device type 1403 not recognized
HHCCF042E Device type 1403 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type 3270 not recognized
HHCCF042E Device type SYSG not recognized
HHCDA002E 0120:File not found or invalid 'dasd/mvsv5r.120'
HHCCF044E Initialization failed for device 0120
HHCDA002E 0121:File not found or invalid 'dasd/mvsv5d.121'
HHCCF044E Initialization failed for device 0121
HHCDA002E 0122:File not found or invalid 'dasd/mvswk1.122'
HHCCF044E Initialization failed for device 0122
HHCHT001I HTTP listener thread started: tid=B72C3B70, pid=9851
HHCHT013I Using HTTPROOT directory "/usr/local/share/hercules/"
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCHT003W Waiting for port 8081 to become free
HHCSH032E 0123 Connect 192.168.52.98 110: Bağlantıda zaman aşımı
HHCSH002W 0123 connect pending to 192.168.52.98
HHCDA057E 0140:File not found or invalid
HHCCF044E Initialization failed for device 0140
HHCDA057E 0141:File not found or invalid
HHCCF044E Initialization failed for device 0141

HHCCF042E Device type CTCT not recognized                                      +
HHCCF042E Device type CTCI not recognized                                       
HHCCF042E Device type LCS not recognized                                       
HHCCF042E Device type 3420 not recognized                                       
HHCCF042E Device type 3420 not recognized                                       
HHCCF042E Device type 3420 not recognized                                       
HHCCF042E Device type 3420 not recognized                                       
HHCCF042E Device type 3480 not recognized                                       
HHCCF042E Device type 2703 not recognized                                       
HHCCP002I CPU0000 thread started: tid=B6F99B70, pid=9851, priority=15           
HHCCP003I CPU0000 architecture mode ESA/390                                     
HHCPN001I Control panel thread started: tid=B77188D0, pid=9851                 
HHCSH049I Shared device 0.1 thread started: tid=B6C96B70, pid=9851             
HHCSH052W Waiting for port 3990 to become free                                 
HHCAO001I Hercules Automatic Operator thread started;                           
          tid=B6904B70, pri=0, pid=9851                                         
HHCTT002I Timer thread started: tid=B6E98B70, pid=9851, priority=-20           
HHCHT003W Waiting for port 8081 to become free                                 
HHCSH052W Waiting for port 3990 to become free                                 
HHCHT003W Waiting for port 8081 to become free                                 
HHCSH052W Waiting for port 3990 to become free                                 
HHCHT003W Waiting for port 8081 to become free                                 
Command ==>                                                                     
CPU0000 PSW=0000000000000000 24M.......                              instcount=0
susema

if

@sema, sudo netstat -anp | grep 8081
sudo netstat -anp | grep 3990
ne diyor?

sema

@if, bilgisayarım şu an yanımda değil. Daha sonra istediğin çıktıyı aktarayım sana. Yalnız en son şöyle bir ekran çıktısı elde edebildik. Yalnız benim daha ziyade merak ettiğim hatalar şunlar:

Alıntı YapHHCCF042E Device type 3215-C not recognized
HHCCF042E Device type 1442 not recognized
HHCCF042E Device type 3505 not recognized

Hangi cihazların tanınmadığından bahsediyor burada  :-\ ve bu sayıların ne anlama geldiğini bilmiyorum :(

[eklenti yönetici tarafından silindi]
susema

if

@sema, 3215-C için Hercules içinde tanımlı yazıcı ve klavye aygıtı, diğer ikisi ise kart okuyucuymuş. Bu üçünü ayar dosyasından çıkardığınızda kaybedeceğiniz bir şey olacağını zannetmiyorum. Şu an uygulama istediğiniz işi yapacak düzeye geldi mi?

sema

#8
@if, istediğin çıktılar:

su@su:~$ sudo netstat -anp | grep 8081
[sudo] password for su:
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               DİNLE      6223/hercules
sudo netstat -anp | grep 3990
tcp        0      0 0.0.0.0:3990            0.0.0.0:*               DİNLE      6223/hercules   
tcp        0      1 192.168.1.105:42202     192.168.52.98:3990      SYN_SENT    6223/hercules   
unix  2      [ ACC ]     STREAM     DİNLENİYOR  179813   6223/hercules       /tmp/hercules_shared.3990


Bu arada hayır, istediğimiz gibi kesinlikle çalışmıyor. Çünkü bir sürü eksiğimiz var, bağlanmaya çalışıyor ama bağlanamıyor. Mesela bence şunlar önemli ama ne olduğunu bir türlü çözemedim (bunlar neyin ip numaraları, bunu anlasam bana yetecek):

Alıntı Yap
    001E      1403    192.168.200.1:1403 sockdev

    001F      3270    * 192.168.0.1
    0200.4    3270    * 192.168.0.0  255.255.248.0
    0220.8    3270    GROUP1  192.168.100.0  255.255.248.0

    0123      3380    192.168.52.98

    0400      CTCT    30880  192.168.100.2  30880  2048     
    0401      CTCT    30881  192.168.100.2  30881  2048
    0420.2    CTCI    192.168.200.1  192.168.200.2
    0440.2    LCS     -n   /dev/net/tun   192.168.200.2

susema

if

@sema, HHCHT003W Waiting for port 8081 to become free                                 
HHCSH052W Waiting for port 3990 to become free
uyarılarını almanızın sebebi uygulamanın siz kapatmanıza rağmen kapanmayıp çalışmaya devam etmesi büyük ihtimal. Belki uygulamaya ait bir alt süreç kapanmamıştır.

Geniş vaktim olduğunda bakayım ama benden gelecek yardımda ümit beslememenizi öneririm:) Zor bir iş. Sağolsun, belgeleri yazanlar Linus Torvalds'a özet geçmiş gibi yazmışlar:)

sema

@if, aslında bilgisayarı açtığımızda programı çalıştırır çalıştırmaz verdiği çıktılar o şekilde. Yani açıp kapama yok. Ben daha ziyade sorunun şu yukarıda ne olduğunu anlamadığım ip numaralarına benzer numaralardan kaynaklandığını düşünüyorum, bu numaralar örnek konfigüre dosyasındaki numaralar, bence bunları bizim bilgisayara göre ayarlamamız gerek ama şimdiye kadar sadece birini değiştirebildik, diğerlerinin ne olduğunu anlayamıyoruz.

Ahh ben yine de bekleyeyim :)) Şimdilik başka şansım yok gibi.
susema

sema

Yıldız Teknik Üniversite'sinden A. Gökhan Yavuz'dan ile internet üzerinden bu konuda biraz bilgi alabildik, buradan sonsuz teşekkürler kendisine. Henüz istediğimiz gibi değil ama en azından verdiği bilgileri konu bütünlüğü açısından buraya da aktarayım. Gerekli bilgileri alıntılıyorum, şu şekilde:

Alıntı YapzOS'u Intel mimarisi uzerinde dogrudan calistiramazsiniz, cunku zOS S/390 mimarisine sahip islemcileri destekleyen bir isletim sistemidir. Hercules konusunda da haklisiniz, zira bu yazilim S/390 mimarisini Intel mimarisinde simulasyon ve emulasyon ile destekleyen buna bagli olarak da zVM, zOS gibi S/390 specific isletim sistemlerinin Intel mimarisinde calistirilmasini saglayan bir ara yazilim.

Sizin icin orada onemli olan 3270 ve LCS tanimlari. CTC channel to channel demek ve iki sistem arasinda gercek mainframe sisteminde channel  olarak isimlendirilen io kontrol birimleri uzerinden baglanti yapilacagini anlatiyor. siz su an icin bir sistem kuracaginizdan buna ihtiyaciniz yok. tabii PC ortaminda Hercules PC imkanlari ile mainframe ozelliklerini simule/emule ettigi icin CTC icin TCP/IP baglantilarindan yararlaniyor. ayni durum 3270 ve LCS icin de gecerli.

Unix/Linux sistemlerine vt100, vt220 tarzi terminaller baglanildigi gibi zOS sistemine de 3270 terminal ile baglaniliyor. 3270 satirlari bunun icin. zOS her terminali CUU denen bir adres ile taniyor. 3270 satirinin basindaki hex deger bunun icin. diger taraftaki IP adresi ise TN3270 emulatoru ile hangi IP adresleri uzerinden o terminale erisim saglanabilecegini gosteriyor. yani bir cesit erisim kisitlamasi icin IP adresi temelli filtre. google'da TN3270 diye ararsaniz bedava terminal erisim programlari bulacaksiniz. LCS ise network erisimi icin. sol taraf zOS'un kullanacagi CUU adresi. sag tarafta ise Linux'daki tun device driver ile mevcut ethernet uzerinden sanal bridge ile network erisi sağlanacagini soyluyor. buradaki IP adresini anlamaniz icin network konusuna da girmeniz gerekiyor. su an icin zOS'u net baglantsi olmadan da kurabilirsiniz.

http://www.hercules-390.org/hercconf.html adresindeki aciklamalari da biraz zaman harcayarak anlamak icin kendinizi zorlayin derim. baslangicta cok kompleks gelebilir, ama adim adim ozellikle de deneme yanilma ile pek cok seyi daha iyi kavrayabilirsiniz.


001F, 0200.4, 0220.8, 02380.16 satirlarinda herhangi bir IP adresi veya  IP maskesi vermenize gerek yok. verdiginiz zaman hangi adresten veya  maske ile and işlemi yapildiktan sonra hangi adreslerden tn3270  baglantisi yapilabilir bilgisi ortaya cikiyor. bu durumda IP adresi ve maskesi verilmedigi zaman her IP adresinden tn3270 yapilabilir oluyor. grup adi ise spesifik bir adresteki terminale (mesela group1 denirse 0220-0227 arasi, group2 denirse 0228-022f arasi) baglanmak icin. grup adini tn3270'de de belirtiyorsunuz. tum bunlar guvenlik acisindan bir takim kontrol ve kisitlamalar yapabilmek icin. sizin icin bunlar su anda cok onemli degil.

001f adresi eski zamandan gelen bir aliskanlik ile zOS ve zVM'de genelde sistem console adresidir. bu sebeple

001F 3270 *

tanimi sayesinde tn3270 <bilgisayarinizin IP adresi veya 127.0.0.1> derseniz tn3270 ile 001F terminaline baglanmis olacaksiniz. bir de SYSG isimli hardware console vardir. bunu da tanimlamanizda fayda olabilir. zira IPL sirasinda genelde bu konsole aktif olur. tn3270'in hangi IP portu uzerinden baglanti saglayacagini da CNSLPORT  ile veriyorsunuz. mesela

CNSLPORT 23

normalde tn3270 telnet portu olan 23'u kullanir. ama isterseniz 2023 de diyebilirsiniz (CNSLPORT 2023). tn3270 secenekleri arasinda port numarasi da var.


Genel olarak bilgiler bu şekilde. TN3270 terminalini yazılım merkezinden kurmuştuk. x3270 diyerek terminalden çalıştırabiliyoruz ama henüz istediğimiz gibi değil kesinlikle. Yapmaya çalıştıkça burada ya aktarırım.
susema