´ÙÀ½ ÀÌÀü Â÷·Ê

2. iBCS ¸ðµâ ¼³Ä¡

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

´ÙÀ½ ÀÌÀü Â÷·Ê