Linux ADSM Mini-Howto
Linux ADSM Mini-Howto
by Thomas König, Thomas.Koenig@ciw.uni-karlsruhe.de
v, 15 January 1997
°ø¹®Çå
rain@physix.chonbuk.ac.kr
2000³â 3¿ù 26ÀÏ
ÀÌ ¹®¼´Â Linux/i386¿¡¼ ADSM ¹é¾÷ ½Ã½ºÅÛÀ» »ç¿ëÇϱâ À§ÇÑ Å¬¶óÀ̾ð
Æ® ÇÁ·Î±×·¥ÀÇ ¼³Ä¡¿Í »ç¿ë¿¡ °üÇؼ ´Ù·é´Ù.
ADSMÀº ¸¹Àº ´Üü¿¡¼ »ç¿ëµÇ°í ÀÖ´Â IBM¿¡¼ ÆǸÅÇÏ´Â ³×Æ®¿öÅ© ±âº»ÀÇ ¹é¾÷ ½Ã½º
ÅÛÀÌ´Ù. ¸Å¿ì ´Ù¾çÇÑ ½Ã½ºÅÛ(¿©·¯ Á¾·ùÀÇ À¯´Ð½º ºê·£µå, À©µµ¿ì, ³ëº§, ¸Æ, À©µµ¿ì
NT)À» Áö¿øÇÑ´Ù. ºÒÇàÇÏ°Ôµµ À̱ÛÀ» ¾²°í ÀÖ´Â ½ÃÁ¡¿¡, °íÀ¯ÀÇ ¸®´ª½º ¹öÀüÀÌ Á¸Àç
ÇÏÁö ¾Ê´Â´Ù.
¿©·¯ºÐÀÌ SCO ¹ÙÀ̳ʸ®¸¦ »ç¿ëÇØ¾ß Çϸç, ADSMÀ» ½ÇÇà½ÃÅ°±â À§ÇØ iBCS2-¿¡¹Ä·¹ÀÌÅÍ
¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¿©±â¼´Â ADSM v2r1À» ´Ù·é´Ù.
À̱ÛÀ» ¾²°í ÀÖ´Â ÇöÀç, ³ ¸®´ª½ºÀÇ i386¹öÀü¿¡¼ ÀÛ¾÷À» ÇÏ°í ÀÖ´Ù.
iBCS2 ¸ðµâÀº
ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2
¿¡¼ ±¸ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ¸®´ª½º Ä¿³Î 1.2.13À» »ç¿ëÇÏ°í ÀÖ´Ù¸é
ibcs-1.2-950721.tar.gz
¸¦ ¹Þ¾Æ¿Í ¾ÐÃàÀ» Ç®°í
ibcs-1.2-950808.patch
¿Í ibcs-1.2-950828.patch2
·Î ÆÐÄ¡¸¦ Àû¿ëÇØ¾ß ÇÑ
´Ù. "make
"¸¦ ÀÔ·ÂÇÑ ´ÙÀ½ "insmod
" ¸í·ÉÀ¸·Î
iBCS ¸ðµâÀ» ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.
2.0Ä¿³Î ¹öÀüÀ» »ç¿ëÇÑ ´Ù¸é, ibcs-2.0-960610.tar.gz
¸¦ ¹Þ¾Æ¼ Àû´çÇÑ µð·ºÅä
¸®¿¡ ¾ÐÃàÀ» Ç®°í µð·ºÅ丮·Î À̵¿ÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÆÐÄ¡¸¦ Àû¿ë½ÃÅ°¸é µÈ´Ù:
--- iBCSemul/ipc.c.orig Wed Jan 15 21:32:15 1997
+++ iBCSemul/ipc.c Wed Jan 15 21:32:31 1997
@@ -212,7 +212,7 @@
switch (command) {
case U_SEMCTL:
cmd = ibcs_sem_trans(arg3);
- arg4 = (union semun *)get_syscall_parameter (regs, 4);
+ arg4 = (union semun *)(((unsigned long *) regs->esp) + (5));
is_p = (struct ibcs_semid_ds *)get_fs_long(arg4->buf);
#ifdef IBCS_TRACE
if ((ibcs_trace & TRACE_API) || ibcs_func_p->trace)
±×·± ´ÙÀ½,
CONFIG.i386
À»
CONFIG
·Î º¹»çÇÏ°í
make
¸¦ ÃĶó.
¸¸¾à ¿©·¯ºÐÀÌ ÀÌ¹Ì ±× °úÁ¤À» °ÅÄ¡Áö ¾Ê¾Ò´Ù¸é, ½ÇÇàÁß¿¡ ÇÊ¿äÇÑ µð¹ÙÀ̽º ÆÄÀÏÀ»
»ý¼ºÇØ¾ß ÇÑ´Ù.
# cd /dev
# ln -s null XOR
# ln -s null X0R
# mknod socksys c 30 0
# mknod spx c 30 1
SCO ¹ÙÀ̳ʸ®´Â ¼¼ °³ÀÇ tar ÆÄÀÏ ¶Ç´Â µð½ºÅ©¸¦ Á¦°øÇÑ´Ù. root µð·ºÅ丮·Î ¹Ù²Ù°í ¿©
·¯ºÐÀÇ Á¤Ã¥¿¡ µû¶ó ¿©·¯ºÐÀÇ umask¸¦ ¼³Á¤ÇÏ°í ±× ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î¶ó(root ±ÇÇÑÀ¸
·Î). /tmp µð·ºÅ丮¿¡¼ ¼³Ä¡ ½ºÅ©¸³Æ®¸¦ ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù; ±×°ÍÀ» ½ÇÇà½ÃÄѶó.
/usr/adsm/dsm.sys
¿Í /usr/adsm/dsm.opt
¸¦ ¼Õ¼ö ÆíÁýÇØ¾ß ÇÒ °ÍÀÌ´Ù.
dsm.sys
¿¡¼ ÁöÁ¤ÇؾßÇÒ Áß¿äÇÑ ¶óÀÎÀº ´ÙÀ½°ú °°´Ù:
- Servername
-
¼¹öÀÇ À̸§
- TCPServeraddress
-
¼¹ö¿¡ ºÎ¿©µÈ È£½ºÆ®¸í
- NODename
-
¿©·¯ºÐ¸¸ÀÇ È£½ºÆ®¸í
dsm.opt
¿¡¼ ¿©·¯ºÐÀº ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
- Server
-
Àü¿¡ Á¤ÇØÁÖ¾ú´ø µ¥·Î
- Followsymbolic
-
½Éº¼¸¯ ¸µÅ©¸¦ ÇÒ °ÍÀÎÁö, ¸» °ÍÀÎÁö(º¸Åë ÁÁÀº »ý°¢Àº ¾Æ´Ô)
- SUbdir
-
¹é¾÷ÇÒ ÇÏÀ§ µð·ºÅ丮(¿©·¯ºÐÀÌ ¿øÇÏ´Â °÷)
/etc/fstab
¿¡¼ ºÎÅÍ SCO-ȣȯ /etc/mnttab
À» »ý¼ºÇØ¾ß ÇÑ´Ù. ´ÙÀ½
°ú °°Àº ÆÞ ½ºÅ©¸³Æ®, fstab2mnttab
À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
#!/usr/bin/perl
$mnttab_struct = "a32 a32 I L";
open(MTAB, "/etc/mtab") || die "Cannot open /etc/mtab: $!\n";
open(MNTTAB, ">/etc/mnttab") || die "Cannot open /etc/mnttab: $!\n";
while(<MTAB>) {
next if /pid/;
chop;
/^(\S*)\s(\S*)\s(\S*)\s.*$/;
$device = $1;
$mountpt = $2;
$fstype = $3;
if($fstype ne "nfs" && $fstype ne "proc") {
$mnttab_rec =
pack($mnttab_struct, $device, $mountpt, 0x9d2f, time());
syswrite(MNTTAB, $mnttab_rec, 72);
print "Mode entry for: $device $mountpt $fstype\n";
}
}
close(MNTTAB);
exit 0;
À̵é Ŭ¶óÀ̾ðÆ®¸¦ À§ÇØ °øÀ¯ ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÒ ÇÊ¿ä´Â ¾ø´Ù; ¸ðµÎ Á¤ÀûÀ¸·Î ¸µÅ©
µÇ¾î ÀÖ´Ù.
X11 ÀÎÅÍÆäÀ̽º¿¡¼ÀÇ dsm
°ú Ä¿¸Çµå¶óÀÎ ÀÎÅÍÆäÀ̽º¿¡¼ÀÇ dsmc
µÎ °¡Áö Ŭ
¶óÀ̾ðÆ®°¡ ÀÖ´Ù. ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ °ü¸®ÀÚ°¡ ¾î¶²°É ½ÇÇà½ÃÄÑ¾ß ÇÒÁö ¾Ë·ÁÁÙ °ÍÀÌ´Ù.
ºÎÆýÿ¡ ¸î °¡Áö ½ºÅ©¸³Æ®°¡ ½ÃÀÛµÉ °ÍÀÌ°í ´ÙÀ½ ¿¹Á¦°¡ ÇÊ¿äÇÏ°Ô µÉ °ÍÀÌ´Ù.
dsmc schedule -quiet 2>&1 >/dev/null &
ºÒÇàÇÏ°Ôµµ, SCO´Â 8ÀÚ ÀÌ»óÀÇ È£½ºÆ®¸íÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. ¸¸¾à ¿©·¯ºÐÀÇ È£½ºÆ®¸íÀÌ
´õ ±æ°Ô ÁöÁ¤µÇ¾î ÀÖ´Ù¸é /usr/adsm/dsm.sys
¿¡¼ NODename
ÀÇ È£½ºÆ®¸íÀ»
»õ·Î ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
¿©·¯ºÐÀÌ ´Ù¾çÇÑ DISPLAY¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù¸é ¿ÏÀüÇÑ È£½ºÆ®¸íÀ» ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÒ °Í
ÀÌ´Ù(¹Ù²ã ¸»Çϸé DISPLAY=host:0
´ë½Å¿¡ DISPLAY=host.full.do.main:0
À¸·Î).